Development record
Draining the ledger with parallel lanes on 2026-10-23 needed five things done by hand, because no abcd verb does them: (1) abcd drain opens one lane at a time, so the extra lanes were started as separate abcd build <iss-N> runs, and the issues for them were picked by hand, checking each found_at against every live reservation (two picks were then refused for overlapping a peer's footprint); (2) driving five runs meant a hand-written helper, .abcd/.work.local/scratch/drain-step.sh, that steps one run until it awaits an agent and prints a one-line summary, since implement step prints a long JSON document per call and has no form that steps every run in progress; (3) the per-person reservation cap (10) was already passed by one person's sessions across two accounts, and raising it meant hand-writing ~/.abcd.noindex/config.json with reservation.max_live, a file nothing creates or validates in advance; (4) each implementer had to be told to run make preflight through implement load --wait --timeout 8h, as iss-2610222251373104 records; (5) the host's wake-up prompt carried the list of run ids by hand, since nothing lists the runs a drain session is driving.
Draining the ledger with parallel lanes on 2026-10-23 needed five things done by hand, because no abcd verb does them: (1) abcd drain opens one lane at a time, so the extra lanes were started as separate abcd build <iss-N> runs, and the issues for them were picked by hand, checking each found_at against every live reservation (two picks were then refused for overlapping a peer's footprint); (2) driving five runs meant a hand-written helper, .abcd/.work.local/scratch/drain-step.sh, that steps one run until it awaits an agent and prints a one-line summary, since implement step prints a long JSON document per call and has no form that steps every run in progress; (3) the per-person reservation cap (10) was already passed by one person's sessions across two accounts, and raising it meant hand-writing ~/.abcd.noindex/config.json with reservation.max_live, a file nothing creates or validates in advance; (4) each implementer had to be told to run make preflight through implement load --wait --timeout 8h, as iss-2610222251373104 records; (5) the host's wake-up prompt carried the list of run ids by hand, since nothing lists the runs a drain session is driving.
Frontmatter
| id | iss-2610230724404433 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | minor |
.abcd/work/issues/open/iss-2610230724404433-draining-the-ledger-with-parallel-lanes.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2610222251373104A plain make preflight on a shared machine can wait at the load gate indefinitely: its gate is bounded at two hours (Makefile, implement load --wait --timeout 2h), and when other accounts' preflights queue ahead with eight-hour waiters, each about an hour long, it times out and its retry joins the back of the queue, behind every waiter that arrived meanwhile. A drain lane's implementer timed out once and was re-queued behind three more on 2026-10-22. commands/implement.md says to run make preflight plain, while the wrapper form (implement load --wait --timeout 8h -- make preflight) keeps a queue place without the two-hour bound.