DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path change-requests/cr-2026-201-loomworks-b87-all-claim-replies-v0_1.md

DUNIN7-M4 — INFRASTRUCTURE CHANGE REQUEST

CR-2026-201 — B-87's four all-claim replies: the server says what the server did (v0.1)

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.


0. Settled — the Operator's ordering ruling, 2026-08-11. Do not re-raise.

  1. The four all-claim remedies now, as one CR. Not the five splits. Not B-86 first. The ordering rationale is the ruling: every all-claim conversion re-pins a turn classification leans on, so these four shrink B-86's problem before anyone touches a classifier prompt that moves all 32 intents. The other order pays that blast radius to fix a dependency that's about to get smaller.
  2. No mechanism decision arises here. Prefix-composition versus structured side-channel is the five-splits question. All-claim means the whole reply is server-composed exactly as the denial was (B-87's _denied_reply; the held/committed acks before it) — existing precedent, no new machinery. That makes this slice cheap as well as first.
  3. After it lands, B-86's dependency is re-measured, not assumed. The one-sentence-three-routings result was measured against prose that these conversions make deterministic. If the dependency is materially smaller, B-86's remedy may be smaller too; if it isn't, that is worth knowing before accepting a 32-intent change. The re-measurement is a build step of this CR (§5 Step 4), and its numbers are an acceptance-gate item.
  4. The five splits get their own CR after B-86 is settled, with the mechanism decision and commit_project_draft's empty-slot prerequisite named as its own step. Nothing in this CR touches them.

1. The four remedies

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."

2. Consequences named, so they are chosen

3. Tests — each observed failing first, per the standing discipline

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.

4. The B-86 re-measurement (Step 4 — a report, not an assumption)

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.

5. Build steps

| 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 |

6. Acceptance gate

  1. All four outcomes server-composed; per-remedy tests observed failing first; determinism pinned.
  2. The no-claim elicitations demonstrably still model-voiced (fence tests).
  3. No new machinery: the diff contains compositions and tests only — no changes to delegated_response handling, the responder, or the classifier.
  4. Suite green (zero failures); both gates clean; push run watched and reported.
  5. The B-86 re-measurement reported with counts per condition — an acceptance item, not an aside.
  6. Seed-mutability recorded (Kind C expected; a null finding is an entry).

7. Kickoff prompt


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.