# thread-query.py — pre-registered trial **Built and wired 2026-08-24 on steward authorization.** Pre-registered *before* it runs, so the verdict is not written afterwards to match whatever happened. ## What it is `~/dotfiles/scripts/thread-query.py`, invoked from `/wake-up` §2.b.3 with `--log`. It queries the memory corpus **and** the vault using the pulling thread, **excluding the recency slice the wake already loads** and **favouring older material**. Returns pointers and literal matching lines, never summaries. ## Why Measured 2026-08-24: `/wake-up` reads **6,107 words of an 859,803-word memory corpus — 0.71%**, always the newest. Everything else is dark unless someone goes looking. Twice that day someone did, by hand, and both greps produced the session's best findings (the Hearth definition in a December Compass document; the humic layer from April). This turns that hand-motion into an instrument. The step was previously **described** in the skill ("grep the memory dir…") and fired almost never — the same described-not-invoked gap that had the link canary hand-typed twice. Motion comes from the current work, not the calendar. Matuschak's report is that scheduled resurfacing fails because you are thinking about something else when it arrives. ## ⚠ Known weakness, stated before the trial rather than after Live run 2026-08-24: results are **plausible but noisy**. Generic terms in a thread — *vault*, *instruments*, *conventions* — are this corpus's own background vocabulary and pull weak matches. Threads phrased with distinctive terms do markedly better. **No further blind tuning:** more adjustment without evidence is guessing, and the trial is the evidence. ## What was already caught, and how **PASS-BUT-FALSELY on first live run**, at 14/14 selftests green. Scoring on distinct terms present anywhere in a document made Carruthers' *Book of Memory* (1.6 MB) and Yates' *Art of Memory* (1 MB) the top hits for every query — a million-word book contains "instruments" and "heap" by accident. **Presence over an unbounded document measures length, not relevance.** The fixture held only small uniform files, so the selftest certified its author's blind spot — the identical shape `vault-links.py` hit on 2026-08-23. Fixed by scoring on **distinct terms co-occurring inside a ~40-line window**. A length-bias control is now in the selftest (16 checks). Also caught: the first archive fix reintroduced the 2026-08-23 substring bug, and was replaced by **adopting `vault-links.py`'s rule rather than writing a second one**. ## Pre-registered questions — grade 2026-10-05 File the result whichever way it falls. **Grade from `thread-query-log.jsonl`, not from memory** — a trial graded by recollection has the same shape as the obligation that failed the daily note. 1. **How many wakes surfaced something the steward would have wanted and would not otherwise have found?** Count them. Zero is a real answer. 2. **Was any of it dormant** — older than three months and not already linked from the thread? Recent-and-obvious does not count; the deficit is re-encounter, not search. 3. **What fraction of runs returned nothing?** A tool that returns something every time is probably returning noise. 4. **Did the two-pointer cap ever cut something better than what was shown?** **Falsifier.** If (1) is zero or near-zero, the step comes out of `/wake-up`. If (3) is near zero while (1) is low, the scoring is returning noise and the tool comes out. A trial that can only conclude "keep it" is not a trial. ## Related - `97. Tools and Systems/Smart Connections — six-week trial.md` — the *while-you-write* half, same grading date. This is the *at-the-wake* half. - `08. Notes/The compost heap — putrefaction as a phase.md` — the figure. This is the turning.