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)
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
---
|
||||
name: wake-up
|
||||
description: Restore full session context and continuity from MemPalace, memory files, governance state, and git. Clearing context should feel like waking up, not amnesia — wake into the work, not be informed about it. Inherits the pulling thread + open question from the previous /wrap-up; surfaces them first; auto-invokes Symmetria for non-trivial sessions.
|
||||
description: Restore full session context and continuity from the memory files, governance state, and git. Clearing context should feel like waking up, not amnesia — wake into the work, not be informed about it. Inherits the pulling thread + open question from the previous /wrap-up; surfaces them first; auto-invokes Symmetria for non-trivial sessions.
|
||||
proactive: session-start
|
||||
---
|
||||
|
||||
<!-- Provenance: 2026-05-18 S-cluster thread-gate + b.4 (REVIEWED-25/26); 2026-05-26 chaîne-d'union clasp + b.0.5 lineage-glance; 2026-05-27 skill-harvest glance, §2.a + §3 (PENDING-23); 2026-06-05 §2.c dotfiles push-check (steward-authorized; paired with wrap-up §6.5 commit+push); 2026-07-06 §2.a two-file split + load-integrity gate (MEMORY.md live / MEMORY-reference.md history; steward-authorized). Improvements harvested per /wrap-up §1.6. -->
|
||||
<!-- Provenance: 2026-05-18 S-cluster thread-gate + b.4 (REVIEWED-25/26); 2026-05-26 chaîne-d'union clasp + b.0.5 lineage-glance; 2026-05-27 skill-harvest glance, §2.a + §3 (PENDING-23); 2026-06-05 §2.c dotfiles push-check (steward-authorized; paired with wrap-up §6.5 commit+push); 2026-07-06 §2.a two-file split + load-integrity gate (MEMORY.md live / MEMORY-reference.md history; steward-authorized); 2026-07-07 §2.b/§2.e/§5 rewired to the files layer + knowledge-graph.jsonl (palace-memory MemPalace wound down — search+KG confirmatory-not-load-bearing per the 46-session audit; steward-directed; typography palace KEPT). Improvements harvested per /wrap-up §1.6. -->
|
||||
|
||||
# Session Wake-Up
|
||||
|
||||
@@ -63,32 +63,17 @@ Run these in parallel to minimize latency:
|
||||
- Read `skill-harvest-register.md` directly — the canonical surface for open skill proposals (wrap §1.6 appends there); surface any awaiting steward authorization <!-- 2026-06-05: register wiring, authorized 2026-05-29, applied with wrap-up §1.6 counterpart -->
|
||||
- Read `~/.claude/projects/-Users-davidglidden/memory/session-ledger-[previous-date].md` if it exists — **specifically read the "Returns" and "Confidence to recalibrate" sections** for mood signal
|
||||
|
||||
**b. MemPalace — the memory protocol, not a search**
|
||||
**b. The files layer — primary memory** `[palace-memory MemPalace wound down 2026-07-07]`
|
||||
|
||||
MemPalace is primary memory, not a library catalog. Follow its 5-step protocol (the system itself reminds you of this when you call `mempalace_status` — that's intentional; re-reading the protocol every wake keeps it operative).
|
||||
The durable memory *is* the Markdown + JSONL files (git-tracked, dual-remote). There is no separate index to consult and none to keep in sync — reconstruct directly from the files, and when in doubt verify against the substrate (code, git, the document itself).
|
||||
|
||||
**b.0. Status + protocol reload.** Call `mempalace_status` first. This returns palace overview, 5-step protocol, AAAK spec. The protocol is the reason MemPalace exists; never skip this step.
|
||||
**b.1. Thread trajectory — the chain across sessions.** Read the last ~3 session memory files (`session-*.md`, newest by mtime) — their *Future*/pulling-thread and *Present*/mood sections are the cross-session arc. §2.a's Active Session pointer names the newest; these give the trajectory (where the work has been heading), replacing the old diary + thread-lineage glance.
|
||||
|
||||
**b.0.5. Thread-lineage glance (the chain from the past).** Run `mempalace --palace ~/.mempalace/palace-memory wake-up --wing claude-sessions` — one cheap, deterministic CLI call returning the recent **pulling threads in reverse-chronological order** (the `handoffs` room, newest first). This is the *cumulative transition*: the arc of links formed before this one, not just the last. Read it as trajectory — where has the work been heading *across* sessions? (Costs a few seconds to load the embedding model on collection-open; no embedding compute. Requires the recency-ordering fix in `layers.py`; if the output looks oldest-first, that fix has been lost and should be restored.)
|
||||
**b.2. Drift patterns — what I've returned from.** `grep 'drift-pattern' ~/.claude/projects/-Users-davidglidden/memory/knowledge-graph.jsonl` — the file-native KG (a JSONL export of 329 triples; ~84 are `claude-code` drift-patterns). Surface the one or two worth holding today. This replaces the old `kg_query claude-code` ritual; treat the JSONL as a point-in-time export that wrap §5 keeps current by appending.
|
||||
|
||||
**b.1. Diary — what the previous self recorded.** `mempalace_diary_read` with `agent_name: "claude-code"`, `last_n: 3`. Diary entries are in AAAK format (compressed, entity-coded, emotion-marked); read them as the previous session's internal voice, not metadata.
|
||||
**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.2. Knowledge graph — active facts and drift patterns.** `mempalace_kg_query` for entity `"claude-code"` to retrieve drift patterns (things I've returned from in past sessions, worth holding today). Also query the pulling-thread subjects (e.g., `"after-the-reply-sequence"`, `"ARC-essays"`) for their authoritative current state — not the point-in-time version frozen in memory files.
|
||||
|
||||
**b.3. Semantic searches.** Multiple `mempalace_search` queries to reconstruct working context. The thread-lineage glance (b.0.5) already surfaced the recent threads, truncated — use search for *depth*, not to re-fetch them:
|
||||
- Depth on the current thread — only where the glance's truncation dropped something load-bearing; don't re-fetch what b.0.5 already showed
|
||||
- Active workstream — based on what the session memory identifies as active
|
||||
- Recent thinking — `"recent decisions rationale"` in wing `capablemind-thinking`
|
||||
- Steward's recent notes — `"daily log"` in wing `obsidian-vault`
|
||||
|
||||
Use results to reconstruct *why* we were doing what we were doing, in service of the pulling thread.
|
||||
|
||||
**b.4. Cross-wing and temporal traversal — prescribed when relevant.** Search is one shape of recall; tunnels and timeline are others. Reach for them when the thread asks:
|
||||
|
||||
- **`mempalace_find_tunnels`** — when the pulling thread crosses project boundaries (ARC → chamber-library; Studium Engine → CapableMind; chamber → BMF). Find the hallways connecting wings to surface cross-wing context the search alone misses.
|
||||
- **`mempalace_kg_timeline`** — when reconstruction requires knowing *when* a fact changed, not only its current value. Useful when the steward references a prior state, asks "since when," or when a deferred decision's expiry condition needs checking.
|
||||
|
||||
Skip if the thread is single-project and the timeline is not relevant. The point is that these tools are part of standard recall, not exotic options to remember.
|
||||
*(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.)*
|
||||
|
||||
**c. Governance state**
|
||||
- Read `~/PENDING.md` — extract items with status PENDING
|
||||
@@ -104,17 +89,7 @@ Run `git log --oneline -5` in each active repo (skip silently if not a git repo)
|
||||
|
||||
If any commits landed since the previous /wrap-up that the steward did not author, name them. The world moved while we slept.
|
||||
|
||||
**e. MemPalace upgrade check**
|
||||
|
||||
The system that holds memory is itself evolving. The steward was on 3.3.3 with their exact bugs already fixed in 3.3.4 for days without knowing — that pattern is what this check exists to prevent. Skip silently if `~/_Dev/mempalace` doesn't exist.
|
||||
|
||||
1. `git -C ~/_Dev/mempalace fetch origin --quiet && git -C ~/_Dev/mempalace log --oneline HEAD..origin/main | head -10`. If empty, you're current.
|
||||
2. If commits ahead, read `git -C ~/_Dev/mempalace show origin/main:CHANGELOG.md | head -150`. Look specifically for:
|
||||
- **Bug fixes whose symptoms match what the steward has experienced** (storage crashes, search errors, MCP failures, hook problems) — a strong update signal
|
||||
- **Migration notes or breaking changes** — a strong *hold-and-plan* signal; never auto-update through a major version bump
|
||||
- **New capabilities** the steward could benefit from
|
||||
3. Form an honest opinion. Don't recommend updating just because a newer version exists. Don't recommend holding just because the current version "works." Weigh: (a) does any active pain map to a recent fix, (b) point/minor/major risk class, (c) is the steward in a stable state where they could afford a recovery if the upgrade breaks something.
|
||||
4. Surface in the briefing: *"MemPalace is N commits behind on origin/main. The recent activity is X. My honest read: [update | hold | hold-with-condition]."* Don't decide for the steward; give them what they need to decide. Never auto-update — that's an explicit steward authorization.
|
||||
**e. MemPalace upgrade check — RETIRED 2026-07-07.** palace-memory is being wound down; there is no MemPalace to keep current, so no upgrade check runs. (The typography palace, a separate instance queried via CLI for ARC type work, is unaffected and deliberately not upgrade-checked from the wake.)
|
||||
|
||||
### 3. Synthesize the briefing
|
||||
|
||||
@@ -166,9 +141,8 @@ Ready when you are.
|
||||
|
||||
## Important constraints
|
||||
|
||||
- **MemPalace is primary memory, not fallback.** Follow its 5-step protocol (wake `status`, pre-response `kg_query`/`search`, "let me check" if unsure, `diary_write` at session end, `kg_invalidate` + `kg_add` when facts change). 127,000+ drawers across thinking docs, transcripts, and vault — but storage only becomes memory when the protocol is exercised.
|
||||
- **Use the full toolset, not just search.** Beyond the 5-step protocol, reach for `mempalace_traverse` (graph exploration), `mempalace_find_tunnels` (cross-wing concepts), `mempalace_kg_timeline` (when-facts-changed for an entity), `mempalace_get_taxonomy` (concept structure), and `mempalace_memories_filed_away` (what's stored where) when they would clarify state. Tools exist to be used; reach for the right one for the question.
|
||||
- **Memory files are secondary.** They capture what was surprising or non-obvious. MemPalace has the authoritative record. When memory files and MemPalace disagree, trust MemPalace (it's maintained across sessions; files are point-in-time snapshots).
|
||||
- **The files layer is primary memory.** The git-tracked Markdown (`MEMORY.md`, `session-*.md`, `REVIEWED`/`PENDING`, the feedback/project memories) + `knowledge-graph.jsonl` are the durable record — reconstruct from them, and when in doubt verify against the substrate (code, git, the document itself). Storage becomes memory only when read *against the pulling thread*, not transcribed.
|
||||
- **No separate memory index to consult or keep current.** palace-memory MemPalace was wound down 2026-07-07 (its search + KG were confirmatory, not load-bearing — a 46-session audit found genuine reach ≈0.07/session, graph features 0× used). Do not call `mempalace_*` tools for palace-memory. (The typography palace is a separate instance, still queried via CLI for ARC type work only.)
|
||||
- **The pulling thread comes before facts.** Even if the briefing's other content is rich, lead with the thread. If the thread can't be found in the previous /wrap-up, say so honestly — this is itself a signal that the previous wrap-up was incomplete.
|
||||
- **The literal question is read verbatim.** Don't paraphrase, don't try to answer it, don't decide it's stale without evidence.
|
||||
- **Don't read CLAUDE.md** — loaded automatically by the system.
|
||||
|
||||
@@ -3,7 +3,7 @@ name: wrap-up
|
||||
description: Capture session state for future restoration. The quality of the next wake-up depends entirely on the quality of this wrap-up. Captures not just what we did but what is still pulling, what is the live concern, and what question we want to find still open when we return.
|
||||
---
|
||||
|
||||
<!-- Provenance: 2026-05-18 S-cluster §8 fields (REVIEWED-24); 2026-05-26 chaîne-d'union clasp + actionable-resumption-point; 2026-05-27 §1.6 skill-harvest step (PENDING-23); 2026-06-02 §4.0 MemPalace liveness-check before write (steward-authorized; #1495 cold-start drop resilience); 2026-06-05 §6.5 dotfiles session-state commit+push (steward-authorized; paired with wake-up §2.c check); 2026-07-05 §1.6 CLAUDE.md-freshness check (steward-authorized); 2026-07-06 §3 two-file self-bounding index (MEMORY.md live / MEMORY-reference.md history; demote-on-promote; steward-authorized). Improvements to this skill are themselves harvested per §1.6 — propose, authorize, record here. -->
|
||||
<!-- Provenance: 2026-05-18 S-cluster §8 fields (REVIEWED-24); 2026-05-26 chaîne-d'union clasp + actionable-resumption-point; 2026-05-27 §1.6 skill-harvest step (PENDING-23); 2026-06-02 §4.0 MemPalace liveness-check before write (steward-authorized; #1495 cold-start drop resilience); 2026-06-05 §6.5 dotfiles session-state commit+push (steward-authorized; paired with wake-up §2.c check); 2026-07-05 §1.6 CLAUDE.md-freshness check (steward-authorized); 2026-07-06 §3 two-file self-bounding index (MEMORY.md live / MEMORY-reference.md history; demote-on-promote; steward-authorized); 2026-07-07 §4/§5/§8 rewired off MemPalace to the files layer + knowledge-graph.jsonl (palace-memory wound down — search+KG not load-bearing per the 46-session audit; steward-directed; typography palace KEPT). Improvements to this skill are themselves harvested per §1.6 — propose, authorize, record here. -->
|
||||
|
||||
# Session Wrap-Up
|
||||
|
||||
@@ -111,47 +111,24 @@ The description field should include the pulling thread, not just what happened.
|
||||
- Update any other live entries that changed (Standing preferences, tracker status one-liners). Stable reference (steward profile, project inventories, legacy pending-work) lives in `MEMORY-reference.md` — update it there, not here.
|
||||
- **Budget check before finishing:** `wc -c MEMORY.md`. If it is near/over the ceiling, the fix is *relocation, not deletion* — move the least-wake-critical section to `MEMORY-reference.md` (back up first). A separate pruning pass may trim genuinely-dead content in the reference file; that is not this step.
|
||||
|
||||
### 4. File to MemPalace — two surfaces, different purposes
|
||||
### 4. The session file is the record — no MemPalace write
|
||||
|
||||
MemPalace has two complementary write surfaces: drawers (semantic, full content) and diary (AAAK, chronological agent voice). Use both — they serve different future queries.
|
||||
palace-memory MemPalace was wound down 2026-07-07 (its search + KG were confirmatory, not load-bearing — a 46-session audit). The **session memory file (§2) is the durable record** now: it already carries the full session + pulling thread + pause statement + literal question (the former *drawer*), and the three-tense Past/Present/Future voice (the former *diary*). Nothing is filed to MemPalace.
|
||||
|
||||
**4.0. Liveness check before writing — MemPalace can drop silently.** Before any drawer/diary write, issue ONE *lightweight* MCP call as a liveness ping — `mempalace_hook_settings` (~25ms), **not** `mempalace_status` (which can itself be the slow, timeout-tripping call). If it errors, MemPalace has dropped (a known failure: cold-embedder-load `-32000` desync, upstream #1495; plus other open MCP failure modes). **Surface it immediately and loudly** — *"⚠ MemPalace MCP is down — the memory-file + ledger (steps 2–3) carry this wrap; restart it (quit, `claude --continue`, `/mcp`) then re-run §4–5 to file drawer/diary/KG."* Do **not** silently skip the filing: the file-based deposit (steps 2–3) is the durable fallback and must be complete regardless, so a dead MCP never costs the wrap.
|
||||
- Make the session file's `description:` a one-line compressed headline that **includes the pulling thread** (the AAAK line's job, in plain prose — findable later by *what was pulling*, not just *what happened*).
|
||||
- The Symmetria ledger (§1.5) is the session's return-by-return voice; it is already file-native and git-tracked.
|
||||
|
||||
**4.a. Drawer — the full session record (semantic search surface).**
|
||||
*(The typography palace — a separate MemPalace instance for ARC type work — is untouched by the wind-down.)*
|
||||
|
||||
`mempalace_add_drawer`:
|
||||
- **wing:** `claude-sessions`
|
||||
- **room:** `handoffs`
|
||||
- **content:** The full session record from step 1, including the pulling thread + pause statement + literal question. These semantic hooks make the session findable later by *what was pulling*, not just *what happened*.
|
||||
- **tags:** session date, key topics, the pulling thread keyword
|
||||
### 5. Append changed facts + drift patterns to `knowledge-graph.jsonl`
|
||||
|
||||
**4.b. Diary entry — AAAK-compressed session voice.**
|
||||
The file-native KG (`~/.claude/projects/-Users-davidglidden/memory/knowledge-graph.jsonl`) is what wake §b.2 greps for drift-patterns and what carries structured facts across sessions. Keep it current by **appending** one JSON object per line — schema `{"subject","predicate","object","valid_from","valid_to","confidence","source_file","extracted_at"}`:
|
||||
|
||||
`mempalace_diary_write`:
|
||||
- **agent_name:** `"claude-code"` (stable across sessions and model versions)
|
||||
- **topic:** `"session-handoff"` for regular wrap-ups; other topics allowed for specialized entries
|
||||
- **entry:** AAAK format — pipe-separated fields, entity codes, emotion markers, date in ISO. Call `mempalace_get_aaak_spec` if the dialect isn't fresh in context.
|
||||
- **Drift patterns from Symmetria returns.** If today's ledger has a return that repeats a pattern from a previous ledger, append `{"subject":"claude-code","predicate":"drift-pattern","object":"<short-name>", …}`. Wake §b.2 greps these.
|
||||
- **A fact that changed.** Append the new triple; to retire a superseded fact, append a matching triple with `valid_to` set to today (a soft-invalidate — the JSONL is append-only, like the logchain, so history stays legible rather than mutated in place).
|
||||
- **A new recurring entity** (person, project, thread) worth a foothold — append the relationship.
|
||||
|
||||
Example shape:
|
||||
```
|
||||
SESSION:YYYY-MM-DD|headline.event|key.work.threads|DAV.action(context)|*mood-marker*|returns(N):short-names|OPEN:what-still-pulls|NEXT:immediate-thread|★★★(importance)
|
||||
```
|
||||
|
||||
Diary is where the *previous self* speaks to the next self. Keep it tight; this is the voice, not the record.
|
||||
|
||||
### 5. Update knowledge graph — facts that changed, patterns observed, entities introduced
|
||||
|
||||
If any facts changed during the session, use `mempalace_kg_invalidate` on the old fact and `mempalace_kg_add` for the new. Examples:
|
||||
- A project status changed (`kg_invalidate` prior status, `kg_add` new one)
|
||||
- A person's circumstance changed (Kai was unborn → Kai is born)
|
||||
- An open question got answered (`kg_invalidate` the open status)
|
||||
|
||||
If the session produced a new observation worth retrieving later, `mempalace_kg_add` it:
|
||||
- **Drift patterns from Symmetria returns.** If today's ledger has returns that repeat a pattern from a previous ledger, `kg_add(subject: "claude-code", predicate: "drift-pattern", object: short-name)`. Wake-up's `kg_query` on entity `"claude-code"` surfaces these.
|
||||
- **New decisions or artifacts.** New ADR, new canonical document, new staged work — `kg_add` the relationship so future sessions can `kg_query` the subject and find the current state.
|
||||
- **New entities that will recur.** A new person, project, or thread that will be referenced in later sessions deserves a KG foothold.
|
||||
|
||||
This step is what makes MemPalace a *memory* rather than storage. Skipping it means the next session has to re-derive everything from files.
|
||||
Stamp `valid_from`/`extracted_at` from `date` (the wrap runs interactively). Most of the session is already captured in the session file + feedback memories; append only what a future wake should be able to *grep* — don't transcribe the whole session here. The JSONL rides to the remote via §6.5's `claude/` add.
|
||||
|
||||
### 6. Check for loose ends
|
||||
|
||||
@@ -213,9 +190,7 @@ Produce a brief summary for the steward:
|
||||
**Skill harvest:** [skill create / patch / retire proposals surfaced this session (§1.6), each as a proposal for steward authorization — or "none". Never an autonomous skill edit.]
|
||||
|
||||
**Session captured:** [memory file path]
|
||||
**MemPalace drawer filed:** [yes/no, wing/room]
|
||||
**MemPalace diary written:** [yes/no, AAAK entry summary in one line]
|
||||
**KG updates:** [count of kg_add + kg_invalidate calls, or "none"]
|
||||
**KG appended:** [count of lines appended to knowledge-graph.jsonl, or "none"]
|
||||
**Uncommitted work:** [list or "none"]
|
||||
**Unpushed commits:** [list or "none"]
|
||||
**Dotfiles pushed:** [commit hash + pushed / nothing to commit / FAILED — reason, surfaced]
|
||||
|
||||
Reference in New Issue
Block a user