From 58eafaf4c2b68875a5f91a78b0920d462f0e3d67 Mon Sep 17 00:00:00 2001 From: clawbot Date: Wed, 9 Sep 2026 13:41:57 +0200 Subject: [PATCH] Add -count=1 to the canonical Go make test example (#45) Answers https://git.eeqj.de/sneak/prompts/issues/44: the canonical Go `make test` target omitted `-count=1`, so Go replayed cached successful results and the target could exit 0 having executed no test. Every repository that copied it inherited that false green. The change adds `-count=1` to both `go test` invocations in the example in `REPO_POLICIES.md`, with a short paragraph saying why, and records the step in `TODO.md`. It defeats only the test-result cache, not the build cache, so it costs the suite's runtime and no recompilation. It is independent of the Docker layer cache that https://git.eeqj.de/sneak/prompts/issues/26 addresses. Rebased onto current `main`; the check is green. Repositories pick it up the next time each vendors the canonical files. Model: opus-5 (change); fable-5-1 (this description) Co-authored-by: sneak Co-authored-by: clawbot Co-authored-by: Jeffrey Paul Reviewed-on: https://git.eeqj.de/sneak/prompts/pulls/45 Co-authored-by: clawbot Co-committed-by: clawbot --- TODO.md | 4 ++++ prompts/REPO_POLICIES.md | 19 ++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index fac919c..721e9ab 100644 --- a/TODO.md +++ b/TODO.md @@ -21,6 +21,10 @@ fmt-check, and commit. # Completed Steps +- 2026-09-03: Added `-count=1` to both `go test` invocations in the canonical Go + `make test` example in `REPO_POLICIES.md`, so the target cannot report a + cached pass it did not earn, and documented that Go's test-result cache is a + second, independent cache stacked below the Docker layer cache. - 2026-08-07: Set the canonical `.golangci.yml` to the org-standard v2-schema config already deployed byte-identical across the org's Go repos (settings under `linters.settings` so thresholds like lll/funlen/cyclop/dupl actually diff --git a/prompts/REPO_POLICIES.md b/prompts/REPO_POLICIES.md index c83afe7..2213b27 100644 --- a/prompts/REPO_POLICIES.md +++ b/prompts/REPO_POLICIES.md @@ -1,6 +1,6 @@ --- title: Repository Policies -last_modified: 2026-08-19 +last_modified: 2026-09-03 --- This document covers repository structure, tooling, and workflow standards. Code @@ -214,11 +214,24 @@ style conventions are in separate documents: ```makefile test: - @go test -timeout 90s -race -cover ./... || \ + @go test -count=1 -timeout 90s -race -cover ./... || \ { echo "--- Rerunning with -v for details ---"; \ - go test -timeout 90s -race -v ./...; exit 1; } + go test -count=1 -timeout 90s -race -v ./...; exit 1; } ``` + `-count=1` is required on both invocations: it defeats Go's test _result_ + cache, so the target cannot report a pass it did not earn, and the rerun + reproduces a failure instead of replaying it. It leaves the build cache + alone, so it costs the runtime of the suite and no recompilation. + + Note that this is a second, independent cache, stacked below the Docker + layer cache that [issue #26](https://git.eeqj.de/sneak/prompts/issues/26) + addresses. `CHECK_EPOCH` guarantees the `RUN make test` _step_ re-executes; + it does not guarantee `go test` inside that step does any work, because the + `GOCACHE` baked into earlier image layers survives into the re-executed + step. They are two separate defects requiring two separate fixes, and a fix + for one must not be recorded as covering the other. + Python example: ```makefile