Problem
A frontend developer, or a client built from our types, reads frontend/src/types/openapi.generated.ts as the contract of the API. On 2026-09-25 that file no longer matches docs/openapi.yaml: npm run generate:api-types changes it by +950 / −39 lines. Nothing in CI regenerates it or compares it, so the drift only grows, and type-check stays green on types that are out of date.
Reproduction:
cd frontend && npm ci
npm run generate:api-types
git diff --stat -- src/types/openapi.generated.ts
# 1 file changed, 950 insertions(+), 39 deletions(-)
Related: #630 (ten activation routes missing from openapi.yaml) and #602 (verified as resolved; this drift was found while checking it).
Acceptance criteria
- The generated file is regenerated and committed.
npm run type-check and npm run lint:ceiling stay green, and any type error the regeneration surfaces is fixed in the same PR.
- A blocking CI step runs
generate:api-types and fails if git diff --exit-code -- frontend/src/types/openapi.generated.ts is not empty.
CONTRIBUTING.md says in one line that editing openapi.yaml means regenerating the types.
Definition of Done
A PR that changes docs/openapi.yaml without regenerating the types is red in CI. The CI output of a deliberately failing test is pasted here.
Problem
A frontend developer, or a client built from our types, reads
frontend/src/types/openapi.generated.tsas the contract of the API. On 2026-09-25 that file no longer matchesdocs/openapi.yaml:npm run generate:api-typeschanges it by +950 / −39 lines. Nothing in CI regenerates it or compares it, so the drift only grows, andtype-checkstays green on types that are out of date.Reproduction:
Related: #630 (ten activation routes missing from
openapi.yaml) and #602 (verified as resolved; this drift was found while checking it).Acceptance criteria
npm run type-checkandnpm run lint:ceilingstay green, and any type error the regeneration surfaces is fixed in the same PR.generate:api-typesand fails ifgit diff --exit-code -- frontend/src/types/openapi.generated.tsis not empty.CONTRIBUTING.mdsays in one line that editingopenapi.yamlmeans regenerating the types.Definition of Done
A PR that changes
docs/openapi.yamlwithout regenerating the types is red in CI. The CI output of a deliberately failing test is pasted here.