Commit Graph
28 Commits
Author SHA1 Message Date
David F GliddenandClaude Opus 5 3af7207c29 session 2026-09-01 ADDENDUM 1: /doctor ran after the wrap
The wrap was complete and committed; the steward then ran /doctor, which
found and fixed real breakage. Recorded as an addendum to the same session
file rather than a new one — it is the same session, past midnight.

Fixed: 8 sub-agent name collisions across 21 files (15 renamed; 0 remain,
48 unique names — confirmed by the harness, which surfaced 15 previously
invisible agents immediately). 4 invalid SKILL.md frontmatters, latent
rather than live since the harness parses leniently. plane MCP disabled
(0 calls in 41 real sessions). permissions.defaultMode set to auto.
chamber-library/CLAUDE.md trimmed 54,129 -> 22,530 chars, under the
warning threshold, all 42 tool names and all 9 sections preserved.

TWO LOOSE ENDS recorded in ADDENDUM 1 and flagged in MEMORY.md, because
either would strand the next session:

1. chamber-library/CLAUDE.md is UNCOMMITTED — a 31,861-char deletion,
   steward-approved at the doctor gate, left for the steward because the
   doctor protocol forbids the executor committing CLAUDE.md edits. git
   diff --stat reports 11 lines and badly understates it; the cut sections
   were single 16k/20k-char lines.

2. ~/.claude/agents is NOT GIT-TRACKED — 51 hand-edited files, 0 tracked,
   not a symlink into dotfiles. The renames therefore have no version
   history, and the only backup went to a session-scoped scratchpad that
   dies on clear. The full rename mapping is written into ADDENDUM 1 and
   is the only undo that survives.

The wider gap is noticed and NOT filed, per the proposed moratorium: a
governed surface with no version control, in a system whose premise is
that the record must be checkable. Found by accident.

Also logged: a thirteenth instrument error. I reported dotfiles as having
unpushed commits to "origin" by conflating two repos' status lines —
dotfiles has gitea and github and no origin; the origin line was
studium-engine's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017vKkg2EJF1rGwdFdBogwqx
2026-09-02 11:49:24 +02:00
David F GliddenandClaude Opus 5 3e828fe3f2 Session 2026-08-24: grounding gates ruled, daybook rule changed, two censuses run
PENDING-95: Amendment 2 (jurist ruling — (a) rejected, (d) discharged, (b)/(c)
deferred) plus the (b)/(c) census that discharges the deferral's condition.
60 guarded / 32 marked (record said 59/31); date 75%, sections 97%, quoting 47%.
Date broadly present => the jurist's cheaper third form is the live option.

PENDING-156 opened (kind (c): mechanisms off the path the work takes) and its
option (b) census run the same session. PENDING-109 prior confirmed by direct
read. PENDING-89: two docket entries, one same-direction miss and one
cross-direction catch, filed the same day and at the same speed.

Mechanisms: daybook-cue.py rewritten on steward ruling — the daily note must be
appended to until end of day, so the trigger is staleness, not note size, and the
matcher now includes Bash (it had never fired once). daybook-ensure.py and
/wrap-up 7.5 gain a standing Corrections slot per REVIEWED-126.
governance-mcp.py gains two read-only keys so the jurist can read the artifacts
it rules on; the doctrine that read-surface changes should arrive as rulings is
adopted, and the next key is proposed rather than added.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-24 18:36:34 +02:00
David F GliddenandClaude Opus 5 edf71fb173 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
2026-08-24 11:25:39 +02:00
David F GliddenandClaude Opus 5 073ef8a482 The daily work log, with a trigger this time (PENDING-155 filed)
The steward asked for a daily note in Obsidian explaining in plain terms what
we did, decisions taken, and commit references — plus significant insights and
exchanges between the parties. This is Obsidian tracker item 5, the actual goal,
unstarted since 2026-08-19 while four items of frontmatter hygiene stood in
front of it.

Two prior attempts at this exact genre were read before anything was designed,
honouring the tracker's own flag: daily-log/ (4 entries, Mar-Apr 2026) and
sessions/ (3 long-form narratives). Both died inside four weeks. Neither had a
trigger — they were written when someone remembered. So the design question was
never what the note should say. It was what makes it survive.

