v0.3.5
A service no longer implies a database.
service_backed used to force a schema: a service_backed feature with zero tables or zero persistence_invariants[] hard-failed the design gate, so a compute / transform / proxy / external-API-aggregator service (real business logic, no persistence) could not pass.
persistence_invariants[] is now the single source of truth for "this feature has a database":
- Declaring
>=1routes the feature through the DBA + DB-integration tests. - Declaring none marks it a non-persisting service: the DBA turn is skipped,
db-design.jsonis optional, no persistence coverage is required. checkDbDesign/checkPersistenceCoveragekey off the invariants, notservice_backed.
Safety net preserved: persistence evidence (an Infra-layer AC, or a migration/schema/storage NFR) while persistence_invariants is empty still hard-blocks the gate, so a feature that really persists cannot escape DB testing. Layering enforcement is unchanged. Agent prose, the architecture schema, and the DBA task hint were realigned, with a regression guard.