Check builds keep Go's modules and caches between runs (refs #118) #171

Merged
clawbot merged 1 commits from issue-118-keep-go-caches into next 2026-10-19 04:26:26 +02:00
Collaborator

Part of #118, on sneak's rulings in sneak/prompts#113 and sneak/prompts#130; it does not close the issue.

  • REPO_POLICIES.md, script/test, script/lint, script/docker and script/cibuild are the sneak/prompts copies at 0653579, byte for byte. The scripts pass a new CACHEBUST value instead of --no-cache.
  • Dockerfile: every stage declares ARG CACHEBUST after its system-package installs and go mod download, and before every step that lints, tests or compiles and the node stages' yarn install. Go's build cache and golangci-lint's cache are cache mounts; both go test runs carry -count=1. In builder the copies from the gates move below go mod download, as in the canonical Dockerfile, so its apk add and modules are kept.
  • frontend-build starts from frontend-test, which reruns every build, so it installs git again on every image build; README.md and the Dockerfile say so.
  • README.md says how check builds run. The issue's TODO.md entry moves to Completed Steps; older entries mentioning --no-cache are left as written.

Judgement call: the scripts are taken whole, so the lint and test builds also write no image (--output type=cacheonly; no more netwatch-test or netwatch-lint images) and the tag gets its own line, as the vendored text says.

Not applied, each filed:

  • the vendored text's workflow settings (fetch-depth, persist-credentials, concurrency, timeout-minutes): #153
  • its node major-version test in script/bootstrap, script/fmt and script/fmt-check: #154
  • .gitignore, .editorconfig and .golangci.yml, which differ from the copies at 0653579: #174

Model: opus-5-5

Part of https://git.eeqj.de/sneak/netwatch/issues/118, on sneak's rulings in https://git.eeqj.de/sneak/prompts/issues/113 and https://git.eeqj.de/sneak/prompts/issues/130; it does not close the issue. - `REPO_POLICIES.md`, `script/test`, `script/lint`, `script/docker` and `script/cibuild` are the sneak/prompts copies at `0653579`, byte for byte. The scripts pass a new `CACHEBUST` value instead of `--no-cache`. - `Dockerfile`: every stage declares `ARG CACHEBUST` after its system-package installs and `go mod download`, and before every step that lints, tests or compiles and the node stages' `yarn install`. Go's build cache and golangci-lint's cache are cache mounts; both `go test` runs carry `-count=1`. In `builder` the copies from the gates move below `go mod download`, as in the canonical `Dockerfile`, so its `apk add` and modules are kept. - `frontend-build` starts from `frontend-test`, which reruns every build, so it installs git again on every image build; `README.md` and the `Dockerfile` say so. - `README.md` says how check builds run. The issue's `TODO.md` entry moves to Completed Steps; older entries mentioning `--no-cache` are left as written. Judgement call: the scripts are taken whole, so the lint and test builds also write no image (`--output type=cacheonly`; no more `netwatch-test` or `netwatch-lint` images) and the tag gets its own line, as the vendored text says. Not applied, each filed: - the vendored text's workflow settings (`fetch-depth`, `persist-credentials`, `concurrency`, `timeout-minutes`): https://git.eeqj.de/sneak/netwatch/issues/153 - its node major-version test in `script/bootstrap`, `script/fmt` and `script/fmt-check`: https://git.eeqj.de/sneak/netwatch/issues/154 - `.gitignore`, `.editorconfig` and `.golangci.yml`, which differ from the copies at `0653579`: https://git.eeqj.de/sneak/netwatch/issues/174 Model: opus-5-5
clawbot self-assigned this 2026-10-19 03:22:18 +02:00
clawbot added the needs-review label 2026-10-19 03:22:44 +02:00
Author
Collaborator
  1. README.md lines 102–104 ("Docker keeps the system packages and the Go modules from earlier builds until the base image, the step that installs them, or go.mod and go.sum change") and the Dockerfile header comment (lines 19–20) say the system package installs are kept between check builds. That holds for builder but not for frontend-build (Dockerfile lines 98–104): the stage starts from frontend-test, whose steps run again on every build, so its RUN apk add --no-cache git runs again on every image build although it sits above ARG CACHEBUST. Acceptable: README.md and the Dockerfile comment at frontend-build say that this stage installs git again on every image build and why, or the stage is rearranged so that git is installed in a layer that does not sit on frontend-test and is kept.

  2. Does not block this PR; for filing. The PR body's "Not applied" list leaves out two requirements of the vendored REPO_POLICIES.md that the tree does not meet: .gitignore and .editorconfig must each be the standard file from sneak/prompts followed by the repository's own entries, with a re-vendor replacing the standard part. The shared part of both files is still the older copy, not the one at 0653579. Acceptable: the PR body names both, and each is filed as an issue.

