chore(post-UAT): revive openapi-contract-testing plan after September 2026 UAT

The openapi-contract-testing plan (6 steps) was flipped to Deferred (post-UAT) on 2026-04-27 — APIs are still evolving pre-UAT and a strict contract gate would block iteration. This issue is the tracker so the plan does not disappear at archive time.

Why deferred

Pre-1.0 contract stability is undesired (.claude/docs/git-workflow.md — breaking changes are permitted pre-1.0 and documented in CHANGELOG). A breaking-change CI gate is premature until the SNAP UAT (September 2026) freezes the API surface for jurisdictions evaluating Canopy.

When to revive

Pick this back up the first time any of these become true:

  • SNAP UAT entry passes (post-September-2026)
  • A jurisdiction outside Georgia integrates against Canopy and depends on schema stability
  • The first stable tag (1.0.0) is cut
  • CI catches a real breakage that could have been caught by contract tests

Scope when revived

The plan's 6 steps:

  1. Set up oasdiff (or equivalent) tooling
  2. Add per-service OpenAPI dump command
  3. Generate baseline snapshots checked into tests/openapi-baselines/
  4. CI job that diffs current OpenAPI against baseline and fails on breaking changes
  5. Documentation: how to update baselines on intentional breaks
  6. Roll out to all 12 services with utoipa decorators

References

  • xref:plans/openapi-contract-testing.adoc[openapi-contract-testing plan] (all 6 steps — Deferred (post-UAT))
  • xref:plans/archive/operational-infrastructure.adoc[operational-infrastructure plan]