AUSUS v1.0.1 — starter quickstart hotfix
Patch release fixing a P0 reproducible defect in the documented
composer create-project ausus/starter myapp → composer boot →
composer serve quickstart on the v1.0.0 line. No runtime, API,
wire, schemaVersion, or SemVer-breaking change. SemVer patch
strict: pure additive require dependency update on
ausus/starter, version alignment across the sibling packages, and
a permanent anti-regression gate.
Closes
adonko3xBitters/starter#1.
Fixed
The starter's bin/server.php imports
Nyholm\Psr7\Factory\Psr17Factory and
Nyholm\Psr7Server\ServerRequestCreator, but ausus/starter
v1.0.0's composer.json declared neither nyholm/psr7 nor
nyholm/psr7-server in require. ausus/api-http only requires
the PSR-7 interfaces (psr/http-message, psr/http-factory,
psr/http-server-handler, psr/http-server-middleware); no
concrete PSR-7 implementation reaches vendor/ transitively. The
monorepo dev and CI never surfaced the gap because the monorepo's
root composer.json declares both Nyholm packages explicitly,
masking the defect.
Symptom on a clean composer create-project ausus/starter myapp
install of v1.0.0:
Fatal error: Class "Nyholm\Psr7\Factory\Psr17Factory" not found
in /tmp/myapp/bin/server.php:61
Fix: packages/starter/composer.json require block adds
nyholm/psr7: ^1.8 + nyholm/psr7-server: ^1.1. Both are
additive, pull no further transitive runtime change, and resolve
cleanly with Composer's default stability flags.
Anti-regression
scripts/clean-room-install-test.sh Gate F now boots the
scaffolded bin/server.php on a random port and asserts that
GET /api/_health returns 200 with the JSON envelope
{"ok": true, "service": "ausus/api-http", "graphHash": …}.
The gate is wired into scripts/release-gate.sh Step 9 (live mode)
and runs during every PR CI matrix release-gate job.
The gate self-disables with a visible notice on pre-fix scaffolds
(the v1.0.0 line on Packagist, where nyholm/psr7 is absent from
the scaffold) so historical replay-against-tag against the v1.0.0
artefact stays interpretable. Once v1.0.1 is the floor on Packagist,
the skip path is unreachable from any new clean-room install.
Installation
The canonical install command is unchanged:
composer create-project ausus/starter myapp
cd myapp
composer boot
composer serve # → http://localhost:8000
Existing v1.0.0 consumers on ^1.0 receive v1.0.1 automatically on
composer update. No constraint change is required.
Runtime — unchanged from v1.0.0
| Surface | Status vs v1.0.0 |
|---|---|
Ausus\Filter / Ausus\Sort / Ausus\PagedRepository | bit-identical |
ProjectionRenderer::render() signature | bit-identical |
Application::renderProjection() facade | bit-identical |
SqliteRepository::findPaged() SQL translation | bit-identical |
Router ?limit / ?offset / ?filter.* / ?sort= parsing | bit-identical |
data.pagination shape + filters[] / sort[] echo | bit-identical |
schemaVersion | 1.2.0 (unchanged) |
@ausus/renderer-react peerSchemaVersion | ^1.0.0 (unchanged) |
| Bundle shape | identical (21 files, 16.9 kB) |
Released artifacts
| 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 (name-reserved) |
ausus/audit-database | v1.0.1 (name-reserved) |
ausus/auth-bridge | v1.0.1 (name-reserved) |
ausus/presentation-default | v1.0.1 (name-reserved) |
@ausus/renderer-react | 1.0.1 (npm @latest) |