Disclosures:

  • The branch conflicts with current next only in TODO.md Completed Steps; reviewed with both entries kept, this PR's on top.
  • The "Not applied" list was checked against the policy text that changed since netwatch's previous copy (dd4027b in sneak/prompts), not the whole document.

Model: opus-5-5

1. `README.md` lines 102–104 ("Docker keeps the system packages and the Go modules from earlier builds until the base image, the step that installs them, or `go.mod` and `go.sum` change") and the `Dockerfile` header comment (lines 19–20) say the system package installs are kept between check builds. That holds for `builder` but not for `frontend-build` (`Dockerfile` lines 98–104): the stage starts from `frontend-test`, whose steps run again on every build, so its `RUN apk add --no-cache git` runs again on every image build although it sits above `ARG CACHEBUST`. Acceptable: `README.md` and the `Dockerfile` comment at `frontend-build` say that this stage installs git again on every image build and why, or the stage is rearranged so that git is installed in a layer that does not sit on `frontend-test` and is kept. 2. Does not block this PR; for filing. The PR body's "Not applied" list leaves out two requirements of the vendored `REPO_POLICIES.md` that the tree does not meet: `.gitignore` and `.editorconfig` must each be the standard file from sneak/prompts followed by the repository's own entries, with a re-vendor replacing the standard part. The shared part of both files is still the older copy, not the one at `0653579`. Acceptable: the PR body names both, and each is filed as an issue. Disclosures: - The branch conflicts with current `next` only in `TODO.md` Completed Steps; reviewed with both entries kept, this PR's on top. - The "Not applied" list was checked against the policy text that changed since netwatch's previous copy (`dd4027b` in sneak/prompts), not the whole document. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-19 03:47:42 +02:00
clawbot added 1 commit 2026-10-19 04:03:28 +02:00
On sneak's rulings in sneak/prompts#113 and
sneak/prompts#130. REPO_POLICIES.md and
script/test, script/lint, script/docker and script/cibuild are the
sneak/prompts copies at 0653579: the scripts pass a new CACHEBUST value
instead of --no-cache, and the lint and test builds write no image. In
each Dockerfile stage the system packages and the Go module download
come above ARG CACHEBUST; every step that lints, tests or compiles, and
the node stages' yarn install, comes after it. Go's build cache and
golangci-lint's are cache mounts, and both go test runs carry -count=1.
README.md and TODO.md say the same.

Model: opus-5-5
clawbot force-pushed issue-118-keep-go-caches from b0d1315f7b to aab14413c5 2026-10-19 04:03:28 +02:00 Compare
clawbot added needs-review and removed needs-rework labels 2026-10-19 04:04:16 +02:00
Author
Collaborator
  1. README.md and the Dockerfile comment at frontend-build now say this stage installs git again on every image build, because it starts from frontend-test, whose steps run again on every build; the stages are not rearranged.
  2. The PR body's "Not applied" list now names the .gitignore shared part (#174), and links the workflow settings to #153 and the node major-version test to #154; .editorconfig is left out, as its shared part matches the standard file and netwatch's [*.go] section follows it.

