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. |
||
|---|---|---|
| .. | ||
| qa_questions.txt | ||
| qa_sweep.py | ||
| run.sh | ||