RP DOT Cleanup + Anti-Drift + UI/API Handoff — 00 Readme First
00 — Readme First
Macro: REGISTRIES_PIVOT_DOT_CLEANUP_ANTIDRIFT_AND_UI_API_HANDOFF
Date: 2026-06-03
Status: PARTIAL — PASS on all design/analysis objectives; DOT execution correctly HELD (zero production mutation).
One-paragraph result
We took the RP classification cleanup from intent-level plan toward operational readiness by actually reading the live DOT scripts (mission rule: do not guess — inspect the script). That inspection produced the decisive finding of this macro: no existing pivot-domain DOT can update composition_level, species, or registry_group on an existing pivot_definitions row. dot-pivot-declare is INSERT-only; dot-matrix-update touches matrix_spec only; dot-matrix-retire touches is_active/superseded_by only. The prior intent packet (dot-pivot-declare PIV-001 composition_level=atom) is therefore not bindable to any real operation. Action A (3 composition fixes) and Action B (12 domain assignments) have no execution tool today; Action D's two retire candidates are already inactive (DOT-314 would early-exit); Action C needs no data change (the live view's derived columns are the fix). Net: zero safe DOT mutations were executable, so none were executed. Production pivot_definitions is byte-identical entry→exit (md5=4eb00c8fe4d0937325278d7e5e12b7a3).
What this macro delivers (all read-only / paste-ready)
- Authoritative DOT binding + tool analysis (doc 02) — exact CLI args from the actual scripts, and the proof that A/B are unbindable.
- Read-only rehearsal (doc 03) — target-state preview; retire+recreate workaround proven non-viable.
- Execution decision (doc 04) — correctly HELD, with the exact blocker.
- Naming decision packet (doc 05) — Action-B FAC-02 recommendations for the council; not self-ratified (genuinely semantic).
- Anti-drift health suite (doc 06) — 9 read-only checks (AD-1..AD-9), validated live; optional one-row health view (held, not applied).
- UI/API handoff (doc 07) — field contract, badges, L2 banner, JSON.
- Next RP build plan (doc 08) — author
dot-pivot-update, ratify Action B, then the schema split.
Hard facts (live, read-only, 2026-06-03)
- DB =
directus. Viewv_rp_classification_governance_maplive, 37 rows. - Breakdown: species clean 31 / missing 4 / ambiguous_meta 2 / orphan 0; composition match 21 / mismatch 3 / drill_overload 9 / no_ref 4; lane gov_home 15 / rp_local 20 / inactive 2; rg domain 15 / shape 22; FAC-02 mapped 9.
- L2 gate CLOSED: ospa 0, ownership 0, gap 210, axis/topic absent, gov_emit 0.
- Anti-drift baseline: AD-1=0, AD-2=0, AD-3=0, AD-4=3, AD-5=0, AD-6=6, AD-7 false (no L2 false claim), AD-8 true, AD-9=0.
Guardrails honored
- ❌ No manual UPDATE/INSERT/DELETE to
pivot_definitions(Đ26 §II-QUINQUIES). - ❌ No DOT executed (no bindable safe op existed; execution requires verified tool + owner-go).
- ❌ No L2 rollout, no os_proposal write, no event emit, no system_issues write, no UI/Nuxt/Directus/Qdrant mutation, no law/version change.
- ✅ No island: the live view joins governed truth and copies nothing; the optional health view was not applied.
- ✅ No claim that production governance gap=0 (gap=210, real).
ONE remaining blocker is now precisely two, both non-L2 for classification: (1) a governed update-capable pivot DOT must be authored/registered (dot-pivot-update, doc 08 / sql/05_proposed_dot_pivot_update.sh); and (2) the council must ratify Action-B FAC-02 targets (doc 05). Neither needs L2. The separate L2 governance rollout still waits on human L2/L4 ospa≥1.
Read order
00 (this) → 01 state+preflight → 02 DOT binding → 03 rehearsal → 04 execution/blocker → 05 naming packet → 06 anti-drift → 07 UI/API → 08 next build → 09 go/no-go → 10 self-review. SQL under sql/ (also mirrored at ~/one-roof-clone-finalization-2026-06-03/sql/rp_dot_cleanup/).