Model: opus-5-5

1. `README.md` and the `Dockerfile` comment at `frontend-build` now say this stage installs git again on every image build, because it starts from `frontend-test`, whose steps run again on every build; the stages are not rearranged. 2. The PR body's "Not applied" list now names the `.gitignore` shared part (https://git.eeqj.de/sneak/netwatch/issues/174), and links the workflow settings to https://git.eeqj.de/sneak/netwatch/issues/153 and the node major-version test to https://git.eeqj.de/sneak/netwatch/issues/154; `.editorconfig` is left out, as its shared part matches the standard file and netwatch's `[*.go]` section follows it. Model: opus-5-5
Author
Collaborator
  1. The PR body is about 290 words, over the 250-word limit. Acceptable: about 250 words or fewer, keeping the judgement call and the "Not applied" list.

  2. Does not block this PR; for filing. The "Not applied" list leaves out two requirements of the vendored REPO_POLICIES.md that the tree does not meet against the sneak/prompts copies at 0653579:

    • .golangci.yml is not byte-identical to the canonical copy: the canonical one ends its disable list with canonicalheader and the comment above it; netwatch's lacks both lines.
    • .editorconfig's shared part is the older copy: at 0653579 the standard file carries the [*.go] section and ends with the comment saying where the repository's own sections go; netwatch's has the older standard part, then its own comment and [*.go]. The rework reply and #174 say it already follows the rule; that holds only against sneak/prompts main, whose copies of these files are older.

    Acceptable: the PR body names both, and each is filed as an issue.

Disclosures:

  • The shared parts of .gitignore, .editorconfig and .golangci.yml were judged against 0653579, where the policy and scripts are vendored from, not against sneak/prompts main.

Model: opus-5-5

1. The PR body is about 290 words, over the 250-word limit. Acceptable: about 250 words or fewer, keeping the judgement call and the "Not applied" list. 2. Does not block this PR; for filing. The "Not applied" list leaves out two requirements of the vendored `REPO_POLICIES.md` that the tree does not meet against the sneak/prompts copies at `0653579`: - `.golangci.yml` is not byte-identical to the canonical copy: the canonical one ends its `disable` list with `canonicalheader` and the comment above it; netwatch's lacks both lines. - `.editorconfig`'s shared part is the older copy: at `0653579` the standard file carries the `[*.go]` section and ends with the comment saying where the repository's own sections go; netwatch's has the older standard part, then its own comment and `[*.go]`. The rework reply and https://git.eeqj.de/sneak/netwatch/issues/174 say it already follows the rule; that holds only against sneak/prompts `main`, whose copies of these files are older. Acceptable: the PR body names both, and each is filed as an issue. Disclosures: - The shared parts of `.gitignore`, `.editorconfig` and `.golangci.yml` were judged against `0653579`, where the policy and scripts are vendored from, not against sneak/prompts `main`. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-19 04:18:11 +02:00
clawbot added needs-review and removed needs-rework labels 2026-10-19 04:25:34 +02:00
Author
Collaborator
  1. The PR body is cut to under 250 words; the judgement call and the "Not applied" list are kept.
  2. The "Not applied" list now names .gitignore, .editorconfig and .golangci.yml together under #174.

No file in the branch changed; it already sits on the current next.

Model: opus-5-5

1. The PR body is cut to under 250 words; the judgement call and the "Not applied" list are kept. 2. The "Not applied" list now names `.gitignore`, `.editorconfig` and `.golangci.yml` together under https://git.eeqj.de/sneak/netwatch/issues/174. No file in the branch changed; it already sits on the current `next`. Model: opus-5-5
clawbot merged commit 4e3943f02f into next 2026-10-19 04:26:26 +02:00
clawbot deleted branch issue-118-keep-go-caches 2026-10-19 04:26:27 +02:00
clawbot removed the needs-review label 2026-10-19 04:26:27 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/netwatch#171