# ADR: Mandatory Pre-Dispatch Advice Authority

Status: Accepted on 2026-07-13.

## Context

ADR 0002 established a read-only conductor and typed dispatch boundary, but an
instruction to request advice was only prompt policy. Prompt policy cannot prove
that a fresh advisor reviewed the exact executor-affecting intent, prevent advice
from being reused after a change, or stop direct dispatch when the advisor
recommends revision or vetoes the work.

OMS needs mandatory cross-engine advice without adding a daemon, a generic
command tool, or model-owned authority.

## Decision

1. The conductor bridge exposes version-bound `mcp__oms__prepare_dispatch`
   followed by distinct `mcp__oms__advise_dispatch` before
   `mcp__oms__propose_dispatch`. The complete bridge has seven narrow tools.
2. Advice accepts the distinct dispatch-intent schema. OMS canonicalizes every
   executor-affecting field, including the operation nonce, and computes the
   exact SHA-256 digest.
3. A fresh Codex contact requires a separate human-confirmed pre-dispatch-advice
   authorization bound to the live-delivery authorization, conductor session,
   and repository. OMS journals the contact before launching the provider.
4. Model output contains only the intent digest, `approve | revise | veto`,
   summary, recommendations, and risks. OMS owns provider-request,
   fresh-session, contact-reference, and authorization identities and mints the
   protected immutable evidence.
5. Advice operations persist `prepared -> contacting -> completed | blocked`.
   The contacting claim includes its OMS Linux process identity (PID, boot ID,
   and process start ticks). A live owner remains in progress without mutation;
   a dead, restarted, or PID-reused owner is ambiguous and never causes an
   automatic second provider launch. At most three unique intents may be
   advised for one ticket attempt. Only one intent for that ticket attempt and
   lease may be prepared or contacting at a time.
   A veto is terminal for the ticket attempt and lease. After `revise`, another
   contact requires a substantive canonical-intent change; changing only the
   operation nonce is not a revision.
6. Dispatch admission recomputes the intent digest and requires exact immutable
   `approve` evidence for the unchanged ticket and intent before creating a
   dispatch record, worker reservation, or delivery event.
7. The accepted dispatch stores the intent digest and evidence reference.
   Worker delivery independently validates both before any provider probe or
   pane creation. Historical resolved records remain readable; unresolved
   historical records without this authority cannot advance.

## Consequences

- Advice is mandatory authority, not an optional prompt convention.
- Any substantively revised intent requires fresh advice; veto, nonce-only
  resubmission, missing evidence, tampering, replay ambiguity, or changed
  authority fails closed.
- Deterministic verification remains the final vote after execution, and the
  opposite-engine grader remains supplemental.
- The conductor remains read-only and agentic through seven narrow tools. OMS
  still adds no daemon, generic workflow engine, shell tool, or merge/release
  authority.
