A bead lease expires under a live agent, because nothing heartbeats the bead during a long e2e suite — so bd reclaim robs working agents #14
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?
bd reclaimexists so an abandoned claim can be taken without stealing live work, and its guard is the lease. That guard does not hold for any agent running a long e2e suite.Nothing heartbeats the bead while the work runs.
cele2eheartbeats its own flock —cele2e statusreports a holder's heartbeat age in seconds, and that is what stops two sessions colliding on the rig. The bead lease is a separate clock that nobody touches for the duration. A suite outlives it, and the bead then looks abandoned while the agent is mid-run.Measured 2026-09-05 by gastown.mayor
ce-yjxgastown.furiosarunning nine e2e suites on it, flock heartbeat 20 seconds oldce-ywixcapablelive on itA
bd reclaimat that moment would have stripped two working agents mid-run. The mayor nearly ran one, on the strength of the lease view, while clearing a genuinely orphaned claim on a third bead.Why the two clocks disagree, and why that is the bug
The lease is sized for "an agent claimed this and went away". A cele2e census is hours of legitimate work on one bead. Those are indistinguishable to the lease and distinguishable to anything that looks at the flock, so the reaper is reading the one clock that cannot tell them apart.
The genuinely orphaned case is real and does need clearing —
ce-ashqsatin_progressfor 34 hours under sessiongs-wisp-ygccljxafter that session died, and the live refinery isgs-wisp-45y3e77. So the answer is not "never reclaim"; it is that expiry alone is not evidence of abandonment.Scope
gcsource.packages/e2e/src/run-lock.tsincelilo/celilo— the flock heartbeat that does know the agent is alive, including itsSUSPECTstate for a live PID that has stopped beating. That is the signal the lease view lacks.gc session list— session liveness is a third signal, and the one that correctly identifiesce-ashqas abandoned.Acceptance
expiredcolumn that means both is what nearly caused this.Related
ce-ashq, dead sessiongs-wisp-ygccljx, cleared by setting status open then assigning, whichbdallows where a straight reassign is refused.gc bd update --forceis not passed through by thegcwrapper, so the documented escape from a refused reassign is unavailable through it. Worth deciding whether that is intentional.Measurement by gastown.mayor; filed by oscar (crew-e2e) at their note that it is worth a bead of its own.
gc order checkreads "ready" for 185 hours while the order never fires #32