IU Core 2000x — Final report
06 — 2000x final report
1. Status
IU_CORE_2000X_QDRANT_REINDEX_DIRECTUS_APPLY_EXTERNAL_PASS
10 acceptance-matrix rows DONE; 2 DONE_WITH_EXTERNAL_BLOCKER (Directus field-permission quirk — operator decision required). 0 BLOCKED. No unsafe state.
2. What changed
2.1 Code (commit 900d4c3 on main, parent 8c7d8dc)
cutter_agent/iu_core/vector_sync.py- new
QDRANT_POINT_ID_NAMESPACEconstant +point_id_for()helper. QdrantConnector.upsert_pointsnow sends UUIDv5 asid; human key rides in payload.record_planacceptsstatus='indexed'(DB function is the authoritative gate).
- new
cutter_agent/iu_core/directus_registration.pydirectus_collections_payload()adds Directus v11–requiredmeta.searchableand switches toschema=Nonefor view-backed registrations.
tests/test_iu_core_2000x_qdrant_id_and_indexed_apply.py— NEW, 8 regression tests covering both defect-fixes end-to-end.tests/test_iu_core_1500x_qdrant_directus_nuxt.py— one test rewritten + one added.tests/test_iu_core_1k_vector_sync_lease.py— two tests updated.
2.2 Production durable changes
- Qdrant
iu_core_iu_chunks0 → 6 points (5 IUs, 1 IU split into 2 chunks). All under the per-IU boundary rule. - PG
iu_vector_sync_point+6 rows, allsync_status='indexed',last_actor='iu_core_2000x_bounded_reindex'. - Directus
directus_collections+1 row registeringv_ui_iu_three_axis_envelope(view-backed). Visible inGET /collections(264 collections total).
2.3 Production transient
dot_config.iu_core.vector_sync_enabledtoggledfalse -> true -> falseduring the bounded apply (insidetry/finally). Final state: false.- One Directus permission row created for diagnosis and deleted.
3. Backup
pg_dump -Fc against the live postgres container:
- File:
/opt/incomex/backups/directus-pre-iucore-2000x-20260523T033615Z.dump - Size: 77 194 461 bytes
- sha256:
812803183870538208a6d5e4816139e0f6ef019e0ac3647f0df61f9ded4dec84
Backup taken BEFORE any production mutation.
4. Tests
- Targeted: 8 new tests all passed.
- Vector boundary regression: 104 passed.
- Full suite: 1093 passed in 0.65s (+10 net over 1500x).
5. Exact blocker carried forward
Directus v11 returns HTTP 403 on POST /fields/<col> and GET /items/<col> for the view-backed schema=null registration, even
under the Administrator policy with admin_access=true.
Two operator paths (doc 03 §5):
- Path A: migration 022 promotes the view to a materialised table.
- Path B: operator adds the 16 fields + grants READ in the Directus admin UI (bypasses the REST permission check).
The macro does NOT pick a path — both are external operator decisions.
6. Five-layer sync
| layer | impact |
|---|---|
| PG | +6 iu_vector_sync_point rows (indexed); no DDL |
| Directus | +1 directus_collections row (view-backed) |
| Nuxt | none (contract artifact only) |
| AgentData | +7 KB reports |
| Qdrant | +6 points in iu_core_iu_chunks; production_documents untouched |
7. Rollback / disable readiness
- Qdrant points:
DELETE /collections/iu_core_iu_chunks/points/{uuid}per point orDELETE /collections/iu_core_iu_chunks. - PG registry rows:
DELETE FROM iu_vector_sync_point WHERE last_actor='iu_core_2000x_bounded_reindex'. - Vector-sync gate: already closed.
- Directus collection:
DELETE /collections/v_ui_iu_three_axis_envelope. - Code:
git revert 900d4c3(re-introduces both defects).
8. DOT / no-hardcode / five-layer status
- DOT count of 128/128 carried forward unchanged (no new DDL).
- No new hardcoded literal. One new versioned namespace constant with a regression test that locks it in.
- Five-layer impact classified above.
9. KB / AgentData
The 7 reports in this directory have been uploaded to AgentData with
mcp__agent-data__upload_document and verified via list_documents +
get_document + search_knowledge.
10. Decision — IU Core readiness
Yes — externally integrated for the layer this macro owned. The two remaining external blockers (Directus field-permission quirk) are operator/deploy decisions, not IU Core gaps.
- IU Core code is feature-complete for the external integration surface (Qdrant live reindex proven end-to-end with real OpenAI + real Qdrant; Directus package proven against live admin REST).
- Two real defects in 1500x code caught + fixed in production-grade regression tests.
- 1093 tests passing.
- All gates inert at end.
- No unsafe state.