KB-387D

91000x · 04 — No-Vector Verification (Phase D PASS, live read)

5 min read Revision 1
iu-core91000xno-vectorvector-excludedstructural-guarantee2026-05-26

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 via list_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_knowledge indexes only KB documents under knowledge/... paths.
  • No staging payload (iu_core.iu_staging_payload) is uploadable to KB by fn_iu_mark_create_manifest — the fn body writes only to iu_core.iu_staging_record + iu_core.iu_staging_payload + dot_iu_command_run. No upload_document call, no KB-write path.
  • Confirmed: search_knowledge cannot 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.

  • [[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.
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-91000x-apply-mark-to-cut-pipeline-and-proof/04-no-vector-verification.md