Answer, steward-chosen at each fork: the note lives at 01. Daily/YYYY-MM-DD.md
with project work under its own H2 inside it rather than in project folders; a
SessionStart hook creates it so existence stops depending on memory; the
executor writes during the session because a wrap-only design inherits the
wrap's failure mode (2026-08-19 died unwrapped); and the wrap finalises rather
than begins.

daybook-ensure.py creates only. It will not touch an existing note — that is the
control the design turns on, and it is tested, along with a positive control
proving the no-dir report distinguishes a missing directory from a broken
function. It also reports failure loudly, because the job it sits beside spent
five months failing behind a > /dev/null 2>&1.

Not revived: the 2025 analogue template — sleep, supplements, homeopathy. Pen
and paper beat it and should keep it. That it failed is a finding, not a gap,
and this note is a different genre rather than its replacement.

PENDING-155 files the steward's idea for the jurist's side: an append-only MCP
surface writing a scratch file the executor folds in. Deliberately NOT a tool on
governance-mcp.py, whose read-only guarantee is a live AST control with a
positive control rather than a comment. A separate one-tool server leaves that
intact, and the vault note stays single-writer — the same lesson the
thinking-mirror taught this morning.

Correction carried into the record: the executor told the steward mid-session
that Claude.app has no filesystem access. False since 2026-08-08. Third instance
today of a constraint asserted from recall where the substrate was one file away.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-23 10:52:35 +02:00
David F GliddenandClaude Opus 5 f1c91d9866 [FIX] Retire the dead thinking-mirror agent; one writer, and it reports
The vault held two mirrors of docs/thinking/David/ in two folders, neither
aware of the other. /wrap-up §7 writes 08. Notes/CapableMind/thinking-mirror
at every wrap and is byte-current with upstream. The launchd agent
com.dglidden.thinking-mirror wrote 00. Compass/00b. Constellations/... every
48h, and had been failing since roughly March 2026: last exit 1, ending in
`rsync … > /dev/null 2>&1`, so its own plist StandardOutPath received nothing
and its log has been 0 bytes since 10 Mar. Its tree was 115 files behind.

Nobody noticed the archive job had died because a second, undocumented writer
was quietly doing the same work to a different folder. That is the failure the
duplication caused: not a lost archive, but a lost signal.

The steward asked a previous executor to build that script. Option A chosen:
keep the wrap, retire the agent. Agent unloaded, plist and deployed script
removed. Removing the plist from config/capablemind/ is load-bearing, not
tidiness — setup-capablemind.sh:135 copies every *.plist there into
LaunchAgents, so leaving it would resurrect the retired job on the next setup.

Stale tree deleted from the vault after three independent checks that nothing
was lost: all 151 of its .md files present in the live tree by basename, all
five files that `diff -rq` reported as unique present in both the live tree and
the repo (they only looked unique because the stale tree is flat and upstream
reorganised into l2-constitution/, amendments/, chamber/), and 156 files
tracked in the vault mirror's git HEAD at a58fc00. Siblings daily-log/,
sessions/ and l2-design-narrative.md preserved.

§7 rewritten: it now states it is the only writer, that the destination is a
derived tree no pass may edit, and that the outcome is reported in §8 with the
exit code — never skipped silently. The file already required exactly that of a
failed push in §6.5 and contradicted itself eight lines later.

Frontmatter Specification bumped to v1.0.1 in the vault (steward-authorized,
scoped to this amendment): principle 7 and a new §1a declare mirrored trees out
of scope. Pass 2 brought that subtree to v1.0.0 and reported an end state for
it; the 2026-08-22 wrap rewrote it from source at 23:42 and every edit vanished.
A derived tree cannot hold an edit.

Tracker: the mechanism claim filed earlier today named the launchd agent as the
writer, on nothing stronger than matching upstream content. Wrong agent,
explicitly superseded in place.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
2026-08-23 10:35:07 +02:00
David F Glidden 32b0c9dfc6 [FIX] The link canary was blind to code spans, to wikilinks, and to its own class
The steward's 2026-08-09 to-do read "the gap is neither knowledge nor home but
the absence of an EXECUTABLE." The premise was false: classify_pointers has
existed since 19bddd5 (2026-08-08), wired to SessionStart, with controls. The
gap was that the executable was incomplete, and the incompleteness had already
produced a false positive.

Four defects, three named in the spec and one found by building it:

