Development record
An agent's text comes back from abcd's rewriter written for its reader and within its limits
Press Release
An agent in an abcd-managed repository hands text meant for a reader to abcd's rewriter and gets back text that fits. A question for the product thinker comes back in plain words within the question box, a docs entry within the writing style, a record title within the filename budget; abcd's own counter judges every limit, and the rewriter keeps going until the text passes or says it cannot. The person's own words are never rewritten, and the model it runs on is the routing table's choice, so a team can pick a cheaper or a stronger one.
Why This Matters
Proposed by the facilitator's review of 2026-10-10; not yet confirmed by the product thinker.
An agent writes for three readers at once and for limits it cannot count: a question must fit the question box (twenty-four rows at eighty columns), a product thinker's summary must use plain words with no internals, a docs entry must follow the writing style, and a record title must keep its file within the Windows path limit (iss-2610100626320367). Today one case is covered: the question-drafter agent drafts abcd's questions to the asking rules, and only when the asking agent remembers to use it. Every other text is written once by the agent doing the work, judged afterwards by a gate or by the person, and rewritten by hand when it fails.
Mechanism
Proposed by the facilitator's review of 2026-10-10; not yet confirmed by the product thinker.
We expect text to reach its reader fitting on the first showing, because the rewriter is given the reader's profile and abcd's own counter, and stops only when the counter passes, rather than an agent estimating a count it cannot see. Shown wrong if a lab finds the rewritten text losing meaning the original carried (a dropped qualifier, an invented claim) as often as it fixes a limit, or if the call's cost and delay make agents skip it as they skip the drafter today.
Scope Conditions
Proposed by the facilitator's review of 2026-10-10; not yet confirmed by the product thinker.
- Holds for a host that can start a sub-agent from an agent definition with its own model; abcd itself cannot start one, so the rewriter is reached through the asking agent, prompted by the rules and by a gate's refusal.
- Holds while abcd's counters (the question check's rows, docs-lint, the slug cap) are the judge of every limit; the rewriter never judges its own fit.
Acceptance Criteria
Required (the itd-1 discipline): add at least one Given-When-Then bullet describing the verifiable bar for "shipped" before this draft can be planned.
SOTA
Surveyed on 2026-10-23. The plain-language rules a reader's profile would
carry are in the elicitation and interviews SOTA note
(its itd-168 and itd-172 sections: GOV.UK's checkable surface rules, the
65-character title and 160-character summary, readability formulas judged
unfit). Model routing is in the models, prompts and measurement SOTA note.
The lineage stays under ## Prior Art.
- Models follow short word-count limits reasonably and long ones badly; abcd's limits are rows, characters and slug lengths a model sees only as tokens, so the external counter stays the judge. Across 26 models, "most models reasonably follow short-length instructions but deteriorate sharply beyond a certain threshold", and reasoning models follow length best (LIFEBench, Zhang et al., arXiv 2505.16234). The benchmark counts words, from 16 to 8,192; abcd's limits are short, so what carries the argument here is not the benchmark but the mismatch between what abcd counts and what a model sees, and the Scope Condition "the rewriter never judges its own fit" holds even for short text.
- Shortening adds and drops meaning, and ordinary metrics do not see it. Simplification systems "risk introducing errors" by "inserting statements unsupported by the corresponding original text, or by omitting key information". These errors appear often in model outputs and in human references, and "are not captured by existing evaluation metrics" (Devaraj et al., ACL 2022). This is the Mechanism's falsifier exactly ("a dropped qualifier, an invented claim"). The lab that sets the default model needs a meaning-preservation check (inserted claim, dropped qualifier, by a judge that sees the original) beside the fit and cost measures. A fit-only comparison would pick the model that cuts hardest.
- Surface rules are checkable, readability scores are not. The elicitation note finds GOV.UK's surface rules (length, full stop, a verb, few shared words) testable by a counter, and readability formulas a poor predictor. The profile should carry rules of the first kind only, so the counter stays the judge.
Path 2: native, growing the question drafter into the rewriter (one canonical primitive), with abcd's counters as the stop rule and the lab scoring meaning preservation alongside fit and cost. No dependency. The independent fit-challenge runs at plan time.
Open Questions
- Which model is the default? The lab iss-2610090816296964 already plans compares the quick tier (Haiku 4.5) with the default tier on the drafter's material for fit, lost meaning and cost; its result sets the default, and the routing table (itd-2609201916056194) lets a team choose another.
- (SOTA 2026-10-23) Does the default-model lab score meaning preservation (an inserted claim, a dropped qualifier, judged against the original) as well as fit and cost, so that the cheapest model to fit is not chosen for cutting hardest?
Prior Art
- The
question-drafteragent (agents/question-drafter.md, first shipped in v0.13.3): drafts abcd's questions to the asking rules and counts rows as the question check does. This intent grows it into the general rewriter rather than adding a second agent (principle: one canonical primitive). - iss-2610090816296964: the no-repetition rule for question text and the lab comparing model tiers for the drafter.
- iss-2610080618506115: the model-tier idea the lab feeds.
- itd-2609201916056194 (shipped): a delegated agent run through a chosen model, the routing this rewriter's model choice uses.
- iss-2610100626320367: the record filename cap, which stays the guarantee; the rewriter can only make a shortened title read well.
Decisions
- 2026-10-10: the product thinker proposed a dedicated rewrite agent (Haiku by default, the model configurable) that rewrites any text for the product thinker, the facilitator or the user-facing docs until it meets given limits, run automatically by agents for every writing task, and asked for an adversarial review: "Critically review my proposal, I'm not invested in it", adding that it "becomes a general rewrite agent for abcd-managed repos". The review found most limits are counts that abcd's code measures and the rewriter can only be asked to meet; that abcd cannot start an agent itself, so "automatically" means a rule and a gate, as the drafter has today; that running it for every text costs a sub-agent call each time; that meaning drift is the main risk; and that the drafter and the routing table already exist. Offered (A) growing the drafter into the general rewriter, (B) a new agent for every writing task, or (C) code fixes only, the product thinker chose "C first, then A": the code fixes are iss-2610100626211810 (the mode set from the question's chip), iss-2610100626327722 (the rows line in a refusal) and iss-2610100626320367 (the filename cap), and this draft is A.
- 2026-10-10: the product thinker settled three of the draft's open questions. Which texts first: "All person-facing", so questions, record titles, product-thinker summaries and docs entries go through the rewriter, and chat replies and commit messages do not. Who checks that a rewrite kept the meaning: "A separate checker", a second agent independent of the rewriter, at the cost of a second call per text. How its use is made to stick: "Stamped output", so the rewriter stamps what it returns and a gate checks the stamp on the texts in scope, accepting that a stamp can be forged by an agent that means to skip it. The default model stays with the lab.
Audit Notes
Empty. Populated by intent-auditor when intent moves to shipped/.
Frontmatter
| id | itd-2610100627454580 |
|---|---|
| type | intent |
| lifecycle | drafts |
| severity | minor |
.abcd/development/intents/drafts/itd-2610100627454580-an-agent-in-an-abcd-managed-repository.md
open on GitHub ↗ · commit history ↗
References1
- itd-2609201916056194A role runs through the command-line harness the operator chose, and every fall back to the host is recordedrelated
Referenced by2
- iss-2610262036101688The rewriter draft rests on abcd being unable to start an agent; 17-guard describes agents abcd starts through its claude runner.related
- iss-2610262042556788itd-2610100627454580 rests on abcd being unable to start an agent; itd-2610120738075547 has abcd start cloud sessions itselfrelated
mentions8
- iss-2610080618506115Route work to model tiers by role, per task as well as per agent: thinking (Opus today), default (Sonnet) and quick (Haiku), so that, for example, a summary written for the product thinker goes to the quick tier rather than the thinking tier. The tier names are what abcd stores; each model family maps them to its own models, so a move to another vendor changes the mapping and nothing else. This refines the planned per-agent tier table (itd-2609170822093401), which has economy and frontier but no middle tier and no per-task routing. Before a cheaper tier takes over any task it should earn it: keep the thinking tier doing the live work and run the quick tier on the same task in the shadow, recording both outputs, so a later evaluation can show where the quick tier is good enough.
- iss-2610090816296964When abcd asks the person to choose, the question keeps running past the host's question box: a question over 24 rows at 80 columns was refused in a live session on the 0.13.2 plugin, and the agent cut its options down to a few words each to get it through. The product thinker, reading the refused draft, saw that its long text added nothing: a paragraph before the options described each option again, while the options' own labels and descriptions were already perfectly clear. The problem was repetition, not too little room, so the fix is a rule against it rather than a second channel for the overflow; a separate text file for the full options was considered and dropped on the product thinker's ruling of 2026-10-09.
- iss-2610100626211810An abcd question is refused with 'the mode reads managed' whenever the agent has not run abcd mode just before it, although the question's own chip ('Tech Q3', 'Product Q2') already names whom it is for. The mode is reset two ways: the asking rules tell the agent to set it back to managed after every answer, and the prompt hook resets it on the next prompt the session receives while a question is marked open, which in a turn of several questions can be a peer session's message or a message the person sends mid-turn (inferred from a refusal on 2026-10-10 after a peer message arrived; not yet reproduced). So an interview of several questions is refused intermittently, and the person sees the hook's error line each time (iss-2610070637562567 measured that every refusal reaches them framed as an error). The product thinker chose on 2026-10-10 to fix this in code first, before the general rewriter.
- iss-2610100626320367A record's file name has no cap tied to the length of its full path, so a record checked out on Windows can pass the 260-character path limit, which the product thinker reports records already do. The longest tracked path is 149 characters inside the repository; the checkout's own location comes on top, and a worktree in the machine store adds its prefix, the 40-character root commit and the worktree's name. Git for Windows will not check such a file out unless core.longpaths is set (itd-2610070544145422 is the Windows install draft).
- iss-2610100626327722When an abcd question is refused for another fault, the refusal lists the question's rows overrun among the parts to fix ('fix each and ask again'), although the rows limit alone never refuses (the question gate's rowsOnly, iss-2610070637562567). The person and the agent read it as a cause of the refusal, and the agent cuts a question the gate would have shown; seen twice in one interview on 2026-10-10.
- itd-1Every Intent Has Acceptance Criteria; Every Audit Verifies Them
- itd-168The product thinker sets how the system talks to them, and the defaults are plain language and options to choose from
- itd-172Every record has a short title and a one-line summary a non-engineer can read