A9 | Soft-delete semantics (default reads filter deleted rows) |
B2 | Honor unique |
C1 | Durable schema (DDL or ORM / query models) |
C2 | Indexes from index { } |
C3 | Seeds from seed { } |
C4 | Versioned migrations (ordered up) |
C5 | Migration down / rollback |
C6 | Respect app.database target |
C7 | Transactions for multi-statement / workflow writes |
D2 | Honor api.prefix |
D3 | Honor api.cors (config or middleware) |
D4 | Honor api.rate_limit (config or enforcement) |
D5 | Pagination and/or filter/sort on list |
D6 | Typed error responses (4xx/5xx + stable body shape) |
D7 | Honor api.format (e.g. JSON) |
E3 | Reflect policy create/read/update/delete |
E4 | Predicates: public, authenticated, role(…) |
E5 | Predicates: owner / owner_or_manager(…) |
E6 | Consistent 401/403 denial paths (runtime or contract documents both) |
F1 | Runnable server or worker entrypoint |
F3 | DB read/write (or generated query / ORM layer) |
F4 | Runtime request validation aligned with B* |
F5 | Runtime policy checks aligned with E* |
G1 | Emit job artifacts (callable or schedulable) |
G2 | Emit queue declarations / bindings |
G3 | Wire workflow dispatch |
G4 | Wire workflow notify |
G5 | Wire workflow emit + event types |
G6 | Wire lifecycle hooks (on / before / after) |
G7 | Surface ai_context (emit, embed, or agent-facing artifact) |
H1 | Human-readable API / domain documentation |
H2 | Automated test fixtures or scaffolds |
I1 | Typed API client / SDK (or codegen from the contract) |
I2 | Contract↔runtime parity story (shared paths/types or CI check) |
J1 | Config/env for DB URL and secrets (no hardcoding) |
J2 | Minimal observability (request id and/or structured logs) |
J3 | Health/readiness endpoint or worker liveness hook |