12 KiB
2026-06-01 — Memory store consolidation + resource map
User
- User: Mike Swanson (mike)
- Machine: GURU-BEAST-ROG
- Role: admin
Session Summary
Multi-hour session focused entirely on the .claude/memory/ store. Started by running the freshly-pulled memory-dream skill in report mode, which surfaced 17 orphan files, 12 broken backlinks, 12 overlap clusters, and 2 profile-only memories drifting outside the repo store. Ran --apply-safe to take the additive wins (orphan index lines appended; the two profile-only memories migrated into the repo).
The bulk of the session was four sequential consolidation passes against the cluster proposals. First, the 19-file Syncro cluster collapsed into three terse topical rule files (feedback_syncro_api.md, _billing.md, _workflow.md) plus a separate on-demand feedback_syncro_history.md archive for incident detail, Mike/Howard/Winter quotes, ticket numbers, and the tech/product ID tables. Halfway through, Mike pointed out that the original rule files still carried too much narrative — the rule-vs-history split was the fix. Second, four single-pair near-duplicates were merged: Howard paste-safety (command_formatting + no_indented_code_blocks), Pluto build server (reference_* + project_*), Howard backend deferral folded into feedback_rmm_dev_is_mike, and IX server access (_ssh + _tailscale → _access).
Third, applied the Syncro-style consolidation to four more clusters Mike asked about: GuruConnect (2→1), Dataforth (3→2), Cascades (7→3), GuruRMM (13→3). Each picked the shape that fit — GuruConnect didn't warrant a history split; Dataforth's 2026-03-27 incident did; Cascades and GuruRMM got the full state/rules/history (or state/rules/reference) split. Fourth, built a new auto-loaded cheatsheet reference_resource_map.md to solve the recurring "do I have access to X and how do I connect from this machine" problem — an Explore agent inventoried credentials.md + the SOPS vault + every reference_* memory + recent session logs, and the synthesized file landed at 264 lines covering servers, services, M365 tenants, internal APIs, and per-machine access gotchas.
Net memory store: 104 → 71 files. Broken backlinks 8 → 7 (resolved 5 introduced by renames, lost 1 from a deleted file). Overlap clusters 12 → 5. Orphan files 17 → 0. All committed in 0c00010 and pushed; a follow-up sync auto-commit 66733d4 swept the two memory-dream report artifacts left in _reports/. Vault pulled one incoming commit from Howard (1559267 adding AT Trebesch GuruRMM enrollment key).
Key Decisions
- Split each consolidated cluster into "rules" vs "history" files rather than one big merged file. The rules files get auto-loaded into the harness profile; the history files (incident detail, quotes, dated context) only read on-demand. Cuts hot-path tokens without losing the "why" that future-Claude needs for edge-case judgment.
- Single resource map, not multiple per-category files. The value is having "what do I have access to?" answered in ONE read. Detail stays in the linked
reference_*files; the map points at them. - Default + machine-specific exceptions in the resource map, not a full per-machine matrix. Most resources access the same way from every machine; only the actual divergences (Pluto-from-GURU-5070 missing pubkey, IX-from-GURU-5070 missing pubkey, vault path differing per OS, Windows OpenSSH gotcha) get per-machine notes.
- Stripped Cascades-Meredith-Kuhn from the Syncro workflow rules and into history. Mike caught that the "Meredith is the wrong default at Cascades" section was just an instance of the universal "leave contact blank" rule. The universal rule is the rule; Cascades is one example of where the rule prevents harm.
- Kept the GuruScan carve-out inside
feedback_gururmm.mdrather than a separate file. The rule pattern is "Howard defers backend; GuruScan is the exception" — same conceptual unit. Splitting would have created a future drift surface. reference_resource_map.mdis indexed FIRST under## ReferenceinMEMORY.mdwith a "READ THIS FIRST" prefix. The cheatsheet has zero value if you don't reach for it before searching.- Trusted the agent's vault inventory rather than verifying every field name manually. The agent ran
bash $VAULT listand read the file contents — facts on paper. Flagged in the post-commit summary that specific field names should be verified on first use.
Problems Encountered
- Edit tool requires Read first. Tried to batch-fix the five broken backlinks introduced by the cluster renames with parallel Edits — all five failed with "File has not been read yet." Re-issued as parallel Reads followed by parallel Edits. No data lost.
- Initial Syncro consolidation files were too long. Mike flagged that the consolidated files still carried lots of "on this date" and "Mike said X" detail that bloats every session-start context load. Split into rules + history was the fix. Worth applying that lens proactively for any future consolidation.
- GurUconnect cluster naming collision. The new consolidated
project_guruconnect.mdcould have stomped one of the deleted originals if I hadn't deleted them in a separate step. Pattern: when consolidating, write the new file with a distinct name (or write-then-delete-originals-then-rename if a clean name overlaps) — never let a Write of a new consolidated file land on the same filename as a still-existing original. - One leftover orphan after
--apply-safe. The migration broughtfeedback_check_patterns_before_asking.mdanduser_font_preference.mdINTO the repo but didn't index them (the apply-safe pass had run before they existed). Added them to MEMORY.md as a follow-up edit. Worth a flag in the memory-dream skill: re-scan for orphans after the migration step.
Configuration Changes
New files
.claude/memory/reference_resource_map.md— 264-line cheatsheet (auto-loaded). Servers, services, M365 tenants, internal APIs, per-machine gotchas..claude/memory/feedback_syncro_api.md,feedback_syncro_billing.md,feedback_syncro_workflow.md,feedback_syncro_history.md(replaces 19 originals).claude/memory/feedback_cascades.md,project_cascades.md,project_cascades_history.md(replaces 7 originals).claude/memory/feedback_gururmm.md,reference_gururmm.md,project_gururmm.md(replaces 13 originals).claude/memory/project_guruconnect.md(replaces 2 originals).claude/memory/project_dataforth.md,project_dataforth_history.md(replaces 3 originals).claude/memory/feedback_command_formatting.md(rewritten to combine paste-safety clauses).claude/memory/reference_ix_server_access.md(replaces ssh + tailscale)
Modified
.claude/memory/MEMORY.md— full rewrite reflecting the new layout; added### Syncro,### GuruRMM,### Cascadessubsections; consolidated and de-duped the Project section..claude/memory/feedback_psa_default_syncro.md,feedback_autonomous_infra_setup.md,project_versionable_products.md,reference_acg_msp_stack.md,reference_gitea_api_credential.md,reference_guru5070_rust_toolchain.md— backlink targets repointed at the new consolidated slugs..claude/memory/reference_pluto_build_server.md— absorbed the project file's unique content (WiX 4 / Azure Trusted Signing / agent-staleness note /administrators_authorized_keysASCII encoding gotcha)..claude/memory/feedback_rmm_dev_is_mike.md(then later absorbed intofeedback_gururmm.mdand deleted) — folded in Howard's general backend-deferral rule.
Deleted (39 originals)
19 Syncro feedback files, 7 Cascades files, 13 GuruRMM files (6 feedback + 5 reference + 1 project + 1 principles), 2 GuruConnect, 3 Dataforth, plus the four single-pair dedup targets (no_indented_code_blocks, project_pluto_build_server, howard_delegation, ix_server_ssh, ix_access_tailscale).
Credentials & Secrets
No new credentials created or rotated. Inventoried vault paths into the new resource map — every path mentioned in reference_resource_map.md is a pointer to an existing vault entry, no transcribed secrets.
Howard added a new vault entry during the session (pulled via sync): clients/attrebesch/gururmm-site-main.sops.yaml — AT Trebesch GuruRMM site enrollment key SWIFT-LION-2892. Vault commit 1559267.
Infrastructure & Servers
No infrastructure changes. The resource map captured the current state of:
- ACG office VMs/servers: Jupiter (172.16.3.20), gururmm-server (172.16.3.30), Pluto (172.16.3.36), IX (172.16.3.10), Uranus (172.16.3.21), OwnCloud (172.16.3.22), Neptune (67.206.163.124 / 172.16.3.11 — physically at Dataforth's D2 facility despite the
acghosting.comname), WebSvr (162.248.93.81), pfSense (172.16.0.1, SSH port 2248). - Internal APIs on 172.16.3.30: ClaudeTools main (
:8001), coord (:8001/api/coord, no auth), GuruRMM (:3001), GuruConnect (:3002). - Per-machine access exceptions documented: GURU-5070 needs sshpass for IX and
/rmminstead of SSH for Pluto; GURU-BEAST-ROG SSH key deployment pending; Mac vault path differs; all Windows machines must use system OpenSSH (not Git for Windows).
Commands & Outputs
# Memory dream report (read-only)
py "C:/Users/guru/ClaudeTools/.claude/skills/memory-dream/scripts/memory_dream.py"
# Apply additive-only fixes
py "C:/Users/guru/ClaudeTools/.claude/skills/memory-dream/scripts/memory_dream.py" --apply-safe
# Final dream report after consolidation
py ".claude/skills/memory-dream/scripts/memory_dream.py" --no-file
# memory files: 71 / broken backlinks: 7 / overlap clusters: 5
Final state delta:
75 files changed in commit 0c00010
+1,473 insertions / -1,324 deletions
Net: -33 memory files (104 → 71)
Pending / Incomplete Tasks
- Verify vault field names on first use for entries newly cataloged in
reference_resource_map.md— most were taken from the agent's vault scan and not individually exercised this session. Update the map if anything's wrong rather than working around it. - Mac
install-hooks.shsetup still pending on Mikes-MacBook-Air (perproject_gururmm.md). Action:cd /Users/azcomputerguru/ClaudeTools/projects/msp-tools/guru-rmm && git pull && bash scripts/install-hooks.shbefore any RMM dev on the Mac. - GURU-5070 → IX pubkey not yet authorized — re-verify whether key auth got set up after the Win11 reinstall, or add the workstation's pubkey to IX's
~/.ssh/authorized_keysto drop the sshpass workaround. - GURU-5070 → Pluto pubkey likewise not authorized — add it to
administrators_authorized_keys(ASCII-encoded) to enable direct SSH instead of going through/rmm. - Memory-dream skill enhancement (low priority): re-scan for orphans after the
--apply-safeprofile migration step, so newly-migrated files get auto-indexed in the same pass instead of leaving them as orphans for the next run. - Remaining overlap clusters flagged by memory-dream (5 left): the four GuruRMM reference files are gone, but
feedback_cascades_folder_redirect+feedback_cascades_user_security_groupshould consolidate cleanly when next revisiting Cascades; the bypass_permissions + autonomous_infra_setup pair is intentionally kept separate (nuance matters).
Reference Information
- Memory-cleanup commit:
0c00010—chore(memory): consolidate scattered feedback/project/reference files - Sync auto-commit (dream reports sweep):
66733d4 - Vault pull:
1559267— Howard added AT Trebesch GuruRMM enrollment key - Dream reports archived:
.claude/memory/_reports/2026-06-01-1528-dream.md,2026-06-01-1529-dream.md - New cheatsheet file:
.claude/memory/reference_resource_map.md - Index:
.claude/memory/MEMORY.md(rewritten) - Memory-dream skill:
.claude/skills/memory-dream/scripts/memory_dream.py(read-only default;--apply-safefor additive fixes only; never destructive)