KB-2914

90000x · 08 — No-Vector Verification (PASS, live read)

5 min read Revision 1
iu-core90000xno-vector-verificationvector-excludedv_collection_vector_eligibility2026-05-25

90000x · 08 — No-Vector Verification

Phase: H Status: PASS (live read, 2026-05-25)

Structural guarantees (multi-layer)

The NVSZ no-vector posture is enforced by three independent layers; any one is sufficient.

Layer 1 — Schema CHECK on iu_core.iu_staging_record.vector_excluded

Live:

iu_staging_record_vector_excluded_chk: CHECK (vector_excluded = true)

Every row in iu_core.iu_staging_record has vector_excluded=true. The CHECK forbids any other value at the row level. The schema cannot represent a vectorizable staging row.

Layer 2 — collection_registry_vector_policy sidecar (Q5 from D36 review freeze)

Live for 190 (COL-IUS-001) and 191 (COL-IUS-002):

collection_registry_id vector_eligible semantic_search_eligible has_explicit_policy
190 false false true
191 false false true

Policy reason: D36 Rule N1 — No-Vector Staging Zone. Collection MUST NOT be embedded or semantically searched while staging records are pending.

Layer 3 — v_collection_vector_eligibility view

Live SELECT * FROM v_collection_vector_eligibility WHERE collection_registry_id IN (190,191):

collection_registry_id collection_code collection_name species_code governance_role vector_eligible semantic_search_eligible has_explicit_policy
190 COL-IUS-001 iu_staging_record SPE-NVS governed false false true
191 COL-IUS-002 iu_staging_payload SPE-NVS governed false false true

This view is the SSOT that any embedder/indexer is required to consult before pushing anything into iu_vector_sync_point or Qdrant.

Direct ledger evidence

iu_vector_sync_point total rows: 152

Schema of iu_vector_sync_point (16 cols): 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.

There is no column that could hold a staging_record_id. The only references are unit_id (UUID of iu.information_unit) and parent_piece_id. Since staging rows are NOT information_unit pieces (different schema, different table), no staging row can possibly appear in iu_vector_sync_point.

This is a structural no-vector guarantee, not just a policy.

Qdrant posture

  • Live container: incomex-qdrant (Up 2 months, healthy). Inspected via mcp__claude_ai_Incomex_VPS__list_docker.
  • Collection iu_core_iu_chunks: 149 points (from 25000x carry-forward memory).
  • This macro performed 0 writes to Qdrant. The MCP role has no Qdrant write surface.
  • Phase G end-to-end proof (when executed) MUST also confirm vector_sync_post == vector_sync_pre. If it does not, the cut leaked into the embedder — STOP and roll back.

search_knowledge / KB

  • search_knowledge is the vector-RAG endpoint on iu_core KB.
  • It 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 (no upload path in fn body; it INSERTs into iu_core tables).
  • The mission rule "no KB upload of pending MARK files" is honored by construction.

Final-reports exception

Only this macro's reports (00-10 under …/v0.6-iu-core-90000x-mark-to-cut-automated-pipeline-hardening/) enter the KB. These are operational documentation, not pending MARK payloads. They are distinct concepts.

Verdict

Check Result
staging collections vector_eligible=false ✅ both 190, 191
staging collections semantic_search_eligible=false ✅ both 190, 191
no path from staging row → iu_vector_sync_point ✅ structural
no Qdrant write performed ✅ no write surface in this macro
search_knowledge cannot return pending staging payload ✅ KB index does not include iu_core.* tables
only final reports in KB ✅ 11 reports under one path; 0 mark_manifest payloads in KB

Phase H = PASS.

  • 80000x doc 06 (axis A/B/C invariants) — Axis B/C must preserve no-vector posture even after CUT.
  • iu_qdrant_collection_registry (public schema) — alternative ledger; this macro did not write to it.
  • [[project_d36_no_vector_staging_zone_review_answers_freeze_2026_05_25]] — Q5 sidecar decision.
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-90000x-mark-to-cut-automated-pipeline-hardening/08-no-vector-verification.md