Opt-in MCP conversation store as a second memory backend beside builtin BM25 #237
Labels
No labels
already-shipped
bug
documentation
duplicate
enhancement
external-review
good first issue
help wanted
in progress
invalid
needs-decision
proposal
question
security
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: crenshawdev/cadence-archived#237
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The idea
Allow an MCP-backed conversation store (Verbatim, or any equivalent) as an
opt-in memory backend beside the builtin BM25 recall.
Always opt-in. Never a default, never a replacement for the builtin corpus.
Why it is interesting
The two corpora are additive, not competitors.
planning.mjs recallis BM25 over.planning/artifacts, so it can only everreturn what a gate already wrote down: CONTEXT decisions, SUMMARY deviations,
CAPTURE rows. A conversation store indexes turns, which is where the reasoning
that never reached a numbered decision actually lives. That material is
currently lost at the end of every session.
The blocker, and it is architectural
memory.backendgatescmdRecallinsidecadence-core/bin/planning.mjs(see
planning.mjs:2206-2235), which is a zero-dep Node subprocess. MCP toolsare reachable only from the model's tool-call loop. A seam script cannot call
one.
So
memory.backend: verbatimcannot be implemented wherenoneandbuiltinlive. It would require:
(
cad-context,cad-plan,cad-debug).That is an architectural change, not a new config value. This is the main thing
to decide before any code.
The tension to settle first
PROJECT.md's Core Value states that what Cadence writes down comes back"without any external memory system."
An opt-in backend is defensible, but it contradicts that sentence as written.
Whichever way this goes, it should be a stated decision, not a drift. If the
answer is yes, the Core Value line needs rewording in the same change.
What is already in our favor
v3.6.0phase 2'sD-03makes the citation count backend-agnostic byaccident. The surfaced set reaches the counting seam as a payload file holding
whatever envelope the plan-time call returned, and the count never re-runs
recall itself. So a Verbatim-sourced set would be measured identically, and the
determinism criterion still holds because the count reads a fixed file.
Whatever backend work happens later, the read-back gate does not have to change
for it.
Open questions
Core Value change?
backend, given every seam in this tree is deliberately zero-dep?
files on disk? The count is insulated, but
cad-contextandcad-debugare not.
Raised while
v3.6.0phase 2 was planning. Candidate forv3.6.1at theearliest, and only after this discussion resolves.
Closing as not doing. The idea is interesting and the cost is the answer: it adds weight.
The blocker this issue names is the whole objection. memory.backend gates cmdRecall inside planning.mjs, a zero-dep Node subprocess, and MCP tools do not reach there. Getting them there means either a dependency in the seam layer or a second recall path that lives outside it, and both buy the same thing: a backend that can be absent, misconfigured, or slow, sitting under a Core Value that currently has no runtime dependency at all.
v3.6.0 just spent a cycle proving the builtin corpus is read rather than only written. That is the direction with the evidence behind it. Reopen this if the builtin corpus turns out to be missing material that matters, measured rather than suspected.