RP UI Axis — 05 Taxonomy Node Rehearsal & Operator Apply Packet
05 — Taxonomy Node Creation: Rollback Rehearsal & Operator Apply Packet (Workstream D)
Status: REHEARSED (BEGIN..ROLLBACK, net-zero proven 3×). Not committed. Apply order packaged.
Triggers on taxonomy (13, live-verified)
birth_trigger_taxonomy + trg_birth_taxonomy (both fn_birth_registry_auto), trg_before_birth_gate_taxonomy (fn_birth_gate), trg_after_sync_edges_taxonomy (trg_sync_edges_taxonomy), trg_auto_code_taxonomy (gen_code_taxonomy), trg_taxonomy_fill_parent_facet, trg_taxonomy_no_cycle (chk_no_cycle), trg_taxonomy_replaced_by, trg_desc_guard_taxonomy, trg_desc_provenance_taxonomy, trg_label_assign_taxonomy, trg_validate_dot_origin_taxonomy. (trg_count_taxonomy disabled.)
Rehearsal results (each inside BEGIN..ROLLBACK; all rolled back; net-zero confirmed via independent RO query)
Probe A — fresh unique name topic_rehearsal_probe, facet 9, root:
- taxonomy: +1 →
LBL-509(facet_id 9, parent_id null, depth 0, status active).codeauto-generated bygen_code_taxonomy(generic LBL- prefix). - universal_edges: +2, both
is_auto_managed=true:taxonomy:LBL-509 -BELONGS_TO-> taxonomy_facets:FAC-08andtaxonomy_facets:FAC-08 -CONTAINS-> taxonomy:LBL-509. - birth_registry: +3 →
universal_edges::3756,universal_edges::3757(species governance_infra/atom/observed/born),entity_labels::900085(junction_table/atom/excluded/born).
Probe B — name knowledge_graph, facet 9, root:
- taxonomy: +1 →
LBL-510. universal_edges: +2 (LBL-510 ↔ FAC-08). birth_registry: +5 (2 extra births vs Probe A). - The birth-gate fired an advisory WARNING ("Tên 'knowledge_graph' đã tồn tại" once it had inserted) — the gate is warning-only, not blocking.
Key findings
- Reversible in-transaction: net-zero proven 3 times (taxonomy 58 / births 1,152,860 / edges 2,199 before and after every rollback; fac08 nodes 0).
- Side-effect anatomy per node: +1 taxonomy, +2 auto-managed node↔facet edges, +3 to +5 unretirable births.
- Birth amplification is name-dependent: a label already used elsewhere in the system (e.g.
knowledge_graph, a heavily-used tag) spawns extra junction/label births (5) vs a fresh name (3). ⇒ each candidate MUST be dry-run individually before commit. - Births are unretirable (no retire mechanism system-wide) → committing a node is a one-way door.
- Code is generic
LBL-NNN, not topic-prefixed → axis_assignment promotion (Packet 4) is an explicit remap. - Birth gate is advisory (warning), so name collisions are allowed but flagged — owner must resolve naming.
Why NOT committed here
Forbidden by macro and by prudence: creating live taxonomy nodes requires (a) GOV-COUNCIL FAC-08 root approval (Packet 2), (b) owner authorisation for unretirable births (Packet 3). No engineering blocker — purely governance.
Operator apply order (per APPROVED node — run one node at a time)
-- 0. Confirm approval ref exists (Packet 2 + Packet 3 signed).
-- 1. DRY RUN this exact node:
BEGIN;
INSERT INTO taxonomy (name, facet_id, parent_id, status, _dot_origin)
VALUES ('<approved_label>', 9, <parent_id_or_NULL>, 'active', 'GOV:<approval-code>');
-- inspect: SELECT * FROM taxonomy WHERE id>... ; edges WHERE id>... ; birth_registry WHERE id>...
-- confirm: +1 taxonomy, +2 edges, +N births, no unexpected second taxonomy row.
ROLLBACK; -- verify net-zero
-- 2. If clean, re-run identical block with COMMIT instead of ROLLBACK. Record new LBL-NNN.
-- 3. (children/edges) add taxonomy.parent_id or universal_edges (broader/narrower/related) per approved hierarchy.
-- 4. Promote assignments (Packet 4):
UPDATE axis_assignment SET node_code='LBL-NNN', status='active',
approved_by='<owner>', approval_ref='<code>'
WHERE node_code='TOPIC-CAND:<approved_label>';
-- 5. Activate axis (Packet 1) once ≥1 root approved:
UPDATE axis_registry SET status='ACTIVE', approval_ref='<code>' WHERE axis_code='AX-TOPIC';
-- 6. Verify axis surface: node shows governance_status=TAXONOMY_BACKED, lifecycle from taxonomy.status.
-- 7. Verify decision queue drains: gov_council_decision_needed=false for that node.
Suggested ordering across nodes
knowledge_graph → architecture (strong) first; dot_trigger, governance after GOV review; cut_pipeline/render_pipeline only after the pipeline parent decision; workflow deferred unless GOV approves at weak evidence.
Forbidden compliance
No taxonomy node committed. No trigger disabled. No birth bypass. No fake active root. Rehearsal-only, rolled back, net-zero proven.