Development record
TestRebuildingInPlaceIsByteIdentical (internal/core/site) failed in make preflight on 2026-10-10 with 'sits inside a checkout but git cannot name its root (exec: WaitDelay expired before I/O complete (stderr: ""))' while the machine's five-minute load average was about 48 on 16 cores, from concurrent sessions' preflights; the same test passed three times in a row once the load fell. The site build's root lookup turns a git subprocess that misses its WaitDelay into a refusal, so a loaded machine fails a records-only branch's preflight on code it did not touch.
TestRebuildingInPlaceIsByteIdentical (internal/core/site) failed in make preflight on 2026-10-10 with 'sits inside a checkout but git cannot name its root (exec: WaitDelay expired before I/O complete (stderr: ""))' while the machine's five-minute load average was about 48 on 16 cores, from concurrent sessions' preflights; the same test passed three times in a row once the load fell. The site build's root lookup turns a git subprocess that misses its WaitDelay into a refusal, so a loaded machine fails a records-only branch's preflight on code it did not touch.
A second symptom, reported by a peer session at about 08:40Z on 2026-10-10: the same test failed in the race lane of another branch's preflight with 'build: site: <tmp>/003 is not empty, and this repository has no root commit for a .abcd-site-build to name ... refusing to remove it'. The test's first build succeeded and its second got an empty root commit. gitutil.RootCommit (internal/gitutil/repo.go:281) folds every rev-list error into "", so the same WaitDelay miss under load reads as a repository with no root commit. Five isolated race-enabled reruns passed.
A third sighting, reported by a peer session on 2026-10-10: TestASiteWithNoDocsBuildLinksNoDocsTree (internal/core/site) failed on another branch's preflight with the same 'sits inside a checkout but git cannot name its root (exec: WaitDelay expired before I/O complete (stderr: ""))' refusal. It is the root lookup again, reached through a different test: any site build on a loaded machine can hit it.
A fourth sighting, reported by a peer session on 2026-10-10 under a load average of about 169 on 16 cores: TestALaneThatExhaustsItsFixRoundsIsHandedBack (internal/core/implement/loop) failed with 'refused at validate for lane-1: the repository has no root commit to key the worktree store on'. The lane worktree store keys on gitutil.RootCommit (internal/core/implement/loop/lane.go:112), so the same transient git failure reads there as a repository with no commits.
A possible fifth sighting, reported by a peer session on 2026-10-10 at a load average of about 125: TestALaterRefusalInTheCallKeepsTheTimeTheCheckWaitBegan (internal/core/implement/loop) failed with 'lane 1 waits for its full check: <nil>', and three isolated race-enabled reruns passed. It is consistent with this cause but not proven to be it. The test steps the run up to ten times and stops at the first refusal of any kind. The land and validate stages derive the lane's worktree through gitutil.RootCommit (internal/core/implement/loop/lane.go:112), so an empty root commit there refuses before lane 1's landing is written, and that leaves exactly the nil landing the message shows. Any other refusal in those calls would leave the same trace.
Frontmatter
| id | iss-2610100846469473 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610100846469473-testrebuildinginplaceisbyteidentical.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2610272041031418A context-bound git read can fail on a loaded machine after git has already answered: isolatedGitContext (internal/gitutil/repo.go) sets WaitDelay to 50 ms whenever the context can end, and exec starts that timer when git exits on its own, so the copy of git's output can miss it and Wait reports exec.ErrWaitDelay over a successful git. The status reader runs under a deadline, so on 2026-10-27 TestADoubtfulAnnouncementIsFlaggedAndEveryOtherBranchStillRead (internal/core/claim/status_test.go:300) failed a records-only preflight with 'reading the status branches: exec: WaitDelay expired before I/O complete', and in use the prompt hook would print 'status unavailable' for the same reason. The fix for iss-2610100846469473 removed the delay only for callers with no deadline.