Initial commit: Adaptive Recall sidecar for UMP (Phase 5)

Multi-channel retrieval sidecar over Universal Memory Protocol:
- 3-channel RRF (UMP FTS5 + Qdrant vector + knowledge graph)
- ACT-R re-ranking (Anderson 1983) with access tracking
- Co-occurrence graph edges (Phase 6) for dense traversal
- Memory lifecycle decay (Phase 4) with per-kind confidence
- MCP shim routes recall through sidecar, falls back to canonical UMP

Architecture:
- src/server.js      HTTP sidecar on port 4380
- src/graph.js       2592-node / 111-edge graph from UMP (or +cooccur: 13k+)
- src/actr.js        A_i = -d*ln(age) + beta*log1p(freq) + epsilon*conf
- src/access_log.js  per-URN counter + last_accessed_at
- src/ump-recall-mcp.js  MCP shim (recall via sidecar, others passthrough)

Eval results (851-record UMP corpus):
- 2ch RRF over baseline: +50pp recall@10
- 3ch RRF (+graph): +60pp, 12 unique wins
- ACT-R re-rank: 4/20 #1 changes, 84% top-5 retention

Tests: 76/76 passing across graph (27), actr (27), access_log (28),
decay (20), mcp-shim (sidecar + fallback). Run with: npm test

Inspired by AIAppsAPI/adaptive-recall but built from scratch against
existing DNS2 infrastructure (UMP at :4317, Qdrant at :6333,
Ollama at :11434). No paid SaaS, MIT-licensed.
This commit is contained in:
Krystie
2026-07-12 19:24:05 -07:00
parent 0753fa389c
commit dc5dc94d79
33 changed files with 7749 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
{
"name": "ump-recall",
"version": "0.1.0",
"description": "Adaptive Recall sidecar for UMP — 3-channel RRF (FTS5 + vector + graph) + ACT-R re-ranking",
"type": "module",
"main": "src/server.js",
"private": true,
"scripts": {
"start": "node src/server.js",
"build:graph": "node scripts/build_graph.js",
"decay:dry-run": "python3 scripts/ump_decay.py --dry-run",
"decay:apply": "python3 scripts/ump_decay.py --apply",
"test:entities": "node test/test-entities.js",
"test:graph": "node test/test_graph.js",
"test:actr": "node test/test_actr.js",
"test:access-log": "node test/test_access_log.js",
"test:decay": "python3 test/test_ump_decay.py",
"test:mcp-shim": "node test/test-mcp-shim.js",
"test": "npm run test:graph && npm run test:actr && npm run test:access-log && npm run test:mcp-shim && npm run test:decay",
"eval:channel-contrib": "python3 scripts/eval_channel_contribution.py",
"eval:actr": "python3 scripts/eval_actr.py"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0",
"express": "^4.19.2",
"undici": "^6.19.8"
},
"engines": {
"node": ">=18"
}
}