KB-26E6

RP DOT Pivot-Update — 01 State Recovery + Live Preflight

4 min read Revision 1
registries-pivotpreflightdieu262026-06-03

01 — State Recovery + Live Preflight

State recovered (read, not guessed)

  • GPT review gpt-review-rp-dot-cleanup-partial-dot-update-gap-next-author-and-cleanup-macro-2026-06-03.md — confirmed the true blocker: existing pivot DOT tools cannot UPDATE classification fields on an existing row.
  • Prior packages (DOT cleanup partial; classification cleanup + view apply; governance attach) — the mapping view v_rp_classification_governance_map is LIVE in prod and the cleanup remained: 3 composition fixes, 12 naming, 2 retire.
  • Đ26 v4.0 Pivot Law §II-QUINQUIES — pivot mutation via DOT only ("KHÔNG INSERT tay"); 1F: pivot_results refresh by cron + PG trigger is the designed auto-update; §II-TER + Đ3: every DOT must carry a description.
  • Đ35 DOT Governance v5.2 + law_dot_enforcement — laws map to enforcing DOT codes (executor/auditor); registration of DOT tools is governed.
  • Live DOT scripts at /opt/incomex/dot/bin/ read directly via ssh (read_file denies dot/bin): TEMPLATE-DOT-SCRIPT, dot-pivot-declare, dot-matrix-update, dot-matrix-retire, dot-dot-register, dot-misclass-scanner, config/environment.sh.

Exact DOT gap (confirmed)

Tool Code Can it update composition_level/species/registry_group on an existing row?
dot-pivot-declare DOT-113 No — INSERT-only (dup-guarded on source_object+filter_spec)
dot-matrix-update DOT-313 No — touches matrix_spec + name only
dot-matrix-retire DOT-314 No — soft-delete (is_active=false) only
dot-pivot-update (new) Yes — this macro authored it

Target fields (allowlisted)

composition_level · species · registry_group · description (matrix_spec deliberately excluded → that is dot-matrix-update's domain.)

Lawful mutation path

UPDATE pivot_definitions SET <allowlisted_field> WHERE code=<PIV-xxx> issued only by a governed DOT tool, validated against entity_species (species truth) and the Đ26 composition ladder, firing the existing statement-level refresh trigger exactly once (Đ26 §II-QUINQUIES 1F).

Live preflight (prod=directus, read-only via query_pg)

Gate Value Note
DB directus
v_rp_classification_governance_map 37 rows live
pivot_definitions 37 (35 active / 2 inactive) md5 70d6df05501a7de91e24b848168c5b03
composition_status match 21 / mismatch 3 / drill_overload 9 / no_ref 4 mismatch = cleanup target
L2 ownership 0 gate CLOSED
L2 v_object_owner_gap 210 not-yet-governed signal (NOT a coverage claim)
L2 gov_emit (event_outbox domain=governance) 0 inert
axis_assignment / topic_taxonomy_map tables absent L2 skeleton inert
idle-in-transaction 0 clean
dot_tools total 309 dot-pivot-update absent (update_exists=0)
pivot DOT family DOT-113/114/307/308/312–315 mapped
triggers on pivot_definitions 3 (refresh stmt-level; birth INSERT-only; matrix WHEN matrix_spec NOT NULL) UPDATE fires refresh only
backup/rollback BEGIN..ROLLBACK feasible (refresh fns are xact-safe, no NOTIFY/dblink)

Gate verdict: all preflight gates pass for a read-only + rehearsal path. The single gate that fails for production commit is governed registration (credentials absent) → downgrade Objective D commit to staged, per mission §2.

The 3 deterministic composition fixes (governed, from entity_species)

Pivot source_object species governed comp current fix
PIV-001 meta_catalog catalog atom molecule molecule→atom
PIV-016 entity_species species meta atom atom→meta
PIV-021 task_comments checkpoint_support molecule atom atom→molecule

Each fix sets composition_level := entity_species.composition_level for the pivot's governed species — fully deterministic, never hardcoded.

Back to Knowledge Hub knowledge/dev/reports/architecture/registries-pivot-dot-pivot-update-author-register-cleanup-2026-06-03/01-state-recovery-and-live-preflight.md