AUSUS v1.0.1 — Hotfix quickstart starter
Release patch corrigeant un défaut P0 reproductible dans la
quickstart documentée composer create-project ausus/starter myapp
→ composer boot → composer serve sur la ligne v1.0.0. Aucun
changement runtime, API, wire, schemaVersion ou breaking SemVer.
Patch SemVer strict : mise à jour additive pure du require de
ausus/starter, alignement de version des packages voisins, et un
gate anti-régression permanent.
Clôture
adonko3xBitters/starter#1.
Corrigé
Le bin/server.php du starter importe
Nyholm\Psr7\Factory\Psr17Factory et
Nyholm\Psr7Server\ServerRequestCreator, mais le composer.json
v1.0.0 de ausus/starter ne déclarait ni nyholm/psr7 ni
nyholm/psr7-server dans require. ausus/api-http ne requiert
que les interfaces PSR-7 (psr/http-message, psr/http-factory,
psr/http-server-handler, psr/http-server-middleware) ; aucune
implémentation PSR-7 concrète n'atteint vendor/ transitivement.
Le dev monorepo et la CI n'ont jamais fait surface le gap parce que
le composer.json racine du monorepo déclare les deux packages
Nyholm explicitement, masquant le défaut.
Symptôme sur une installation fresh composer create-project ausus/starter myapp de v1.0.0 :
Fatal error: Class "Nyholm\Psr7\Factory\Psr17Factory" not found
in /tmp/myapp/bin/server.php:61
Fix : le bloc require de packages/starter/composer.json ajoute
nyholm/psr7: ^1.8 + nyholm/psr7-server: ^1.1. Les deux sont
additifs, n'entraînent aucun autre changement runtime transitif, et
se résolvent proprement avec les flags de stability Composer par
défaut.
Anti-régression
Le scripts/clean-room-install-test.sh Gate F boote désormais le
bin/server.php scaffolded sur un port aléatoire et asserte que
GET /api/_health retourne 200 avec l'enveloppe JSON
{"ok": true, "service": "ausus/api-http", "graphHash": …}.
Le gate est câblé dans scripts/release-gate.sh Step 9 (mode live)
et s'exécute durant chaque job matrix CI release-gate de PR.
Le gate se self-disable avec une notice visible sur les scaffolds
pré-fix (la ligne v1.0.0 sur Packagist, où nyholm/psr7 est absent
du scaffold) pour que le replay historique contre le tag v1.0.0
reste interprétable. Une fois v1.0.1 le plancher sur Packagist, le
chemin de skip est inaccessible depuis toute fresh install
clean-room.
Installation
La commande d'installation canonique est inchangée :
composer create-project ausus/starter myapp
cd myapp
composer boot
composer serve # → http://localhost:8000
Les consumers v1.0.0 existants sur ^1.0 reçoivent v1.0.1
automatiquement au composer update. Aucun changement de
contrainte requis.
Runtime — inchangé depuis v1.0.0
| Surface | Statut vs v1.0.0 |
|---|---|
Ausus\Filter / Ausus\Sort / Ausus\PagedRepository | bit-à-bit identique |
Signature ProjectionRenderer::render() | bit-à-bit identique |
Façade Application::renderProjection() | bit-à-bit identique |
Traduction SQL SqliteRepository::findPaged() | bit-à-bit identique |
Parsing Router ?limit / ?offset / ?filter.* / ?sort= | bit-à-bit identique |
Forme data.pagination + écho filters[] / sort[] | bit-à-bit identique |
schemaVersion | 1.2.0 (inchangé) |
peerSchemaVersion de @ausus/renderer-react | ^1.0.0 (inchangé) |
| Forme du bundle | identique (21 fichiers, 16.9 kB) |
Artefacts publiés
| Package | Version |
|---|---|
ausus/kernel | v1.0.1 |
ausus/runtime-default | v1.0.1 |
ausus/persistence-sql | v1.0.1 |
ausus/api-http | v1.0.1 |
ausus/standard-stack | v1.0.1 |
ausus/starter | v1.0.1 |
ausus/tenancy-row | v1.0.1 (réservé par nom) |
ausus/audit-database | v1.0.1 (réservé par nom) |
ausus/auth-bridge | v1.0.1 (réservé par nom) |
ausus/presentation-default | v1.0.1 (réservé par nom) |
@ausus/renderer-react | 1.0.1 (npm @latest) |