Intent: a slow read of /api/v1/user/keys says where its time went, as the commits and issues lists already do.
Done:
[ ] GET /api/v1/user/keys answers a Server-Timing header naming session, keys and render
[ ] the test fails if a phase is dropped
Follow test/api-branches-timing.test.ts: the handler wraps its reads in timePhase (src/core/route_timing.ts) and notes session with takeSessionTime, and a new test/api-keys-timing.test.ts asserts the Server-Timing header names each phase. Touch only this handler in src/http/api.ts, since other issues edit other handlers in parallel. The answer's body does not change.
Intent: a slow read of /api/v1/user/keys says where its time went, as the commits and issues lists already do.
Done:
/api/v1/user/keysanswers a Server-Timing header namingsession,keysandrenderFollow test/api-branches-timing.test.ts: the handler wraps its reads in
timePhase(src/core/route_timing.ts) and notessessionwithtakeSessionTime, and a new test/api-keys-timing.test.ts asserts the Server-Timing header names each phase. Touch only this handler in src/http/api.ts, since other issues edit other handlers in parallel. The answer's body does not change.