feat:Add local personal memory#808
Conversation
bbcfd23 to
b9a41db
Compare
|
Thanks for splitting the local personal memory work out from #761. Triage: high-caution local-memory enhancement. This is a better review shape than the combined workflow PR, but it still needs a security/privacy pass: local-only storage boundaries, delete semantics, |
b9a41db to
44060c4
Compare
|
Thanks for the review. I updated the PR with a security/privacy pass and kept it scoped to the memory feature. What changed:
I also adjusted the default behavior to avoid changing existing installs:
Validation:
I squashed it back to one commit: |
cfa69f3 to
86dcd5f
Compare
86dcd5f to
0253e9d
Compare
Signed-off-by: Alejandro Blanco-M <alecuba16@gmail.com>
0253e9d to
51f63b9
Compare
|
Status update after a full review pass — being straight with you about where this stands. Review outcome: security-clean (no network/exec surface, storage-path validation works as described, env access through the safe helpers), the Makefile/lint wiring is correct, and the privacy rework you did after #761 addressed the concerns from that thread. Two mechanical items would still be needed: a rebase (main has moved substantially — the PR currently conflicts) and the three raw Decision: deferring this past the v0.9.1 release. The honest reason is direction, not quality: a personal-memory subsystem is a significant permanent surface (a 9-mode MCP tool, a new storage location, sync/promote semantics across scopes), and whether cbm should grow a notes store alongside its knowledge-graph core — versus leaving that to the agents' native memory systems — is a product question we want to settle deliberately, not under release pressure. No action needed from you right now; specifically NOT asking for the rebase yet, so you don't invest in churn while the concept decision is pending. We'll come back to this PR after 0.9.1 ships with a clear yes/no/reduced-scope answer. Sorry for the long runway on this one — the split from #761 and the privacy pass were genuinely good work, and this deferral is not a soft rejection. |
|
No problem, thanks for taking a look anyway |
This pull request adds a local personal memory system for codebase notes, decisions, and learnings. It is intentionally separated from the fork release workflow work so this PR only contains the personal-memory feature.
This replaces the closed broad PR #761 with the workflow option removed, and addresses the security review note from #761 (comment).
Personal memory
The main addition is a per-repo personal memory that lives outside the repository, in the user's local data directory. The goal is to let an agent or developer store notes, decisions, and learnings about a codebase without writing files into the source repository or pushing that context upstream.
A new MCP tool called
manage_memoryis exposed with these modes:getupdatesectionssettingsbootstrapdeletelistpromotesyncmanage_adralso gains an optionalscopeparameter so it can target either project-scoped ADRs, which remains the default for compatibility, or personal memory.The memory directory, default scope, and enablement are configurable. A new platform helper,
cbm_resolve_memory_dir, resolves the correct local user-data path for each operating system.Security and local-only behavior
After the review comment on #761, I added a focused security hardening pass in commit
5f0f4b6:0700permissions on POSIX systems.0700when opened for writes.manage_memory(settings)redacts local filesystem paths by default.reveal_paths=true.deleteis now idempotent, returnsnot_foundwhen appropriate, and no longer creates a DB just to delete from it.promoteandsyncare local copy operations only. Responses now explicitly reportlocal_onlyandnetwork_sync=disabled.Nothing in this feature uploads personal memory to the repository, remotes, package registries, or external services. Storage is local SQLite under the resolved personal memory directory.
Other changes
manage_memoryand personal scope inmanage_adr.cbm_setenv/cbm_unsetenvhelper was added for Windows-compatible tests.Validation
mainat09148ab.make -f Makefile.cbm testpasses locally:5766 passed.