Intent: this page says where its time goes, like the milestones and usage pages do (speed is first class; the sweep test #3387 will hold every page to it).
Done:
[ ] makeItYoursPage (GET /:owner/:name/make-it-yours) answers with a Server-Timing header naming session, one phase per data read the page makes (named for what it reads), and render, using notePhase/timePhase from src/core/route_timing.ts exactly as src/web/pages/milestones.ts does.
[ ] test/make-it-yours-timing.test.ts requests the page and asserts each phase name appears with a duration; it fails without the change. It asserts names, never a wall-clock time.
[ ] The page's body, status codes and caching are unchanged.
Files: src/web/studio/make_it_yours.ts, test/make-it-yours-timing.test.ts. Touch no other page.
Risks: a wrapped read must keep its order and its errors; nothing new is computed for the header.
Intent: this page says where its time goes, like the milestones and usage pages do (speed is first class; the sweep test #3387 will hold every page to it).
Done:
makeItYoursPage(GET /:owner/:name/make-it-yours) answers with a Server-Timing header namingsession, one phase per data read the page makes (named for what it reads), andrender, usingnotePhase/timePhasefromsrc/core/route_timing.tsexactly assrc/web/pages/milestones.tsdoes.test/make-it-yours-timing.test.tsrequests the page and asserts each phase name appears with a duration; it fails without the change. It asserts names, never a wall-clock time.Files:
src/web/studio/make_it_yours.ts,test/make-it-yours-timing.test.ts. Touch no other page. Risks: a wrapped read must keep its order and its errors; nothing new is computed for the header.