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:
@@ -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