90000x · 08 — No-Vector Verification (PASS, live read)
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 viamcp__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_knowledgeis the vector-RAG endpoint oniu_coreKB.- It indexes only KB documents under
knowledge/...paths. - No staging payload (
iu_core.iu_staging_payload) is uploadable to KB byfn_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.
Cross-links
- 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.