1. CODE SPANS. `](file.md)` inside backticks read as a pointer, so the single
   DEAD pointer reported on 2026-08-09 was the link pattern written inside
   MEMORY.md's own specification of this canary. An instrument that flags its
   own documentation flags it every wake forever, and the real signal drowns —
   the same "known canary bug" dismissal the 2026-07-28 block was written to
   end, arriving by a second route. Fences and inline spans are blanked with
   offsets preserved; inline spans may not cross a newline and an unterminated
   fence does not match, so a stray backtick can never blank the file and HIDE
   dead pointers.

2. WIKILINKS. reference-verification-ladder.md has specified this canary as
   covering "every `](file.md)` and `[[wikilink]]`" since 2026-07-06. Only the
   first half was ever built. 31 wikilinks now checked.

3. BREAKAGE AGE, derived from git rather than a stored prior run — a state file
   would make this the one cached section in a digest whose governing property
   is that it is computed. Where git cannot answer, it says so.

4. Found by running it: the first wikilink pass reported only UNWRITTEN, and
   both live hits were [[trust-prior-pass-frame]], whose file EXISTS as
   feedback-trust-prior-pass-frame.md. That is precisely the one-word alarm the
   comment ten lines above it was written to forbid. Wikilinks now report three
   outcomes and hand back the replacement slug. Both are repaired here.

The wake-up skill and the ladder now POINT AT the executable instead of
describing the check — the described-not-invoked gap is why it kept being
retyped by hand on 2026-08-08 and 2026-08-09.

Verify: python3 scripts/wake-digest.py --selftest   (61 checks, exit 0)
        python3 scripts/wake-digest.py | grep 'MEMORY POINTERS'
Induced red: blank_code reverted to a no-op (behaviour, not the symbol) →
        exit 2, five named failures, no traceback; direction controls held.

Not changed: the wrap_inside detector, which announced "PREVIOUS SESSION DID
NOT WRAP" for a session that wrapped at 19:48 and kept working until 21:54 —
a two-valued detector over a three-case state. Named in the ledger, not fixed.
2026-08-10 16:01:51 +02:00
David F Glidden 7574ab6bdd session 2026-08-08: PENDING-116 (fleet-on-corpus-change) filed; /wrap-up Instruments field (FIX lane) 2026-08-08 13:06:59 +02:00
David F GliddenandClaude Opus 5 33c11fff87 session 2026-08-07 evening: PENDING-112 + REVIEWED-95 (route harvested capabilities by firing moment)
Register censused and rebuilt from the archive: 177 claimed -> 154 real live
proposals, legible, with exact archive:L### pointers. The 2026-08-01 compaction
was lossless but illegible (55 scraped header rows; 95% of cells cut mid-word);
completeness verified 124 = 124, so nothing had been dropped.

Skills pruned 63 -> 12 after measuring that 53 had never been invoked across 64
sessions / ~5 months. The finding underneath: retrieval is set by a capability's
HOME, not its importance -- MEMORY.md 83%, register 77% (named in a wake step),
ladder 14%, 'THE GOVERNING FRAME' 12%, 'Read at Step 0' 9%, recall-bound skills 0%.

PENDING-112 filed, jurist design-gated, steward concurred; REVIEWED-95 drafted.
Landed: the /wrap-up 1.6 filing gate (prospective) and the /wake-up ladder
sentence (a pre-registered trial intervention, landed alone). The 20-session
falsifier is WIRED, not intended -- DEFERRED-DECISION ladder-ritual-trial,
trigger: transcripts 84. Wiring it exposed two defects in the deferral checker:
no way to express a session count except as a date proxy, and a scan that never
looked at claude/governance/. Controls 16 -> 19.

Stroke 2's 41-entry ladder append deliberately NOT done: REVIEWED-95 Q3
sequences it after the ladder trigger, which now exists.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NEWjLBP4quXbDPDL2byEzZ
2026-08-07 19:09:46 +02:00
David F Glidden 2bdd40749a session 2026-08-07: N1+R0+N2 built, @3 corrected under PENDING-111, D-5 recorded, two governance checkers, V2 unblocked 2026-08-07 18:11:16 +02:00
David F GliddenandClaude Opus 5 0a48e6934d [FIX] L1 pin root-caused and cleared; S-series closed; instrument census
mindfabric-00 had been event-loop-pinned for 6+ days (100% CPU, /health silent).
Profile + CDP inspector named two hot paths, both from runTemporalPipeline:

  checkForCycle -> getCausalEdgesFromSqlite   99.8% of samples
  tryExtendChains -> getChainsContainingSeq   now dominant (json_each scan)

