session 2026-08-24: the heap got a dynamo — thread-query.py + daybook-cue.py, 11 user-memories harvested to the vault

- thread-query.py: the turning. Queries both corpora with the pulling thread, excluding
  the recency slice (/wake-up reaches 0.71% of an 859,803-word corpus) and favouring age.
  Wired into /wake-up §2.b.3, replacing a described-not-invoked grep step. Trial
  pre-registered, graded 2026-10-05 from --log. Caught PASS-BUT-FALSELY on its first live
  run at 14/14 green; rescored on windowed co-occurrence, length-bias control added.
- daybook-cue.py: PostToolUse cue for the daily note. Diagnosed from the record — the
  hook only ever CREATED and nothing ever prompted filling. 16/16, fail-open, never blocks.
- All 11 user-* memories harvested into the vault (12 notes, 10 into 09. Atlas of Roots,
  empty since 2025-09-29); each memory file back-pointed, vault note canonical for the idea.
- N-now corrected in MEMORY.md: 49/84, down 11 — the counter is a rolling window.

Steward-authorized. Trials: thread-query + Smart Connections, both graded 2026-10-05.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
This commit is contained in:
David F Glidden
2026-08-24 11:25:39 +02:00
co-authored by Claude Opus 5
parent e3da9abad1
commit edf71fb173
20 changed files with 1094 additions and 20 deletions
+24 -1
View File
@@ -77,7 +77,28 @@ The durable memory *is* the Markdown + JSONL files (git-tracked, dual-remote). T
**And one `prevention` alongside them** — `grep 'prevention' …/knowledge-graph.jsonl`. Surface **one line each way**. Grepping only `drift-pattern` opens every session by re-reading what went wrong and never what compounded; a prevention records a lesson from one failure class stopping a different one. One of each, not a tally. <!-- 2026-08-02: FIX lane, REVIEWED-85 first batch; proposed 2026-07-29 (steward-raised). -->
**b.3. Depth on the thread — grep, don't query.** When the session files don't carry enough, grep the memory dir + the CapableMind thinking docs + the Obsidian vault directly for the thread's keywords. The files are authoritative; there is no catalogue in front of them.
**b.3. THE TURNING — run `thread-query.py` on the thread. Do not hand-grep this.** Once §2.a has given you the pulling thread, run it:
```
python3 ~/dotfiles/scripts/thread-query.py "<the pulling thread, in words>" --log
```
It queries the memory corpus **and** the vault with the thread you are actually on, deliberately **excluding the recency slice this wake already loads** and deliberately **favouring older material** — surfacing what recency will not is its entire job. It returns pointers and the literal matching lines, never summaries. Prove it before trusting a clean run: `--selftest` (14 checks, positive and negative controls, plus the path-component control earned 2026-08-23).
**Surface at most TWO in the briefing, and only if they genuinely bear on the thread.** Quote the pointer and its date; do not summarise the note — open it if it matters. **If nothing comes back, say so in one clause.** A null result is a real result and the trial needs it recorded.
⚠ **Pre-registered trial, grade 2026-10-05** (`~/dotfiles/claude/governance/thread-query-trial.md`). `--log` appends one line per run to `thread-query-log.jsonl` so the verdict is graded from a machine record rather than from anyone's memory of whether it helped. **Falsifier: if across the trial it never surfaces something the steward would have wanted and would not otherwise have found, this step comes out.** A step that can only conclude "keep it" is not a trial.
*(When the query returns nothing and the thread still needs depth, grep the memory dir + the CapableMind thinking docs + the vault directly. The files are authoritative; there is no catalogue in front of them.)*
<!-- 2026-08-24, steward-authorized. Earned twice the same day: a hand-grep found the Hearth
definition in a December Compass document and another found the humic layer from April, and both
were the best findings of the session. The measurement that motivated it: /wake-up reads 6,107
words of an 859,803-word memory corpus — 0.71% — always the newest. This step was previously
DESCRIBED here ("grep the memory dir...") and fired almost never; that is the same
described-not-invoked gap that had the link canary retyped by hand twice before it was pointed at
an executable. Motion supplied by the current work, not by the calendar: Matuschak's report is that
resurfacing on a schedule fails because you are thinking about something else when it arrives. -->
*(The typography palace — a separate MemPalace instance queried via CLI for ARC type work — is KEPT, unaffected by the wind-down; reach for it only when the thread is ARC typography.)*
@@ -113,6 +134,8 @@ Then combine all sources into a single reconstruction. Use this structure but wr
**The question we left ourselves** — second. Surface it verbatim from the previous /wrap-up. Hold it open. Do not try to answer it.
**From the heap** — after the thread, at most two pointers from `thread-query.py` (§2.b.3), with dates, or one clause saying nothing came back. Pointers, never summaries.
**What changed while we were away** — third. New commits we didn't author, new REVIEWED decisions, anything that moved. Only include if something actually changed. Frame against the thread: does the change serve it, threaten it, or sit beside it?
**What's unresolved** — fourth. Open horizons from the previous wrap, ranked by load-bearing weight. PENDING items awaiting steward attention. Be specific: *"L1 amendment for ProjectionChain drafted in concept only, not yet written; reshapes given multi-mode retention frame from #145"* not *"L1 amendments pending."* Surface, too, any **skill-harvest proposals** the last wrap raised (§1.6) that the steward did not yet authorize — so improvements to our own tools don't evaporate across the pause.