The CI time limit sits on the check job in .gitea/workflows/check.yml, and our runner ignores a job's limit, so a hung build holds the shared runner with no limit at all. The Dockerfile and two scripts also wrap commands in timeout, which stops make check outside CI too, where no hard time limit applies; on a busy host that fails a check whose tests are still running (as on sneak/rfscan#155).
Standing ruling: CI time limits go only in the CI workflow file, on the step; never in the Makefile, Dockerfile or scripts. sneak, on homoicon: "the timeouts must be only for the CI action job, not inside the Makefile/Dockerfile" (sneak/homoicon#2066). The same fix landed in rfscan (sneak/rfscan#156).
Plan
One PR into next. No Go code changes.
.gitea/workflows/check.yml: move timeout-minutes: 20 and its comment from the check job to the step that runs script/cibuild.
Dockerfile, frontend-test stage: drop both timeout 90 wrappers around yarn --silent run test. Keep the dot pass, the rerun with the spec reporter and the exit 1.
script/frontend-test: drop timeout 90 (twice) and timeout 30. Keep the rerun and the exit 1.
script/frontend-viewport-test: drop timeout 900 before docker run. Keep the named containers and the cleanup trap; reword the comment above cleanup(), which cites the timeout, so it gives the reason that still holds (an interrupted docker run client does not remove the container it started).
Stays: go test -count=1 -timeout 90s in the Dockerfile test stage (the vendored REPO_POLICIES.md requires it), the image's HEALTHCHECK --timeout, the server's HTTP timeouts, and timeouts inside test code (test/unit/, test/viewport/harness.js).
REPO_POLICIES.md stays unchanged: it is vendored from sneak/prompts and still says the job sets the limit; the ruling overrides that here. Disclose this in the PR body, one line.
Docs: any sentence in README.md, TODO.md or test/viewport/README.md that states a removed limit is corrected. TODO.md's "a run stops after 20 minutes" stays true.
Edit every file by hand, no scripted edits; run make fmt before committing markdown.
Definition of done
No timeout command is left in the Dockerfile or script/.
The only CI time limit is timeout-minutes: 20 on the step that runs script/cibuild.
Every comment and document that mentions these limits is true.
make check passes.
Model: opus-5-5
The CI time limit sits on the `check` job in `.gitea/workflows/check.yml`, and our runner ignores a job's limit, so a hung build holds the shared runner with no limit at all. The `Dockerfile` and two scripts also wrap commands in `timeout`, which stops `make check` outside CI too, where no hard time limit applies; on a busy host that fails a check whose tests are still running (as on https://git.eeqj.de/sneak/rfscan/issues/155).
Standing ruling: CI time limits go only in the CI workflow file, on the step; never in the `Makefile`, `Dockerfile` or scripts. sneak, on homoicon: "the timeouts must be only for the CI action job, *not* inside the Makefile/Dockerfile" (https://git.eeqj.de/sneak/homoicon/issues/2066). The same fix landed in rfscan (https://git.eeqj.de/sneak/rfscan/pulls/156).
## Plan
One PR into `next`. No Go code changes.
- `.gitea/workflows/check.yml`: move `timeout-minutes: 20` and its comment from the `check` job to the step that runs `script/cibuild`.
- `Dockerfile`, `frontend-test` stage: drop both `timeout 90` wrappers around `yarn --silent run test`. Keep the dot pass, the rerun with the spec reporter and the `exit 1`.
- `script/frontend-test`: drop `timeout 90` (twice) and `timeout 30`. Keep the rerun and the `exit 1`.
- `script/frontend-viewport-test`: drop `timeout 900` before `docker run`. Keep the named containers and the `cleanup` trap; reword the comment above `cleanup()`, which cites the `timeout`, so it gives the reason that still holds (an interrupted `docker run` client does not remove the container it started).
- Stays: `go test -count=1 -timeout 90s` in the `Dockerfile` test stage (the vendored `REPO_POLICIES.md` requires it), the image's `HEALTHCHECK --timeout`, the server's HTTP timeouts, and timeouts inside test code (`test/unit/`, `test/viewport/harness.js`).
- `REPO_POLICIES.md` stays unchanged: it is vendored from `sneak/prompts` and still says the job sets the limit; the ruling overrides that here. Disclose this in the PR body, one line.
- Docs: any sentence in `README.md`, `TODO.md` or `test/viewport/README.md` that states a removed limit is corrected. `TODO.md`'s "a run stops after 20 minutes" stays true.
Edit every file by hand, no scripted edits; run `make fmt` before committing markdown.
## Definition of done
- [ ] No `timeout` command is left in the `Dockerfile` or `script/`.
- [ ] The only CI time limit is `timeout-minutes: 20` on the step that runs `script/cibuild`.
- [ ] Every comment and document that mentions these limits is true.
- [ ] `make check` passes.
Model: opus-5-5
clawbot
self-assigned this 2026-11-10 20:48:53 +01:00
Built in #200: the CI limit is on the script/cibuild step, and the Dockerfile and script/ have no timeout wrappers left.
Model: opus-5-5
Built in https://git.eeqj.de/sneak/netwatch/pulls/200: the CI limit is on the `script/cibuild` step, and the `Dockerfile` and `script/` have no `timeout` wrappers left.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The CI time limit sits on the
checkjob in.gitea/workflows/check.yml, and our runner ignores a job's limit, so a hung build holds the shared runner with no limit at all. TheDockerfileand two scripts also wrap commands intimeout, which stopsmake checkoutside CI too, where no hard time limit applies; on a busy host that fails a check whose tests are still running (as on sneak/rfscan#155).Standing ruling: CI time limits go only in the CI workflow file, on the step; never in the
Makefile,Dockerfileor scripts. sneak, on homoicon: "the timeouts must be only for the CI action job, not inside the Makefile/Dockerfile" (sneak/homoicon#2066). The same fix landed in rfscan (sneak/rfscan#156).Plan
One PR into
next. No Go code changes..gitea/workflows/check.yml: movetimeout-minutes: 20and its comment from thecheckjob to the step that runsscript/cibuild.Dockerfile,frontend-teststage: drop bothtimeout 90wrappers aroundyarn --silent run test. Keep the dot pass, the rerun with the spec reporter and theexit 1.script/frontend-test: droptimeout 90(twice) andtimeout 30. Keep the rerun and theexit 1.script/frontend-viewport-test: droptimeout 900beforedocker run. Keep the named containers and thecleanuptrap; reword the comment abovecleanup(), which cites thetimeout, so it gives the reason that still holds (an interrupteddocker runclient does not remove the container it started).go test -count=1 -timeout 90sin theDockerfiletest stage (the vendoredREPO_POLICIES.mdrequires it), the image'sHEALTHCHECK --timeout, the server's HTTP timeouts, and timeouts inside test code (test/unit/,test/viewport/harness.js).REPO_POLICIES.mdstays unchanged: it is vendored fromsneak/promptsand still says the job sets the limit; the ruling overrides that here. Disclose this in the PR body, one line.README.md,TODO.mdortest/viewport/README.mdthat states a removed limit is corrected.TODO.md's "a run stops after 20 minutes" stays true.Edit every file by hand, no scripted edits; run
make fmtbefore committing markdown.Definition of done
timeoutcommand is left in theDockerfileorscript/.timeout-minutes: 20on the step that runsscript/cibuild.make checkpasses.Model: opus-5-5
Built in #200: the CI limit is on the
script/cibuildstep, and theDockerfileandscript/have notimeoutwrappers left.Model: opus-5-5