Cause of the first: ANALYZE had never been run, so SQLite preferred a boolean
index (idx_caused_tombstoned, matching ~all 836k edges) over idx_caused_from.
ANALYZE across 15 module DBs flipped the plan; 6.4x on a microbenchmark and
99.8% -> 6.0% in the live profile. /health went from silent to 200 in 0.13s.

B1.1's fan-out cap is IMPLEMENTED AND WORKING (today: max in-degree exactly 20,
zero violations; pre-23-June: max 629, avg 67.6). The defect is data, not code —
836k edges / 813k chains minted under ungoverned fan-out before the fix landed.
Repair run: derived stores wiped, logchain preserved, replay in flight.

S-series closed (jurist had already ruled all of Q1-Q5 on 2026-05-18):
  S6/S7/S9 implemented (Symmetria §3 flags, `suspend` outcome, wrap-up §8 tenses)
  S2 rebuilt as [FIX] — wake-digest unwrapped-session detector, discrimination-
    gated on real sessions (11 wrapped / 2 unwrapped)
  S4/S5 withdrawn with MemPalace (steward ruling)
Dormant legacy dispositioned: PENDING-4/5/11/12, CD-03, ICP-19 duplicate.
Open authorization items 22 -> 10.

Census 01: which instruments have no real negative instance. Finding — the
governance drift-check has 3 of 5 families inert against the current CLAUDE.md,
and 71 of 75 verification-ladder entries are cited nowhere outside the ladder.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
2026-08-03 20:57:41 +02:00
David F GliddenandClaude Opus 5 62b92bd425 [FIX] Land the skill-harvest FIX lane and apply its first batch (REVIEWED-85)
REVIEWED-85 was placed by the steward at 10:41 today; the wake flagged at 10:44
that /wrap-up SKILL.md was still untouched since 2026-07-07. Landing it.

Precondition discharged first. The ruling states its own verification limit: the
jurist could not read the skill files, so the /wrap-up §1.6 and /wake-up §2.a
quotes underpinning Part III's "contradicts itself" claim were affirmed on
timeline evidence rather than checked. Required before landing was mechanical
containment-with-positive-control verification of exactly those quotes. Run:
7/7 contained verbatim against the live skills, 5/5 controls absent, instrument
verified.

§1.6 now carries the two-clause disjunctive test (the executor's own narrower
single-clause alternative declined at the gate as less safe), the hard floor with
its catch-all sharpened per Q4 and tied to the measured failure rather than left
as open judgment, and all three instruments as mandatory. The lane is provisional
pending the steward-jurist check-in.

The §Important-constraints line still stated the blanket rule the ruling narrowed.
Left alone it would have been a second live version of a governance rule inside
the file that forbids exactly that. Reconciled, with a note saying why.

First batch applied -- the four class-(i) proposals the steward raised 2026-07-29
and which REVIEWED-85 itself dispositions as batch 1, so their classification was
ruled rather than self-assessed: a `## What held` ledger section (the ledger could
previously only record debits), a `prevention` KG predicate capturing transfer
between failure classes, one wake line surfacing it, and the retirement of the
standing question's self-report framing in favour of the checkable form -- the
last on the grounds contamination-problem.md gives, that direct self-report is
the most contaminated form of inquiry.

The FIX-lane index is created and carries all four. It records explicitly what is
NOT in it: the §1.6 edit itself, which changed what the executor may do without
asking and was therefore PROPOSAL by its own test. A lane cannot authorize its
own construction.

Register rows 174-177 marked applied.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
2026-08-02 11:55:15 +02:00
David F GliddenandClaude e8b6ce06a3 session 2026-07-27 evening: PENDING-76/77/78 placed; governance drift-check built + wired into /wake-up
PENDING-76 remanded by jurist — required count returned 0 of 11 (the package's own
IV.2 refinement proved its target category empty); executor recommends withdrawal.
PENDING-77 (5 structural defects) and PENDING-78 (.app preferences) released by the
ruling from needing it. Drift check reports contradicted state claims at every wake
and corrects nothing — detection needs no authorization, correction does.

