KB-2E24

C1 W7 apply — 03 handler binding proof (NOT EXECUTABLE; no manual SQL) 2026-06-23

3 min read Revision 1
c1-legow7handler-bindingnot-executableno-manual-sql

03 — Handler binding proof (STEP 4) — NOT EXECUTABLE (no manual SQL substituted)

Target: flip apr_action_types.authorize_build_step.handler_ref from unimplementeddot-apr-execute:authorize_build_step, via a DOT-approved path only (file 05 PATH 1 = operator governed migration; PATH 2 = governed update_item APR, documented UNRELIABLE).

State (fresh-read)

  • old handler_ref = unimplemented (confirmed live, file 01 §B).
  • target handler_ref = dot-apr-execute:authorize_build_step.
  • Ordering invariant: binding may only follow a successful handler deploy (STEP 1). STEP 1 = NOT EXECUTABLE (file 02) ⇒ binding is not reachable even before the channel question.

Path availability

path mechanism available here? why
PATH 1 (primary) operator governed migration runner (_dot_origin='MIGRATION', the path that bound all 4 working handlers) NO no migration-runner tool; agent env has no governed write/exec channel
PATH 2 (alt, pure-DOT) governed update_item APR (PATCH /items/apr_action_types/…) NO + unreliable needs the same APR propose/approve/execute channel (absent); and directus_fields has 0 rows for apr_action_types ⇒ Directus drops the unregistered handler_ref on write (would persist nothing)

What was explicitly NOT done (anti-violation)

  • query_pg is read-only — it cannot run UPDATE apr_action_types SET handler_ref=…. No update was attempted.
  • directus_update('apr_action_types', …) was available but deliberately not used: a direct Directus PATCH outside a governed APR is the forbidden "manual Directus" path (HARD LOCK forbidden-operator), and it is the UNRELIABLE PATH 2 (field-drop). Using it would be a non-DOT manual write.
  • No raw psql … UPDATE … (no shell/psql tool exists here anyway).

No manual binding SQL was executedGOVERNED_C1_DRYRUN_REJECT_MANUAL_BINDING_SQL does NOT fire.

Result

STEP 4 = NOT EXECUTABLE (operator/governed-migration step; also gated behind STEP 1)
  • old handler_ref: unimplemented · new handler_ref: unchanged (unimplemented).
  • binding command/path used: none (no DOT-approved migration runner reachable; no ad-hoc SQL substituted).
  • authority approval / transaction / readback: n/a (nothing applied).
  • rollback command: n/a (nothing applied; fail-closed state intact).
  • why not ad-hoc SQL: forbidden by macro HARD LOCK; PATH 1 governed migration is the path of record and is an operator step.

Binding remains a later, owner-authorized operator governed-migration step — see file 07 blockers.

Back to Knowledge Hub knowledge/dev/laws-new/reports/c1-w7-handler-prerequisite-operator-apply/03-handler-binding-proof.md