KB-7847

IU Core 2000x — External integration acceptance matrix · DOT · five-layer

4 min read Revision 1
iu-core2000xacceptance-matrixdotfive-layer

05 — External integration acceptance matrix · DOT · five-layer

1. External integration acceptance matrix

# Row Status Evidence
1 Qdrant dedicated collection (iu_core_iu_chunks) DONE live, 1536/Cosine/green, separate from production_documents
2 Bounded live reindex (3–10 IUs) DONE 5 IUs / 6 points indexed via apply_iu_set — doc 02
3 Per-IU vector boundary (3-layer enforcement) DONE app assert_boundary + fn fn_iu_vector_sync_record_v2 + DB CHECK + unique_unit_ids=5 in scroll
4 AgentData semantic sync DONE 7 KB reports uploaded + verified
5 Directus read-only collection registration DONE_WITH_EXTERNAL_BLOCKER directus_collections row persists; POST /fields 403 — Directus v11 quirk on view-backed schema:null (doc 03)
6 Directus read-only permissions DONE_WITH_EXTERNAL_BLOCKER test permission row created+deleted; blocked by same root cause
7 Nuxt assembly contract DONE built end-to-end against live registration; 10 filters / 5 tab groups / 5 rules; doc 04
8 Internal delivery seam DONE (carried forward) 1500x state preserved; no external delivery happened
9 Text-as-code apply DONE (carried forward) 1500x state preserved; no apply happened in 2000x
10 OperatorRuntime governed plan/apply/verify DONE (carried forward) gate stayed inert; no operator mutation in 2000x
11 DOT / no-hardcode DONE no new DDL; one new named constant (QDRANT_POINT_ID_NAMESPACE); registry/config-driven discovery throughout
12 Rollback / disable DONE Qdrant DELETE, registry retire, gate close, Directus collection delete, code revert — all enumerated in docs 02 §7 and 03 §4

Summary: 10 DONE + 2 DONE_WITH_EXTERNAL_BLOCKER. 0 BLOCKED. 0 PARTIAL.

2. DOT / no-hardcode

  • DDL surface unchanged. 2000x does not author a new migration — every PG object touched is governed by 1500x's migration 021 + earlier. DOT count of 128/128 remains valid (the 1500x baseline).
  • No new hardcoded literal. The one new constant QDRANT_POINT_ID_NAMESPACE = "iu-core.qdrant.point-id.v1" is a versioned namespace anchor, declared once in vector_sync.py, with a regression test that asserts it.
  • Discovery-first throughout. Qdrant collection name, dim, distance, embedder model all come from v_iu_qdrant_collection_active. IU candidates come from v_ui_iu_three_axis_envelope + unit_version. No host/container/db/API URL hardcoded outside CLI args / config.

3. Five-layer impact (rolled up)

layer impact
PG 6 new iu_vector_sync_point rows (status='indexed'); no DDL; gate toggled and closed
Directus 1 row in directus_collections (v_ui_iu_three_axis_envelope, view-backed)
Nuxt none (contract artifact only)
AgentData +7 KB reports (uploaded + list/get/search verified)
Qdrant iu_core_iu_chunks 0 → 6 live points; production_documents untouched

4. Test surface

  • 1083 → 1093 tests (+10 net):
    • tests/test_iu_core_2000x_qdrant_id_and_indexed_apply.py: 8 new tests covering both defect-fixes end-to-end.
    • tests/test_iu_core_1k_vector_sync_lease.py: 2 tests updated to match the corrected record_plan + QdrantConnector contract.
    • tests/test_iu_core_1500x_qdrant_directus_nuxt.py: 1 test renamed
      • rewritten + 1 added.

5. Constitutional anchors preserved

  • Per-IU vector boundary rule. Three-layer enforcement intact; Qdrant payload audited.
  • UI assembly boundary (PG → Directus → Nuxt). No Nuxt code, no direct PG, no Directus bypass.
  • Reversible-by-default. Every change in this macro has a rollback path.
  • AgentData report gate. 7 KB reports uploaded + verified.
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-2000x-qdrant-reindex-directus-apply-external-pass-open-goal/05-acceptance-matrix-and-dot.md