Repository navigation
a worker was handed no note at all under a loaded full-tree run #1375
Description
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,
-raceon 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".
Drafted with CodeAF · reviewed and owned by the author
Activity
santoshkumarradha commentedon Sep 22, 2026
Twenty-two more attempts, including the exact condition that produced it. Still no reproduction.
-race -count=20 -run TestTwoWorkersLiveAtOnce ./internal/run/That is 38 attempts in total at
2f94ca1f0, with the original failing condition reproduced twice at the same concurrency and green both times, and the race detector clean on the test itself.So the one-in-many nature is confirmed and the cause is not a data race the detector can see. The issue stays open on the acceptance above: the failure output has to say which worker got which note and when, because the next sighting is otherwise worth as little as this one.