From 777bd151495479ef5871201ce83c9040e452ee7a Mon Sep 17 00:00:00 2001 From: Evan Jarrett Date: Tue, 25 Aug 2026 10:36:02 -0500 Subject: [PATCH] build: race-check the billing package too test-race runs `go test -race ./...`, which is untagged, so pkg/billing prints "no test files" and the money path has never been through the race detector. This is the same gap batch 13 found in `test`, where the only -tags billing line in the Makefile was a build line and gate_test.go had never executed in CI. That one was fixed by adding test-billing; test-race was left behind. It is not a theoretical gap. UpdateCrewTierOnAllHolds fans out to every managed hold concurrently and joins the errors, and RefreshHoldTiers reads and writes holdTierCache under a mutex from a background worker while request handlers read it. Those are the two places in the package where a race would actually live. Passes: 2.059s, no races reported. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_011rmjvU2gSRL9wFnmqVsWaF --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 1403a2a..6530353 100644 --- a/Makefile +++ b/Makefile @@ -110,6 +110,8 @@ test-billing: ## Run the billing-tagged tests (skipped by plain `go test ./...`) test-race: ## Run tests with race detector @echo "→ Running tests with race detector..." go test -race ./... + @echo "→ Running billing-tagged tests with race detector..." + go test -race -tags billing ./pkg/billing/... test-verbose: ## Run tests with verbose output @echo "→ Running tests with verbose output..."