Files
ratatoskr/persistent-memory.d/2026-08-03-donut-anti-fabrication-and-retry.md
T
vh e8e1d90915 memory: /snapshot — Donut done (voice+memory+honesty); R42 spin-off active
Captures the anti-fabrication persona + the tested-and-rejected retry-on-LOW (RRF confidence
is inflatable by query phrasing; robust fix is tool-side = #389), the b170 corpus updates
(artifact type #387, character-death extraction, participant metadata #390 — Jack + the
artifacts ground now), and the operator-directed R42 spin-off (probe harness 04e0293 shipped
to brokkr-smithy-dev as R42's official harness + the #389 acceptance gate). Two peer-pinged
follow-ups pending (R42 Phase-1 arm-1 alignment; #389 gate re-run). Foot-guns: tier3 patch
doesn't refresh live context (recreate); a persona confidence-gate can't stop fabrication.
2026-08-03 08:10:03 -07:00

17 lines
3.2 KiB
Markdown

`[2026-08-03]` **Donut anti-fabrication persona + the retry-on-LOW experiment (tested, rejected).** Commits `3e12c4d` + `c0a66fc` (pushed).
Operator: "adjust donut not to make shit up — her searches for Zev and Jack are still misses." The persona (rewritten earlier this session to dialogue-only + always-call-`reference_knowledge`) still MANDATED confabulation: "never break character to admit the records are thin; answer with total confidence." So on a tool miss she filled the gap from her DCC *training* knowledge and presented it as grounded recall.
## The fix (c0a66fc final state)
Her memory IS what `reference_knowledge` returns, nothing else. A **MISS** = results empty, confidence **low**, OR nothing in the results actually names/describes the subject → deflect IN CHARACTER (a theatrical dismissal: "That name doesn't ring a bell, darling — beneath my notice, clearly"), never a confident fiction, never fill from book-knowledge she can't see in the results. **MEDIUM+ → answer** (grounded). Threshold is LOW=deflect / MEDIUM+=answer — gating stricter (HIGH-only) would silence legitimately-thin-but-grounded content like Carl (MEDIUM).
**Self-correcting property:** the gate tightens when content is missing and opens when it arrives. Jack deflected when absent (LOW), and grounds now that b170 extracted his death plot_event (MEDIUM) — zero persona change needed across the KB improvement. Verified live: a fabricated term ("Whispering Gauntlet of Thexmar") and a genuinely-absent subject both deflect; Carl (MEDIUM) answers.
## The retry-on-LOW experiment — TESTED, REJECTED (the load-bearing finding)
Operator asked "should she search again at low confidence?" Reasoning said yes (LOW is often query-phrasing sensitivity, not absence — the Crown grounded on its full name but missed on the partial; Zev flips LOW↔MEDIUM). Wired a bounded (1-retry) reformulated retry. **It BACKFIRED.** When Donut reformulated "Jack" → "Jack the dungeon crawler ... with Carl, Yolanda, Donut", the query scored **MEDIUM off the OTHER real entities** (the corpus is dense with Carl/dungeon content), handing her a false grounding to fabricate Jack. Even subject-only reformulation ("Jack Dungeon Crawler Carl") inflated to MEDIUM. **Root cause: RRF confidence is inflatable by any DCC-flavored query — it reflects query-term matches, not whether a row NAMES the subject.** So a persona-side confidence gate cannot stop fabrication via query padding. Reverted to single-search LOW=deflect. The robust fix belongs tool-side: a does-the-returned-row-actually-name-the-subject check before ranking/confidence — routed to Worldtree **#389** (the ranking axis).
## FOOT-GUN: tier3 patch doesn't refresh the live agent context
A `python -m ratatoskr.tier3 patch ratatoskr:donut --system-prompt …` reports success and updates STORAGE, but the running agent's context did NOT pick up the new prompt (verified: patched anti-fabrication, behavior unchanged). **Recreate (delete + define) is the reliable path** to change a live Tier-3 persona. Her role is `thoughtful-character` (the donut.md header's old `character-rp-reasoning` was drift, corrected).
Related: [[2026-08-03-reference-knowledge-3-round-verify]], [[2026-08-02-donut-tts-chunking-english-gates]].