Date. 2026-08-10 · Author. Claude Code (execution). Operator: Marvin Percival.
CR. change-requests/cr-2026-199-loomworks-truthful-replies-v0_1.md (filed, record c3abef4; number confirmed non-colliding).
Baseline confirmed. Engine 4ae5509, tree clean at Step 0. Working tree now holds: orchestration/prompt.py, api/app.py, five prompt assets (add_knowledge.md, request_draft.md, request_revision.md, remember_about_me.md, general_conversation.md, companion_persona.md), and tests/test_cr_2026_199_truthful_replies.py. Nothing committed, tagged, or pushed.
Each member was re-verified at its exact lines rather than trusted from the brief (member 1's error branches, missing placeholder, and discarded formatter re-read directly; members 2–4 verified against the formatter, preamble, and fallback text). The fifth-member scan covered the one surface the sweep had framed narrowly: all ten ConverseSideEffect emissions were checked against their adjacent writes — every one composes from a returned write row (including the seam-error "Started a new project", which is truthful: the row exists). Exactly four members. No halt.
A formatter-covered intent whose template lacks {operation_result} is now unconstructible. OPERATION_RESULT_INTENTS (the fifteen intents the dispatcher covers, declared beside it with a coupling note) is validated by validate_intent_templates(), which raises naming every offender. It runs in two places: the FastAPI lifespan — a violating template cannot serve — and the suite — it cannot merge. Chosen over a loud runtime splice because a runtime failure would turn an Operator's turn into a 500; a boot/suite failure reaches the builder instead. The validator itself was observed firing: a test doctors save_filter.md to drop its placeholder and asserts the validator names it.
The tests were written before the fixes and run against the pre-fix code: 8 of 8 member/structural assertions failed, including the structural validator failing on the genuine add_knowledge violation (the one MISSING among fifteen templates). After the fixes: 11/11 pass.
add_knowledge.md rewritten action-first (the save_filter/tune_setting shape): an ACTION TAKEN block carries {operation_result} — un-discarding the already-written error formatter — with explicit "Nothing was noted down on this turn" instruction for the error cases and the success voice made conditional._format_delegation_action's executed branch now reads execution_result["status"] — mirroring _format_approve_draft — and renders executed_then_failed with the reason verbatim and "do not claim any part of it succeeded." Both request templates carry the matching rule line. A companion test pins that a genuinely completed execution keeps its success instruction (no over-reach). Fixed despite being dormant for the Tier-1 capabilities, per CR §5.4: the dormancy rests on CR-2026-197's per_action_only flag, which that CR's own completion note records as slice-scoped, not permanent.remember_about_me.md's preamble no longer asserts the substrate acted — it now says the PERSONAL FACT block "reports what the substrate did on this turn — including when it could not act"; the per-action shapes survive unchanged (pinned by test).general_conversation.md now states no engine operation ran and forbids claiming otherwise — closing B-82 as member 4 of this class.Added to the NEVER list: "Never claim to have performed an action the system did not report performing…" — and recorded per CR §10.3 as necessary, not sufficient: a persona rule is an instruction the model is asked to honour, the weakest guarantee available. The structural fix (Step 2) is what holds.
The tests do not assert the absence of a word in a model reply (which a silent reply passes trivially, and which any rewording escapes). They assert the presence of the corrective instruction in the channel we control — the formatter output and the assembled instruction — plus the structural impossibility of that instruction being discarded. The model's wording can vary; what it is told cannot. The wording level itself is covered only by the persona rule, which is why the CR records that rule as the weakest layer.
Full suite 3640 passed (+11 new), 68 skipped, 0 failed (8m37s). Ruff clean. Mypy 0 new over baseline. Adjacent suites (Phase 45 delegation, CR-2026-197, prompt assembly) explicitly re-run green.
Kind C — checked, no contact. Prompt formatting and template assets; no seed accessor touched or added. A null finding is an entry.
The two latent edge smells from the brief stand as reported: commit_project_draft.md has no failure voice with an empty-rendering placeholder (its formatter branch is absent — note: this is NOT caught by Step 2's validator, which enforces formatter⇒placeholder, deliberately not placeholder⇒formatter, to hold the CR's fence), and forget_about_me.md still carries the dead scripted "Done — I've stopped using that."
Tag cr-2026-199-truthful-replies. Push. Watch the CI run and report its result.
DUNIN7 — Done In Seven LLC — Miami, Florida CR-2026-199 — Checkpoint A — v0.1 — 2026-08-10 The model's wording can vary; what it is told cannot.