Topic Axis Self-Operated — 02 Self-Operated Approval Workflow (LIVE)
02 — Self-Operated Approval Workflow (Workstream A) — LIVE
Status: LIVE — 14 approval_requests rows, all status='pending'
Rehearsed BEGIN..ROLLBACK (net-zero, ×2) then committed. Independent MCP read-back confirms 14 rows, all pending. Điều-39 enforced: AI drafts, AI never approves. Only the owner sets status='approved'.
The queue (codes AXR-TOPIC-01..14)
| code | request_type | action | priority | target | recommended decision |
|---|---|---|---|---|---|
| AXR-TOPIC-01 | axis_activation | modify | high | axis_registry/AX-TOPIC | APPROVE (independent) |
| AXR-TOPIC-02 | gov_root_review | review | high | taxonomy_facets/FAC-08 | APPROVE roots KG+arch; review dot_trigger+gov |
| AXR-TOPIC-03 | topic_promotion | review | high | TOPIC-CAND:knowledge_graph | APPROVE as root (STRONG, 10 IU) |
| AXR-TOPIC-04 | topic_promotion | review | high | TOPIC-CAND:architecture | APPROVE as root (STRONG, 5 IU) |
| AXR-TOPIC-05 | topic_promotion | review | normal | TOPIC-CAND:dot_trigger | REVIEW → likely root (MODERATE, 3 IU) |
| AXR-TOPIC-06 | topic_promotion | review | normal | TOPIC-CAND:governance | REVIEW → likely root (MODERATE, 3 IU) |
| AXR-TOPIC-07 | topic_promotion | review | low | TOPIC-CAND:workflow | DEFER (WEAK, 2 IU) |
| AXR-TOPIC-08 | topic_promotion | review | low | TOPIC-CAND:cut_pipeline | GROUP under pipeline or DEFER (1 IU) |
| AXR-TOPIC-09 | topic_promotion | review | low | TOPIC-CAND:render_pipeline | GROUP under pipeline or DEFER (1 IU) |
| AXR-TOPIC-10 | taxonomy_node_create | review | critical | taxonomy/FAC-08 | AUTHORISE per-node dry-run only (unretirable births) |
| AXR-TOPIC-11 | assignment_promotion | modify | normal | axis_assignment | APPROVE after node-create |
| AXR-TOPIC-12 | ownership_bootstrap | review | high | governance_object_ownership | BLOCKED — needs real owner_gov_code/OSPA |
| AXR-TOPIC-13 | relation_vocabulary | review | normal | axis_assignment | APPROVE 6-verb vocabulary |
| AXR-TOPIC-14 | automation_route | review | low | TOPIC-CAND:knowledge_graph | APPROVE after 10/11/13 |
Each row carries (in evidence + proposed_action/current_state/source_context jsonb)
decision_type · candidate_code · evidence_count · iu_count · source_tags · proposed_action (exact SQL) · risk · irreversible_side_effect · rollback_caveat · recommended_decision · dependencies. Live current_state snapshot embedded so the owner decides without re-reading reports.
Governed vocabulary mapping (FK-satisfying)
request_type_code ∈ {rule_change, reclassify, schema_add, process_improvement}; proposed_action_code ∈ {register_axis, register_topic_node, update_item, assign_axis_owner, amend_law, create_item}. All pre-existing in apr_request_types/apr_action_types — no invented codes.
Safety record
- Auto-approve hazard handled:
action='add'auto-approves viafn_auto_approve_add(). Caught in rehearsal (3 rows flipped); all changed toaction='review'; post-commit verification = 0 non-pending. - Births disclosed: +14 provenance births (the governed approval-insert path). Not a bypass.
- Reversible:
DELETE FROM approval_requests WHERE code LIKE 'AXR-TOPIC-%'(births orphan — system-wide unretirable limitation).
Result
The human gate is now an operational, queryable, evidence-bearing queue drainable row-by-row — not a prose packet. SELECT * FROM approval_requests WHERE code LIKE 'AXR-TOPIC-%' is the owner's worklist.