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 invector_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 fromv_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 correctedrecord_plan+QdrantConnectorcontract.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.