diff --git a/bin/capablemind-thinking-mirror.sh b/bin/capablemind-thinking-mirror.sh deleted file mode 100755 index acc9711..0000000 --- a/bin/capablemind-thinking-mirror.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/zsh -# Mirror CapableMind thinking/David/ to Obsidian vault -# Excludes CLAUDE.md (repo-specific, not for vault) - -SOURCE="$HOME/_Dev/CapableMind-AI/docs/thinking/David/" -DEST="$HOME/Library/Mobile Documents/iCloud~md~obsidian/Documents/David, root-and-branch/00. Compass/00b. Constellations/CapableMind/thinking-mirror/" - -rsync -av --delete --exclude='CLAUDE.md' "$SOURCE" "$DEST" > /dev/null 2>&1 diff --git a/claude/memory/project-obsidian-vault-practice.md b/claude/memory/project-obsidian-vault-practice.md index e6af950..8862d3c 100644 --- a/claude/memory/project-obsidian-vault-practice.md +++ b/claude/memory/project-obsidian-vault-practice.md @@ -85,6 +85,59 @@ not render — into top-level `parents/children/peers`, which **made 194 already 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. + +### 2026-08-23 — status check: four items verified against substrate, and one NEW regression found + +Asked where the workstream stood; verified rather than relayed. **Items 1–4 confirmed live**, with +two unit corrections: `related` was counted by the tracker in *targets* (194 unresolvable) and a +file-count (122 notes / 213 targets now) is not comparable to it; and `canonical: 159` is a +**frontmatter** count — a naive `grep '^canonical:'` returns 239 because it also catches body text. +The tracker was right and the quick instrument was wrong. YAML parse errors independently +re-measured at **16**, matching. + +⚠ **NEW — the vault has a write path the spec does not govern, and it silently reverted pass 2.** +Mirror sync `a58fc00` (2026-08-22 23:52) changed 14 files and ran *against* the spec: +`owner` **0 → 9**, `change_log` **0 → 9**, `revisions` **90 → 81**, and `canonical: true` was +replaced by pointer-form paths. All 9 sit in one subtree, +`08. Notes/CapableMind/thinking-mirror/chamber/archive/orientation/`. + +**Mechanism — SUPERSEDES the first reading filed earlier the same day.** The earlier entry named +*"a job mirrors `docs/thinking/David/`"* and pointed at the launchd agent. **Wrong agent.** Matching +upstream content is not evidence of which path wrote it, and the launchd job targets a different +folder entirely. The actual writer is **`/wrap-up` §7**, which rsyncs +`~/_Dev/CapableMind-AI/docs/thinking/David/` → `08. Notes/CapableMind/thinking-mirror/` **at every +wrap**. The 2026-08-22 wrap ran it at 23:42; vaultsync committed the result at 23:52 as `a58fc00`. + +⚠ **There are TWO mirrors of the same source into two different vault folders, and neither knows +about the other:** + +| writer | destination | state | +|---|---|---| +| `/wrap-up` §7 (every wrap) | `08. Notes/CapableMind/thinking-mirror` | **live** — 251 files, 0 diff from upstream | +| `com.dglidden.thinking-mirror` (launchd, 48 h) | `00. Compass/00b. Constellations/CapableMind/thinking-mirror` | **dead** — 151 files, 115 behind, frozen since 2026-03-13 | + +**The launchd job is failing and cannot say so.** `launchctl list` reports last exit **1**; the +script ends `rsync … > /dev/null 2>&1`, so its own plist `StandardOutPath` receives nothing and the +log has been 0 bytes since 10 Mar. Precedent for the cause is in `session-ledger-2026-04-16.md`: +the *vaultsync* agent failed the same silent way for weeks — **macOS TCC / Full Disk Access, rsync +under launchd against an iCloud path, exit 23** — and was fixed by granting FDA. Same shape here, +never fixed. ⚠ **Exit 1 is not exit 23, so the TCC diagnosis is a strong hypothesis, NOT +established.** A manual `--dry-run` of the exact command succeeds (exit 0) when run interactively, +which is consistent with TCC but does not prove it. + +**The reframe that resolves this: you do not edit a mirror.** Applying the frontmatter spec to a +derived tree is a category error — the edits cannot survive their next sync, and pass 2's edits to +both mirror trees were void the moment they were written. This is not misbehaviour by the mirror. + +**Not fixed — the disposition is a design choice, not a [FIX]:** exclude the subtree from the spec's +scope · apply the spec upstream in CapableMind-AI · or declare mirrored notes not-spec-governed and +say so in the spec. Steward's call. + +**Item 5 sharpened.** `01. Daily/` holds **11 notes, the most recent 2025-09-04** — nearly a year +old, and the Daily-Notes plugin is not configured. There is no dormant capture habit to revive; the +practice would be built from nothing. `00a. _inbox` holds 11 notes. + + --- ## Current state — OPEN @@ -103,3 +156,7 @@ pass report did not predict this, and it should have. 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. +6. ⚠ **The `thinking-mirror` write path is ungoverned** (found 2026-08-23). 9 notes carry retired + keys again after mirror sync `a58fc00`; any future pass over that subtree is undone on the next + sync. **Fix the path before re-applying the spec there** — otherwise the work is re-done, which + is what the Prime Directive exists to prevent. diff --git a/claude/memory/session-ledger-2026-08-23.md b/claude/memory/session-ledger-2026-08-23.md new file mode 100644 index 0000000..161ce33 --- /dev/null +++ b/claude/memory/session-ledger-2026-08-23.md @@ -0,0 +1,66 @@ +--- +name: Session Ledger 2026-08-23 +description: Practice-of-return ledger maintained by /symmetria — returns, open horizons, recalibrations, authorization moves, sub-agent dialogues, bypasses. +type: feedback +--- + +# Session Ledger — 2026-08-23 + +## Returns + +- `2026-08-23T~wake` — **Digest anchors did not match the wrap's own headings.** `wake-digest.py:471` does a + case-sensitive `text.find("PULLING THREAD")`; the 2026-08-22 wrap wrote `**The pulling thread:**` and + `**Literal question for next-Claude**`. Both fields recovered by hand from the session file. The digest + degraded *honestly* (Constraint #4 held) but the wake's two most load-bearing fields were invisible to + the instrument that exists to carry them. Named at the wake rather than banked. [FIX] candidate — touches + the wake instrument, **not** the filed seed rule, so it is not under the pre-beacon no-edit discipline. + +- `2026-08-23` — **The inherited question, answered: the rate HAS risen, ~3–4×, and it is not a mood.** + 22.4 reversal marks per *active day* in the last fortnight against a 5.7 baseline over the prior + 57 active days. Robust: excluding 2026-08-22 entirely (the single heaviest day, 31% of the + fortnight) still gives 18.2/day, 3.2×. Concentration is not close — **22 of 24 amendment/addendum + headings sit in PENDING.md (executor proposals), 2 in REVIEWED.md.** Density rose in both + (proposals 1.73→4.06, rulings 0.79→2.08), so the jurist is being amended more too, but proposals + carry ~2× the density in both periods and always did. + **Mechanism:** it is NOT that more items get reversed — block-incidence is 61–73%, high but under + W20's 75%. It is that single items now accumulate CHAINS: PENDING-152 took six amendments in one + day, PENDING-131 four addenda. + +## What held + +- The pre-beacon discipline held with no effort required: `~/dotfiles` clean, **0 ahead on gitea AND github**, + `FOOL-SEED-RULE.md` + `derive_fool.py` filed. Nothing to re-push, nothing to re-verify on the day. +- N-now counted with the trigger's own non-recursive glob (**47**), not `find` — yesterday's correction + applied on its first opportunity to recur. + +- **Four controls decided this answer, and two of them killed a reading I preferred.** + (1) `PENDING-archive.md` included — 74 closed items left `PENDING.md` on 2026-07-28, so answering + the question over the two files it literally names would have under-counted every earlier week and + MANUFACTURED the rise it was testing. (2) Family stem, not the strict literal string the question + names: strict `AMENDMENT` is near-absent before W31 and would have shown 0→42, an artefact of the + amendment BLOCK becoming a named form, not a rate. (3) Per-active-day, not per-week. (4) I + hypothesised the spike was blocks *about* amendment procedure inflating the word count, hand-read + the heaviest block, and **was wrong** — PENDING-152's 29 markers are real reversals + ("resolved from the schema, AGAINST my own argument"; "Type-only was an overcorrection, and is + withdrawn"). The deflating hypothesis was mine and the substrate refused it. + +## Open horizons + +- **The beacon, 2026-08-25T12:00:00Z** — run ONCE, curl, record `outputValue` before running, stop on any failure. +- The reversal-rate question (yesterday's literal question) — checkable, corpus at least half not self-authored. +- The transport, not the voice — `statusLine` substrate-verified as NOT SET in both settings files; surface free. +- PENDING-151, the v1 Chamber archive (33 real files, 9 pairs, one session's read). +- FROZEN: Thistleweld corpus (PENDING-153) — do not read before the soul exists. + +## Confidence to recalibrate + +- Inherited from 2026-08-22, unifying six corrections: **the check is skipped precisely where confidence is + highest.** Two named shapes to hold today — (a) an impossibility claim justifying an *undisputed* conclusion + is the least-tested sentence in the document; the absence of disagreement is the trigger to check; + (b) an instrument's reach mistaken for a claim's subject (5 instances in one week, 4 caught by another party). + +## Authorization moves + +## Sub-agent dialogues + +## Bypasses diff --git a/claude/skills/wrap-up/SKILL.md b/claude/skills/wrap-up/SKILL.md index c15d6e5..4dcfd95 100644 --- a/claude/skills/wrap-up/SKILL.md +++ b/claude/skills/wrap-up/SKILL.md @@ -212,9 +212,32 @@ Sync the thinking mirror to Obsidian vault: - Source: `~/_Dev/CapableMind-AI/docs/thinking/David/` - Destination: `~/Library/Mobile Documents/iCloud~md~obsidian/Documents/David, root-and-branch/08. Notes/CapableMind/thinking-mirror/` -Use rsync to copy new/modified files, preserving directory structure. Report what was synced. +Use rsync to copy new/modified files, preserving directory structure. -If the destination doesn't exist or the iCloud path isn't accessible, skip silently and note it. +⚠ **This wrap is now the ONLY writer of that mirror.** A launchd agent +(`com.dglidden.thinking-mirror`, every 48 h) used to mirror the same source into a *second* vault +folder, `00. Compass/00b. Constellations/CapableMind/thinking-mirror`. It had been failing since +roughly March 2026 — last exit 1, `rsync … > /dev/null 2>&1`, so its own log sat at 0 bytes and it +could not report its own death — and its tree had drifted 115 files behind. **Retired 2026-08-23**: +agent unloaded, plist and script removed, the stale duplicate tree deleted after verifying all 151 +of its files were present in the live tree. Steward-authorized. Do not recreate a second writer. + +⚠ **The destination is a MIRROR — a derived tree. Never edit it, and never apply a vault-wide pass +to it.** `rsync` overwrites it from source on the next wrap, so any vault-side edit there is void +the moment it is written. Frontmatter pass 2 (2026-08-19) learned this the expensive way: its edits +to this subtree were reverted by this very step on 2026-08-22 at 23:42, and the 09-item spec +end-state it reported for those notes had already ceased to be true. The Frontmatter Specification +declares mirrored trees out of scope for exactly this reason. + +**Report the outcome explicitly in §8 — never skip silently.** This mirrors §6.5's rule for a +failed push, and for the same reason: a sync that fails quietly is indistinguishable from a sync +that had nothing to do, and that is how five months of silence went unnoticed. + +- Success: name the count synced (`N files`), or `no changes` if the trees already agreed. +- Failure — destination missing, iCloud path unavailable, non-zero rsync exit: **say so in §8 with + the exit code.** Do not swallow it. If the failure looks like the launchd precedent (an iCloud + path unreachable from a restricted context), say that too; the diagnosis is in + `session-ledger-2026-04-16.md` and it is macOS Full Disk Access, not git and not rsync. ### 8. Output diff --git a/config/capablemind/com.dglidden.thinking-mirror.plist b/config/capablemind/com.dglidden.thinking-mirror.plist deleted file mode 100644 index ebd2ba8..0000000 --- a/config/capablemind/com.dglidden.thinking-mirror.plist +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Label - com.dglidden.thinking-mirror - - ProgramArguments - - /Users/davidglidden/bin/capablemind-thinking-mirror.sh - - - StartInterval - 172800 - - RunAtLoad - - - StandardOutPath - /Users/davidglidden/.capablemind/logs/thinking-mirror.log - - StandardErrorPath - /Users/davidglidden/.capablemind/logs/thinking-mirror.log - -