Version. 0.1 · Date. 2026-08-11 · Author. Claude Code (drafting, from the split-test scoping) / Marvin Percival (approving).
Target. /Users/dunin7/loomworks-engine, branch main.
Baseline. Engine a7e26bc. CC confirms at Step 0.
Companion to. inspection-briefs/loomworks-b86-b87-scoping-report-v0_1 (record 6b05571) — the source for the categorization; where this CR and the brief disagree, the brief governs, verified against code.
Charter. Autonomous regime. Status. DRAFT — awaiting the gate. Do not execute.
_denied_reply; the held/committed acks before it) — existing precedent, no new machinery. That makes this slice cheap as well as first.commit_project_draft's empty-slot prerequisite named as its own step. Nothing in this CR touches them.
Each is a whole-reply server composition on the _denied_reply pattern: deterministic, composed from the operation's own results, never from the model. The no-claim elicitations (no_project, missing_shape_type, missing_target) remain model prose — they assert nothing (the brief's fourth category), and the fence tests pin that they stay un-delegated.
A. approval_card (both request intents — the highest-traffic claim in the delegation flow). Composed from the card that was actually created: "I've proposed the {target} — you'll find it in your notifications to approve or decline." The per_action_forced variant appends the standing-authorization note (a server fact: the delegation resolved pre_authorized and the registry forced the card). Side effect the CR does deliberately: this is the reply that follows a successful grant in the arc — composing it extends the deterministic-framing chain B-86 leans on by one more turn.
B. executed / executed_then_failed (both request intents). "Under your standing authorization I produced the {target}{ref}." / "The {target} was dispatched under your standing authorization, but its execution failed and it did not happen. Reason: {reason}." Composed from execution_result — the same status-branching CR-2026-199 put in the formatter, now upstream of any model. (Dormant for Tier-1 under per_action_only; live code either way.)
C. approve_draft's three outcomes. "Done — {title} executed." / "Approved — but the execution failed and it did not happen. Reason: {reason}." / "There's nothing waiting for your approval right now." All three composed from process_approval's actual result.
D. remember_about_me's error branch (no personal engagement). "Something's misconfigured on my side — your personal memory isn't set up, so I couldn't hold this. Nothing was saved."
_format_delegation_action's executed/approval_card/denied branches and _format_approve_draft become unreachable in live traffic once their outcomes delegate. They stay, as the fallback contract and because CR-2026-199's tests pin their correctness — the same belt-and-braces the denial left in place. The templates' now-dead rule lines likewise stay; trimming template prose is not this CR.OPERATION_RESULT_INTENTS validation is untouched: both intents keep their formatters and placeholders.approve_draft is deprecated for held-item saving (CR-2026-127) but live for named-draft approval — remedy C covers the live use, changes nothing about the deprecation.
Per remedy: delegated_response present on the outcome; the claim text names the server facts (target/ref/reason/title); determinism pinned (same input, same words — the property unpinned generation cannot give); the overclaim phrases absent by construction. Fence tests: the three no-claim elicitations still reach the responder; a per-action grant's card path and the B-87 denial are regression-pinned. Existing Phase 45 / CR-197 / CR-199 / B-87 suites re-run explicitly.
Reproduce the one-sentence-three-routings measurement with the classifier probe harness against synthetic histories built from the new deterministic replies: (a) the clean arc (deny → grant sentence), (b) the polluted arc as the transcript had it, with fallback turns, (c) the polluted arc with the new server-composed turns in place of what the model had composed. Three trials per condition (the harness's precedent). Report the routing per condition with counts. The numbers go in the completion note and decide B-86's framing; this CR does not act on them.
| Step | What | Mode |
|---|---|---|
| 0 | Pre-flight — baseline a7e26bc, tree clean. | Auto |
| 1 | Verify the four against the code (the brief governs); tests written and observed failing. | Auto |
| 2 | The four compositions, on the _denied_reply pattern. | Auto |
| 3 | Full suite; ruff; mypy; adjacent suites explicitly. | Auto |
| 4 | The B-86 re-measurement per §4; numbers recorded. | Auto |
| A | Checkpoint. | Checkpoint |
| 5 | Tag cr-2026-201-b87-all-claim-replies. Push. Watch the CI run and report its result. | Auto |
delegated_response handling, the responder, or the classifier.
Execute CR-2026-201 v0.1 at change-requests/cr-2026-201-loomworks-b87-
all-claim-replies-v0_1.md in loomworks-record. Confirm the CR number
and baseline first.
§0 carries the Operator's ordering ruling. The four all-claim replies
only — not the five splits, not B-86. No mechanism decision exists
here: whole-reply server composition on the _denied_reply precedent.
The fence matters as much as the fix: the three no-claim elicitations
stay model prose — they assert nothing. Pin that.
Step 4 is load-bearing: re-measure B-86's dependency against the new
deterministic replies rather than assuming the old measurement held.
Report counts per condition. The numbers decide B-86's framing; this
CR does not act on them.
Each test observed failing first. Determinism is itself a pinned
property — same input, same words.
DUNIN7 — Done In Seven LLC — Miami, Florida CR-2026-201 — B-87's four all-claim replies — v0.1 — 2026-08-11 The server says what the server did; the model talks about everything else.