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:
David F Glidden
2026-07-07 22:29:51 +02:00
parent aee9cd5d9e
commit 2e362b3801
10 changed files with 139 additions and 79 deletions
+3
View File
@@ -20,6 +20,9 @@ Split out of [MEMORY.md](MEMORY.md) on 2026-07-06 to keep the wake-loaded index
# Archived sessions + stable reference layer (relocated verbatim from MEMORY.md, 2026-07-06)
## Archived (2026-07-07 evening — chamber A4+B(iii) & A1 landed + wake/wrap rewired off MemPalace; demoted on promote)
- [Session 2026-07-07 — MemPalace wind-down decided (evidenced); KG secured; report owed](session-2026-07-07-mempalace-winddown-decided.md) — Wake opened on the REVIEWED-49 chamber folding but **PIVOTED entirely to MemPalace**. Diagnosed the "upgrade" = a custom **bge-m3 fork ~300 commits behind**, not a standard install; the morning "self-healed" drift = **108 chronic quarantines** (data intact: 88,159 rows). from-sqlite re-embed measured **~21 h**; dropping bge-m3 → a **quasi-standard install**. Steward **at limit** with MemPalace. **Independent 46-transcript audit: search+KG NOT load-bearing** (confirmatory/redundant; value migrated to files; graph features 0× used; write:read 7:1; conf 0.93/0.82). **DECISION (steward, evidenced): wind down `palace-memory` MemPalace; EXECUTE FRESH.** **KG exported+secured** → `knowledge-graph.jsonl` (329 triples) + `-entities.jsonl` (437). **BMF lessons report OWED** (reconnaissance framing; outline in `project-mempalace-winddown.md`). **PULLING THREAD next session: CHAMBER LIBRARY** (steward's choice) — resume the REVIEWED-49 folding (**A4+B(iii)** → A1 registry). Decommission + report = a separate 'tomorrow'; typography palace KEPT untouched.
## Archived (2026-07-07 — MemPalace wind-down decided; demoted on promote)
- [Session 2026-07-06 evening#2 — A2 filed (PENDING-50); OCR-fidelity rug-lift](session-2026-07-06-evening2-a2-filed-ocr-fidelity-ruglift.md) — **A2 (REVIEWED-49) SETTLED + FILED as PENDING-50** for the jurist editor-gate. Read Olson *The Power to Name* ch.6 against the **scan image**; settled **(b)** — Olson does NOT license a self-standing personal scheme (Principle 1: 'make it permeable … rather than … constructing a new limit'), so (a) would mis-cite her; Berman=narrow claim, Olson=eccentric/perspectival move as she makes it, self-standing scheme=Chamber's own synthesis. Drafted the preamble ('On the partiality of the arrangement'); all quotes scan-verified. Closed **by-the-book** — filed PENDING-50, did NOT edit the spec in place (§Governance & Amendment forbids it; even FIX needs jurist editor-gate). **Then the steward lifted the rug:** OCR noise IS in the graduated Olson .md (grep-verified); traced to gate code (`verify_conversion.py`: all 5 checks are faithfulness/shape, NONE compares to scan); owned that 'graduated' oversold a converted-tier V-SCAN text (honest state, not legible; §V already mandates a conversion-record → process-not-run + labeling gap, NOT rot). **The confirmation pass (read scan-image vs OCR) is NOT in the pipeline** — stale 'no-validated-OCR-verification-path' assumption; verifier must FLAG-not-correct; olmOCR=local localizer, executor-vision=adjudication-assist, human=apex; local-models-balance-another = independence>capability, bounded-checks-local / high-judgment-frontier, training-a-judge=trains-it-to-agree. **A2 LANDED as spec v2.0.1** (REVIEWED-50; editor-gate PASSED; §2 bridging clause added distinguishing arrangement-honesty from §I's fidelity sense; v2.0.0 archived immutable). Committed **`34c39f1`** (Olson graduation + A2, pushed github + skemantix); dotfiles + CapableMind-AI also pushed; REVIEWED-50 short-draft on `~/Desktop` for the steward to place in `~/REVIEWED.md`. **PULLING THREAD: finish the REVIEWED-49 folding** — next = **A4+B(iii)** (scope-warrant FIX; scout finding: the collections-as-data / Santa-Barbara-P4 mis-citation is NOT in the live spec, only the research briefs → preventive/recording, computational-tractability wording only, scope-warrant = A2's §I preamble), then **A1** Agent/Nomen registry (read `retrieve.py` hot-path first). **Steward-decided: the verification-architecture question is the PRIORITY the moment the folding completes** → a `[PROPOSAL]` + model-plurality note (touches chamber + engine).
+2 -2
View File
@@ -53,10 +53,10 @@ permalink: claude-memory/memory
- [Be (laundromat)](project-be-laundromat.md) — canonical workstream tracker established 2026-06-08 (Seb-relay of locked decisions). Be = Skemantix startup (Seb+David) funding CapableMind's funding-ladder; **bridge, not venture**. Decisions LOCKED: entity/exit (CapableMind decoupled, grant-funded), pricing (Living $12.99/mo · Archive $69.99/yr · Memorial $49.99/yr · Renovate ~$199 · $8.99 floor), CF Self-Serve Agency + versioned-template-package infra. **a11y gate MERGED (Pat 100/100/100).** Pre-revenue: the WTP gate = renovate Pat → charge her. **Discipline: stop adding spec until the gate clears → nothing for executor on be until then.** Repo @ `f43a0fd`.
## Active Session
- [Session 2026-07-07 — MemPalace wind-down decided (evidenced); KG secured; report owed](session-2026-07-07-mempalace-winddown-decided.md) — Wake opened on the REVIEWED-49 chamber folding but **PIVOTED entirely to MemPalace**. Diagnosed the "upgrade" = a custom **bge-m3 fork ~300 commits behind**, not a standard install; the morning "self-healed" drift = **108 chronic quarantines** (data intact: 88,159 rows). from-sqlite re-embed measured **~21 h**; dropping bge-m3 → a **quasi-standard install**. Steward **at limit** with MemPalace. **Independent 46-transcript audit: search+KG NOT load-bearing** (confirmatory/redundant; value migrated to files; graph features 0× used; write:read 7:1; conf 0.93/0.82). **DECISION (steward, evidenced): wind down `palace-memory` MemPalace; EXECUTE FRESH.** **KG exported+secured** → `knowledge-graph.jsonl` (329 triples) + `-entities.jsonl` (437). **BMF lessons report OWED** (reconnaissance framing; outline in `project-mempalace-winddown.md`). **PULLING THREAD next session: CHAMBER LIBRARY** (steward's choice) — resume the REVIEWED-49 folding (**A4+B(iii)** → A1 registry). Decommission + report = a separate 'tomorrow'; typography palace KEPT untouched.
- [Session 2026-07-07 evening — chamber A4+B(iii) & A1 landed; wake/wrap rewired off MemPalace](session-2026-07-07-evening-chamber-a4-a1-skill-rewire.md) — Post-/clear evening session; thread = **chamber-library**, held throughout. **Shipped 2 REVIEWED-49 items end-to-end, loop intact at every gate:** (1) **A4+B(iii)** → spec **v2.0.2** (the 'corpus as data — and the warrant it does not carry' §I subsection; diagnosis: the term had ZERO hits in the live spec → A4 preventive, collapsed with B(iii); **primary-source 'verify now' caught a Principle-4 imprecision on our own draft**; jurist editor-gate PASSED, Q3 confirmed by §IX read; steward-ratified; chamber `7d1d8d3`). (2) **A1 Agent/Nomen registry v1** (`_curation/agent-registry.yaml`; **134 agents / 143 strings / 222 of 1285 files — author coverage sparse ~18%**; steward's "how do serious libraries do this?" → adopted **library authority control**, IFLA-LRM/RDA 'attributed name'; generative `scripts/build_agent_registry.py`; Buddha=attributed; 5 compounds + 4 frontmatter defects flagged; chamber `703efcf`). Both **pushed to Gitea**. Then **rewired `/wake-up` + `/wrap-up` off palace-memory MemPalace → the files layer** (wind-down STAGED PLAN item 3; drift-patterns now grep `knowledge-graph.jsonl`; typography palace KEPT). **PULLING THREAD: the chamber REVIEWED-49 tail continues** (A3 PROPOSAL / B(i),(ii) / C reconciliation + A1 follow-ons) — beside it, the parked **MemPalace decommission + owed BMF lessons report** (the slot the steward is emotionally invested in — distil the loss into CapableMind-L1 design intent). REVIEWED-51 draft on Desktop awaiting placement.
## Historical reference → MEMORY-reference.md
Older archived-session pointers and the stable reference layer (steward profile · project-state detail · L1/L2/Chamber inventories · legacy pending-work · reference-file list) live in [MEMORY-reference.md](MEMORY-reference.md) — consult on demand; not loaded at wake. Recent cross-session trajectory comes from the Active Session entry above + the MemPalace `handoffs` glance (wake §2.b.0.5).
Older archived-session pointers and the stable reference layer (steward profile · project-state detail · L1/L2/Chamber inventories · legacy pending-work · reference-file list) live in [MEMORY-reference.md](MEMORY-reference.md) — consult on demand; not loaded at wake. Recent cross-session trajectory comes from the Active Session entry above + the recent `session-*.md` files (wake §2.b.1; the MemPalace `handoffs` glance was retired 2026-07-07 with the wind-down).
## Index discipline (self-bounding — keep this file lean)
Wake-loaded live index; hard budget well under the harness load ceiling. Keep to: Standing preferences · Canonical Trackers *as one-line pointers* (chronological detail lives in the linked tracker files, **not** here) · Active Session · these pointers. Rotation + budget-breach handling are wired into `/wrap-up` (demote prior Active Session on promote — never leave two) and `/wake-up` (truncated/partial load = flag loudly, trim before proceeding). Back up before restructuring. History: 285→157KB (2026-06-08, didn't hold); 213→~16KB (2026-07-06 split + ARC-slim + self-bounding wiring).
+4
View File
@@ -327,3 +327,7 @@
{"subject":"pending-50","predicate":"status","object":"filed_—_awaiting_jurist_editor-gate_(a2_preamble,_reviewed-49)","valid_from":"2026-07-06","valid_to":"2026-07-07","confidence":1.0,"source_file":null,"extracted_at":"2026-07-06 21:30:05"}
{"subject":"chamber-library-specification","predicate":"version","object":"v2.0.1_—_adds_§i_partiality-of-the-arrangement_preamble_(2026-07-07)","valid_from":"2026-07-07","valid_to":null,"confidence":1.0,"source_file":null,"extracted_at":"2026-07-07 09:52:43"}
{"subject":"pending-50","predicate":"status","object":"ruled+landed_(reviewed-50);_spec_v2.0.1;_committed_34c39f1","valid_from":"2026-07-07","valid_to":null,"confidence":1.0,"source_file":null,"extracted_at":"2026-07-07 09:52:40"}
{"subject": "chamber-library-spec", "predicate": "version", "object": "v2.0.2 — added §I 'corpus as data / scope-warrant' subsection (A4+B(iii); REVIEWED-51)", "valid_from": "2026-07-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-07-evening-chamber-a4-a1-skill-rewire.md", "extracted_at": "2026-07-07 22:28:46"}
{"subject": "chamber-library", "predicate": "has", "object": "Agent/Nomen registry v1 (_curation/agent-registry.yaml; 134 agents; A1/REVIEWED-49)", "valid_from": "2026-07-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-07-evening-chamber-a4-a1-skill-rewire.md", "extracted_at": "2026-07-07 22:28:46"}
{"subject": "palace-memory-mempalace", "predicate": "status", "object": "winding down (steward 2026-07-07); wake+wrap skills rewired to files layer (STAGED PLAN item 3 done)", "valid_from": "2026-07-07", "valid_to": null, "confidence": 1.0, "source_file": "project-mempalace-winddown.md", "extracted_at": "2026-07-07 22:28:46"}
{"subject": "claude-code", "predicate": "drift-pattern", "object": "invent-vocabulary-when-a-discipline-exists (steward 'how do serious libraries do this?' -> adopt authority control, not a homegrown scheme)", "valid_from": "2026-07-07", "valid_to": null, "confidence": 1.0, "source_file": "session-2026-07-07-evening-chamber-a4-a1-skill-rewire.md", "extracted_at": "2026-07-07 22:28:46"}
+1 -1
View File
@@ -22,7 +22,7 @@ Independent audit of 46 sessions: MemPalace's **search + KG are NOT load-bearing
## STAGED PLAN (execute fresh)
1. **Stop feeding it** — disable the Stop/PreCompact hooks that fire `diary_write`/`add_drawer`/`kg_add` (cheap, reversible; `mempalace hooks` / settings).
2. **Drop the dependency** — remove the `mempalace` MCP server from the Claude Code config so it stops loading + quarantining drift every wake.
3. **Rewire skills to files** — `/wake-up` and `/wrap-up` currently query MemPalace heavily; point them at the Markdown layer (`MEMORY.md`, `session-*.md`, `REVIEWED/PENDING`) + `knowledge-graph.jsonl` instead. Wake reads the drift-patterns from the jsonl (replaces the `kg_query claude-code` ritual). Bounded skill edits; run the skill-harvest register for the proposals.
3. **Rewire skills to files** — **✓ DONE 2026-07-07** (steward-directed). `/wake-up` §2.b → files-layer reconstruction (recent `session-*.md` trajectory + `grep drift-pattern knowledge-graph.jsonl`), §2.e upgrade-check retired, §5 constraints inverted (files primary); `/wrap-up` §4 → the session file IS the record, §5 → append JSONL triples to `knowledge-graph.jsonl` (soft-invalidate via `valid_to`), §8 template updated. No live `mempalace_*` calls remain; typography palace KEPT; both skills carry provenance notes; recorded in the skill-harvest register.
4. **Cold-archive** the backed-up palace; delete the live churning one after verification.
## PRESERVE — do NOT touch
@@ -0,0 +1,59 @@
---
name: Session 2026-07-07 evening — chamber A4+B(iii) & A1 landed; wake/wrap skills rewired off MemPalace
description: "Post-/clear evening session. Shipped two REVIEWED-49 chamber items end-to-end (A4+B(iii) corpus-as-data §I subsection → spec v2.0.2; A1 Agent/Nomen registry v1, 134 agents) with the governance loop intact at every gate, then rewired /wake-up + /wrap-up off palace-memory MemPalace to the files layer (wind-down STAGED PLAN item 3). Pulling thread: the chamber REVIEWED-49 tail continues (A3/B(i,ii)/C + A1 follow-ons) — with the parked MemPalace decommission + owed BMF lessons report as the slot the steward is emotionally invested in (distilling the MemPalace loss into forward value for CapableMind's L1)."
metadata:
node_type: memory
type: project
originSessionId: 84084c59-994f-41d2-839e-d8a99fd7f19a
---
# Session 2026-07-07 (evening) — chamber A4+B(iii) & A1 landed; skills rewired off MemPalace
Opened by `/wake-up` → Symmetria init ~15 min after the day's earlier wrap (the MemPalace-winddown session). Thread confirmed = **chamber-library**, and it held the whole session. Three substantial pieces shipped; the governance loop was respected at every boundary.
## PAST — what we did + why
**A4 + B(iii) — the corpus-as-data §I subsection (spec v2.0.1 → v2.0.2, chamber `7d1d8d3`, pushed to Gitea).**
- **Diagnosis first:** grep of the live spec found `collections as data` had **zero hits** — the phrase + the refuted Principle-4 scope-citation lived only in the research briefs, never the constitution. So A4 was **preventive/recording** (nothing to redirect in place), B(iii) was the term's **first entry** → collapsed to ONE §I subsection ("The corpus as data — and the warrant it does not carry"), the A4 boundary written *into* B(iii)'s introduction (honours the RULING flag structurally).
- **Primary-source verification (steward-directed 'verify now'):** fetched the primary Santa Barbara Statement. **Principle 8 confirmed verbatim**; **Principle 4 CORRECTED** — it *does* concern designing for specific communities, but as *audience-fit of a data product*, not the *epistemic warrant for a bounded/personal curation*. The frontier brief's flat shorthand was imprecise; the draft now states the precise distinction. The A4-shaped citation error, caught on our own draft by reading the source.
- **Governance:** filed PENDING-51 (drafted-for-editor-gate, per the A2/REVIEWED-50 precedent — spec never edited in place). Jurist editor-gate PASSED 1/2/4/5 as drafted; Q3 (§IX cross-ref) gated on one fact → confirmed by §IX substrate read (Case A: coverage-ledger + honest-degradation are on §IX's own SETTLED side, silence-as-finding is the sole OPEN item, explicitly separated → citation stands, NO edit). Steward ratified → landed by patch supersession (v2.0.1 frozen byte-identical immutable; header note; CLAUDE.md pointer). REVIEWED-51 draft left on the steward's Desktop for placement. Bounded-diff verified.
**A1 — the Agent/Nomen registry v1 (chamber `703efcf`, pushed).**
- **Hot-path question answered from the code** (jurist-required, NOT from memory): read `studium-engine/engine/retrieve.py` + surveyed `corpus/manifest.yaml` → the retrieval hot path performs **ZERO agent/author accesses** (identity axes = source_id→work + voice; manifest has no author field). ⇒ registry indirection costs nothing; `agent_id`-required stays **deferred/emergent** via A3's registry-linkage metric, additive registry confirmed.
- **The steward's question re-shaped the design:** "how do serious/university libraries handle this [verified vs attributed authorship]?" → I researched rather than invented → **library authority control** (IFLA-LRM Agent/Nomen; RDA relationship designators incl. the **'attributed name'** designator, primary-verified; attest-with-basis = MARC 670; identifiers-as-anchor). Confirmed the "attest identity" fork with the field's vocabulary; Buddha = `person` + `attributed`, never asserted author.
- **Built** `scripts/build_agent_registry.py` (generative, re-runnable, explicit CURATION table) → `_curation/agent-registry.yaml`: **134 Agents** from 143 author-strings across 222/1285 files (**author coverage sparse ~18%**). Steward **confirmed all judgments** (11 merges, 11 attribution incl. Buddha/Confucius/Laozi + 3 borderlines, 5 compounds held, 4 frontmatter defects flagged). Tool logged in tool-evolution-log. **Byproduct audit** surfaced 2 systematic @50ch author truncations (Kafka, Arden) + 2 unparseable-frontmatter files → routed to the frontmatter sweep, not fixed here.
**Skill-rewiring — `/wake-up` + `/wrap-up` off MemPalace → files layer (wind-down STAGED PLAN item 3).**
- wake §2.b (MemPalace 5-step protocol) → files-layer reconstruction (recent `session-*.md` for thread trajectory; `grep drift-pattern knowledge-graph.jsonl` replaces the `kg_query claude-code` ritual; grep-the-files for depth); §2.e upgrade-check RETIRED; §5 constraints inverted (files primary). wrap §4 (drawer/diary) → the session file IS the record; §5 (kg calls) → append JSONL triples with `valid_to` soft-invalidate; §8 template. **Typography palace KEPT.** No live `mempalace_*` calls remain (grep-verified); provenance notes on both; recorded in the skill-harvest register + winddown tracker. **This wrap is the first MemPalace-free wrap.**
**Also:** pushed both chamber commits to Gitea (flaky remote behaved: `34c39f1..703efcf`).
## Decisions explicitly NOT made (negative space)
- **Did not resolve the 5 compound author-strings** (Berger+Mohr, Beck+Fowler, Vyasa/Valmiki, + 2 malformed multi-editor) into component Agents — held in `compounds_pending` because the statement-of-responsibility role nuance (author vs editor vs translator) needs its own small curation pass. A1 follow-on.
- **Did not fix the 4 frontmatter defects** — A1 is additive/registry-side; touching work files belongs to the frontmatter sweep (a distinct REVIEWED-49 item).
- **Did not run the MemPalace decommission items 1/2/4** (disable hooks, remove the MCP server, cold-archive) or the **BMF lessons report** — the steward set these as their own "tomorrow" slot; kept separate so the reconnaissance value isn't rushed.
- **Did not integrate `build_agent_registry.py` into `test_tools.py`** — follow-on per the fleet `--validate` standard.
## PRESENT — mood / disposition
A session of clean, loop-respecting execution — the executor did not cross a governance boundary once. Held at each gate (PENDING-51 filed not self-landed; jurist editor-gate relayed; steward ratification awaited before touching the constitution). The two best moments were **steward-initiated redirections that improved the work**: "verify now" caught the A4-shaped Principle-4 imprecision on our own draft (the fluent first draft's one weak seam was exactly the citation — the completion-is-a-tripwire shape); and "how do serious libraries handle this?" turned an invented scheme into adopted authority-control vocabulary. Small honest catches: the `pattern_finder.py` "nomen" false-match was `phe·nomen·ology` (census-through-a-pattern). The steward's mixed feelings about MemPalace time lost are real and named — the wrap holds them: the owed BMF report is the vehicle that turns the loss into forward value.
## FUTURE — what is pulling
**PULLING THREAD: the chamber REVIEWED-49 tail continues** — the natural next chamber-library work now that A4+B(iii) + A1 have shipped. Held *beside* it (not the thread, but emotionally load-bearing for the steward): the **MemPalace decommission + the owed BMF lessons report**, which distills the MemPalace reconnaissance into design intent for CapableMind's own L1. Next session may legitimately choose *either* — see the literal question.
**ACTIONABLE RESUMPTION POINT (as of wrap — re-judge against what changed):**
- *If continuing the chamber tail:* lightest first moves = **B(i)/(ii)** (a machine-readable `licence`/copyright-status field; **PREMIS** as the borrow-vocabulary name — both ordinary FIX amendments) OR the **A1 follow-on** (resolve the 5 `compounds_pending` into component Agents with roles). Heavier/gated: **A3** (self-audit PROPOSAL — needs the jurist), **C** (VIAF/ISNI/Wikidata reconciliation → fills the A1 registry's identifier slots + the 2 pseudonyms + French Nomen-forms — substantial). All run the RFC-supersession amendment process, each its own PENDING/REVIEWED.
- *If taking the decommission slot:* wind-down STAGED PLAN items 1 (disable the Stop/PreCompact hooks), 2 (remove the `mempalace` MCP server from config), 4 (cold-archive the backed-up palace) + author the **BMF lessons report** (`CM-AI/docs/thinking/David/l1-reliability/mempalace-decommission-report-for-bmf-2026-07-07.md`; outline in [[project-mempalace-winddown]]). Skills are already rewired (item 3 ✓), so items 1/2 are now safe.
**Other open horizons (ranked):**
- Chamber A1 follow-ons: 5 compounds; `test_tools.py` integration for `build_agent_registry.py`; the 4 frontmatter defects → the frontmatter sweep.
- The steward-sequenced **verification-architecture [PROPOSAL]** (olmOCR probe) — after the REVIEWED-49 folding completes.
- Older parked: PENDING-43 ESCALATE Loom/Mill; PENDING-27.
**Two open loops that are the steward's:** place **REVIEWED-51** (draft on Desktop) into `~/REVIEWED.md`; (the chamber commits are already pushed).
**PAUSE STATEMENT:** Stepping away with a genuinely clean board — two constitutional-grade chamber items shipped end-to-end with the loop intact, and the wake/wrap skills now stand free of the substrate we're retiring. What I want to find still pulling: the chamber tail as the live workstream, AND the discipline to give the MemPalace decommission + BMF report their own unrushed slot so the reconnaissance value is distilled, not discarded — the steward's mixed feelings answered by turning the loss into L1 design intent.
**LITERAL QUESTION for next-Claude:** Does the steward want next session to **continue the chamber REVIEWED-49 tail** (B(i)/(ii) or the A1 compound follow-on being the lightest entry points), or to **take the parked MemPalace-decommission + BMF-lessons-report slot** they're emotionally invested in? And a smaller one: has the steward placed REVIEWED-51 in `~/REVIEWED.md` yet?
**State at wrap:** chamber-library `703efcf` (pushed, clean, in sync). Skills rewired + recorded. REVIEWED-51 awaiting steward placement. MemPalace still live (decommission items 1/2/4 not yet run — parked). Typography palace untouched.
@@ -11,11 +11,16 @@ metadata:
## Returns
- 2026-07-07T12:22 — **Caught frame-inheritance before mutating the memory substrate (§3 trust-prior-pass-frame).** The ratified upgrade plan assumes `mempalace` installed via pipx/uv → a clean 3.3.6→3.4.0 bump. Verified against the actual install: it is an **editable git fork** (`~/_Dev/mempalace/.venv`) on branch `local/bge-m3-on-3.3.6`, **ahead 5 / behind 300** of origin/main. The 5 local commits are load-bearing: custom **bge-m3 embedder** (2 commits), the `layers.py` recency fix the wake glance depends on, and `hallways.py` pagination for the 71k-drawer `wing_api`. Upstream 3.4.1 (#1483) moved the **default embedder to embeddinggemma** and warns switching models on an existing palace requires full re-embed / else EF-identity mismatch → silent bad recall. Merging 300 commits onto the bge-m3 fork is NOT a version bump; treating it as one would be the exact contamination shape. HELD; surfaced to steward. The morning HNSW quarantine self-healed and #1665 root cause is still open even in 3.4/3.5 — so the upgrade does not cure what bit today.
- 2026-07-07T18:05 — **A4-error avoided on my own draft (verify-against-primary-source).** My first A4+B(iii) draft repeated the frontier brief's shorthand — 'Principle 4 does not license scoping to one named community.' Steward said verify-now; fetched the primary Santa Barbara Statement. Principle 4 verbatim: 'Collections as data designed for everyone serve no one. Specific needs inform collections as data development' — it DOES concern designing for specific communities. The brief's shorthand was imprecise; the true distinction is audience-design (Principle 4) ≠ epistemic scope-warrant (A2). Corrected the draft to state the distinction. Principle 8 confirmed verbatim, kept. This is the Ninety-Ninety / completion-is-a-tripwire shape: the fluent first draft *felt* done; the citation was exactly where it would have been faked. The steward's 'verify now' call was the guard.
## Open horizons
- 2026-07-07T12:16 — Pulling thread (inherited): finish REVIEWED-49 folding. Next link = A4 + B(iii) as one small FIX (own PENDING/REVIEWED, v2.0.x patch). Then A1 Agent/Nomen registry (read `retrieve.py` hot path first). Then the steward-sequenced verification-architecture [PROPOSAL] + model-plurality note.
- 2026-07-07T12:16 — MemPalace: HNSW drift quarantine fired live during wake (#1665/#1589 class); installed 3.3.6 vs origin/main 3.5.0 (two minor bumps of relevant fixes ahead). Hold-and-plan; steward's call — not a wake action.
- 2026-07-07T12:16 — Skill-harvest open: promote *completion-is-a-tripwire* → Symmetria §3 flag (fresh); standing AUTHORIZED-not-built bmf-diagnose / mempalace-diagnose / /pre-build-audit.
- 2026-07-07T17:47 — **Post-/clear re-wake (Symmetria re-init).** Same day, ~15 min after wrap. Wake ran WITHOUT the §2.b MemPalace 5-step protocol — deliberate: yesterday's evidenced decision winds down `palace-memory`; leaning on it now would contradict the decision. Thread CONFIRMED = chamber-library REVIEWED-49 folding; git verifies A2 preamble + Olson (`34c39f1`) landed → A4 genuinely unblocked. Held open (steward's call): (a) still A4+B(iii) or a different chamber piece? (b) MemPalace decommission + BMF report before/after/separate-slot? Named the drift: `/wake-up` + `/wrap-up` are themselves on the decommission's "rewire to files" list (STAGED PLAN item 3) — parked, not silent.
- 2026-07-07T18:50 — **A1 hot-path question ANSWERED from the code (PENDING-49 executor-owed, closed).** Read `studium-engine/engine/retrieve.py` in full + surveyed `corpus/manifest.yaml` fields. **Decisive: the retrieval hot path performs ZERO agent/author accesses** — identity axes are `source_id`→`work` (title string) + `voice`; citation tuple carries no author; the manifest has NO author/agent/nomen field at all; the verifier checks bytes not identity. Jurist's "occasional resolve → deferred holds" is satisfied a fortiori (zero < occasional). ⇒ **additive Agent/Nomen registry (no per-work field) confirmed; `agent_id`-required stays deferred/emergent via A3's registry-linkage metric.** Minor: `pattern_finder.py` was a false grep-match — 'nomen' inside 'phe·nomen·ology' (census-through-a-pattern; substrate read cleared it). Next A1 move = design the registry shape (a vision-fork for the steward: where it lives + schema + appellation join), not a unilateral build.
- 2026-07-07T19:30 — **A1 registry v1 LANDED (chamber `703efcf`, local).** Steward's "how do serious/university libraries handle this?" redirected me to RESEARCH the identity model rather than invent one → grounded in **library authority control** (IFLA-LRM Agent/Nomen, RDA relationship designators incl. the 'attributed name' designator, attest-with-basis = MARC 670, identifiers-as-anchor), primary-source-verified. That sharpened the trust-thesis handling (Buddha = person + *attributed*, not asserted author). Built `scripts/build_agent_registry.py` (generative, explicit CURATION table) → `_curation/agent-registry.yaml`: **134 Agents / 143 strings / 222 of 1285 files (author coverage SPARSE ~18%).** Steward confirmed ALL judgments (11 merges, 11 attribution incl. 3 borderlines, 5 compounds held, 4 frontmatter defects flagged). Tool logged (tool-evolution-log). **Follow-ons (tracked in the artifact):** resolve 5 compounds w/ roles; 4 defects → frontmatter sweep; test_tools.py integration; C fills identifiers + the 2 pseudonyms + French Nomen-forms. **REVIEWED-49 tail now:** A3 (self-audit PROPOSAL), B(i)/(ii) (licence field, PREMIS vocab), C (VIAF/ISNI/Wikidata → the registry). **This session shipped A4+B(iii) AND A1** end-to-end, loop intact throughout.
- 2026-07-07T19:45 — **Skill-rewiring DONE (MemPalace wind-down STAGED PLAN item 3).** Steward: "push, then skill-rewiring, then wrap (wraps are faster without mempalace)." Pushed both chamber commits to Gitea (`34c39f1..703efcf`, clean). Rewired `/wake-up` (§2.b MemPalace 5-step → files-layer reconstruction; §2.e upgrade-check retired; §5 constraints inverted) + `/wrap-up` (§4 drawer/diary → session-file-is-the-record; §5 kg calls → append `knowledge-graph.jsonl`; §8 template). Verified no live `mempalace_*` calls remain; typography palace KEPT; provenance notes on both; recorded in skill-harvest register + winddown tracker. **THIS wrap is the first MemPalace-free wrap.** Steward's mixed feelings re: MemPalace time lost → the owed **BMF lessons report** is the vehicle to distill it forward for CapableMind (parked to the decommission slot with items 1/2/4). Remaining decommission: disable hooks, remove MCP server, cold-archive, + the BMF report.
## MemPalace decision (in progress)
- 2026-07-07 — Steward leans LETTING GO of MemPalace; wants (a) a ~10-session evidence audit to feel settled, (b) confirmation the KG (highest-value aspect) can be recreated file-native.
@@ -29,6 +34,9 @@ metadata:
## Authorization moves
- 2026-07-07T15:52 — Steward AUTHORIZED "Rebuild now" (in-version index rebuild via `repair --mode from-sqlite`, bge-m3 preserved). Decoupled from the version upgrade (deferred — doesn't cure #1665 root cause). **Crosses the standing "don't run repair (#1589)" rule** — safe because `from-sqlite` never opens a chromadb client on the corrupt index (dodges the SIGSEGV); executed with full verified backup + build-into-new-dir + manual verified swap.
- 2026-07-07T15:52 — **Caught a second silent-loss trap before running (diagnose-before-fix).** `rebuild_from_sqlite` (repair.py:1050+) rebuilds ONLY the chroma collections into a fresh dir; it never carries `knowledge_graph.sqlite3`. A bare in-place `--archive-existing` rebuild would have left the LIVE palace with the vector index but NO KG/diary/entity-graph (recoverable only from the archive). Mitigation: build from the frozen backup into a new dir, copy the KG in, verify, then swap — live palace stays whole until the last step.
- 2026-07-07T18:35 — **A4+B(iii) RATIFIED + LANDED (REVIEWED-51).** Steward ratified; landed as chamber-library `7d1d8d3` (local, not pushed — Gitea/steward's call). Four steps executed with proof: v2.0.1 frozen byte-identical (cmp ✓, 763 lines) → canonical bumped v2.0.1→v2.0.2 (§I subsection + header note) → CLAUDE.md pointer → commit. Bounded-diff verified (canonical = only the header note + subsection; CLAUDE.md = only the pointer). REVIEWED-51 draft written to steward's Desktop for placement (executor doesn't write ~/REVIEWED.md). PENDING-51 marked LANDED. **A4+B(iii) closed.** First REVIEWED-49-tail chamber item shipped this session end-to-end (draft → primary-source verify → jurist gate → ratify → land), loop intact at every step.
- 2026-07-07T18:20 — **A4+B(iii) editor-gate PASSED; held at the ratification boundary.** Jurist ruled 1/2/4/5 pass-as-drafted; Q3 gated on one fact (§IX coverage-ledger + honest-degradation independently live, or entangled with the [OPEN] silence-as-finding?). Confirmed by substrate read → Case A: §IX's own `Still open` text settles both + separates silence-as-finding → citation stands as drafted, NO edit. Ruling captured verbatim (`library-science-A4-Biii-RULING-2026-07-07.md`); PENDING-51 updated. Draft final. **NOT landing the constitutional edit without steward ratification (REVIEWED-51)** — the loop is load-bearing; jurist gate ≠ steward ratification.
- 2026-07-07T17:58 — **PENDING-51 filed (chamber A4 + B(iii)); boundary NOT crossed.** Steward authorized the thread (A4+B(iii)). Diagnosed against the substrate: `collections as data` has **zero** hits in the live spec → A4 is preventive/recording (nothing to redirect-in-place), B(iii) is the term's first entry → collapse to ONE §I subsection ("The corpus as data — and the warrant it does not carry"), the A4 boundary written *into* B(iii)'s introduction (honours the RULING flag). Drafted in house voice; filed for the §Governance editor-gate per the A2/REVIEWED-50 precedent — spec is never edited in place. HELD for jurist editor-gate + steward ratification before landing (v2.0.1→v2.0.2 patch supersession). The loop is load-bearing; did not self-ratify the constitution.
## Sub-agent dialogues
- 2026-07-07 — Independent MemPalace-value audit (general-purpose, neutral anti-confirmation prompt). VERDICT: search+KG NOT load-bearing for `palace-memory` — confirmatory/redundant. Evidence (3 convergent tests): (a) 27/31 kg_query = byte-identical wake ritual; only 4 task-directed; find_tunnels/traverse called 0× ever; genuine reach ~0.43/session, declining to ~0.07 in July; (b) grep test — 5/5 distinctive search payloads found verbatim in the Markdown files; ZERO transcript statements credit search/KG with surfacing file-absent content; (c) write:read ≈ 7:1 (217 kg_add vs ~32 reads); 437 entities all type 'unknown'. Heaviest use (06-30 clasp) returned a STALE claim the files corrected — anti-load-bearing. Confidence: counts 0.93, verdict 0.82. Honest caveat: semantic-convenience (would-I-have-grepped-it) unmeasured, but 0 sampled instances crossed the bar. Carve-outs preserved: drift-patterns (exported ✓), typography palace (separate, keep). **Symmetria audit-agent check PASSED** — calibration honest, flagged own confirmation-order risk, scope correct.
+1
View File
@@ -40,6 +40,7 @@ The single place proposed skills live so they don't evaporate between sessions.
- **`reference-verification-ladder.md`** (2026-06-05, authorized + built same evening): one canonical home for the proven instruments (byte-identical compile gate, expected-delta/delta-classification, censused-routes, measure-toolchain-before-spec, compiled-selector grep, governed-char byte gate, WCAG compute, fresh-clone gate, live-fetch gate, per-type×per-viewport, re-verify-at-extension-scope). Ends the per-wrap re-proposing; future instruments append there, not here.
- **`/arc-typeset` REJECTED** (2026-06-05): superseded — §I.k.b/c moved the mechanical pass into the build; LINT class carries judgment warnings; multilingual §2.5 carries authoring notes; `french-typography-pass` covers the French preparation layer. Do not re-propose without a new gap.
- **MEMORY.md two-file self-bounding architecture — BUILT 2026-07-06** (steward-authorized; closes three long-open proposals below). MEMORY.md 213KB→17KB (91.8%); split into `MEMORY.md` (wake-loaded live index) + `MEMORY-reference.md` (lossless history + reference layer). **Closes:** (a) the 2026-06-08 *`/wrap-up` §3 compress-at-demotion* patch → built as the richer **demote-on-promote** rule (prior Active Session relocates to `MEMORY-reference.md` in the same move; trackers stay one-liners; budget check); (b) the 2026-06-08 *deeper MEMORY.md reduction* proposal → done (the reference-layer split it described, plus the finding that the fat 8KB ARC tracker line — not just the archive — was the real bloat); (c) the *wake-canary* (2026-06-07) → the **truncation/load-integrity half** is now a standing `/wake-up` §2.a gate (truncated load = loud flag + trim). **Still open from the wake-canary proposal:** the *link-resolution* half (every pointer + `[[link]]` resolves at every wake) was applied once as a verification instrument this pass but is NOT yet a standing wake step — remains PROPOSED. Root-cause framing: the recurrence was role-conflation (one file doing live-index + archive + reference), no self-bounding, no load-integrity gate; the compress-in-place pass of 2026-06-08 attacked the level not the class, so it re-bloated.
- **`/wake-up` + `/wrap-up` rewired off MemPalace → the files layer — BUILT 2026-07-07** (steward-directed; palace-memory wind-down STAGED PLAN item 3, [[project-mempalace-winddown]]). wake §2.b (the MemPalace 5-step protocol) → files-layer reconstruction (recent `session-*.md` for thread trajectory; `grep drift-pattern knowledge-graph.jsonl` replaces the `kg_query claude-code` ritual; grep-the-files for depth); §2.e upgrade-check RETIRED; §5 constraints inverted (files primary; no `mempalace_*` for palace-memory). wrap §4 (drawer+diary writes) → the session file IS the record; §5 (kg_add/kg_invalidate) → append JSONL triples to `knowledge-graph.jsonl` (soft-invalidate via `valid_to`); §8 template MemPalace lines → `KG appended:`. **Typography palace KEPT** (separate instance, CLI). Both carry 2026-07-07 provenance notes; verified no live `mempalace_*` calls remain (grep), headings intact. **Decommission remainder (own slot, own 'tomorrow'):** items 1 (disable hooks), 2 (remove the MCP server), 4 (cold-archive) + the owed **BMF lessons report**.
## Candidate patches not yet proposed (watch-list)
+11 -37
View File
@@ -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.
+13 -38
View File
@@ -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]