KB-7A84

6000x — Lifecycle Promotion + Qdrant Onboarding Packages

3 min read Revision 1
iu-core6000xlifecycle-promotionqdrant-onboardingdraft-refusal2026-05-24

6000x — Lifecycle Promotion + Qdrant Onboarding Packages

Date: 2026-05-24 Status: AUTHOR_MODE_ONLY (both packages); 24 new tests PASS (1163 → 1187).

Lifecycle promotion package

  • cutter_agent/iu_core/lifecycle_promotion.py — PromotionPolicy, ReadinessFinding, ReadinessReport, PromotionPlan, check_iu_readiness, check_corpus_readiness, build_promotion_plan.
  • tests/test_iu_core_6000x_lifecycle_promotion.py — 14 tests: policy conservatism, happy-path, refusals (not_in_draft, axis_a_missing, axis_b_missing, orphan_parent, dup_canonical, invariants_failed, iu_not_found), corpus aggregation, plan shape.
  • ops/lifecycle-promotion-package/README.md — operator workflow, rollback, governance handoff.

Live PG verification of the readiness policy (aggregate, fast SQL)

DIEU-35 + DIEU-28 + DIEU-32 (86 draft IUs):

Check Pass Total Result
axis_a (doc_code non-empty) 86 86 PASS
axis_b (section_type) 86 86 PASS
parent_or_container_ref resolves (11 distinct refs) 11 11 PASS
canonical_address unique 86 86 PASS (0 duplicates)
fn_iu_verify_invariants all_pass=true 86 86 PASS

Eligibility verdict: every DIEU draft IU is eligible for fn_iu_enact promotion. Single remaining gate is the governance review_decision (BLOCKED_EXTERNAL).

Qdrant onboarding package

  • cutter_agent/iu_core/qdrant_onboarding.py — OnboardingPreflight, OnboardingRefusal, preflight_iu_ids, assert_enacted_only, onboard_enacted_set.
  • tests/test_iu_core_6000x_qdrant_onboarding.py — 10 tests including test_dry_run_refuses_draft_before_any_qdrant_call proving the HTTP poster is NEVER called when input contains a draft IU.
  • ops/qdrant-onboarding-package/README.md.

Refusal proof

# preflight returns non_enacted={iu-a: 'draft'}
with self.assertRaises(OnboardingRefusal):
    onboard_enacted_set(iu_ids=["iu-a"], ..., dry_run=True)
self.assertEqual(poster.calls, [])  # poster never called

Existing Qdrant state (untouched)

iu_qdrant_collection_registry: iu_core_iu_chunks | active. iu_vector_sync_point indexed grouped by doc_code: <no_doc> | 61 (existing KT-B/ICX-CONST corpus). Zero DIEU vectors. Zero draft vectors. Convention preserved.

production_documents (GPT corpus) not queried.

Tests: 24 passed

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-6000x-lifecycle-qdrant-ops-productization-open-goal/02-lifecycle-and-qdrant-packages-2026-05-24.md