Aller au contenu principal

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 myappcomposer bootcomposer 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

SurfaceStatut vs v1.0.0
Ausus\Filter / Ausus\Sort / Ausus\PagedRepositorybit-à-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
schemaVersion1.2.0 (inchangé)
peerSchemaVersion de @ausus/renderer-react^1.0.0 (inchangé)
Forme du bundleidentique (21 fichiers, 16.9 kB)

Artefacts publiés

PackageVersion
ausus/kernelv1.0.1
ausus/runtime-defaultv1.0.1
ausus/persistence-sqlv1.0.1
ausus/api-httpv1.0.1
ausus/standard-stackv1.0.1
ausus/starterv1.0.1
ausus/tenancy-rowv1.0.1 (réservé par nom)
ausus/audit-databasev1.0.1 (réservé par nom)
ausus/auth-bridgev1.0.1 (réservé par nom)
ausus/presentation-defaultv1.0.1 (réservé par nom)
@ausus/renderer-react1.0.1 (npm @latest)