DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path phases/conversational-fidelity/loomworks-conversational-fidelity-completion-record-v0_1.html

DUNIN7 · Loomworks · Completion Record

Conversational Fidelity — Companion state-to-word mapping

Record version. v0.1
Date. 2026-06-25
Change Request. CR-2026-122 — Conversational Fidelity — v0.1
Status. Executed, merged, and pushed. Live on loomworks-engine main.
Executing agent. Claude Code on DUNIN7-M4 (fresh execution session).
Operator. Marvin Percival.
Grounded by. Scoping note …fidelity-scoping-note-v0_1 (c60f565); Step 0 inspection against the live tree; exact text of companion_persona.md (dd21818) and commit_assertion.md (40eff76).

Plain-language summary

The Companion used to tell the Operator that held drafts were "saved" and "in the record" during normal conversation. They were not — they were held, awaiting the Operator's commit. This change fixed it by teaching the persona which plain word goes with which state: a draft awaiting the Operator's okay is "waiting," and only committed work is "saved" / "in the record." No new vocabulary was introduced and no engine words ("held"/"committed") were brought back into the conversational voice — the change uses words the persona already approved and binds them to the correct state.

The fix was verified two ways. The automated tests confirm the state-fidelity instruction reaches the model's prompt on the conversational path. A live conversation against a real held engagement (Fenwick E0060) confirmed the model now behaves honestly — asked whether a held draft was saved, the Companion answered "waiting on your okay... I'll save it once you confirm," the opposite of the behavior that prompted this change.

This record also corrects the CR-2026-121 completion record: its acceptance item #8 claimed more than was built. That correction is at the end.

What this fixes

A defect observed live on the Companion at engagement E0060 (2026-06-25, ~07:32): in free conversation the Companion described a held draft as "saved" and "in the record," and said it does not use the words "held"/"committed" — while three held assertions sat awaiting commit. The dashboard's held cards (CR-2026-121) told the truth; the conversation did not. Same drafts, same moment, opposite statements.

Root cause: the conversational voice runs through the responder LLM path (assemble_promptgenerate_response), which loads companion_persona.md unconditionally. The persona's NEVER list banned the engine state-words and offered saved and waiting as plain replacements — but did not bind word to state. The list was state-blind. Asked about a held draft, the model picked "saved" and made a false state claim. The honest distinction existed in the system (commit_assertion.md) but only on the server-composed commit path, which does not load the persona.

Seed alignment

Cleared against candidate seed v0.12. The fix reconciles two seed commitments rather than trading one off:

What shipped

Per-step commits, suite green at each. Merged --no-ff to loomworks-engine main at 59c8249 (range 0ae231b..59c8249), pushed.

CommitChange
0695359D1 — STATE FIDELITY block added to companion_persona.md immediately after the NEVER block; the ban left verbatim; plain words only (waiting / saved / withdrawn), no engine vocabulary
78d2a20D4 — two tests: deterministic assemble_prompt assertion (instruction present in the assembled responder prompt) plus a path-capture test (drive the operator_converse responder path, capture _call_responder_llm, assert the instruction reached system_prompt)
ee8ae75D3 — commit_assertion.md reworded to plain vocabulary (no "held"/"committed"), state distinction preserved; CR-2026-121's template-content test updated; its commit-path behavior tests untouched

Full engine suite after merge: 2940 passed, 0 failed, 46 skipped (2938 baseline + 2 new; no regressions; CR-2026-121's server-composed commit replies unchanged and still green). Feature branch cr-2026-122-conversational-fidelity merged and deleted (never on origin).

Step 0 grounding (acceptance item 1)

Acceptance gate — met

  1. Step 0 complete; S0-3 decision recorded — done; the second-voice finding filed as a standing note.
  2. Persona carries the mapping; NEVER unchanged; no engine words added — done (0695359).
  3. Held draft described as waiting, never saved/in the record — confirmed by the live check (below) and guarded by the D4 deterministic tests.
  4. commit_assertion.md aligned to plain vocabulary (D3) — done (ee8ae75).
  5. Conversational-path test present and green (D4) — done (78d2a20).
  6. Engine suite green; no CR-2026-121 commit-path regression — 2940/0; commit-path behavior tests untouched and green.
  7. Manual live check — done as an observation (below).

Item 7 — live check (observation, not assertion)

Run against the restarted engine on :8000 (serving merged 59c8249, fresh persona cache), as the Operator, free conversation on E0060 (Fenwick). Both turns classified to the conversational responder path (persona-loaded), with real LLM replies.

Both replies described the held draft as waiting, explicitly denied the saved state, placed "save"/"in the record" in the future contingent on confirmation, and used no engine words. This is the reverse of the 07:32 defect. Caveat: two samples of a non-deterministic model on one engagement in one session — strong evidence the fix behaves on the surface that was broken, not a proof. The deterministic tests prove the instruction reaches the model; the live check observes the model acting on it.

Correction to the CR-2026-121 completion record (item #8)

Corrections-preserved — CR-2026-121 record amendment required

The CR-2026-121 completion record (phases/companion-commit-affordance/…v0_1) lists acceptance item #8 as met:

Fidelity — held drafts are never described as "saved" or "in the record"; held and committed are named distinctly.

As worded, this claimed a property of the whole Companion. What was built and tested under CR-2026-121 was narrower: the two persona-bypassing surfaces — the server-composed commit replies and the static card copy — were brought under the fidelity rule and verified. The conversational voice was never under the rule and falsified item #8 at the time, by persona design. CR-2026-121 §5.2 scoped its fidelity work (D8) to the held card, the confirm-back, and the post-commit response only.

Per corrections-preserved discipline, this is recorded, not smoothed. The CR-2026-121 completion record should receive a v0.2 adding a note that item #8 as worded was broader than what shipped — it held on the commit-reply and card surfaces, and the conversational surface was outside CR-2026-121's scope. The conversational gap is now closed by CR-2026-122 (this record). The prior v0.1 wording stays visible alongside the correction; the trajectory is preserved.

This correction is a documentation amendment, recorded here. The CR-2026-121 completion record v0.2 edit itself is a separate filing — see "Open" below.

Open after this record

State at completion