Branch D — Vector PG↔Qdrant Read-Only Reconciliation (GREEN) (2026-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_chunks — no 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_documentsexists (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 >1unit_id;fn_iu_vector_sync_record_v2+ CHECK require a singleunit_idperiu-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.