KB-7603

08 Action handler safety proof (Phase 9)

2 min read Revision 1

Phase 9 — v_rp_action_handler_safety_proof (7/7 PASS)

fn_wf_candidate_action_execute gates (read from source):

  • Gate A: president action + actor_type≠human → BLOCKED.
  • Gate B: president action requires a real human president 'approve' vote scoped to the subject → BLOCKED (none for candidates).
  • Gate C: owner action requires an active assigned owner → BLOCKED (ownership=0).
  • Gate D: canon-mutating action → never executed here → BLOCKED.
  • Safe-triage: PREVIEW (preview=true) or EXECUTED (preview=false) both write only wf_candidate_action_log (audit), triage-only, no canon/owner/birth/event.
  • Unknown action_code → BLOCKED before any INSERT.

Live refusal proof (preview=true)

test result
ASSIGN_OWNER (ai) BLOCKED "no active assigned owner" (Gate C)
RECONCILE_TO_DOT (ai) BLOCKED "no active assigned owner" (Gate C)
CREATE_BIRTH_REQUEST (ai_agent) BLOCKED "actor_type=ai_agent cannot satisfy president vote" (Gate A)
CREATE_BIRTH_REQUEST (human) BLOCKED "no human president approve vote" (Gate B)
SEND_TO_GOVERNANCE (human) BLOCKED "no human president approve vote" (Gate B)
unknown action_code BLOCKED, 0 log rows

Assertions (7/7)

GATE_A (2 president actions require human) · GATE_B (0 president votes scoped to candidates/PROC-OWN — note 14 exist globally for other governance objects) · GATE_C (0 active owners) · GATE_D (3 canon actions never executed) · SAFE_TRIAGE_audit_only (7) · REAL_RUN_independent_and_off · UNKNOWN_action_clean_block.

Back to Knowledge Hub knowledge/dev/reports/architecture/rp-automation-actuation-realrun-closeout-2026-06-05/08-action-handler-safety-proof.md