MEMORY.md compacted 20.5KB -> 17.1KB (budget hook); prior Active Session demoted to
MEMORY-reference.md. CLAUDE.md and REVIEWED.md untouched.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xefg5EXwcpd9RMAr63dWrD
2026-07-27 22:14:25 +02:00
David F GliddenandClaude Opus 4.8 84a23d8550 skills: build both authorized harvest proposals (2026-07-27)
/wake-up PATCH — substrate-check the briefing's backlog section. REVIEWED.md's
"If AUTHORIZED: build X" clauses record what was AUTHORIZED, never what was
DONE; the same holds for a PENDING item's Awaiting line and any tracker's next
steps. Earned: the wake reported REVIEWED-72/73/74 as authorized-but-unbuilt
when TWO were already built and landed, and the wave reported as blocked was
already unblocked. The patch requires verifying against the substrate (code,
spec header, repo CLAUDE.md) and marking each item verified/unverified —
because the wake briefing is the highest-leverage place a false claim can land:
it shapes the steward's picture of their own project before any work begins,
and arrives with the authority of a status report.

/field-divergence-sweep CREATE — the standing probe for one value computed in
more than one place. Core: derive the rule from what a CONSUMER must do, never
by picking the surviving implementation (comparison is selection, not
derivation); enumerate and test the shapes where each candidate happens to be
right (complementary-correctness defeats sampling); collapse to one imported
implementation; migrations RECOMPUTE rather than adjust; land
producer-then-consumers in one change-set with a byte-diff proof.

Grounded in the proven source_lines run rather than recall, including the
failure the skill exists to prevent — it found the field computed two ways,
then both ways wrong, then the third wrongness inside a fix committed an hour
earlier (lintott off by 308 lines).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xefg5EXwcpd9RMAr63dWrD
2026-07-27 19:39:35 +02:00
David F Glidden 5bf96280df session 2026-07-22: PENDING-69 boundary-drop mechanism (drafted→ruled→BUILT, Q7 capstone passed, on branch 21e3499) + /model-handoff skill; REVIEWED-69 awaiting steward placement 2026-07-22 14:38:00 +02:00
David F Glidden b9e0137bcc skill(jurist-package): patch — trace a ruled finding's inference, not just its words (steward-authorized 2026-07-20) 2026-07-20 21:20:06 +02:00
David F Glidden f67bf6e582 session 2026-07-20: /jurist-package built + PENDING-67/REVIEWED-67 + F2 ruled + v2.3.0/REVIEWED-68 operative 2026-07-20 21:13:05 +02:00
David F Glidden c200aaf039 session 2026-07-19 late-night: S2b whole — omnibus unit + witness vocab + Eichmann pilot ran+RULED (PENDING-67 filed, interim EPUB stop, order-gap docketed) + REVIEWED-55 resolved stale + four-stroke harvest review ruled&built 2026-07-19 23:07:09 +02:00
David F Glidden 2e362b3801 session 2026-07-07 (evening): chamber A4+B(iii) spec v2.0.2 + A1 Agent/Nomen registry v1 (REVIEWED-49/51); /wake-up + /wrap-up rewired off MemPalace to the files layer (wind-down item 3) 2026-07-07 22:29:51 +02:00
David F Glidden f802f905e4 session 2026-07-06: MEMORY.md two-file compaction (213→17KB) + self-bounding wiring (/wrap-up §3 demote-on-promote, /wake-up §2.a load-gate); skill-harvest closures; Olson graduation-state note 2026-07-06 12:43:39 +02:00
David F Glidden 9ca673fe50 🔧 Auto-commit from sysupdate on 2026-07-05 22:41 2026-07-05 22:41:29 +02:00
David F Glidden f4504113b3 skills: /spec-code-audit — built 2026-06-07 (steward-authorized harvest from the ARC bidirectional audit run) 2026-06-07 11:03:19 +02:00
David F Glidden 161fad7ae2 session 2026-06-05 evening: housekeeping wrap — AI-posture ruling memory, MemPalace forensics + workaround, harvest register ruled, verification ladder, Symmetria flags, register wiring applied 2026-06-05 22:03:53 +02:00
David F GliddenandClaude Opus 4.8 8cca9de024 session 2026-06-05: REVIEWED-28/29 filed + wrap/wake dotfiles-push patches (§6.5/§2.c) + session memories 06-04/05
First live run of wrap-up §6.5: governance state and session memory
now push at session boundaries, not sysupdate cadence. REVIEWED-28
(PENDING-25 translated renderings, closed) + REVIEWED-29 (SEO crawl
infrastructure, jurist-relay) steward-filed; skill patches steward-
authorized this session; harvest register records the lineage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 18:36:13 +02:00
David F Glidden bc53c94742 🔧 Auto-commit from sysupdate on 2026-06-03 21:09 2026-06-03 21:09:27 +02:00
David F Glidden fffcf173c1 🔧 Auto-commit from sysupdate on 2026-05-29 09:43 2026-05-29 09:43:53 +02:00
David F Glidden f83aae27c5 🔧 Auto-commit from sysupdate on 2026-05-19 21:49 2026-05-19 21:49:14 +02:00
David F GliddenandClaude Opus 4.7 7a71c7a07c wake-up/wrap-up: codify MemPalace 5-step protocol
MemPalace has always had a full memory protocol embedded in its
status response, but the skills were treating it as a library
catalog — one search on wake, nothing on wrap. Inspection revealed
the gap: the KG was empty (0 entities, 0 triples ever), and the
diary had exactly one entry, from 2026-04-09. Storage without
protocol is not memory; it is unindexed potential.

