Found by the final independent review of #165. Deliberately NOT milestoned 1.0.0 — nothing is broken, and the tag does not rest on a step's display name.
.gitea/workflows/check.yml names its build step "Build Docker image (runs make check)". The image has never run make check. It runs make fmt-check, then golangci-lint config verify and golangci-lint run in the lint stage, then make test and make build in the builder. script/check — which is what make check invokes — is not called anywhere in the Dockerfile.
Pre-existing and untouched by #109. Filing it because this repo has spent a lot of review effort this cycle on exactly this class — a label asserting something the code does not do — and a step name is the first thing someone reads when a CI run fails.
Two README wording items to fold into the same commit
Both raised by the same review as non-blocking, and both are imprecision rather than falsehood:
"only script/test and script/fmt-check run on the host" is true of make check's components, but reads as a global claim about the repo. Scope it.
The Prerequisites bullet describes Docker as needed "for the test stage of the CI gate", which understates it: since #109, Docker is required for make lint and therefore for make check locally.
Definition of done
The workflow step name describes what the image actually runs, or is generic enough not to claim anything false.
Grep the workflow for any other step name or comment that names a target it does not invoke.
The two README sentences above are scoped accurately.
make check and the cache-defeated Docker build are green.
Implementation requirements
Branch from next, PR based on next, single commit, title ending (closes #N).
Run make bootstrap in a fresh clone before gating — browser assets are fetched at build time and not committed, and make lint now requires Docker.
Gate on make check plus the Docker lint path with the cache defeated. All linting runs in Docker, never on the host.
Found by the final independent review of https://git.eeqj.de/sneak/webhooker/pulls/165. Deliberately NOT milestoned 1.0.0 — nothing is broken, and the tag does not rest on a step's display name.
`.gitea/workflows/check.yml` names its build step **"Build Docker image (runs make check)"**. The image has never run `make check`. It runs `make fmt-check`, then `golangci-lint config verify` and `golangci-lint run` in the lint stage, then `make test` and `make build` in the builder. `script/check` — which is what `make check` invokes — is not called anywhere in the Dockerfile.
Pre-existing and untouched by https://git.eeqj.de/sneak/webhooker/issues/109. Filing it because this repo has spent a lot of review effort this cycle on exactly this class — a label asserting something the code does not do — and a step name is the first thing someone reads when a CI run fails.
## Two README wording items to fold into the same commit
Both raised by the same review as non-blocking, and both are imprecision rather than falsehood:
- "only `script/test` and `script/fmt-check` run on the host" is true of `make check`'s components, but reads as a global claim about the repo. Scope it.
- The Prerequisites bullet describes Docker as needed "for the test stage of the CI gate", which understates it: since https://git.eeqj.de/sneak/webhooker/issues/109, Docker is required for `make lint` and therefore for `make check` locally.
## Definition of done
- The workflow step name describes what the image actually runs, or is generic enough not to claim anything false.
- Grep the workflow for any other step name or comment that names a target it does not invoke.
- The two README sentences above are scoped accurately.
- `make check` and the cache-defeated Docker build are green.
## Implementation requirements
- Branch from `next`, PR based on `next`, single commit, title ending ` (closes #N)`.
- Do not modify `TODO.md` (see https://git.eeqj.de/sneak/webhooker/issues/112).
- Run `make bootstrap` in a fresh clone before gating — browser assets are fetched at build time and not committed, and `make lint` now requires Docker.
- Gate on `make check` plus the Docker lint path with the cache defeated. All linting runs in Docker, never on the host.
clawbot
self-assigned this 2026-08-18 01:07:52 +02:00
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.
Found by the final independent review of #165. Deliberately NOT milestoned 1.0.0 — nothing is broken, and the tag does not rest on a step's display name.
.gitea/workflows/check.ymlnames its build step "Build Docker image (runs make check)". The image has never runmake check. It runsmake fmt-check, thengolangci-lint config verifyandgolangci-lint runin the lint stage, thenmake testandmake buildin the builder.script/check— which is whatmake checkinvokes — is not called anywhere in the Dockerfile.Pre-existing and untouched by #109. Filing it because this repo has spent a lot of review effort this cycle on exactly this class — a label asserting something the code does not do — and a step name is the first thing someone reads when a CI run fails.
Two README wording items to fold into the same commit
Both raised by the same review as non-blocking, and both are imprecision rather than falsehood:
script/testandscript/fmt-checkrun on the host" is true ofmake check's components, but reads as a global claim about the repo. Scope it.make lintand therefore formake checklocally.Definition of done
make checkand the cache-defeated Docker build are green.Implementation requirements
next, PR based onnext, single commit, title ending(closes #N).TODO.md(see #112).make bootstrapin a fresh clone before gating — browser assets are fetched at build time and not committed, andmake lintnow requires Docker.make checkplus the Docker lint path with the cache defeated. All linting runs in Docker, never on the host.