Skip to content

Commit 9060e09

Browse files
jpheinclaude
andauthored
fix(docs): resolve commit:HEAD placeholders + drop duplicate fusion_mode entry (#317)
Two cleanups in docs/fork-changes.yaml that built up during the rebase chain that landed #307/#309/#310/#314/#315: 1. Six entries had `commit: HEAD` stuck in them (authors write the placeholder on the PR branch because the squash-SHA isn't known then; nothing in our flow rewrites it post-merge). Resolved via git-log lookup matching each entry's referenced issue/PR #N to the closing commit, priority order: closes/fixes > trailing (#N) > any mention. 2. `mcp-search-fusion-mode-input-schema` had two identical entries. The duplicate landed during #310's rebase chain against the newly-merged #309/#314/#315 — the rebase-recovery script re-inserted the entry each iteration without checking for an existing matching id. The follow-up #316 tracks adding both passes to scripts/ship-prep.sh so the fix is mechanical for future PRs. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 4677db8 commit 9060e09

4 files changed

Lines changed: 174 additions & 253 deletions

File tree

FORK_CHANGELOG.md

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
2424
### Added
2525

2626

27-
- **scripts/ship-prep.sh — one command bumps README test count and runs all three doc renderers (#312)** ([`HEAD`](https://github.com/techempower-org/mempalace/commit/HEAD))
27+
- **scripts/ship-prep.sh — one command bumps README test count and runs all three doc renderers (#312)** ([`4677db8`](https://github.com/techempower-org/mempalace/commit/4677db8))
2828
Every fork-ahead PR has needed the same hand-driven dance after a
2929
rebase: bump ``README.md``'s "<N> tests pass on ``main``" phrase,
3030
run ``scripts/render-docs.py --target all``, run
@@ -47,38 +47,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
4747
*Files:* `scripts/ship-prep.sh`
4848

4949

50-
- **mempalace_search MCP input schema accepts fusion_mode (convex|rrf) and forwards to search_memories (#302)** ([`HEAD`](https://github.com/techempower-org/mempalace/commit/HEAD))
51-
#162 / PR #295 added ``fusion_mode`` to ``search_memories()`` with
52-
``"convex"`` default and ``"rrf"`` opt-in, validated by the
53-
``_FUSION_RANKERS`` registry. palace-daemon#105 adds the same
54-
parameter to its ``/search/hybrid`` HTTP surface so daemon-fronted
55-
callers can A/B at production scale. But the MCP boundary in
56-
``mempalace/mcp_server.py`` whitelists callable arguments against
57-
the declared ``input_schema`` ``properties`` — and ``fusion_mode``
58-
wasn't in the list. Daemon-forwarded values were silently dropped
59-
before reaching ``search_memories``, and the end-to-end A/B never
60-
worked.
61-
62-
This change adds ``fusion_mode`` to the ``mempalace_search``
63-
input schema (enum ``["convex", "rrf"]``, mirroring
64-
``candidate_strategy``'s shape), threads the parameter through
65-
``tool_search`` into the ``search_memories()`` call, and surfaces
66-
it on the ``trace`` dict alongside ``candidate_strategy`` /
67-
``sources`` when ``include_trace=true``. The default stays
68-
``"convex"`` — same default as ``search_memories``' own signature,
69-
so unmodified callers see no behavior change.
70-
71-
Three unit tests cover the kwarg path: ``fusion_mode`` reaches
72-
``search_memories`` with the default, the explicit value passes
73-
through, and the MCP whitelist via ``handle_request`` accepts the
74-
arg rather than returning ``-32602 Unknown parameter`` (the bug
75-
this issue was filed to fix).
76-
77-
*Tests:* 3 — tests/test_mcp_server.py (fusion_mode forwarded to search_memories incl. convex default + rrf override, fusion_mode survives MCP whitelist via handle_request, schema advertises both modes in enum)
78-
*Files:* `mempalace/mcp_server.py`, `tests/test_mcp_server.py`
79-
80-
81-
- **mempalace_search MCP input schema accepts fusion_mode (convex|rrf) and forwards to search_memories (#302)** ([`HEAD`](https://github.com/techempower-org/mempalace/commit/HEAD))
50+
- **mempalace_search MCP input schema accepts fusion_mode (convex|rrf) and forwards to search_memories (#302)** ([`f753ec4`](https://github.com/techempower-org/mempalace/commit/f753ec4))
8251
#162 / PR #295 added ``fusion_mode`` to ``search_memories()`` with
8352
``"convex"`` default and ``"rrf"`` opt-in, validated by the
8453
``_FUSION_RANKERS`` registry. palace-daemon#105 adds the same
@@ -203,7 +172,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
203172
*Files:* `scripts/eval_fusion_ab.py`, `tests/test_eval_fusion_ab.py`, `docs/research/2026-05-28-rrf-vs-hybrid-rerank-ab.md`, `docs/research/2026-05-28-rrf-vs-hybrid-rerank-ab.json`
204173

205174

206-
- **KG triples gain SPOC context slot + worker auto-derives valid_from from drawer metadata (#161)** ([`HEAD`](https://github.com/techempower-org/mempalace/commit/HEAD))
175+
- **KG triples gain SPOC context slot + worker auto-derives valid_from from drawer metadata (#161)** ([`b87ce05`](https://github.com/techempower-org/mempalace/commit/b87ce05))
207176
KG triples now carry a fourth axis — ``context`` — that anchors a
208177
fact to where it was witnessed (e.g. ``drawer:abc123``,
209178
``conversation:2026-05-28``). The ``add_triple`` write path on the
@@ -250,7 +219,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
250219
### Fixed
251220

252221

253-
- **scripts/check-docs.sh finds pytest via main checkout when run from a worktree, fails hard instead of silently skipping test-count check (#311)** ([`HEAD`](https://github.com/techempower-org/mempalace/commit/HEAD))
222+
- **scripts/check-docs.sh finds pytest via main checkout when run from a worktree, fails hard instead of silently skipping test-count check (#311)** ([`1d19a8b`](https://github.com/techempower-org/mempalace/commit/1d19a8b))
254223
Working a fork-ahead PR in a worktree (the standard pattern per
255224
CLAUDE.md), ``bash scripts/check-docs.sh`` reported "docs clean"
256225
even when the README test count was stale — because ``REPO_ROOT``
@@ -272,7 +241,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
272241
*Files:* `scripts/check-docs.sh`
273242

274243

275-
- **kg_triple_worker retries add_triple within-worker on transient psycopg errors instead of abandoning to lease-reclaim (#298)** ([`HEAD`](https://github.com/techempower-org/mempalace/commit/HEAD))
244+
- **kg_triple_worker retries add_triple within-worker on transient psycopg errors instead of abandoning to lease-reclaim (#298)** ([`36c0b02`](https://github.com/techempower-org/mempalace/commit/36c0b02))
276245
When postgres dropped a connection mid-``add_triple`` (network
277246
blip, OOM-restart, statement-timeout fire) the worker would
278247
surface the exception, mark the drawer's queue row in the
@@ -308,7 +277,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
308277
*Files:* `mempalace/kg_triple_worker.py`, `tests/test_kg_triple_worker.py`
309278

310279

311-
- **mempalace_kg_stats returns structured backend-unavailable envelope on transient psycopg failures (#299)** ([`HEAD`](https://github.com/techempower-org/mempalace/commit/HEAD))
280+
- **mempalace_kg_stats returns structured backend-unavailable envelope on transient psycopg failures (#299)** ([`8fd0b01`](https://github.com/techempower-org/mempalace/commit/8fd0b01))
312281
Observed in production 2026-05-28 09:59 PDT (familiar): postgres
313282
OOM-killed under writethrough load. The `mempalace_kg_stats` MCP
314283
tool propagated the raw `psycopg.OperationalError` to the

0 commit comments

Comments
 (0)