The protocol, as MemPalace itself states it:
  1. ON WAKE-UP: mempalace_status (loads protocol + AAAK spec)
  2. BEFORE RESPONDING: kg_query or search first; never guess
  3. IF UNSURE: "let me check" and query — wrong is worse than slow
  4. AFTER EACH SESSION: diary_write in AAAK format
  5. WHEN FACTS CHANGE: kg_invalidate old, kg_add new

wake-up changes:
- Step b.0: mempalace_status first (loads protocol, not just data)
- Step b.1: diary_read for claude-code agent (last 3 entries) —
  the previous self's voice
- Step b.2: kg_query on claude-code (drift patterns to hold today)
  and on pulling-thread subjects (authoritative current state)
- Step b.3: semantic searches as before
- Constraints: MemPalace is primary memory; when it disagrees with
  a memory file, trust MemPalace

wrap-up changes:
- Step 4 split into 4.a (drawer — semantic full content) and
  4.b (diary_write — AAAK compressed agent voice). Both surfaces;
  different future queries.
- New step 5: kg_invalidate facts that changed this session; kg_add
  new drift patterns, decisions, entities.
- Output template surfaces diary + KG update counts, not just drawer.

The drift-pattern handling replaces the proposed patterns-i-drift-
toward.md file idea. KG is the better home: queryable, temporal,
invalidatable. When a return is a repeat, kg_add it; wake-up's
kg_query surfaces it next session.

Verified by usage on today's session: diary entry filed (AAAK),
3 KG facts added (drift-pattern register-import-without-checking,
ARC versioning-regime ADR-005, after-the-reply-sequence staged).
This is the first real exercise of the protocol.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 14:19:09 +02:00
David F GliddenandClaude Opus 4.7 119285cf43 claude: back up custom skills, memory, and settings with symlink pattern
The ~/.claude/ directory was previously local-only — a machine wipe
would have lost the accumulated memory, custom skills, and settings.
This commit moves the durable parts into dotfiles with the same
symlink-to-home pattern used for CLAUDE.md, PENDING.md, REVIEWED.md,
and L2-BOOTSTRAP.md.

Preserved (symlinked from ~/.claude/* into here):
  skills/audit/              — thinking-folder drift scanner
  skills/symmetria/          — practice-of-return discipline
  skills/vault-update-people/ — Obsidian People-file maintainer
  skills/wake-up/            — session restoration
  skills/wrap-up/            — session state capture
  memory/                    — 55+ memory files (MEMORY.md, sessions,
                               ledgers, project state, feedback, etc.)
  settings/settings.json     — user preferences (hooks, flags, no secrets)

Deliberately NOT backed up:
  settings.local.json   — contains operational secrets (HF_TOKEN,
                           SSH password in expect scripts); by naming
                           convention, *.local.* is not synced.
                           Needs separate review and probable rotation.
  sessions/, history.jsonl, caches, telemetry — ephemeral
  plugins/, marketplace skills and agents — reinstallable

The working copies at ~/.claude/skills/* and
~/.claude/projects/-Users-davidglidden/memory are symlinks into this
directory, so every write flows here automatically. install.sh
recreates the symlinks on a fresh machine.

FOLLOW-ON (flagged, not in this commit):
  settings.local.json contains a HuggingFace token and an SSH password
  as plaintext strings inside allowed Bash command patterns. These
  should be rotated and moved to secure storage (keychain / pass /
  env file outside the settings file).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 13:51:04 +02:00