Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

dev-env: dangling local go.mod replace + cloud-lab mutates tracked install.json cause false-negative verification runs

Open
#550 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@Amperstrand is already working on this.

Since Oct 11, 2026.

  • #736 by @Amperstrand — closed without merging
  • #864 by @Amperstrand — open

Assessment

Difficulty
3/5
Estimated time
Half a day
Newbie friendliness
75/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
go
Domain
tooling

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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from OpenTollGate/tollgate-module-basic-go

All issues in OpenTollGate/tollgate-module-basic-go

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.