Session reconciler retries a failing pre_start forever: 7,100 full worktree checkouts over three days against one stale ref lock, and every surface read healthy #17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What happened
In gc-scratch, the celilo polecat pool had demand for one more slot from 2026-09-03 00:02 until 2026-09-06 09:58 (UTC). Every reconciler tick the supervisor tried to start
celilo--gastown__nux, and every attempt failed the same way:The lock file was zero bytes, dated 2026-09-03 00:02, with no process holding it (
lsofempty, no git process alive). Git's own message says to remove it by hand. Removing it ended the loop.Measured: 7,102
starting celilo--gastown__nuxlines in~/.gc/supervisor.log, each one a full 3,019-file checkout followed by the same refusal. The supervisor process sat at 50 to 175 percent CPU,fseventsdat 15 to 25 percent, and colima's inotify forwarding pushed the churn into the docker VM, which ran at roughly 100 percent CPU with zero containers. On a 10-core host that is already the bottleneck for every merge gate, this was a measurable share of the load for three days.Why nobody saw it
gc statusshowed the pool scaled with the slot start-pending. No error.gc doctorpassed.gc session listshowed a fresh session id per attempt (gs-zj450s, thengs-p7g3pi, ...), eachstart-pending create,config, which reads as a spawn in progress.supervisor.log, the same shape as celilo/gascity#7 (pool trigger worktree evidence invalid).What would have prevented it
outcome=provider_errorwith the same error text should stop retrying every tick. Exponential backoff or a park-with-reason on the pool slot.worktree-setup.shcould test for a stale.git/refs/heads/<branch>.lock(zero bytes, no holder) before checking out 3,000 files. Git refuses only after the checkout.gc statusshould show a pool slot that has failed to start N times and why.gc doctorshould flag a ref lock with no holder older than a few minutes.Remedy applied in gc-scratch
Removed the stale lock by hand on 2026-09-06 09:58Z after confirming no holder. No bead, because the gascity rig is no longer beaded; this issue is the record.