Intent: the OpenAPI document stops falling behind: today about 90 registered routes have no row.
Done:
[ ] A new test (test/openapi-coverage.test.ts) reads every router.add("METHOD", "/api/v1/…") in src/http/api.ts, normalises :param and *param to {}, and fails naming each route that has no row in ROUTES (src/contract/openapi.ts) and is not in a NOT_YET_DESCRIBED list in the test
[ ] NOT_YET_DESCRIBED starts as exactly today's missing routes, one per line, sorted, with a comment that it only shrinks
[ ] An entry that is now described is ignored, not a failure, so the OpenAPI issues landing in parallel do not go red; the test prints how many entries could be removed
[ ] The test runs in the gate (add it to scripts/gate.ts in the same commit if the gate lists files)
Intent: the OpenAPI document stops falling behind: today about 90 registered routes have no row.
Done:
router.add("METHOD", "/api/v1/…")in src/http/api.ts, normalises:paramand*paramto{}, and fails naming each route that has no row inROUTES(src/contract/openapi.ts) and is not in aNOT_YET_DESCRIBEDlist in the testNOT_YET_DESCRIBEDstarts as exactly today's missing routes, one per line, sorted, with a comment that it only shrinksFiles: one new test, maybe scripts/gate.ts.