Repository navigation
Schemathesis conformance gate #115
Description
What to build
A conformance gate that checks the running API actually behaves the way its spec now claims.
The existing export drift gate proves the committed spec matches springdoc output, and oasdiff proves changes are non-breaking — but nothing checks that a malformed body really returns 400, that an unknown id really returns 404, or that no undeclared status codes escape. Once the specs declare their error contract, that becomes checkable.
Read-only operations are fuzzed on pull requests, so the gate is fast and deterministic and never writes. The full suite, including mutations, runs on a schedule and files issues rather than blocking a merge — property-based fuzzing of write paths against a real database is where flakiness comes from, and a flaky gate gets ignored.
Acceptance criteria
- Each service is fuzzed against its own application, not against a shared stack
-
agents-apiwrite fuzzing never runs against a live cluster - No Python toolchain is added to the consuming repositories, JVM and Go alike
- The gate is shown to fail against a deliberately non-conforming build before it is trusted
Blocked by
- The three service error-contract trackers
Note (2026-10-01)
Go + Vue, contract-first, is now the estate standard for new services (JorisJonkers-dev/workspace#107). This workflow must serve the Go services too: JorisJonkers-dev/estate-dashboard and the services in JorisJonkers-dev/delivery.
Activity