GET /api/v1/repos/:owner/:name/runs/:id/log in src/http/api.ts serves a run's log, as plain text or as a stream when it is followed. The plain answer names no Server-Timing phase.
Done:
[ ] The plain (non-follow) answer's Server-Timing names session, log (runLog) and render (joining the lines), using notePhase and timePhase from src/core/route_timing.ts.
[ ] A hidden or missing log still answers 404, with session named. The follow (event-stream) path is unchanged.
[ ] test/api-run-log-timing.test.ts asserts the phase names for a finished run, and fails without the change. The text body is unchanged.
Files: src/http/api.ts (this handler only), test/api-run-log-timing.test.ts (new).
Risk: small; never add headers to the streaming answer after it starts.
GET /api/v1/repos/:owner/:name/runs/:id/loginsrc/http/api.tsserves a run's log, as plain text or as a stream when it is followed. The plain answer names no Server-Timing phase.Done:
session,log(runLog) andrender(joining the lines), usingnotePhaseandtimePhasefromsrc/core/route_timing.ts.sessionnamed. The follow (event-stream) path is unchanged.test/api-run-log-timing.test.tsasserts the phase names for a finished run, and fails without the change. The text body is unchanged.Files: src/http/api.ts (this handler only), test/api-run-log-timing.test.ts (new). Risk: small; never add headers to the streaming answer after it starts.