Intent: speed stays visible. A read added without phases should be caught by a test, not by a planner reading api.ts.
Done:
[ ] a new test/route-timing-coverage.test.ts reads the routes the router registers (not by parsing source text, if the router can list them; otherwise a source scan with a comment saying why) and requests each GET /api/v1 route with a fixture
[ ] it fails when a GET route answers 200 with no server-timing header naming at least session, except for routes on an explicit allowlist in the test with one reason each (event streams, /metrics, redirects)
[ ] the allowlist starts as today's untimed reads, each named, and a comment says the list only shrinks: removing an entry is how an issue that adds phases proves itself
Intent: speed stays visible. A read added without phases should be caught by a test, not by a planner reading api.ts.
Done:
server-timingheader naming at leastsession, except for routes on an explicit allowlist in the test with one reason each (event streams, /metrics, redirects)Files: one new test file.