Auto-edges called relate() up to 3 times per store, each triggering a
blocking git subprocess (~50-100ms each). Now relate() accepts
skip_commit=True so auto-edges defer to the fire-and-forget git sync,
cutting 150-300ms of latency from every memory_store call.
Closes#2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Non-default graphs were second-class citizens — timers only maintained the
default graph, git sync ignored named graphs, there was no way to create
a graph without editing config manually, cross-graph edge errors were
confusing, and utility scripts were hardcoded to the default graph.
- Add `graph-create` CLI command + `create_graph()` in common.py, with
custom path registration written to the default graph's _config.json
- Add `scripts/maintain-all-graphs.sh` to loop decay/core/embed/reflect
over all discovered graphs; update systemd services to call it
- Refactor `memory-git-sync.sh` into sync_repo() function that iterates
default + all named graphs with .git directories
- Improve cross-graph edge ValueError to explain the same-graph constraint
- Add --graph flag to edge-proposer.py and session_memory.py
- Update systemd/README.md with portable paths and new architecture
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Moved application code from ~/.claude/skills/cognitive-memory/ to its own
project directory. The skill layer (SKILL.md, SCHEMA.md) remains in the
skill directory for Claude Code to read.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>