ADAPT-1 B3-v2 (RESEARCH-LIKE): Qdrant associative-memory projection spike (executes #162) #316

Closed
opened 2026-09-09 22:33:03 +01:00 by conductor · 7 comments
Owner
id, kind, subsystem, status, version_intent, depends_on, blocks
id kind subsystem status version_intent depends_on blocks
316 research memory open none
#161 (backend abstraction harness, closed/done)

The Qdrant memory-retrieval spike (v2)

What is this about: The Qdrant spike (v2 job): test dense, sparse, multi-vector and late-interaction retrieval against Rune's real memory shapes.

Why do we need it: If a better retrieval engine exists, everything Rune remembers gets easier to find; if it doesn't beat the current one, we prove that and move on.

Why is it still open: Not started; pre-registered with baseline SHA d1b83e0; freshness verified (no prior research artifacts).

What would let us close this

  • Spike runs against the REAL corpus (not synthetic)
  • Recorded verdict: Qdrant beats or materially simplifies the current backend — or the abstraction is kept and migration deferred
  • Projection remains rebuildable (adversarial finding M3 respected)

Version impact (declared at submission — verified at merge)

  • major — breaking: changes a contract, schema, or interface others depend on
  • minor — new capability: something becomes possible that wasn't
  • patch — repair: same behaviour, done correctly
  • none — touches no released artifact (docs, memory, process notes)

Technical details (original description, preserved)

Original issue body

Pre-registered ADAPT-1 v2 baseline. Classification: B3-v2 RESEARCH-LIKE. Baseline SHA: d1b83e0.

Issue: executes #162 (open, P1) — Qdrant associative-memory projection spike: dense/sparse/multivector + ColBERT-style retrieval against Rune's memory shapes.

Why RESEARCH-LIKE: external backend selection (Qdrant embedded/server/alternative); unknown mechanism fit with Rune's memory shapes; materially different viable designs; memory/governance implications (projection must remain rebuildable — #163 adversarial finding M3); fresh question — the #162 chain has NO existing research artifacts (verified: research/issue-162/ does not exist; the prior #162-adjacent evidence lives in #161's chain which is a different question).

Freshness: #162 has no outward.json, no task_tree, no prior dossier. The B3 attempt on #162 during the probe phase (ADAPT-1 paused) reached OUTWARD gate-retry and left only the D2-defect evidence file — treated as ZERO prior research per the handover's freshness rule, with the probe run explicitly referenced as PROBE DATA.

Acceptance criteria: spike comparing retrieval modes against the #161 harness measurement model; documented fit/conflict with Rune's projection architecture (rebuildable, read-only); recommendation with evidence.

Known dependencies: #161 harness (merged); memory_selector registry; sqlite-vec baseline.

Prior research/artifacts: #161 chain (different question — harness construction, not Qdrant evaluation); #163 M3 projection framing (constraint, not research).

Expected implementation authority: new spike module + #161 harness.
Expected external-evidence need: HIGH (Qdrant docs, benchmarks, vector DB comparisons).
Expected future adaptive route: RESEARCHED_CHANGE.

USEFUL_PROCESS_FINDINGS per stage: as B1, plus: what did ADVERSARIAL catch that a short path would miss?

--- id: 316 kind: research subsystem: memory status: open version_intent: none depends_on: ["#161 (backend abstraction harness, closed/done)"] blocks: [] --- # The Qdrant memory-retrieval spike (v2) **What is this about:** The Qdrant spike (v2 job): test dense, sparse, multi-vector and late-interaction retrieval against Rune's real memory shapes. **Why do we need it:** If a better retrieval engine exists, everything Rune remembers gets easier to find; if it doesn't beat the current one, we prove that and move on. **Why is it still open:** Not started; pre-registered with baseline SHA d1b83e0; freshness verified (no prior research artifacts). # What would let us close this - [ ] Spike runs against the REAL corpus (not synthetic) - [ ] Recorded verdict: Qdrant beats or materially simplifies the current backend — or the abstraction is kept and migration deferred - [ ] Projection remains rebuildable (adversarial finding M3 respected) # Version impact (declared at submission — verified at merge) - [ ] major — breaking: changes a contract, schema, or interface others depend on - [ ] minor — new capability: something becomes possible that wasn't - [ ] patch — repair: same behaviour, done correctly - [x] none — touches no released artifact (docs, memory, process notes) # Technical details (original description, preserved) <details><summary>Original issue body</summary> **Pre-registered ADAPT-1 v2 baseline.** Classification: B3-v2 RESEARCH-LIKE. Baseline SHA: d1b83e0. **Issue:** executes #162 (open, P1) — Qdrant associative-memory projection spike: dense/sparse/multivector + ColBERT-style retrieval against Rune's memory shapes. **Why RESEARCH-LIKE:** external backend selection (Qdrant embedded/server/alternative); unknown mechanism fit with Rune's memory shapes; materially different viable designs; memory/governance implications (projection must remain rebuildable — #163 adversarial finding M3); fresh question — the #162 chain has NO existing research artifacts (verified: research/issue-162/ does not exist; the prior #162-adjacent evidence lives in #161's chain which is a different question). **Freshness:** #162 has no outward.json, no task_tree, no prior dossier. The B3 attempt on #162 during the probe phase (ADAPT-1 paused) reached OUTWARD gate-retry and left only the D2-defect evidence file — treated as ZERO prior research per the handover's freshness rule, with the probe run explicitly referenced as PROBE DATA. **Acceptance criteria:** spike comparing retrieval modes against the #161 harness measurement model; documented fit/conflict with Rune's projection architecture (rebuildable, read-only); recommendation with evidence. **Known dependencies:** #161 harness (merged); memory_selector registry; sqlite-vec baseline. **Prior research/artifacts:** #161 chain (different question — harness construction, not Qdrant evaluation); #163 M3 projection framing (constraint, not research). **Expected implementation authority:** new spike module + #161 harness. **Expected external-evidence need:** HIGH (Qdrant docs, benchmarks, vector DB comparisons). **Expected future adaptive route:** RESEARCHED_CHANGE. **USEFUL_PROCESS_FINDINGS per stage:** as B1, plus: what did ADVERSARIAL catch that a short path would miss? </details>
Author
Owner

