91000x · 04 — No-Vector Verification (Phase D PASS, live read)
91000x · 04 — No-Vector Verification
Phase: D
Status: PASS (live read; structural guarantees preserved post-apply)
Date: 2026-05-26
Three-layer no-vector guarantee (re-verified after 037-039 apply)
Layer 1 — Schema CHECK
iu_staging_record_vector_excluded_chk: CHECK ((vector_excluded = true))
Live count:
rec_vec_excluded_true: 3
rec_vec_excluded_false: 0
Every row has vector_excluded=true. The CHECK structurally forbids any other value.
Layer 2 — collection_registry_vector_policy sidecar (Q5 from D36 review freeze)
collection_registry_id | vector_eligible | semantic_search_eligible | has_explicit_policy
-----------------------+-----------------+--------------------------+--------------------
190 | false | false | true
191 | false | false | true
staging_cols_locked = 2 (both COL-IUS-001 / COL-IUS-002 have explicit no-vector policy).
Layer 3 — v_collection_vector_eligibility view (re-verified)
Returns the same vector_eligible=false, semantic_search_eligible=false for collections 190, 191. Any embedder/indexer that consults this view will see "not eligible" and skip.
Layer 4 (newly observed in 91000x) — Structural absence of staging path in iu_vector_sync_point
iu_vector_sync_point table columns:
point_key, source_kind, source_path, content_digest, sync_status,
indexed_digest, point_count, last_actor, created_at, updated_at,
unit_id, parent_piece_id, chunk_index, chunk_count,
summary_marker, axis_refs
Live query: SELECT column_name FROM information_schema.columns WHERE table_name='iu_vector_sync_point' AND column_name IN ('staging_record_id','staging_payload_id','iu_staging_record_id') → 0 rows.
Since staging rows are not information_unit pieces (different schema, different table), they CANNOT appear in iu_vector_sync_point. This is a structural no-vector guarantee — no FK, no column, no path.
MARK proof did NOT touch vector store
From 03-end-to-end-proof.md:
| Quantity | Pre (inside TX) | Post (after ROLLBACK) | Delta |
|---|---|---|---|
iu_vector_sync_point rows |
152 | 152 | 0 |
Even inside the proof TX (before ROLLBACK), no vector_sync row was created by MARK or VERIFY-MARK — neither fn_iu_mark_create_manifest nor fn_iu_verify_mark writes to vector tables.
Qdrant posture
- Container
incomex-qdrant(Up 2 months, healthy) — inspected vialist_docker. - Collection
iu_core_iu_chunks: 149 points (carry-forward from 25000x). - This macro performed 0 writes to Qdrant — MCP role and apply role have no Qdrant write surface.
search_knowledge / KB
search_knowledgeindexes only KB documents underknowledge/...paths.- No staging payload (
iu_core.iu_staging_payload) is uploadable to KB byfn_iu_mark_create_manifest— the fn body writes only toiu_core.iu_staging_record+iu_core.iu_staging_payload+dot_iu_command_run. Noupload_documentcall, no KB-write path. - Confirmed:
search_knowledgecannot return pending staging payload.
Final-reports exception
Only this macro's reports (00-07 under …/v0.6-iu-core-91000x-apply-mark-to-cut-pipeline-and-proof/) enter the KB. They are operational documentation — not pending MARK payloads. Distinct concepts.
Phase D verdict
| Check | Result |
|---|---|
staging collections vector_eligible=false |
✅ both 190, 191 |
staging collections semantic_search_eligible=false |
✅ both 190, 191 |
vector_excluded=true CHECK enforced |
✅ 3/3 rows |
no structural path from staging row → iu_vector_sync_point |
✅ no FK, no shared column |
| no Qdrant write performed | ✅ |
search_knowledge cannot return pending staging payload |
✅ |
| only final reports in KB | ✅ 8 reports under one path; 0 mark_manifest payloads in KB |
Phase D = PASS.
Cross-links
- [[project_d36_no_vector_staging_zone_review_answers_freeze_2026_05_25]] — Q5 sidecar decision.
- 90000x report 08 (parent) — Layer 1/2/3 first established.
- [[feedback-iu-vector-sync-point-has-no-staging-path]] (NEW from this macro) — Layer 4 structural absence.