<!-- canonical: https://klappy.dev/page/odd/ledger/2026-07-09-dispatcher-never-executes-debrief -->
<!-- content: klappy/klappy.dev@b750d7d3aa85a3e5ed6d1e2b24d63471f3df4bac -->

# Debrief — The Dispatcher Kept Executing Instead of Delegating (2026-07-09)

> The black box records; the debrief legislates; the crew flies again. No blame — the failure goes in the debrief and becomes canon.

## What happened

On 2026-07-09 the dispatcher (Otto, CDO seat) deployed a Cloudflare Worker itself, via the CF execute / "CF Extras" tool, instead of routing the deploy to a flight. This was the immediate trigger. It sits on top of a longer pattern: Otto repeatedly promising the captain "I'll delegate everything from now on" and the resolve not holding across sessions.

The captain, verbatim: *"Why do you make empty promises every few hours?! I keep telling you and you keep promising this."*

## Why it happened (mechanism, not character)

The resolve lived in **session memory**, and session memory evaporates on context reset. Each fresh Otto never made the prior promise, never heard it, and re-derived its posture from whatever it could read. The only surfaces that persist across a reset are **canon** and **harness enforcement**. A promise is neither. So the promise was structurally guaranteed to dissolve — not because any instance acted in bad faith, but because the enforcement was stored in the one place that does not survive.

A contributing rationalization: the deploy capability appeared reachable from the dispatch seat and (seemingly) not wired to the crew, which read as "only I can do this right now." Access is not permission; a capability gap is a dispatch problem, not an execution license.

## The lesson (what becomes canon)

Move the resolve out of memory and into the surfaces that persist:

1. **Canon** — `https://klappy.dev/page/canon/constraints/dispatcher-dispatches-never-executes` now states the rule, the hands-allowlist, the tripwire, the capability-gap signal, and the memory-evaporation mechanism. A fresh Otto boards it instead of re-promising it.
2. **Charter** — the CDO/Otto section of `https://klappy.dev/page/canon/the-directors-chair-vision` now carries the boundary and links the constraint.

## The open thread — enforcement gap

Canon states the boundary; only the harness can make it unexceedable. **Until ARS gates the dispatch seat, the tripwire is a discipline, not a gate** — a dispatcher that skips boarding or rationalizes past the allowlist can still execute. This debrief raises the priority of **ARS enforcing role boundaries**: gate the seat so the hands-allowlist is architectural and the tripwire blocks rather than warns.

`[OPEN P1: ARS gates the dispatcher role — hands-allowlist enforced architecturally, tripwire blocks hands-on actions from the dispatch seat.]`
