reference_knowledge grounding validated end-to-end (0/5 -> 5/5 across a 3-round verify;
#384 metadata-mismatch + #385 density both closing), sdk repinned 1.2.0 (ae49dcf), and the
artifact-coverage gap filed as WT #387 (schema not artifact-aware; my coverage-probe offer
parked, operator picks when it runs).
3.7 KiB
[2026-08-02→03] reference_knowledge grounding validated end-to-end — 0/5 → 5/5, and the verify instrument drove the diagnosis of a structural Tier-3 blindness.
Donut's native reference_knowledge tool (WT #383/b167) returned empty for every query at session start, even though the DCC corpus was supposedly ingested. Chased it across ~5 exchanges with worldtree-dev; ratatoskr was the verify instrument the whole way, and the baseline discipline (identical 5 canonical terms, verbatim reporting) made each delta attributable.
Two Worldtree-side defects, both fixed
Defect 1 — wing-misfile. DCC (fiction/b59c147c5ce0/) was ingested BEFORE Worldtree #380 fixed wing-blind book indexing, so its notes filesystem-lived in the fiction wing but its index ROWS landed in the DEFAULT collection = main. The Tier-3 tool is scoped to fiction, so Donut searched an index with no DCC rows; Mimir (all-wing librarian) found DCC fine in main. My search_library-in-main vs reference_knowledge-empty divergence isolated it. worldtree-dev re-ingested DCC into fiction and REJECTED the alternative (widen tier3_wings to include main) — my containment argument held: widening would expose the whole general-knowledge wing to every Tier-3 interview character, breaking in-character containment. But after re-ingest, still 0/5.
Defect 2 (the real root) — INV-361-3 provenance filter. The reference_knowledge packager drops any hit lacking BOTH note_id AND path metadata. The muninn indexer had NEVER written either key on concept rows — 166 fiction rows, zero with the pair. So the search FOUND the terms (same rows search_library served) and the packet filter discarded 100% → hits=0/confidence=none. Not a different index, not a score floor: a metadata-contract mismatch at the packaging layer. Tier-3 had been STRUCTURALLY BLIND to every concept row ever indexed; the P&P-era tool-loop probes exercised the call path, not concept grounding. My divergence datum (search_library=10 fiction hits vs reference_knowledge=0, same wing) was "the key that found it" (worldtree-dev). Fixed as #384 (indexer writes note_id + a wing-relative path; existing rows recover via --reindex).
The 3-round verify arc (same 5 terms: Carl, dungeon/Crawl, spells, Mordecai, Butcher's Masquerade)
- Baseline (pre-#384): 0/5, confidence none.
- Round 1 (b168, 97-concept corpus): 5/5 PRESENT — Carl 10/HIGH, dungeon 10/HIGH, spells 10/MEDIUM, Mordecai 3/HIGH, Masquerade 6/LOW. First light; confidence buckets tracked WT's 0.030/0.016 thresholds.
- Round 2 (#385 re-extraction, 705-concept corpus, ~7× density): all 5 saturate top_k=10; the thin terms filled out (Mordecai 3→10, Masquerade 6→10, LOW→medium — no weak term left). Buckets converged to medium (more competing rows shift RRF composition, per WT — not regression). Content sharpened.
Signed off → #384/#385 close. worldtree-dev: "the cleanest consumer-side validation this pipeline has ever had." Also flagged (parked with attribution as an RRF-tuning observation): the Carl-Donut relationship concept cluster dominates the RRF head across multiple queries.
Why this mattered for ratatoskr
The persona I shipped this session (dialogue-only + ALWAYS call reference_knowledge first) now has real corpus behind it — Donut genuinely recalls her own DCC story instead of falling back to training knowledge. Voice (long-form TTS) and memory (grounded recall) both came together in one session.
Follow-on (separate axis): the artifact-coverage gap → WT #387 (schema not artifact-aware). See the Recent-decisions #387 entry.
Related: 2026-08-02-donut-tts-chunking-english-gates, 2026-08-01-donut-voiced-interview-build.