Development record
loop-toward-acceptance
Summary
The design record for itd-50 as re-scoped on 2026-09-21: the audit-driven
fix round as the last stage of abcd build, bounded by the pace rule,
handing an unachievable intent back to drafts.
Scope
- The stage in the implement loop's state file: after
intent audit ingest, a not-met criterion sets the lane tofix-roundwith the criteria named; the loop renders the fix brief from them and starts a fresh implementer through the same runner path as any lane agent (criterion 1). - The bound: the pace configuration's fix-round count (itd-2609201925079472)
read per lane; the state file counts rounds; exhaustion, or an auditor
verdict of unmeetable-as-written, sets
unachievable(criterion 2). - The hand-back: the intent is moved
planned/ → drafts/under the intent store's lock withreplan_reason: <text>written and the audit notes kept; the spec stays open; the run record and the summary list it (criterion 3). - The hand verification: when every checkable criterion reads met, the
loop's step interface returns a
verifystep naming the intent; the host asks the product thinker one question; the answer is written withintent ready --grounds "<pursued|declined>: <their words>"; declined reopens as in 3 (criterion 4). - Inconclusive: no fix round, no count, one line in the summary (criterion 5).
Out of scope
- A per-intent
audit_mode; the loop applies to every lane. - A verification receipt schema; the grounds entry is the record.
Footprint
- packages: internal/core/implement/loop, internal/core/intent, internal/surface/cli, commands/build.md, commands/implement.md, agents/intent-auditor.md, .abcd/development/brief/04-surfaces/34-build.md
- tests: internal/core/implement/loop, internal/core/intent
Approach
Three additions to the implement spec's state machine (fix-round,
unachievable, verify), the fix brief renderer beside the lane brief
renderer, and the hand-back write in internal/core/intent (a bucket move
the reclassify verb of itd-34 can also make). The auditor's request gains an
"unmeetable as written" verdict value the ingest validates.
How the criteria are satisfied
| Criterion | Where |
|---|---|
| 1 fix round after not-met, re-audit | scope 1 |
| 2 bounded; unachievable | scope 2 |
| 3 reopened to drafts with the reason | scope 3 |
| 4 hand verification as a grounds entry | scope 4 |
| 5 inconclusive counts for nothing | scope 5 |
Progress
The spec stays open until every criterion has landed.
- Landed: criterion 1. The validate stage of
abcd build(internal/core/implement/loop/validate.go, spc-2609202134338445 piece 8) hands a round that did not pass to a fresh implementer briefed on the findings, and the next round re-runs every validator, the audit included. Under ruling DQ1a (decision 5) an undecided criterion fails the round as a not-met one does, and the fix brief names it as undecided. - Landed in part: criterion 2. The bound: the run's fix-round cap
(
--fix-rounds,pace.fix_rounds, bundled 3; decision 6) is resolved with the pace and kept in the run's state, and a round that does not pass once the lane has taken the cap stops the lane at thehanded-backstage with the verdict unachievable and the last round's findings; the run starts nothing further for it (internal/core/implement/loop/handback.go). Not built: the auditor's "unmeetable as written" verdict value. - Not built: criterion 3. The hand-back leaves the intent in
planned/: the move todrafts/withreplan_reasonand the run summary's replan list wait on the landing (spc-2609202134338445 piece 9). - Not built: criterion 4, the hand verification.
- Landed in part: criterion 5. An audit return the loop cannot read as a verdict is refused, records nothing, starts no fix round and counts against nothing; the run summary that names it waits on the run record's rendering (spc-2609202134338445 piece 10).
Frontmatter
| id | spc-2609211924346308 |
|---|---|
| type | spec |
| lifecycle | open |
.abcd/development/specs/open/spc-2609211924346308-loop-toward-acceptance.md
open on GitHub ↗ · commit history ↗
References1
- itd-50The Audit Loop Drives An Intent To Acceptance — Or Calls For A Replanimplements
mentions4
- iss-2610311224587853The board's Next list, which the product thinker picks build runs from, shows as ready two intents that abcd build refuses from the record alone, before any reservation is read: itd-50, whose spec spc-2609211924346308 has no ## Footprint packages line, and itd-39, whose ## Open Questions section the build counts as asking one question. The pick-order head skips such intents, but Next lists them unmarked, so a person who chooses from Next gets a refusal instead of a run and cannot tell the two kinds of ready apart.
- itd-34Intents Promote In Three Flavours — Standalone, Bundle-Member, Discipline
- itd-2609201925079472An autonomous run paces itself by default, and one flag sets the pace
- spc-2609202134338445one-verb-takes-a-single-intent-from-ready-to-delivered-witho