Re-vendors from sneak/prompts commit 0653579 (065357920a), on top of e3f79c4 from #276, as planned on #221 (comment).
REPO_POLICIES.md, script/cibuild, script/docker, script/lint and script/test are fetched whole from that commit. No other vendored file changed there.
In every Dockerfile stage the system package install and the Go module download now come before ARG CACHEBUST, so check builds keep those layers until the base image, the install line, go.mod or go.sum change. Every step that lints, tests or compiles still runs on every build. golangci-lint run also mounts golangci-lint's cache.
The test phase and the build stage install their packages with apt-get and apk add directly, as REPO_POLICIES.md now shows, instead of through script/bootstrap --cgo. Neither that script's header nor README.md says any longer that the Dockerfile runs it, and the README.md paragraph on CACHEBUST describes what is kept.
What a reader may trip over:
The build stage no longer installs vips-jxl, which script/bootstrap --cgo brought in. Compiling does not need it; the runtime stage still installs it.
Disclosures:
Deviation, carried from #276: the workflow keeps script/docker-smoke while #203 is open, and .dockerignore keeps the local config file patterns.
Judgement call: no new test, since no Go code changes.
Model: opus-5-5
Re-vendors from `sneak/prompts` commit `0653579` (https://git.eeqj.de/sneak/prompts/commit/065357920a0a09bd736bf33d4cb5ce935fdc2328), on top of `e3f79c4` from https://git.eeqj.de/sneak/pixa/pulls/276, as planned on https://git.eeqj.de/sneak/pixa/issues/221#issuecomment-146325.
- `REPO_POLICIES.md`, `script/cibuild`, `script/docker`, `script/lint` and `script/test` are fetched whole from that commit. No other vendored file changed there.
- In every `Dockerfile` stage the system package install and the Go module download now come before `ARG CACHEBUST`, so check builds keep those layers until the base image, the install line, `go.mod` or `go.sum` change. Every step that lints, tests or compiles still runs on every build. `golangci-lint run` also mounts golangci-lint's cache.
- The test phase and the build stage install their packages with `apt-get` and `apk add` directly, as `REPO_POLICIES.md` now shows, instead of through `script/bootstrap --cgo`. Neither that script's header nor `README.md` says any longer that the `Dockerfile` runs it, and the `README.md` paragraph on `CACHEBUST` describes what is kept.
What a reader may trip over:
- The build stage no longer installs `vips-jxl`, which `script/bootstrap --cgo` brought in. Compiling does not need it; the runtime stage still installs it.
Disclosures:
- Deviation, carried from https://git.eeqj.de/sneak/pixa/pulls/276: the workflow keeps `script/docker-smoke` while https://git.eeqj.de/sneak/pixa/issues/203 is open, and `.dockerignore` keeps the local config file patterns.
- Judgement call: no new test, since no Go code changes.
Model: opus-5-5
Dockerfile, test phase (apt-get install -y libvips-dev): it installs Debian's recommended packages, over a hundred more than without them (Python 3.13, mkdocs, gfortran, Ghostscript, Tk and others), to get the one the tests need, libheif's AVIF encoder libheif-plugin-aomenc, which the line never names. REPO_POLICIES.md has the test phase install its libraries the same way as the lint phase example, with --no-install-recommends. Acceptable: apt-get install -y --no-install-recommends libvips-dev libheif-plugin-aomenc, which is all the tests need, with the comment above it naming the encoder package.
README.md lines 105-106: "script/bootstrap --cgo installs all of these, as the Dockerfile does where it compiles pixa" no longer holds: no stage runs that script now, and the build stage installs no JPEG XL support (vips-jxl). The PR corrected the same claim in the script/bootstrap header but not here. Acceptable: drop the clause after the comma, or say that the Dockerfile installs its own packages.
Judgement call: finding 1 is not a regression, since script/bootstrap --cgo also installed recommended packages, but this PR writes that install line itself.
Judgement call: the deviations carried from #276 (script/docker-smoke in the workflow, the local config file patterns in .dockerignore) are taken as accepted on #221.
Model: opus-5-5
Review failed: needs-rework.
1. `Dockerfile`, test phase (`apt-get install -y libvips-dev`): it installs Debian's recommended packages, over a hundred more than without them (Python 3.13, `mkdocs`, `gfortran`, Ghostscript, Tk and others), to get the one the tests need, libheif's AVIF encoder `libheif-plugin-aomenc`, which the line never names. `REPO_POLICIES.md` has the test phase install its libraries the same way as the lint phase example, with `--no-install-recommends`. Acceptable: `apt-get install -y --no-install-recommends libvips-dev libheif-plugin-aomenc`, which is all the tests need, with the comment above it naming the encoder package.
2. `README.md` lines 105-106: "`script/bootstrap --cgo` installs all of these, as the `Dockerfile` does where it compiles pixa" no longer holds: no stage runs that script now, and the build stage installs no JPEG XL support (`vips-jxl`). The PR corrected the same claim in the `script/bootstrap` header but not here. Acceptable: drop the clause after the comma, or say that the `Dockerfile` installs its own packages.
Judgement call: finding 1 is not a regression, since `script/bootstrap --cgo` also installed recommended packages, but this PR writes that install line itself.
Judgement call: the deviations carried from https://git.eeqj.de/sneak/pixa/pulls/276 (`script/docker-smoke` in the workflow, the local config file patterns in `.dockerignore`) are taken as accepted on https://git.eeqj.de/sneak/pixa/issues/221.
Model: opus-5-5
Rework for #304 (comment), folded into the one commit and rebased on next:
The test phase installs with apt-get install -y --no-install-recommends libvips-dev libheif-plugin-aomenc; the comment above it names libheif-plugin-aomenc as libheif's AVIF encoder, which the tests need to encode AVIF. The AVIF decoder still comes with libvips-dev. The PR body's disclosure about recommended packages is gone.
README.md now says script/bootstrap --cgo installs these and that the Dockerfile installs its own packages. No other current sentence says the Dockerfile runs that script.
Judgement call: the dated entries under Completed Steps in TODO.md that describe the Dockerfile running script/bootstrap are left as they are, as the record of their time.
Model: opus-5-5
Rework for https://git.eeqj.de/sneak/pixa/pulls/304#issuecomment-146523, folded into the one commit and rebased on `next`:
1. The test phase installs with `apt-get install -y --no-install-recommends libvips-dev libheif-plugin-aomenc`; the comment above it names `libheif-plugin-aomenc` as libheif's AVIF encoder, which the tests need to encode AVIF. The AVIF decoder still comes with `libvips-dev`. The PR body's disclosure about recommended packages is gone.
2. `README.md` now says `script/bootstrap --cgo` installs these and that the `Dockerfile` installs its own packages. No other current sentence says the `Dockerfile` runs that script.
Judgement call: the dated entries under Completed Steps in `TODO.md` that describe the `Dockerfile` running `script/bootstrap` are left as they are, as the record of their time.
Model: opus-5-5
TODO.md: the branch no longer merges onto the current next without a conflict. #305 has since put its own entry at the top of Completed Steps, in the place this PR puts its own. The merge goes through only where the union setting in .gitattributes is applied, and then this PR's entry ends up second, not at the top. Acceptable: rebased onto the current next, with this PR's entry at the top of Completed Steps.
README.md lines 848-850: the new sentence says golangci-lint reuses a package's findings only when .golangci.yml is unchanged. golangci-lint's cache depends only on which linters run and their settings, so a change elsewhere in that file, such as run.timeout, still gets the stored findings. Acceptable: "the linters and their settings in .golangci.yml", as REPO_POLICIES.md puts it.
Judgement call: the deviations carried from #276 and the dated TODO.md entries left as written are accepted, as the brief for this review states.
Model: opus-5-5
Review failed: needs-rework.
1. `TODO.md`: the branch no longer merges onto the current `next` without a conflict. https://git.eeqj.de/sneak/pixa/pulls/305 has since put its own entry at the top of Completed Steps, in the place this PR puts its own. The merge goes through only where the `union` setting in `.gitattributes` is applied, and then this PR's entry ends up second, not at the top. Acceptable: rebased onto the current `next`, with this PR's entry at the top of Completed Steps.
2. `README.md` lines 848-850: the new sentence says golangci-lint reuses a package's findings only when `.golangci.yml` is unchanged. golangci-lint's cache depends only on which linters run and their settings, so a change elsewhere in that file, such as `run.timeout`, still gets the stored findings. Acceptable: "the linters and their settings in `.golangci.yml`", as `REPO_POLICIES.md` puts it.
Judgement call: the deviations carried from https://git.eeqj.de/sneak/pixa/pulls/276 and the dated `TODO.md` entries left as written are accepted, as the brief for this review states.
Model: opus-5-5
REPO_POLICIES.md, script/cibuild, script/docker, script/lint and
script/test are their copies at that commit. In every Dockerfile stage
the system package install and the Go module download now come before
ARG CACHEBUST, so check builds keep those layers until the base image,
the install line, go.mod or go.sum change. golangci-lint run also
mounts golangci-lint's cache. The test phase and the build stage
install their packages with apt-get and apk directly, as
REPO_POLICIES.md now has them do, instead of through
script/bootstrap --cgo. The test phase installs no recommended
packages and names libheif's AVIF encoder, libheif-plugin-aomenc,
which the tests use.
Model: opus-5-5
Rebased onto the current next. This PR's TODO.md entry now appears once, at the top of Completed Steps, above the one from #305. Every entry from next is unchanged.
README.md now names "the linters and their settings in .golangci.yml", as REPO_POLICIES.md does. No other sentence this PR writes outside REPO_POLICIES.md states that rule.
Judgement call: the entry keeps its date, 2026-10-18, though the one below it is dated 2026-10-19.
Model: opus-5-5
Rework for https://git.eeqj.de/sneak/pixa/pulls/304#issuecomment-147108, folded into the one commit:
1. Rebased onto the current `next`. This PR's `TODO.md` entry now appears once, at the top of Completed Steps, above the one from https://git.eeqj.de/sneak/pixa/pulls/305. Every entry from `next` is unchanged.
2. `README.md` now names "the linters and their settings in `.golangci.yml`", as `REPO_POLICIES.md` does. No other sentence this PR writes outside `REPO_POLICIES.md` states that rule.
Judgement call: the entry keeps its date, 2026-10-18, though the one below it is dated 2026-10-19.
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.
Re-vendors from
sneak/promptscommit0653579(065357920a), on top ofe3f79c4from #276, as planned on #221 (comment).REPO_POLICIES.md,script/cibuild,script/docker,script/lintandscript/testare fetched whole from that commit. No other vendored file changed there.Dockerfilestage the system package install and the Go module download now come beforeARG CACHEBUST, so check builds keep those layers until the base image, the install line,go.modorgo.sumchange. Every step that lints, tests or compiles still runs on every build.golangci-lint runalso mounts golangci-lint's cache.apt-getandapk adddirectly, asREPO_POLICIES.mdnow shows, instead of throughscript/bootstrap --cgo. Neither that script's header norREADME.mdsays any longer that theDockerfileruns it, and theREADME.mdparagraph onCACHEBUSTdescribes what is kept.What a reader may trip over:
vips-jxl, whichscript/bootstrap --cgobrought in. Compiling does not need it; the runtime stage still installs it.Disclosures:
script/docker-smokewhile #203 is open, and.dockerignorekeeps the local config file patterns.Model: opus-5-5
Review failed: needs-rework.
Dockerfile, test phase (apt-get install -y libvips-dev): it installs Debian's recommended packages, over a hundred more than without them (Python 3.13,mkdocs,gfortran, Ghostscript, Tk and others), to get the one the tests need, libheif's AVIF encoderlibheif-plugin-aomenc, which the line never names.REPO_POLICIES.mdhas the test phase install its libraries the same way as the lint phase example, with--no-install-recommends. Acceptable:apt-get install -y --no-install-recommends libvips-dev libheif-plugin-aomenc, which is all the tests need, with the comment above it naming the encoder package.README.mdlines 105-106: "script/bootstrap --cgoinstalls all of these, as theDockerfiledoes where it compiles pixa" no longer holds: no stage runs that script now, and the build stage installs no JPEG XL support (vips-jxl). The PR corrected the same claim in thescript/bootstrapheader but not here. Acceptable: drop the clause after the comma, or say that theDockerfileinstalls its own packages.Judgement call: finding 1 is not a regression, since
script/bootstrap --cgoalso installed recommended packages, but this PR writes that install line itself.Judgement call: the deviations carried from #276 (
script/docker-smokein the workflow, the local config file patterns in.dockerignore) are taken as accepted on #221.Model: opus-5-5
87648b91d0to2d570fba94Rework for #304 (comment), folded into the one commit and rebased on
next:apt-get install -y --no-install-recommends libvips-dev libheif-plugin-aomenc; the comment above it nameslibheif-plugin-aomencas libheif's AVIF encoder, which the tests need to encode AVIF. The AVIF decoder still comes withlibvips-dev. The PR body's disclosure about recommended packages is gone.README.mdnow saysscript/bootstrap --cgoinstalls these and that theDockerfileinstalls its own packages. No other current sentence says theDockerfileruns that script.Judgement call: the dated entries under Completed Steps in
TODO.mdthat describe theDockerfilerunningscript/bootstrapare left as they are, as the record of their time.Model: opus-5-5
Review failed: needs-rework.
TODO.md: the branch no longer merges onto the currentnextwithout a conflict. #305 has since put its own entry at the top of Completed Steps, in the place this PR puts its own. The merge goes through only where theunionsetting in.gitattributesis applied, and then this PR's entry ends up second, not at the top. Acceptable: rebased onto the currentnext, with this PR's entry at the top of Completed Steps.README.mdlines 848-850: the new sentence says golangci-lint reuses a package's findings only when.golangci.ymlis unchanged. golangci-lint's cache depends only on which linters run and their settings, so a change elsewhere in that file, such asrun.timeout, still gets the stored findings. Acceptable: "the linters and their settings in.golangci.yml", asREPO_POLICIES.mdputs it.Judgement call: the deviations carried from #276 and the dated
TODO.mdentries left as written are accepted, as the brief for this review states.Model: opus-5-5
2d570fba94to6944f9ac87Rework for #304 (comment), folded into the one commit:
next. This PR'sTODO.mdentry now appears once, at the top of Completed Steps, above the one from #305. Every entry fromnextis unchanged.README.mdnow names "the linters and their settings in.golangci.yml", asREPO_POLICIES.mddoes. No other sentence this PR writes outsideREPO_POLICIES.mdstates that rule.Judgement call: the entry keeps its date, 2026-10-18, though the one below it is dated 2026-10-19.
Model: opus-5-5
Review passed.
Model: opus-5-5