What happened
TestTwoWorkersLiveAtOnceEachGetOnlyItsOwnNote in internal/run failed once,
inside a run of 112 packages at once on a loaded build box.
--- FAIL: TestTwoWorkersLiveAtOnceEachGetOnlyItsOwnNote (0.66s)
note_channel_test.go:326: alpha was handed its own note 0 times, want once
FAIL github.com/Agent-Field/codeaf/internal/run 29.998s
The dump the assertion prints shows three requests to alpha, each carrying the
work order and the ask, and none of them carrying the note. So the note was not
delivered late or delivered to the wrong worker in that run. It was not there at
all across every request the worker made.
It does not reproduce, and that is the report
Sixteen attempts on the same tree at the same commit, on a box at load 0.33:
| what |
result |
-count=5 -run TestTwoWorkersLiveAtOnce ./internal/run/ |
ok 2.758s |
-count=3 ./internal/run/ (whole package, so the other tests run beside it) |
ok 75.353s |
GOMAXPROCS=1 -count=8 -run TestTwoWorkersLiveAtOnce ./internal/run/ |
ok 4.151s |
Filing rather than rerunning is deliberate. The repository's own rule is that a
test failing only when other suites run beside it is a bug report and not a
known shape, and this test is about two workers being live at once, which is the
condition a loaded box actually supplies and an isolated rerun does not.
It is NOT in .github/known-red.txt and must not be added to it.
Why it matters more than an ordinary flake
The behaviour under test is the one #1356 shipped: a note is a channel into a
running worker rather than a log nobody reads. A worker that never receives its
note is that feature not working, and the failing case renders exactly like a
run where nobody sent a note. If this is real, the product symptom is silence.
Replication
Not reliable. What produced it once: go test -count=1 over every package
except internal/tui3 and internal/session on one box, roughly 112 packages,
during a full-tree check. The commit was 2f94ca1f0.
Acceptance
- Whatever the cause, the test's failure output says which of the two workers
got which notes and when, not only that alpha got none. The current dump
shows the requests but not the delivery decisions, so a reader cannot tell a
note that was never written from one written to the wrong worker.
- If it is a race in the runtime,
-race on this package in CI names it.
- If it is a race in the fixture, the fixture is fixed, and the change says
which of the two it was. Not "made deterministic".
What happened
TestTwoWorkersLiveAtOnceEachGetOnlyItsOwnNoteininternal/runfailed once,inside a run of 112 packages at once on a loaded build box.
The dump the assertion prints shows three requests to alpha, each carrying the
work order and the ask, and none of them carrying the note. So the note was not
delivered late or delivered to the wrong worker in that run. It was not there at
all across every request the worker made.
It does not reproduce, and that is the report
Sixteen attempts on the same tree at the same commit, on a box at load 0.33:
-count=5 -run TestTwoWorkersLiveAtOnce ./internal/run/-count=3 ./internal/run/(whole package, so the other tests run beside it)GOMAXPROCS=1 -count=8 -run TestTwoWorkersLiveAtOnce ./internal/run/Filing rather than rerunning is deliberate. The repository's own rule is that a
test failing only when other suites run beside it is a bug report and not a
known shape, and this test is about two workers being live at once, which is the
condition a loaded box actually supplies and an isolated rerun does not.
It is NOT in
.github/known-red.txtand must not be added to it.Why it matters more than an ordinary flake
The behaviour under test is the one #1356 shipped: a note is a channel into a
running worker rather than a log nobody reads. A worker that never receives its
note is that feature not working, and the failing case renders exactly like a
run where nobody sent a note. If this is real, the product symptom is silence.
Replication
Not reliable. What produced it once:
go test -count=1over every packageexcept
internal/tui3andinternal/sessionon one box, roughly 112 packages,during a full-tree check. The commit was
2f94ca1f0.Acceptance
got which notes and when, not only that alpha got none. The current dump
shows the requests but not the delivery decisions, so a reader cannot tell a
note that was never written from one written to the wrong worker.
-raceon this package in CI names it.which of the two it was. Not "made deterministic".