arborist/bench
russell@unturf.com ecaf69e503
qa: strip 'all/there/know/everything' from retrieval queries; bench gains deflection rate
Two paired changes:

(1) Retrieval template-phrase stopwords. Bench finding 2026-04-30:
'tell me all there is to know about york england?' missed the
en.wikipedia.org/wiki/York article entirely — corpus has it but the
FTS5 AND-mode MATCH expanded to "all" AND "there" AND "know" AND
"york" AND "england", which filters to only docs containing every
template word. Articles like "Charles I of England" happen to mention
"all" + "there" + "know" + "england" enough to win; the bare "York"
stub doesn't, so it falls out of the top-K.

Added `all there know everything anything something` to both
_FTS5_STOPWORDS (search/fts5.py) and _TITLE_STOPWORDS (qa/query.py)
so they stay in sync. After the change "York" article ranks #1 on
both 'tell me all there is to know about' and 'tell me everything
about' phrasings.

These are retrieval-time stopwords only — they don't enter the
cache_key or governance_policy_hash (cache_key hashes the original
question text via question_hash). Existing cached records remain
valid; new queries get better retrieval.

(2) bench/qa_sweep.py: per-row deflection_kind + subject_anchor +
subject_in_answer (from qa.inspect.diagnose_deflection); summary
table grows a 'deflections' column tracking STRICT/HYBRID rows
where the question's subject anchor is missing from the answer.
Surfaces the Mars-BDFL pattern at aggregate scale.
2026-04-30 20:15:25 -04:00
..
qa_questions.txt qa: positive-form prompts + atomic-claim rule; great-wall fixture 2026-04-30 18:00:22 -04:00
qa_sweep.py qa: strip 'all/there/know/everything' from retrieval queries; bench gains deflection rate 2026-04-30 20:15:25 -04:00
run.sh progress reporter + structured benchmark 2026-04-27 11:37:20 -04:00