Found during the pre-launch end-to-end verification of the documented claude mcp add flow (real Claude Code session against the published ghcr.io/.../postgres-trimodal:pg17 image).
Repro
Store 3 memories, connect(first, third, rel=explained_by), then recall(query_text=..., mode=fused, k=3). Response ranked ids [2, 0, 1] with scores [-0.802, -0.637, -0.963] — not monotonic in either direction. The ranking is correct (the explained_by bridge outranks its source; both facts beat the unrelated note — connection-weighted recall working as designed), but the emitted score is evidently the raw vector-leg value, not the fused (PPR-blended / bridge-injected) key the ranking actually used. In pure-vector runs the scores ARE monotonic, which makes the fused inconsistency look like a bug to a new user.
Proposed
In tools/tridb_mcp.py recall responses, either (a) report the effective fused ordering key (if the operator exposes it), or (b) rename/annotate the field (vector_score) and add rank explicitly, plus one sentence in docs/mcp_agent_memory_v0.1.0.md explaining that fused rank is graph-weighted and intentionally not derivable from the vector score alone. Option (b) is honest and available today even if the operator does not surface the blended score.
Cosmetic severity, high confusion value — first thing a curious user will notice and ask about.
Found during the pre-launch end-to-end verification of the documented
claude mcp addflow (real Claude Code session against the publishedghcr.io/.../postgres-trimodal:pg17image).Repro
Store 3 memories,
connect(first, third, rel=explained_by), thenrecall(query_text=..., mode=fused, k=3). Response ranked ids[2, 0, 1]with scores[-0.802, -0.637, -0.963]— not monotonic in either direction. The ranking is correct (theexplained_bybridge outranks its source; both facts beat the unrelated note — connection-weighted recall working as designed), but the emittedscoreis evidently the raw vector-leg value, not the fused (PPR-blended / bridge-injected) key the ranking actually used. In pure-vector runs the scores ARE monotonic, which makes the fused inconsistency look like a bug to a new user.Proposed
In
tools/tridb_mcp.pyrecall responses, either (a) report the effective fused ordering key (if the operator exposes it), or (b) rename/annotate the field (vector_score) and addrankexplicitly, plus one sentence indocs/mcp_agent_memory_v0.1.0.mdexplaining that fused rank is graph-weighted and intentionally not derivable from the vector score alone. Option (b) is honest and available today even if the operator does not surface the blended score.Cosmetic severity, high confusion value — first thing a curious user will notice and ask about.