Development record
2026-10-17 — A drain's wait at the cap and on held work is a look-again time, not a gate (facilitator-on-delegation, drain-many-accounts): a move before waiting_until still looks, since passing over held work in the move's view fetches and pushes nothing, takes any issue freed since, and keeps the time first written while the same wait stands, so polling early never pushes the wait out; the cap is counted in the move's view for the holder this copy reserves as, read with no network act (claim.ReaderHolder), and where only the forge could name that holder, the reservation act's own count refuses with the typed claim.CapError, which the drain reads as the same wait; the cap's refusal stays an ErrRefused refusal, so abcd reserve still exits 2 on it, and only its advice changes, to waiting for a pull request to merge; held work is an issue passed over because another holds it or a footprint it shares, while an issue handed back on origin or one this checkout already has a run for is a person's and never keeps the drain alive; and the drain's state keeps schema version 1, its waiting_until and waiting being added as steps 1 to 3 added origin_wait and pending_hand_backs (grounds: a bounded poll as the standard consumer wait, the drain's pace window as its existing wait, and a closed vocabulary for what the state names; spc-2610161044461448 step 6; iss-2610161015371794, iss-2610161015422836)
2026-10-17 — A drain's wait at the cap and on held work is a look-again time, not a gate (facilitator-on-delegation, drain-many-accounts): a move before waiting_until still looks, since passing over held work in the move's view fetches and pushes nothing, takes any issue freed since, and keeps the time first written while the same wait stands, so polling early never pushes the wait out; the cap is counted in the move's view for the holder this copy reserves as, read with no network act (claim.ReaderHolder), and where only the forge could name that holder, the reservation act's own count refuses with the typed claim.CapError, which the drain reads as the same wait; the cap's refusal stays an ErrRefused refusal, so abcd reserve still exits 2 on it, and only its advice changes, to waiting for a pull request to merge; held work is an issue passed over because another holds it or a footprint it shares, while an issue handed back on origin or one this checkout already has a run for is a person's and never keeps the drain alive; and the drain's state keeps schema version 1, its waiting_until and waiting being added as steps 1 to 3 added origin_wait and pending_hand_backs (grounds: a bounded poll as the standard consumer wait, the drain's pace window as its existing wait, and a closed vocabulary for what the state names; spc-2610161044461448 step 6; iss-2610161015371794, iss-2610161015422836)
Frontmatter
| id | dcn-2610170018307869 |
|---|---|
| type | decision |
| date | 2026-10-17 |
.abcd/work/decisions/dcn-2610170018307869-a-drain-s-wait-at-the-cap-and-on-held.md
open on GitHub ↗ · commit history ↗
mentions3
- iss-2610161015371794At the per-person cap of ten live reservations a drain move refuses with exit 2 (the cap is not treated as contention), returns before writing its state so the judgement just answered is lost, and advises releasing a reservation, which would free an issue whose pull request is only waiting for a merge.
- iss-2610161015422836Issues passed over because other accounts hold them still let a drain stop as empty with complete true, so the next abcd drain begins a new drain with no stored judgements and judges everything again.
- spc-2610161044461448drain-many-accounts