---
name: eval-abort
description: Halt and seal an in-flight Evaluator audit run. Writes an audit-refusal record to the Ledger, seals any open Frame Registry record for the run, and emits an abort acknowledgement to the operator. Does NOT emit a verdict to the bridge.
argument-hint: <run-id> [--reason=<short-description>]
---

# /eval-abort

## Purpose

Halt an in-flight audit run before it reaches R9 verdict emission. Used for operator aborts, test-environment teardown, and recovery from external interruption. Produces a clean refusal trail in the Ledger and seals the Frame Registry record without a verdict.

**You MUST invoke the `evaluator-router` skill. Do NOT execute the abort procedure inline.**

## Argument Parsing

Required:
- `<run-id>` -- UUID of the in-flight run to abort. Must match an existing run with an unsealed Frame Registry record OR an open `audit-refusal`-pending state.

Optional:
- `--reason=<short-description>` -- free-text reason stamped into the `audit-refusal` record. Default: `OPERATOR_ABORT`.

## Orchestration (what the router does)

- **R0 Intake** -- parse command, look up `<run-id>`. If not found OR run already sealed, return operator-facing notice and exit.
- **R-ABORT path** -- the router follows the abort flow in `ORCHESTRATION_MEGAPROMPT.md` Section 3.2:
  1. Write `audit-refusal` record via E4 render authority, with `refusal_reason = OPERATOR_ABORT` (or the supplied reason) and `abort_phase = <last-completed-R-phase>`.
  2. Request E8 to seal the Frame Registry record if one exists for this run (sets `sealed_at` and `overall_verdict = REFUSE`).
  3. Emit abort acknowledgement to operator; no bridge handoff.
  4. Request E1 to run a post-abort integrity check (is the silo still clean?). On any FAIL, surface separately.
  5. Exit.

**Aborts do NOT emit a verdict token.** The top-level loop receives no message from the bridge for an aborted run. If RAM is waiting on an evaluator reply, RAM's orchestrator must handle abort semantics per its own timeout policy.

## Outputs

On success:

1. `audit-refusal` record in the Evaluator Search Ledger with:
   - `refusal_reason`
   - `abort_phase` (which R-phase was active)
   - `escalated_to = operator`
   - `timestamp_utc`
2. Sealed Frame Registry record (if one existed) with `overall_verdict = REFUSE`.
3. Operator acknowledgement.

## Refusal / Halt Conditions

- Run not found -> operator notice; no state mutation.
- Run already sealed -> operator notice; no state mutation.
- E1 post-abort integrity check FAIL -> escalate to operator AND evaluator-engineering-max; indicates the silo may have been breached during abort.

## Examples

```
/eval-abort eval-run-xyz789

/eval-abort eval-run-xyz789 --reason=TEST_TEARDOWN

/eval-abort eval-run-xyz789 --reason=OPERATOR_INTERRUPT
```

## Anti-Patterns (operator-facing)

- **Do NOT** call `/eval-abort` to force a PASS. Aborts produce no verdict. If a PASS is desired, let the pipeline complete and let E7 decide.
- **Do NOT** call `/eval-abort` on a sealed run expecting state mutation. Sealed runs are immutable.
- **Do NOT** expect `/eval-abort` to unblock RAM waiting on a bridge reply. The bridge receives nothing; RAM's timeout handles this.
- **Do NOT** assume an abort skips E1 post-abort integrity check. Every abort runs E1 post-flight.

**You MUST invoke the `evaluator-router` skill. Do NOT execute the abort procedure inline.**
