Read path:
- Evidence floor: results must earn channel evidence (semantic >=0.60 or
bm25/entity/temporal signal or pinned); associative-only channels no longer
fabricate matches. Empty result + no_confident_match instead of filler.
- Recall output budget: per-fact clamp (head+tail) + total budget with stubs;
optional full=true bypass. Source_content preview + prompt-template firewall.
- Applied at the single shared chokepoint (RetrievalEngine.recall + shared
serializer) so MCP, CLI, daemon HTTP, in-process adapter, and WorkerPool
return identical output across surfaces and modes A/B.
Write path:
- Ingest gate: clamp facts >24K chars (head+tail; full original kept in source
memory), reject >1MB, prompt-template firewall. Core-block hygiene: within-
block line dedup + low-quality filter + char cap + daily recompile.
Backward compatible: additive params/fields only, no schema migrations, env
kill-switches (SLM_RECALL_NO_FLOOR, SLM_INGEST_NO_GATE). 86 new tests; targeted
+ integration suites green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>