--- 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.