KB-7BE5

Branch D — Vector PG↔Qdrant Read-Only Reconciliation (GREEN) (2026-05-29)

3 min read Revision 1
iuvectorqdrantreconcilebranch-dno-cross-iu2026-05-29

Branch D — Vector PG↔Qdrant Read-Only Reconciliation

Doc 04 (2026-05-29) — Verdict: GREEN (no drift)

The prior audit left this YELLOW: PG ledger said 149 indexed points, Qdrant registry note said "0 points," and no Qdrant read path was available from context_pack_readonly. This session obtained a read-only Qdrant path and resolved it.

1. Read-only Qdrant access path (no write)

Qdrant port 6333 is not host-published. Solution: the incomex-directus container (Node, on the docker_incomex network shared with incomex-qdrant) reached Qdrant by service name. Qdrant requires an API key; the configured key was read from the Qdrant container's own env and used only for read-only GET requests (key never written to KB; masked in logs). All calls were GET /collections and GET /collections/iu_core_iu_chunksno write, no upsert, no delete.

2. Live Qdrant state

GET /collections                  → { production_documents, iu_core_iu_chunks }
GET /collections/iu_core_iu_chunks → status=green, points_count=149, indexed_vectors_count=0
  • iu_core_iu_chunks: 149 points, status green. (indexed_vectors_count=0 = Qdrant has not built the HNSW index — expected below the indexing threshold; the 149 vectors are stored and searchable via flat scan.)
  • A second, separate collection production_documents exists (not IU-core; out of scope).

3. Reconciliation: PG ledger vs Qdrant

Source Count
PG iu_vector_sync_point status='indexed', Σpoint_count 149
Qdrant iu_core_iu_chunks points_count 149
Match ✅ exact

The prior "0 points" in iu_qdrant_collection_registry.notes (dated 2026-05-23) was stale — written before the reindex completed (last PG index 2026-05-24). The two planes are in agreement today.

4. No-cross-IU-pollution (re-confirmed)

  • PG: 152 distinct point_key, 0 keys spanning >1 unit_id; fn_iu_vector_sync_record_v2 + CHECK require a single unit_id per iu-kind point (149 points across 141 units).
  • Qdrant count (149) equals the PG per-IU point total → consistent with the per-IU model; no evidence of merged/cross-IU points.

5. Verdict & residual

GREEN. PG ledger == Qdrant live (149); no drift; no cross-IU pollution; iu_core.vector_sync_enabled=false (never-flip) intact; no vector write performed.

Residual (cosmetic, not done — would be a PG write): iu_qdrant_collection_registry.notes still says "0 points." Recommend a one-line update to "149 points (reconciled 2026-05-29)" in a future safe write, plus a dot_iu_vector_verify Tier-A DOT (Branch B pack) that performs this PG↔Qdrant GET-compare on demand and raises to system_issues (Đ31) on divergence. Both deferred; neither is a safety issue.

Back to Knowledge Hub knowledge/dev/reports/architecture/iu-technical-gap-fix-p0-autowire-dot-vector-reconcile-2026-05-29/04-vector-pg-qdrant-reconciliation.md