From 4235430a73ccb1a092abb13ec468565f3e66dfbc Mon Sep 17 00:00:00 2001 From: David F Glidden Date: Thu, 20 Aug 2026 11:10:15 +0200 Subject: [PATCH] Memory: reconstruct the 2026-08-19 session record, which died unwrapped MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The session ran 2026-08-18T16:35Z to 2026-08-19T19:05Z and ended in a Request timed out mid-turn; the host went down overnight and no /wrap-up ran. Its record is written now from the transcript and the git history, and says so at the top: reconstruction, not wrap, nothing recalled. Names the two pieces of work the steward said would come first and that MEMORY.md had been carrying as "not yet named" for a day: the Obsidian vault spec, which ran to a ratified v1.0.0 and two applied passes, and Trial 09, which was prepared and then held un-run because its ground truth leaks into PENDING.md:92-96 and CLAUDE.md Constraint 6, so every STRONG grade would have been an ECHO. The exclusion hash-list passed: absence was verified at the wrong granularity, file rather than content. New canonical tracker for the vault workstream, which had none. Carries the operational facts worth not re-deriving — the vault folder is not a git repository, it mirrors to ~/_Dev/david-root-and-branch-vault-git, an automated job commits mirror syncs on its own schedule — and the open tail, including the reminder that the stated goal (a capture workflow) has not been started and the frontmatter work must not stand in for it. One defect of our own, found only because the crash forced a reconstruction: see_canonical: "[[Index]]" on the Atlas of Roots index was converted from a path to a file that does not exist, and resolves to the wrong note or none. One of the three pointers section 3 wrote. It is the same basename-resolution flaw the jurist corrected that afternoon as a number, uncorrected as a mechanism. The steward's three broken links were checked against git rather than inferred: all pre-existing. But flattening nested links.parents to top level made 194 already-unresolvable targets render as clickable-and- broken in Obsidian's properties UI. Surfaced, not caused — and the pass report did not predict it. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T --- claude/memory/MEMORY.md | 15 +- .../memory/project-obsidian-vault-practice.md | 105 +++++++++ ...ot-a-spec-the-links-were-already-broken.md | 213 ++++++++++++++++++ 3 files changed, 326 insertions(+), 7 deletions(-) create mode 100644 claude/memory/project-obsidian-vault-practice.md create mode 100644 claude/memory/session-2026-08-19-the-vault-got-a-spec-the-links-were-already-broken.md diff --git a/claude/memory/MEMORY.md b/claude/memory/MEMORY.md index b38f94d..68d6e87 100644 --- a/claude/memory/MEMORY.md +++ b/claude/memory/MEMORY.md @@ -65,18 +65,19 @@ permalink: claude-memory/memory - [Making sequence source set](project-making-sequence-source-set.md) — **COMPLETE against the ReadingList** (reconciliation-verified). Sourced ≠ ingested. Read before any Making/studium source work. - [Studium = CM's unfettered sandbox](project-studium-cm-sandbox-and-transfer.md) — experiment freely on library/engine without risking CM's runtime; breakthroughs transfer back. Steward-framed 2026-07-08. - [Be (laundromat)](project-be-laundromat.md) — Skemantix startup (Seb+David) funding CapableMind's ladder; **bridge, not venture**. Decisions LOCKED. **Pre-revenue WTP gate = renovate Pat → charge her; no new spec until it clears ⇒ nothing for executor on be.** +- [Obsidian vault — from archive to practice](project-obsidian-vault-practice.md) — canonical vault tracker. **Frontmatter Spec v1.0.0 ratified + 2 passes applied** (511 edits / 268 files, pushed). ⚠ The vault is **NOT a git repo** — it mirrors to `~/_Dev/david-root-and-branch-vault-git`. **The actual goal — a capture workflow — has not been started**; don't let the frontmatter tail stand in for it. - Chamber-typography — *tracker not yet established*; moves live in per-session memories (2026-05-11 →) + `project-chamber-cruft-restoration.md` + `project-chamber-typography-mining-plan-2026-05-15.md`. ## Active Session -> ⏸ **DEFERRED BY THE STEWARD to the morning of 2026-08-20** (said 2026-08-19 ~11:15 CEST). The fence work below stands untouched and in its ruled order, because **two other pieces of work come first and may reshape it** — the steward's own stated reason, so this is *sequencing, not drift*. ⚠ **The two are not yet named — name them here once they are**, because "what could reshape this" IS the dependency, and a deferral whose dependency cannot be named is the shape `feedback-close-thoroughly-no-frequent-deferrals` warns about. Nothing in (A)/(B)/(C) has begun, so REVIEWED-122's binding order (answer key first, alone, hash recorded, before any implementation) is unharmed by the delay. ⚠ **Cost carried with eyes open:** the citation exposure behind PENDING-131 (c) has been live since 2026-08-10. -> 🔑 **PULLING THREAD — THE FENCE, and the answer key behind it.** Steward stopped 2026-08-17 tired, with three live options and no pick made. **(A) MOVE 2** — disposition the 25 line-addressable blockquote runs: **closable in ONE SITTING, needs no ruling**, and it is the fence itself rather than the scaffolding. **(C) MOVE 1** — fence the citation *at emission*, engine-side under D-1, covering all **532 spans** including sources added later; a build direction, carrying ADDENDUM 4's own control requirement (controls from **each structural class present**, `NOT ESTABLISHED` rather than zero where a class has none — four of that census's five defects escaped Mauss-only controls). **(B) THE ANSWER KEY** — session-sized, gates all of PENDING-142. *Recommendation absent a preference: (A), then (C). (B) when there is a full session.* +> 🔑 **PULLING THREAD — THE FENCE. The deferral has EXPIRED: 2026-08-20 is the morning it named, and both shaping pieces have run.** ⚠ **The two, finally named** (this block carried "not yet named" for a day): **(1) the Obsidian vault spec** — ran all the way to a ratified v1.0.0 and two applied passes; **(2) Trial 09, the jester arm** — **PREPARED AND HELD, never executed.** One reshaping input arrived, one did not; whether either reshapes the fence is a steward call the record cannot make. Nothing in (A)/(B)/(C) has begun, so REVIEWED-122's binding order (answer key first, alone, hash recorded, before any implementation) is unharmed. ⚠ **Cost carried with eyes open:** the citation exposure behind PENDING-131 (c) has been live since 2026-08-10. +> **(A) MOVE 2** — disposition the 25 line-addressable blockquote runs: **closable in ONE SITTING, needs no ruling**, and it is the fence itself rather than the scaffolding. **(C) MOVE 1** — fence the citation *at emission*, engine-side under D-1, all **532 spans** incl. sources added later; carries ADDENDUM 4's control requirement (controls from **each structural class present**, `NOT ESTABLISHED` rather than zero where a class has none — four of that census's five defects escaped Mauss-only controls). **(B) THE ANSWER KEY** — session-sized, gates all of PENDING-142. *Recommendation absent a preference: (A), then (C).* > ⚠ **THE KEY'S SPEC CHANGED BEFORE IT WAS DRAFTED — PENDING-146.** REVIEWED-122 cond. 1 says "per-item". **If "item" resolves to *id*, the key reproduces the very unit that caused Class E and grades green.** Key it on `##` **BLOCKS**, recording per block whether a live `Awaiting:` exists **and at what tag** (ADD-2 §5 re-tags (c) `[PROPOSAL]` inside a `[HARDENING]` row). Caught only because the key was not yet written. -> ⚠ **CLASS E (PENDING-146): the open list's unit is the `id`; the decidable unit is the `##` BLOCK.** Upstream of everything PENDING-142 reaches. Worse than a wrong verdict **because the verdict is right** — (d) reports PENDING-131 OPEN, correctly, and still hides that it carries four separate asks. **`governance_state()` shows ZERO rows for `131`.** -> ⚠ **FOUR blocks under PENDING-131 carry a live `Awaiting:`** — parent, ADD-1, ADD-2, ADD-4 — **not the two I reported.** The jurist ruled on my testimony *and disclosed it had not verified ADD-1*; running that check overturned my count. The disclosure is what made it findable. -> ⚠ **REPORT AT EVERY WAKE — N-now = 47/84, AND IT WENT DOWN** (60 on 08-17, 61 on 08-18, **47 on 08-19**). **The counter is a 30-DAY ROLLING WINDOW, not a cumulative count** — `governance-drift-check.py` globs `~/.claude/projects/-Users-davidglidden/*.jsonl`, whose oldest file is *exactly* 30 d old (`cleanupPeriodDays` default). At the observed ~1 session/day it converges to ~30, so **`transcripts 84` can very likely never fire**, and every "N remaining" report — including mine — was a **false countdown**. ⚠ **The trial's evidence is PERISHABLE: only 13 post-intervention transcripts survive, and the 2026-08-07 cohort is deleted 2026-09-06.** Ladder still FROZEN generally (cond. 1); 4 rows queued in PENDING-141. **Filed PENDING-147; needs a steward/jurist decision.** -> ✅ **Filed today: PENDING-142/143/144/145/146; REVIEWED-122 + REVIEWED-123 executed; three transcription errors in the placed records corrected by the steward.** Wake detector rebuilt (4 defects, the scoped one was not the cause); 16 trackers stamped superseded; 39 files' frontmatter repaired; deferral checker was skipping the register at 546 KB. All pushed `7f891de`. +> ⚠ **CLASS E (PENDING-146): the open list's unit is the `id`; the decidable unit is the `##` BLOCK.** Upstream of everything PENDING-142 reaches. Worse than a wrong verdict **because the verdict is right** — (d) reports PENDING-131 OPEN, correctly, and still hides that it carries four separate asks; **`governance_state()` shows ZERO rows for `131`.** ⚠ **FOUR blocks under PENDING-131 carry a live `Awaiting:`** — parent, ADD-1, ADD-2, ADD-4 — **not the two I reported**; the jurist ruled on my testimony *and disclosed it had not verified ADD-1*, and that disclosure is what made it findable. +> ⚠ **REPORT AT EVERY WAKE — N-now = 47/84, AND IT WENT DOWN** (60 on 08-17, 61 on 08-18, **47 on 08-19**). **A 30-DAY ROLLING WINDOW, not a cumulative count** — the checker globs a directory the harness prunes at 30 d, so at ~1 session/day it converges to ~30 and **`transcripts 84` very likely never fires**; every "N remaining" report was a **false countdown**. Ladder still FROZEN generally (REVIEWED-123 cond. 1); 4 rows queued in PENDING-141. **PENDING-147 filed; needs a steward/jurist decision.** ✅ **Leg (i) DISCHARGED 2026-08-19** — 47 transcripts copied to `~/.claude-transcript-archive/raw/` outside the pruned tree, **46/47 sha256-verified by readback**, the 47th recorded as a snapshot. The evidence no longer expires; the counter still cannot fire. +> ⚠ **TRIAL 09 IS HELD, NOT ABANDONED — and the hold IS the finding.** Prompt hashed, corpus built (11 docs / 166,088 words), exclusion hash-list **PASSED** — and the run was blocked anyway: `PENDING.md:92-96`, **inside an open item the wake surfaces every session**, names Fault Lines 5/3/4 with their substance, and FL5's proposition sits in `~/CLAUDE.md` Constraint 6 **stated more sharply than the ground truth**. Under the design's own rule **every STRONG grade would be an ECHO.** The exclusion was verified at the wrong granularity — absence of the *file*, not of the *content*. **Resume at the leak, not at the run.** +> ⚠ **2026-08-19 DIED UNWRAPPED** (`Request timed out` 21:05, host down overnight). Its record was **reconstructed 2026-08-20 from the transcript** — pointer below. The vault work is real and pushed, and it left **one defect of ours**: `see_canonical: "[[Index]]"` resolves to the wrong note or none — 1 of the 3 §3 pointers. The vault tail is small and **NOT urgent**. -- [Session 2026-08-17 — the instruments audited themselves and lost](session-2026-08-17-the-instruments-audited-themselves-and-lost.md) — every instrument examined was wrong; two of the wrongs were made by the hand fixing the others. **Read the CODA for the revised resumption point.** **LITERAL Q: across the last ~10 sessions, when a defect in the executor's own instrument was found, WHO found it — a mechanism firing unbidden, the executor re-checking, the jurist, or the steward?** Mostly-executor ⇒ the practice works and the mechanisms are decorative; mostly-jurist/steward ⇒ every "verified" between reviews does less work than it appears to. +- [Session 2026-08-19 — the vault got a spec, and the links were already broken](session-2026-08-19-the-vault-got-a-spec-the-links-were-already-broken.md) — **RECONSTRUCTED, not wrapped.** Vault spec v1.0.0 + two passes; Trial 09 prepared and HELD; transcript archive discharged. · [Session 2026-08-17](session-2026-08-17-the-instruments-audited-themselves-and-lost.md) — every instrument examined was wrong; two of the wrongs made by the hand fixing the others. **LITERAL Q, STILL OPEN: across the last ~10 sessions, when a defect in the executor's own instrument was found, WHO found it — a mechanism firing unbidden, the executor re-checking, the jurist, or the steward?** Mostly-executor ⇒ the practice works and the mechanisms are decorative; mostly-jurist/steward ⇒ every "verified" between reviews does less work than it appears to. **08-19 adds four data points that do NOT point one way** (2 executor, 1 jurist, 1 steward) — and the `[[Index]]` defect was found by none of them, surfacing only because the crash forced a reconstruction. ## Historical reference → MEMORY-reference.md Older archived-session pointers and the stable reference layer (steward profile · project-state detail · L1/L2/Chamber inventories · legacy pending-work · reference-file list) live in [MEMORY-reference.md](MEMORY-reference.md) — consult on demand; not loaded at wake. Recent cross-session trajectory comes from the Active Session entry above + the recent `session-*.md` files (wake §2.b.1). diff --git a/claude/memory/project-obsidian-vault-practice.md b/claude/memory/project-obsidian-vault-practice.md new file mode 100644 index 0000000..e6af950 --- /dev/null +++ b/claude/memory/project-obsidian-vault-practice.md @@ -0,0 +1,105 @@ +--- +name: project-obsidian-vault-practice +description: "Canonical tracker for the Obsidian vault workstream — turning root-and-branch from an archive into a practice, beginning with a ratified Frontmatter Specification v1.0.0. Holds the operational facts (the vault is NOT a git repo; it mirrors to ~/_Dev/david-root-and-branch-vault-git), the applied-pass record, and the open tail. Read before any vault work." +metadata: + node_type: memory + type: project + modified: 2026-08-20T09:08:17Z +--- + +# Obsidian vault — from archive to practice + +**Steward's goal, stated 2026-08-19:** *"optimizing my Obsidian usage and setting up a regular +workflow to have the important parts of our work captured there… My instinct is that I could +make better use of it. I want to create an Obsidian 'spec' like we have done for all of our +serious projects."* + +**The tool boundary, from the steward, so it is not re-elicited:** + +| tool | role | +|---|---| +| **Drafts.app** | scratchpad; ephemeral text, or text destined elsewhere. Kept essentially empty at the end of every week. | +| **Notes.app** (Mac/iOS) | confidential material, as locked notes. | +| **Obsidian** (`root-and-branch`) | notes that must not be lost. *"So far, a sort of archive."* | + +**Scope note:** the vault is *also* the Compass — the steward's personal operating system. +`~/CLAUDE.md` says: reference it, never write to it. **That standing rule was suspended for this +workstream by explicit authorization** (`"I authorize the Compass ones too"`, 2026-08-19), for +the named mechanical passes only. It is not a general licence. + +--- + +## Operational facts — do not re-derive + +- **The vault folder is NOT a git repository.** `~/Library/Mobile Documents/iCloud~md~obsidian/Documents/David, root-and-branch` + has no `.git`. +- **It mirrors to `~/_Dev/david-root-and-branch-vault-git`** (remote: + `git.skemantix.com/David/david-root-and-branch-vault-git`). An automated job commits + `Mirror sync ` on its own schedule — so steward hand-edits land in git without + anyone asking. +- **Working reports and machine-readable changelogs live in `~/dotfiles/obsidian/`**: + `vault-frontmatter-inventory-2026-08-19.md`, `vault-frontmatter-pass1-followups-2026-08-19.md`, + `vault-governance-block-round2-2026-08-19.md`, `vault-round3-archive-and-relations-2026-08-19.md`, + plus `fm_inventory.json`, `pass2-changelog.json`, `pass2-flags.json`. +- **The spec is in the vault, not in dotfiles:** `00. Compass/Frontmatter Specification.md`. +- ⚠ **`verify-before-compose.sh` fires on `Write|Edit`, and this work runs through Bash.** A vault + hook wired the same way would not fire on how the work actually runs. Noted 2026-08-19, unfixed. + +--- + +## Chronological log + +### 2026-08-19 — census, spec, two passes (session died unwrapped; see [[session-2026-08-19-the-vault-got-a-spec-the-links-were-already-broken]]) + +- **Four read-only census rounds before any edit.** 2,519 notes parsed, no sampling. 400 distinct + keys over 5,867 instances; **68% of notes have no frontmatter at all.** 66 keys consumed, 29 + written-by-template-and-read-by-nothing, 305 orphaned. +- **Round 2/3 findings that changed the design:** `owner` was one job in three spellings (cut); + `canonical` was **one name doing two jobs** (self-descriptive vs pointer-elsewhere); the + hypothesis that pointer-form marks archival **tested negative** — 65 of 67 pointers sit outside + `99. Archive`. What actually distinguishes Archive is **decay in practice, declaration in name + only**: `status: archived` on 2.3% of it, 90% receiving no wikilink from any live note, and **no + archival policy note anywhere in the vault.** +- **Frontmatter Specification v1.0.0 ratified** and placed in `00. Compass/`. First principle: + *storage and lifecycle are orthogonal* — the folder says nothing; only `status:` declares. +- **Pass 1 and pass 2 applied and pushed.** `949ff14` `31d8e1f` `3d47bd2` `00e741d` `4c364e9` + `fab8fb0` (**511 edits / 268 files**) `aee615d`. +- **End state:** `owner` 0 · `change_log` 0 · `domain` 0 · `revisions` 90 · `canonical` 159 · + `see_canonical` 3 · `confidence` 9 · `links` 8 kept-and-flagged. **YAML parse errors 16, + unchanged.** +- **Two executor tooling defects caught before applying** (§6 handler covered block-style lists + only — would have done 29 notes of 90 and reported success; §7 logged a retirement it did not + perform). Both found by **re-censusing an applied copy, not by reading the changelog.** +- **The jurist corrected its own "88 recoverable" reading**: those were self-descriptive values + resolving to themselves by construction. **Only 3 of 66 pointers were genuinely recoverable.** + +### 2026-08-20 — the steward opened Obsidian, and the links were already broken + +Checked against the mirror's history, not inferred. **Coffee log** (`brew_temp: [[94–96°C]]`) and +**homeopathy** (`[[Ignatia amara — The Medicine of the Sigh]]` naming a *title* where the file is +`Ignatia amara.md`) are both **pre-existing**; pass 2 never touched the homeopathy note and +touched only `linked_note`→`linked_daily_note` in the coffee log. + +**But the passes are not innocent.** §7 flattened nested `links.parents` — inert YAML Obsidian did +not render — into top-level `parents/children/peers`, which **made 194 already-unresolvable targets +render as clickable-and-broken in the properties UI.** The breakage was surfaced, not created. The +pass report did not predict this, and it should have. + +--- + +## Current state — OPEN + +1. ⚠ **A defect of ours: `see_canonical: "[[Index]]"`** in `09. Atlas of Roots/00. Atlas of Roots — Index.md`, + converted from `canonical: 09. Atlas of Roots/index.md`, **a file that does not exist**. The only + `Index.md` notes are `08. Notes/Tools & Workflow/Index.md` and a Catalan `00. Index/index.md`. + **It resolves to the wrong note or none — 1 of the 3 pointers §3 wrote.** Same basename flaw the + jurist corrected as a *number* that afternoon, landed in an applied edit as a *mechanism*. +2. **194 unresolvable `related` targets**, left bare and flagged by §6. +3. **63 residual `canonical` pointers** — each a note that named an authority for itself and lost + track of where it lives. Steward's eyes wanted here most: this is the population `canonical` was + actually describing, invisible while 157 path-strings sat behind one field name. +4. **16 YAML parse errors**, unchanged across both passes — never in scope, never addressed. +5. **The actual goal has not been started.** Everything so far is hygiene on an archive. *"A regular + workflow to have the important parts of our work captured there"* — the capture practice, the + thing that would make the vault a practice rather than a tidier archive — **has not been + designed.** Do not let the frontmatter tail stand in for it. diff --git a/claude/memory/session-2026-08-19-the-vault-got-a-spec-the-links-were-already-broken.md b/claude/memory/session-2026-08-19-the-vault-got-a-spec-the-links-were-already-broken.md new file mode 100644 index 0000000..3ee71c5 --- /dev/null +++ b/claude/memory/session-2026-08-19-the-vault-got-a-spec-the-links-were-already-broken.md @@ -0,0 +1,213 @@ +--- +name: session-2026-08-19-the-vault-got-a-spec-the-links-were-already-broken +description: "RECONSTRUCTED 2026-08-20 from the transcript — this session died unwrapped. The steward deferred the fence work and named two pieces that would come first: the Obsidian vault spec (ran to a ratified v1.0.0 and two applied passes, 511 edits over 268 files) and Trial 09, the jester arm (PREPARED AND HELD, never run — its ground truth leaks into PENDING.md:92-96, so every STRONG grade would be an ECHO). Transcript-archive leg (i) discharged: 47 jsonl preserved outside the pruned tree, 46/47 sha256-verified. PENDING-147 filed; N-now corrected 61 to 47 as a rolling window. PULLING THREAD: the fence, unblocked — the deferral has expired and both shaping pieces have run their course." +metadata: + node_type: memory + type: project + originSessionId: 0883c73d-9091-4508-aa31-592ddff5240a + modified: 2026-08-20T09:07:34Z +--- + +# Session 2026-08-19 — the vault got a spec, and the links it surfaced were already broken + +> ⚠ **THIS RECORD IS A RECONSTRUCTION, NOT A WRAP.** The session ran 2026-08-18T16:35Z → +> 2026-08-19T19:05Z and ended in `Request timed out` after a 513-second turn, with the steward's +> last message unanswered. The host or app then went down overnight — the transcript's final +> write is 01:53 local with only untimestamped metadata rows (`last-prompt`, `mode`, +> `ai-title`), the shape of a flush-on-shutdown, and the steward was asked to log in again the +> next morning to an empty terminal. **No `/wrap-up` ran.** This was written 2026-08-20 by +> reading `0883c73d-9091-4508-aa31-592ddff5240a.jsonl` and the git record. Everything below is +> sourced from those; nothing is recalled. Where the transcript is silent, this record is silent. + +## PAST — what moved, and why + +**The steward deferred the fence work, and named a reason.** 2026-08-19 ~11:15 CEST: *"I'd +actually like to defer this work until tomorrow morning because I have two other things that I +would like to do with you that could very well shape this very work."* MEMORY.md recorded the +deferral but flagged that **the two were never named**. They are: + +1. **Optimising the Obsidian practice**, beginning from a vault *spec* of the kind the serious + projects have. Steward's own framing of the tool boundary: **Drafts.app** is the scratchpad, + emptied weekly; **Notes.app** holds confidential material as locked notes; **Obsidian** is + where notes go that must not be lost — *"so far, a sort of archive… my instinct is that I + could make better use of it."* +2. **Trial 09 — the jester arm** (jurist-prepared 2026-08-17, revised 2026-08-19): proximity to + the court, no standing, questions only. A new species, not a variant of 05–08; runs + independently of the Control Kernel, uses no control document, so D-2 does not gate it. + +**First, though: "preserve the transcripts, then we shift."** PENDING-147 leg (i) discharged +under that authorization. All 47 `*.jsonl` in `~/.claude/projects/-Users-davidglidden/` copied +to `~/.claude-transcript-archive/raw/`, outside the tree the harness prunes at 30 days. **114 MB, +span 2026-07-20 → 2026-08-19. Verified by readback rather than exit code: 46/47 confirmed +sha256-identical.** The 47th was the live session's own transcript, still being appended at copy +time — recorded in `MANIFEST.json` as a **snapshot**, not silently counted as verified. + +**PENDING-147 itself was filed that morning**, `[HARDENING]`, out of the standing N-now +obligation rather than out of vigilance: re-measuring instead of relaying yesterday's figure +gave **47, not 61**. `governance-drift-check.py` globs a directory the harness prunes at 30 +days, so the counter is a **rolling window, not a cumulative count** — at ~1 session/day it +converges to ~30 and `transcripts 84` very likely never fires. Every "N remaining" report, +including the executor's own, was a false countdown. + +**Trial 09 was prepared and then HELD — it has never been executed.** Prompt file written and +hashed, corpus manifest built (**11 documents, 166,088 words**), exclusion hash-list verified. +The blocker is pre-run and structural: + +> `PENDING.md:92-96` — **inside an open item the wake surfaces every session** — names Fault +> Lines 5, 3 and 4 by number, each with its substance in a parenthetical, plus OP-CN-01. And +> Fault Line 5's proposition sits in `~/CLAUDE.md` Constraint 6, **stated more sharply than in +> the ground truth itself**. Under the design's own rule, every STRONG grade would therefore be +> an ECHO. + +The hash-list check *passed* — the excluded documents are absent **as documents**. The 2026-08-19 +revision's content scan was scoped to REVIEWED.md and PENDING.md and would have caught the +PENDING.md leak. **The exclusion was verified at the wrong granularity: absence of the file, not +absence of the content.** That is the finding, and it is why the trial did not run. + +## The Obsidian work — census, spec, two passes + +**Four read-only census rounds before a single edit.** Every `.md` parsed — **2,519 files, no +sampling** — parser carrying four controls. **400 distinct keys over 5,867 instances; 68% of +notes have no frontmatter at all.** Consumption cross-referenced against 357 dataview/tasks +blocks, 23 templates and all 39 `.obsidian` configs: 66 keys consumed (62% of instances), 29 +written-by-template-and-read-by-nothing, 305 orphaned. + +A **method correction is recorded in the report itself**: the first template pass matched key +names anywhere in a file containing Templater syntax, which tests whether the *word occurs in +prose*, not whether a template *writes the key*. Redone. + +**Rounds 2 and 3 were the jurist's doing, and they changed the answer twice.** The stop +conditions held — `tool`/`tools` was not resolved by the suggested default because inspection +gave no reason. Two fields investigated, two came back larger than their counts suggested, so the +jurist required the same treatment for the other four governance-block fields before any decision: +*"that assumption is exactly what got corrected twice already today."* + +- `owner` (153) — **one job, three spellings** (`David Glidden` 136, `David` 12, + `David F. Glidden` 5), zero discrimination. Cut. +- `canonical` (159) — **one name, two jobs**: self-descriptive (a note naming its own path) and + pointer-elsewhere (a note declaring its live version is somewhere else). +- The archival hypothesis **tested negative and that was the headline**: 65 of the 67 pointers sit + **outside** `99. Archive`. If *"the live version is elsewhere"* were functioning as an archival + marker they would cluster inside it; they do the opposite. **65 notes in the live vault declare + their live version is elsewhere and not one was moved.** The declaration exists and has never + been acted on. +- What *does* distinguish Archive: frontmatter 11% vs 46% outside; `status: archived` on **25 + notes, 2.3%** of it; **90% (965) receive no wikilink from any live note**. Seven notes inside + Archive still declare themselves `Active`/`active`, in two capitalisations. **No archival + policy note exists anywhere in the vault.** The operating criterion is **decay in practice, + declaration in name only.** + +**The spec was then ratified and applied.** `00. Compass/Frontmatter Specification.md`, **v1.0.0**, +drawn from the four-round census plus a reading of AldineXXI's Frontmatter specification (ARC) +and the Chamber Library specification. Its first design principle: *storage and lifecycle are +orthogonal* — which folder a note sits in says nothing about whether it is current; only +`status:` declares that. Placement in `00. Compass/` root was **confirmed by inspection, not +assumed** (that root already holds Vault Configuration Map, Vault Index, Pattern Index, A Guide +to Your Vault; Foundations' Protocols and Annexes hold personal practice). The spec's own +frontmatter conforms to itself. + +### Operational fact worth not re-deriving + +**The vault folder is not a git repository.** It mirrors to `~/_Dev/david-root-and-branch-vault-git` +(remote `git.skemantix.com/David/david-root-and-branch-vault-git`), and an automated job commits +`Mirror sync ` on its own schedule. Looking for `.git` inside the vault finds nothing. + +### The commits + +`949ff14` §1 spellings · `31d8e1f` §2 type instability · `3d47bd2` §3 template YAML · +`00e741d` the 12 held `00. Compass` edits (steward-authorized separately: *"I authorize the +Compass ones too"*) · `4c364e9` the spec · `fab8fb0` **pass 2 — 511 edits across 268 files** · +`aee615d` `domain`→`domains` per the jurist's ruling that a field always list-shaped should not +carry a singular name. + +**Pass 2 was one commit, not seven, and the reason is recorded**: 138 of the 268 files carry edits +from more than one section, so per-section commits would have had titles that overstate what they +contain *and* would not have given a per-section revert. An earlier attempt at per-section commits +was abandoned mid-flight for exactly that — §3 got none and §5 got one file, because the first +commit had already claimed the shared files. + +**End state:** `owner` 0 · `change_log` 0 · `domain` 0 · `revisions` 90 · `canonical` 159 +(93 boolean, 66 string) · `see_canonical` 3 · `confidence` 9 · `parents` 69 / `children` 36 / +`peers` 56 · `links` 8 kept-and-flagged. **YAML parse errors 16, unchanged across both passes.** + +## What was corrected — and by whom + +**Two defects in the executor's own tooling, caught before applying, both by re-censusing an +applied copy rather than reading the changelog:** + +1. **The §6 handler covered block-style lists only.** 82 of 121 `related` instances are inline + flow lists. It would have edited **29 notes of 90** and reported success. +2. **The §7 handler logged "links.canonical retired" without retiring it**, because it only + rewrote the block when the flatten produced output lines. + +**The jurist corrected itself, in the open.** Round 2's "88 basename-resolvable, 63 not" was +**tautological on one side**: the 88 were overwhelmingly the *self-descriptive* values, which +resolve to their own filename by construction. The real pointer population (66) was almost +entirely coincident with the unresolvable set — **only 3 of 66 were genuinely recoverable.** The +jurist named this as a wrong read rather than an imprecise one, and refused to let it pass +quietly in a changelog. The executor's share: the "88" came from *its* round-2 report, presented +as a resolvability tier without noticing one tier was measuring "does this note exist." + +**The steward caught the last one by opening Obsidian**, as asked. Unanswered message, 20:57 +CEST, the one the timeout swallowed: + +> *"coffee log link doesn't work, neither in homeopathy. in Atlas of Roots, i hand corrected the +> context rot guidlines link. otherwose the children point to pages not yet created or that are +> mislabled"* + +## FUTURE — what pulls + +**The fence work is now unblocked by its own terms.** The deferral named 2026-08-20 and named two +pieces that would come first. One ran to a ratified spec; one is held, un-run, with a live +blocking finding. **Whether either reshapes the fence is a steward call the record cannot make.** + +**Trial 09 resumes at the leak, not at the run.** The prompt is written and hashed, the corpus is +built. What is owed first is a decision about `PENDING.md:92-96` and `~/CLAUDE.md` Constraint 6 — +the ground truth is inside the proximity corpus by construction, and no re-run fixes that. + +**The vault has a tail, and none of it is urgent.** 194 unresolvable `related` targets left bare +and flagged; **63 residual `canonical` pointers** — each a note that named an authority for +itself and lost track of where it lives, invisible while 157 path-strings sat behind one field +name. Plus the defect in the CODA below. + +## CODA — 2026-08-20, checking the steward's three broken links against git + +All three were checked against the mirror's history rather than inferred. **The broken links are +pre-existing vault debt, not regressions from the passes** — but the passes are not innocent +either. + +- **Coffee log** — `brew_temp: [[94–96°C]]`, a temperature wrapped as a wikilink. Present since + the 2025-09-17 mirror sync. Pass 2 touched only `linked_note` → `linked_daily_note` in that + file. **Not ours.** +- **Homeopathy** (`Nux vomica`) — `links.related` targets `[[Ignatia amara — The Medicine of the + Sigh]]` while the file is `Ignatia amara.md`. **The link names the note's `title`, not its + filename**, which is what Obsidian resolves on. That note was one of the 8 kept-and-flagged §7 + cases; its last commit is 2025-11-02. **Pass 2 never touched it.** +- **Atlas of Roots** — pass 2 §7 flattened `links:` into top-level `parents/children/peers`, + carrying every string verbatim, including the already-broken + `[[00. Compass/00a. Foundations/Context Rot Guardrails Charter]]`. **Relocated, not authored.** + The steward fixed the path by hand and also renamed the target file, which had been literally + named `*Context Rot Guardrails Charter.md` with a leading asterisk. Both are captured in + `e879c82`, an automated mirror sync at 21:18 — **13 minutes after the timeout.** + +**The honest finding is not "not our fault."** Nested `links.parents` was inert YAML that Obsidian +did not render as links. Flattening it to top level made **194 already-unresolvable targets render +as clickable-and-broken** in the properties UI. The passes did not create the breakage; they +**surfaced** it. That is arguably the spec working, but it changed what the steward sees, and the +pass report did not predict it. + +**One genuine defect of the executor's own, found only in this reconstruction.** Of the 3 +`see_canonical` pointers §3 wrote, Atlas of Roots got `see_canonical: "[[Index]]"`, converted from +`canonical: 09. Atlas of Roots/index.md` — **a file that does not exist.** The only `Index.md` +notes in the vault are `08. Notes/Tools & Workflow/Index.md` and a Catalan `00. Index/index.md`. +**It resolves to the wrong note or to none. One of three is wrong.** This is the same +basename-resolution flaw the jurist corrected in the abstract that afternoon, landed in an +applied edit — corrected as a *number* in the report, not as a *mechanism* in the tool. + +**Still open from 2026-08-17, and this session did not answer it:** across the last ~10 sessions, +when a defect in the executor's own instrument was found, WHO found it — a mechanism firing +unbidden, the executor re-checking, the jurist, or the steward? **This session adds four data +points and they do not point one way:** two tooling defects found by the executor re-censusing; +one number corrected by the jurist; one broken-link class found by the steward opening the app. +The `[[Index]]` defect was found by neither — it surfaced a day later, in a reconstruction that +only happened because the session crashed.