KB-4740
RP Classification Cleanup — 07 Next RP Implementation Plan
4 min read Revision 1
registries-pivotimplementation-plannext-macroanti-driftschema-split2026-06-03
07 — Next RP Implementation Plan
What can be committed / used NOW (no gate)
- The view is live — RP UI/API consume
v_rp_classification_governance_mapread-only today (doc 06). RP can show governed badges, the cleanup dashboard, and the L2-gate banner immediately. - Read-only verification suite (doc 05) can run on any schedule (cron/DOT-114 health) to detect new drift.
What must be DOT-mediated (owner-go, no L2 needed)
- Action A — 3 composition fixes via
dot-pivot-declare(PIV-001→atom, PIV-016→meta, PIV-021→molecule). - Action D — 2 retires (PIV-020 deprecate; MTX-TEST via
dot-matrix-retire). - Action B — 12 domain assignments after the council ratifies FAC-02 targets (doc 04 table). May require adding a governed label (e.g. "Quy trình") via
classification.labelDOTs.
All of the above are L1 classification operations and do NOT require L2 rollout.
What genuinely waits for L2 rollout (ospa≥1)
- Nothing in RP classification. Ownership/axis/topic governance (L2) is independent. RP classification operation is complete at L1. The L2 blocker (human L2/L4 ratification, ospa≥1) gates only the separate governance-rollout macro
ONE_ROOF_PRODUCTION_ROLLOUT_EXECUTE_ON_RATIFICATION.
Anti-drift — stop returning to free-text (next macro design)
The view fixes interpretation without a schema change. To stop drift at the source, the next macro should design (via dot-schema-* DOTs, not manual DDL):
- Split
registry_groupinto two governed columns:domain_facet→ FK/CHECK to FAC-02 governed labels (the what-role axis).pivot_kind→ RP-local enum {default, cross_table, l2_drill, matrix, test} (the pivot-shape axis).
- De-overload
composition_level: adddrill_levelfor RP-local drill pivots; restrictcomposition_levelto the governed entity-composition ladder, derived fromspecieswhere applicable. speciesintegrity: CHECK/FK sospeciesonly acceptsentity_species.species_code(the view already proves 0 orphans — make it enforced).- Declare-time validation:
dot-pivot-declarevalidatesdomain_facet ∈ FAC-02,species ∈ entity_species,composition_levelconsistent withspecies(or explicit drill override). This makes the governed mapping the only way to write.
Until that schema split lands, the view is the contract and the DOT packet is the cleanup mechanism.
Roadmap
[DONE] view apply (this macro)
→ REGISTRIES_PIVOT_CLASSIFICATION_DOT_CLEANUP_AND_ANTIDRIFT (next; owner-go)
├─ council ratifies Action-B FAC-02 targets
├─ run DOT packet (Actions A, B, D) via dot-pivot-declare / dot-matrix-retire
├─ re-run V1–V10 → target: mismatch=0, inactive=0, orphan=0
└─ design domain_facet / pivot_kind / drill_level schema split (dot-schema-*)
∥ (independent) ONE_ROOF_PRODUCTION_ROLLOUT_EXECUTE_ON_RATIFICATION (L2, gated ospa≥1)
Guardrails carried forward
- G1 never claim coverage while gap>0. G2 never treat clone as prod. G3 no island. G4 preflight-gated. G5 map, don't fork. G6 (new): never manual-UPDATE pivots — DOT only (Đ26 §II-QUINQUIES).