e8e1d90915
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.
17 lines
3.2 KiB
Markdown
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]].
|