Development record
What `abcd implement` (itd-2609201916151817) would have to carry to launch autonomous run A without its hand-written prompt, from having run it over 2026-09-23/24. The pilot's list (iss-2609211105021406) stands; this adds what a two-day run across three orchestrator sessions and a second session needed. (1) The run manifest as data: the batches and lanes in order with their record ids, the decisions the run may not reopen, the stop list, and the release step with the agenda line that authorises the publish approval. (2) The routing table as a verb output the orchestrator reads, not a scratch file its first lane derived by hand: 490 open captures split into 249 to build, 203 for the product thinker, 38 to judge on their merits, with 11 duplicates marked. (3) The pace and ceiling rulings as dated values that supersede one another, which the verb enforces and the log cites: the run lived under four ceilings (two implementers and one reviewer, then five, six and four agents) and three paces (two hours on and five off, three on and two off, then no pauses), each re-read by hand from a notes file by every orchestrator. (4) The roles and the model per role: implementers and fix rounds on one model, reviewers and auditors on another and one at a time, a fresh implementer per fix round, a reviewer that never implemented, and the model id each agent writes into its trailer. (5) The review receipts: which reviews a lane owes before it lands (ruthless, security at a trust boundary, a second lens on an ADR, the fidelity audit after merge) and the verdict each returned, so that "owed" is a query rather than a list in the handover. (6) The rotation chain and the handover block: the named successor sessions, the trigger at about 60% of context, and the block's fields (rulings in force, queue state, each lane's next move, hazards, owed items) written by the verb from run state; a fresh orchestrator started from a handover of about 650 words in 4% of its context. (7) A live-agent count that enforces the ceiling: agent_start and agent_end kept by the verb, a refusal to start an agent over the ceiling, and a ceiling_overrun event when one is found (iss-2609240646542516, iss-2609240646549900). (8) Lane retirement as a step: the ancestor check against the remote default branch, the worktree removal, and a branch delete that does not wait on the local default branch (`git branch -d` refuses a branch the merge queue merged until the local default branch is fast-forwarded). (9) Measurement the verb writes itself, with required fields per event, since the hand-written log lost its agent, gate and review lines at the first rotation (iss-2609240646555891). Evidence: the run's prompt, run file and lane brief were about 50 KB of prose; the first orchestrator's start-up reading cost about 15% of its context before any lane opened, and each rotation re-read the rulings from the top of the notes file.
What abcd implement (itd-2609201916151817) would have to carry to launch autonomous run A without its hand-written prompt, from having run it over 2026-09-23/24. The pilot's list (iss-2609211105021406) stands; this adds what a two-day run across three orchestrator sessions and a second session needed. (1) The run manifest as data: the batches and lanes in order with their record ids, the decisions the run may not reopen, the stop list, and the release step with the agenda line that authorises the publish approval. (2) The routing table as a verb output the orchestrator reads, not a scratch file its first lane derived by hand: 490 open captures split into 249 to build, 203 for the product thinker, 38 to judge on their merits, with 11 duplicates marked. (3) The pace and ceiling rulings as dated values that supersede one another, which the verb enforces and the log cites: the run lived under four ceilings (two implementers and one reviewer, then five, six and four agents) and three paces (two hours on and five off, three on and two off, then no pauses), each re-read by hand from a notes file by every orchestrator. (4) The roles and the model per role: implementers and fix rounds on one model, reviewers and auditors on another and one at a time, a fresh implementer per fix round, a reviewer that never implemented, and the model id each agent writes into its trailer. (5) The review receipts: which reviews a lane owes before it lands (ruthless, security at a trust boundary, a second lens on an ADR, the fidelity audit after merge) and the verdict each returned, so that "owed" is a query rather than a list in the handover. (6) The rotation chain and the handover block: the named successor sessions, the trigger at about 60% of context, and the block's fields (rulings in force, queue state, each lane's next move, hazards, owed items) written by the verb from run state; a fresh orchestrator started from a handover of about 650 words in 4% of its context. (7) A live-agent count that enforces the ceiling: agent_start and agent_end kept by the verb, a refusal to start an agent over the ceiling, and a ceiling_overrun event when one is found (iss-2609240646542516, iss-2609240646549900). (8) Lane retirement as a step: the ancestor check against the remote default branch, the worktree removal, and a branch delete that does not wait on the local default branch (git branch -d refuses a branch the merge queue merged until the local default branch is fast-forwarded). (9) Measurement the verb writes itself, with required fields per event, since the hand-written log lost its agent, gate and review lines at the first rotation (iss-2609240646555891). Evidence: the run's prompt, run file and lane brief were about 50 KB of prose; the first orchestrator's start-up reading cost about 15% of its context before any lane opened, and each rotation re-read the rulings from the top of the notes file.
Remedy grounds (2026-09-29)
- The run's own evidence (four ceilings, three paces, a lost log at the first rotation) shows each item was a hand step; pace, ceiling, claims and the live session records already exist in internal/core/implement, so the remedy lists only what they do not cover. No outside practice was needed.
- Rejected: a second intent separate from iss-2609211105021406, since both describe one manifest.
Frontmatter
| id | iss-2609240648533996 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | minor |
.abcd/work/issues/open/iss-2609240648533996-what-abcd-implement-would-carry-to.md
open on GitHub ↗ · commit history ↗
mentions5
- iss-2609211105021406What abcd implement would have to carry to launch the pilot run without its prompt, from having run it: (1) the run file's part 1 as data: the design decisions, one per lane, that the run is not allowed to reopen, and a stop that names the decision it lacks; (2) the lane table: record ids, the files each touches, the sibling lanes touching the same files, the base sha, and the worktree path under the machine-scoped store; (3) the roles and models per role, with a fresh agent per fix round and a reviewer that never implemented; (4) the pace: window length, the pause as idle wake-ups, the agent ceiling with reviewers counted, and the tally fields written per session (lanes opened, finished, PRs, ceiling-wait minutes, agent-minutes, tokens); (5) the gate ladder per lane: preflight and fmt-check under the HOME alias where the username collides, the issue-resolution gate on the PR form, the push, the PR body re-read and lint outbound, auto-merge with the queue's method, and the rule that an armed PR is never pushed to; (6) the pre-authorised remedies, today the window recalibration, as named recipes the lane may run once; (7) the stop conditions as a list the orchestrator checks after every report; (8) the handover shape, NEXT.md's pilot section, so a crashed session is resumed from it (this run's orchestrator died once and was resumed from NEXT.md alone, the scratchpad and the run file both lost). Evidence from the sibling pilot on the same day, Dessau pilot 2 (its account is at that repository's for_abcd/pilot-2026-09-21-2-experiment.md): the outer loop ran as a script end to end in 82 minutes with zero stops for the work; every step that needed a hand was record-writing (Departures at close, captures for audit concerns, reviewers missing from the session ledger), and the pause never fired because the run fit one window, so itd-2609201925079472's pacing is untested past the first window. Implementer context peaked at 170k there against 349k in the first pilot.
- iss-2609240646542516Nothing in `abcd implement` counts the agents alive, so a run's ceiling rests on the orchestrator's arithmetic: `implement join --ceiling N` records the ceiling and the report repeats it, and the v0.10.0 changelog says as much (recorded and reported, not enforced). Autonomous run A went over its ceiling three ways. At the start two lane agents each forked themselves into three parallel workers that no count saw, until the lane brief forbade forks. At 10:28Z on 2026-09-23 the orchestrator had six agents alive against a ruled five. During the v0.10.0 cut, at 05:06Z on 2026-09-24, it launched two cross-check agents into one free slot, five alive against four, and stopped one within a minute. Each was found by the orchestrator recounting, never by a tool. Wanted, for the implement verb (itd-2609201916151817): agent_start and agent_end kept by the verb itself, a live count derived from them, and a refusal to start an agent over the ceiling. A fork cannot be seen from outside the host, so the lane brief's no-fork rule stays the discipline for that half.
- iss-2609240646549900`abcd implement log` has no event for going over the ceiling. Its loggable events are backoff, lane_open, lane_close, agent_start, agent_end, ceiling_wait, gate_run, review, fallback, stop, refusal, pr, capture and context. When the orchestrator of autonomous run A launched a fifth agent under a ceiling of four during the v0.10.0 cut, the only fit was `refusal` with a hand-chosen `kind=ceiling_overrun` field, and the earlier breach of 2026-09-23 (six alive against five) went in as a `refusal` with the condition in prose. `abcd implement report` counts ceiling waits and cannot count breaches, so the run's report is silent on the one ceiling figure that went wrong. Wanted: a `ceiling_overrun` event (agents alive, the ceiling, the lane, the minutes over) and a report column for it.
- iss-2609240646555891`abcd implement report` derives its figures from fields no writer is required to supply, and says nothing when they are missing. It counts a lane as landed only when its lane_close carries `outcome` merged or landed, and agent minutes only from agent_end lines, while `abcd implement log` accepts any set of fields on any event. In autonomous run A the orchestrator that took over at the first rotation (16:15Z on 2026-09-23) wrote lane_close lines with `pr` and `merge` fields and no outcome, used lane_open and lane_close for review and fix rounds, and wrote no agent_start, agent_end, gate_run or ceiling_wait line for the rest of the run. Over both days the report counts ten lanes landed for the first session and one for the second, where thirty pull requests merged, and its agent minutes stop at 16:08Z on the first day. None of this is flagged, because every line parses. Wanted: per-event required fields (an outcome on lane_close; role, model and minutes on agent_end) refused at `implement log` time, and a report line naming any event kind whose coverage stops partway through the run.
- itd-2609201916151817One verb takes a READY intent to delivered, and refuses while a decision is open