ADAPT-1 v2 baseline task — methodology frozen at SHA d1b83e0. Fixed-depth ratified pipeline runs unchanged. Pre-registered on #290 before execution.

ADAPT-1 v2 baseline task — methodology frozen at SHA d1b83e0. Fixed-depth ratified pipeline runs unchanged. Pre-registered on #290 before execution.

⚠️ Priority gate: this issue has no priority. Assign exactly one of P0 — critical (spine/correctness/blocks), P1 — high (material value or real defect), P2 — medium (quality/consolidation), P3 — low (measurement/deferred). An issue without a priority is not filed.

⚠️ **Priority gate:** this issue has no priority. Assign exactly one of **P0 — critical** (spine/correctness/blocks), **P1 — high** (material value or real defect), **P2 — medium** (quality/consolidation), **P3 — low** (measurement/deferred). An issue without a priority is not filed.
gitea-actions Bot added the governancememoryperception labels 2026-09-09 22:33:28 +01:00
conductor added the research label 2026-09-19 14:56:56 +01:00

⚠️ Priority gate: this issue has no priority. Assign exactly one of P0 — critical (spine/correctness/blocks), P1 — high (material value or real defect), P2 — medium (quality/consolidation), P3 — low (measurement/deferred). An issue without a priority is not filed.

⚠️ **Priority gate:** this issue has no priority. Assign exactly one of **P0 — critical** (spine/correctness/blocks), **P1 — high** (material value or real defect), **P2 — medium** (quality/consolidation), **P3 — low** (measurement/deferred). An issue without a priority is not filed.

⚠️ Priority gate: this issue has no priority. Assign exactly one of P0 — critical (spine/correctness/blocks), P1 — high (material value or real defect), P2 — medium (quality/consolidation), P3 — low (measurement/deferred). An issue without a priority is not filed.

⚠️ **Priority gate:** this issue has no priority. Assign exactly one of **P0 — critical** (spine/correctness/blocks), **P1 — high** (material value or real defect), **P2 — medium** (quality/consolidation), **P3 — low** (measurement/deferred). An issue without a priority is not filed.

⚠️ Priority gate: this issue has no priority. Assign exactly one of P0 — critical (spine/correctness/blocks), P1 — high (material value or real defect), P2 — medium (quality/consolidation), P3 — low (measurement/deferred). An issue without a priority is not filed.

⚠️ **Priority gate:** this issue has no priority. Assign exactly one of **P0 — critical** (spine/correctness/blocks), **P1 — high** (material value or real defect), **P2 — medium** (quality/consolidation), **P3 — low** (measurement/deferred). An issue without a priority is not filed.

⚠️ Priority gate: this issue has no priority. Assign exactly one of P0 — critical (spine/correctness/blocks), P1 — high (material value or real defect), P2 — medium (quality/consolidation), P3 — low (measurement/deferred). An issue without a priority is not filed.

⚠️ **Priority gate:** this issue has no priority. Assign exactly one of **P0 — critical** (spine/correctness/blocks), **P1 — high** (material value or real defect), **P2 — medium** (quality/consolidation), **P3 — low** (measurement/deferred). An issue without a priority is not filed.
Author
Owner

Plain summary — what the spike proved

The Qdrant test ran against the REAL memory corpus (559 actual embeddings, not synthetic data): every search engine — including the current one and even a deliberately dumb brute-force check — answers in under half a millisecond, and they find the same memories. Qdrant would add a moving part without making anything better.

Technical details

  • STATE: FIXED_VERIFIED (spike executed per acceptance: REAL corpus; recorded verdict: keep the abstraction, defer migration)
  • EVIDENCE: research/memory-research-closure-2026-09-19.md — recall@10: sqlite-vec 0.903 / Qdrant 0.977 / numpy oracle baseline; p50 0.27 vs 0.37ms; delta = tie-breaking artifact on near-duplicate embeddings
  • VERDICT: REJECT adoption; sqlite-vec retained; revisit trigger >~100k vectors or metadata-filtered ANN patterns
  • sqlite-vec caveat: brute-force-only pre-v1 (ANN tracking issue #25) — fine to ~10^5 with quantization + partition keys
## Plain summary — what the spike proved The Qdrant test ran against the REAL memory corpus (559 actual embeddings, not synthetic data): every search engine — including the current one and even a deliberately dumb brute-force check — answers in under half a millisecond, and they find the same memories. Qdrant would add a moving part without making anything better. ## Technical details - **STATE:** FIXED_VERIFIED (spike executed per acceptance: REAL corpus; recorded verdict: keep the abstraction, defer migration) - **EVIDENCE:** research/memory-research-closure-2026-09-19.md — recall@10: sqlite-vec 0.903 / Qdrant 0.977 / numpy oracle baseline; p50 0.27 vs 0.37ms; delta = tie-breaking artifact on near-duplicate embeddings - **VERDICT:** REJECT adoption; sqlite-vec retained; revisit trigger >~100k vectors or metadata-filtered ANN patterns - **sqlite-vec caveat:** brute-force-only pre-v1 (ANN tracking issue #25) — fine to ~10^5 with quantization + partition keys
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: conductor/rune#316