dev-env: dangling local go.mod replace + cloud-lab mutates tracked install.json cause false-negative verification runs
Maintainers usually reply within 1 day
@Amperstrand is already working on this.
Since Oct 11, 2026.
Assessment
- Difficulty
- 3/5
- Estimated time
- Half a day
- Newbie friendliness
- 75/100
Research direction
Look at src/cli/go.mod to understand the replace directive pattern, then examine scripts/go-battery.sh to add a guard that fails when a replace target path does not exist. For the cloud-lab issue, find where tests/cloud-lab/configs/install.json gets mutated during test runs and change it to write runtime state to an untracked location. Done means the guard catches dangling replace directives with a message pointing to go.work, and cloud-lab no longer dirties the working tree.
Written by the indexing model from the issue text.
Description
Summary
Two unrelated local-environment hazards on the shared dev box produced false-negative verification runs and nearly leaked unrelated state into a PR (#549) via a stash. Both are box-local today but the classes are repo-durable problems worth guarding against.
1. Dangling replace in src/cli/go.mod → nonexistent directory
An uncommitted local edit added:
+replace github.com/OpenTollGate/gonuts-tollgate => ../third_party/gonuts-fork
…while src/third_party/gonuts-fork does not exist on the box. Consequence: every build/test invocation in src/cli (and anything resolving through it) fails with a module-resolution error that looks exactly like a code regression. During #549's pre-push verification this produced a red go test for changes that were provably green — the failure had nothing to do with the branch.
If the fork checkout is mid-setup: the sanctioned mechanism for local overrides is a go.work file (gitignorable, per-developer, never rides a commit or a stash) rather than editing go.mod. Suggested durable guard: scripts/go-battery.sh (or a lint lane) fails fast on any replace directive whose target path does not exist, with a message pointing at go.work.
2. cloud-lab writes runtime state into a tracked config
A test run mutated tests/cloud-lab/configs/install.json in the working tree:
- "install_time": 0,
+ "install_time": 1790094992,
-}
+}
\ No newline at end of file
install.json is tracked; the lab treats it as runtime state. Anyone running the suite walks away with a dirty tree, and the change rides any careless git add/git stash pop (it twice hitchhiked near #549's stashes). Suggested fix: the lab writes its runtime state to an untracked location (or the tracked file becomes a template the lab copies to a build dir), plus a .gitignore entry if the in-place write is load-bearing.
Remediation on the box
Both working-tree mutations have been reverted to HEAD on the shared box; the replace line is preserved verbatim above and in the git stash named teammate-local-env: gonuts-fork redirect + install.json artifact if its author wants it back.
- Dominant language
- Go
- Stars
- 12
- Forks
- 14
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 232
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from OpenTollGate/tollgate-module-basic-go
-
Session event emits the customer's MAC address in the p tag — spec-invalid value on every payment responsePossibly taken @Amperstrand claimed this 1 day ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
OpenTollGate/tollgate-module-basic-go#949 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
OpenTollGate/tollgate-module-basic-go#833 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
OpenTollGate/tollgate-module-basic-go#813 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
OpenTollGate/tollgate-module-basic-go#804 ·
Maintainers usually reply within 1 day
-
go-battery needs an ndsctl on PATH: TestPurchaseSessionGuardHoldsThroughTheOutcomeUnknownWindow fails on bare hosts (passes with stub)Possibly taken @Amperstrand claimed this 5 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
OpenTollGate/tollgate-module-basic-go#726 · 2 comments ·
Maintainers usually reply within 1 day
All issues in OpenTollGate/tollgate-module-basic-go
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
keyxmakerx/Chronicle#1469 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Gentleman-Programming/gentle-ai#5565 · 1 comment ·
Maintainers usually reply within 1 day
-
bug frontend grammar sev-3
Difficulty 2/5 1-3 hours Newbie friendliness 63/100
-
Docs: say where source and device come from in the Withings and Polar guidesPossibly taken A pull request linked to this issue is open or already merged. Openconnector docs good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
soma-intelligence/open-health-sync#134 ·
Maintainers usually reply within 1 day
-
bug frontend
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 3 days