Development record
A 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.
A 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.
Frontmatter
| id | iss-2610272041031418 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610272041031418-a-context-bound-git-read-can-fail-on-a.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2610100846469473TestRebuildingInPlaceIsByteIdentical (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.