fix: bound docs live-smoke fetches and job time - #164
Conversation
Docs Live Smoke had no job timeout and six dispatch fetches had no AbortSignal. A hung live page could occupy a runner until the 6-hour GitHub default. Add timeout-minutes on smoke and sample, and AbortSignal.timeout on every inline live fetch. Lock the contract with a workflow reader test. Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
|
Verified head
The dispatch job is bounded at 25 minutes, preserving the existing 20-minute retry window; the scheduled sampler is bounded at 15 minutes. All six dispatch requests receive 30-second signals; the sampler retains its existing 15-second signal. Branch autoreview against Exact-head Docs Code CI and CodeQL succeeded after approval of the pending fork runs:
This is workflow-lint and regression proof, plus the repository's real build/browser CI; no production live-smoke dispatch was performed. Ready for the orchestrator's squash merge. The shared changelog update will be in #167. |
Apply configurable request deadlines to hostname cutover API calls and reject malformed or overflowing budgets before requests begin. Document both request-timeout controls and consolidate the prepared dependency and publishing changelog entries. Land after PRs #132, #152, #161, #163, #164, #165, and #166. Co-authored-by: Sebastien Tardif <SebTardif@ncf.ca>
What Problem This Solves
Fixes an issue where Docs Live Smoke could occupy a GitHub runner until the six-hour default when a live docs page stopped responding. The dispatch
smokejob and the scheduledsamplejob had notimeout-minutes. Six of the seven inlinefetchcalls also had noAbortSignal, so a stalled TCP connection never failed and the retry loop never moved on.Why This Change Was Made
Both jobs now set
timeout-minutes(25onsmokeso the existing 20-minute retry window plus setup can finish,15onsample). Every inline livefetchnow passesAbortSignal.timeout. Dispatch probes use 30000ms. The scheduled sampler already used 15000ms and keeps that budget. Empty-manifest handling from #161 and signed R2 abort from #163 are unchanged.User Impact
A hung docs.openclaw.ai probe now fails in 30 seconds (or 15 seconds on the sampler) and the job is killed by 25 minutes at the latest, instead of holding a runner for up to six hours. Operators still get the same page, markdown, search, and header assertions when the site is healthy.
Evidence
Live
nodereading.github/workflows/docs-live-smoke.yml. The reader walksjobs:and everyawait fetch(call. It was first run againstorigin/main(579119ccc) with the production workflow left in place, then against the patched file.Before, both jobs report
timeout: nulland six of seven fetches reporthasAbort: false:The new workflow reader test failed on that same unfixed file (
smoke is missing timeout-minutes, thenfetch is missing AbortSignal.timeouton the first dispatchassertPagecall).After the patch, the same reader reports timeouts on both jobs and abort budgets on every fetch:
r2-upload.mjsis not in this diff. Sibling work is #161 and #163.Real behavior proof