docs(design): scope/collection filter evaluation (#76) - #136
Merged
Conversation
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
jphein
force-pushed
the
docs/scope-filter-design-76
branch
from
May 23, 2026 01:04
803ceb5 to
dc871a1
Compare
jphein
force-pushed
the
docs/scope-filter-design-76
branch
from
May 23, 2026 01:10
dc871a1 to
e8704ed
Compare
Evaluates the four alternatives from #76 — status quo, collections= parameter, per-collection sibling tools, federated default — across implementation complexity, performance, UX, backwards compat, and impact on palace-daemon /search, SME's MemPalaceDaemonAdapter, and the MCP tool surface. Recommendation: Option 1 (status quo, document) today, with Option 2 (collections= parameter, default ["mempalace_drawers"]) as the deferred trigger once a second MCP-visible collection earns its read surface. PR #8 (0b945e1) retired mempalace_session_recovery; the fork's MCP surface now reaches exactly one collection, so the premise of #76 has changed in this fork. The recovery-collection retirement is itself the case study for why Option 3 (sibling tools, writes-before-reads) goes wrong. Includes explicit trigger conditions for revisiting Option 1 -> 2, ranking concerns for cross-collection fusion (embedder identity, distance distribution comparability, metadata-filter parity), and fork-changes.yaml entry with rendered docs. Closes #76.
jphein
force-pushed
the
docs/scope-filter-design-76
branch
from
May 23, 2026 01:14
e8704ed to
fd8ec2e
Compare
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Evaluates the four design alternatives raised in #76 for whether
mempalace_searchshould expose a cross-collection filter now that the storage layer supports multi-collection-per-palace as a first-class capability.Recommendation: Option 1 today (status quo, document), with Option 2 (
collections=parameter, default[\"mempalace_drawers\"]) as the deferred trigger once a second MCP-visible collection earns its read surface.Reasoning
PR #8 (
0b945e1) retiredmempalace_session_recovery— both write and read paths. The fork's MCP surface now reaches exactly one collection (mempalace_drawers). The premise of #76 ("the palace has multiple physically separate stores") is true at the storage layer but no longer true at the MCP/CLI surface this fork exposes.The recovery-collection split (2026-04-25 → 2026-05-05) is itself the case study for why Option 3 (per-collection sibling tools) goes wrong: writes shipped before the read tool did, checkpoints became invisible to
mempalace_search, and the structural fix was to retire the whole side collection. That lesson, ratified in the README's "what this fork has learned" section, should set the design bar: every new sibling collection has to earn its own read tool before any write lands.Options evaluated
collections=parameter. Generalises the retiredkind=filter; ranks across collections via RRF. Forward-compatible addition.Includes
palace-daemon /search, SME'sMemPalaceDaemonAdapter, and the MCP tool surfacefork-changes.yamlentry with renderedFORK_CHANGELOG.mdandREADME.mdSME impact
Under the recommendation, the SME-side cleanup is straightforward: remove
DEFAULT_KIND, remove the--kindCLI flag, delete the xfail'dtest_kind_content_excludes_stop_hook_checkpoints. Unblocks PR #7's cleanup with no further coordination.Test plan
FORK_CHANGELOG.mdand the README fork-change-queue tableCloses #76.