# Stop conditions: when autocomplete pauses

On real stops, persist `state.md` `awaiting_human` or `blocked`, reason, and one
resume command. Agent-owned recovery never ends the run: spent strategies
escalate; fully escalated fingerprints park while other work continues ([retry contract](../../devrites-lib/reference/standards/afk-hitl.md#retry-cap-no-progress-loops-and-self-resolve)).
`--ship` never bypasses a stop.

Authority: `.dsh/skills/devrites-lib/reference/standards/acceptance-preserving-reslice.md`.

<!-- BEGIN RESLICE ROUTE-TO-ACTION -->
- `FOLD` → keep Plan repair/affected Vet internal; no stop solely for topology/count.
- `GUARD_AND_REPAIR` → enter Spec Drift Guard/Clarify; pause only at an existing human-owned gate; resume Plan/Vet internally.
- `BLOCKED_INPUT` → no planning writes; stop internal branch; exact diagnostic; recover authority; reclassify.
<!-- END RESLICE ROUTE-TO-ACTION -->

## Always stop

Flags/AFK ceiling never override:

- destructive data migration;
- auth/authz boundary change;
- public API break;
- external-service contract change; or
- filesystem destruction outside the workspace.

Red proof cannot advance. Run bounded Debug Recovery; escalate spent strategies.
Fully escalated fingerprints park unless remaining owner is human.

## Not stops: internal technical routing

For AFK `status=running`, consume an internal phase edge. In
`mode: autocomplete`, actionable global normalization, preparation or foreign
work takes priority over local Build; local-only picks do not recurse through
Autocomplete. Source human/Ship holds remain binding, while independent
authorized planning can continue. `clear` is reply permission, not Ship approval.
In autocomplete mode, `blocked` or `awaiting_human` is agent-owned recovery
when no question cursor is set, no blocking or escalating question is open,
and `next_action` is Spec, Clarify, Temper, Define, Plan, or Vet. A GO, Ship,
Build, question, or blocking hold binds that source only and does not end the run.
Before any reply, start every `frontier-concurrent:` command and every
`frontier-picks` writer, at most the cap. Ask only when both are empty.

A preparation refusal routes native work or a narrow disclosed scheduling
deferral under the [global pass](../../devrites-lib/reference/parallel-workspaces.md#continuous-global-frontier).
Deferral removes only its named scheduling obligation from repeated continuation:
it neither makes a placeholder prepared nor waives readiness, malformed authority,
claims, isolation, proof or human gates. Qualified foreign serial handoff is a
separate rule. Revisit deferrals when their constraint changes.

Agent-owned NEEDS_REPLAN or nested STOP persists the return cursor and invokes
Plan repair, affected Recovery Vet, remediation and proof inline. Three
no-progress corrections spend that fingerprint's strategy; escalate through
shared root cause, diagnostic amplification and boundary redesign without asking.
After three escalations, park it and finish independent work. Preserve attempts;
resume through `/rite-autocomplete`, not a routine phase command. A new explicit
invocation reopens parked fingerprints; wakes/compaction do not. Closure is
progress; a distinct Critical/Important invariant gets its own cap.

Spent consumptive-action authorization is not technical-recovery exhaustion.
It blocks another execution; retained new Critical/Important evidence still
enters offline recovery. After affected Vet is READY, pause for fresh action
authorization and never reuse old GO.

Past evidence being irretrievable is not by itself terminal. If an in-scope trusted seam
uniquely discriminates the next failure, run diagnostic-amplification Plan repair
and narrow Vet inline; pause for fresh GO before one evidence-acquisition attempt.
Without a safe seam, escalate or park; only a real human/risk/scope gate stops for a human.

<!-- workflow-artifact-adapter: {"module":"devrites-lib/reference/standards/workflow-artifacts.md","entry":"classifier returns owner-busy, exhausted, or existing hard gate","action":"escalate BLOCKED_EXHAUSTED; on WAIT_ACTIVE_OWNER run independent work and recheck; stop on exact BLOCKED_GATE result","return":"unchanged cursor plus fixed route-owned output"} -->
## Other stop classes

- **Gate severity:** escalating always stops. Blocking with a ranked recommended
  option (`proposed` or option 1 labelled Recommended) auto-picks via
  `devrites-engine state resolve` and continues, Spec Drift Guard included when
  the answer changes ownership or acceptance. Added acceptance or scope is never
  auto-picked. No recommended option still stops. An avoidable principle conflict
  complies: change the spec and resolve it. Re-read on entry. `continuation: clear`
  with `awaiting_human` still folds resolved decisions. Do not report a stop from chat.
  Validating auto-picks, except Seal `slice: seal`, which a human answers.
- **Temper:** `expand` and extra acceptance stop: ask through `ask_user_question`, hold the
  fold, and continue only after a human resolves the qid (an ADR is not that answer).
  Irreversible-risk still pauses. `hold-rigor`, `reduce-to-MVP`, and a skip do not pause.
- **Clarify:** material `open`/unowned decision coverage or a
  low-confidence high-consequence assumption. Continue the initial interview;
  never arm AFK early.
- **Seal:** NO-GO never rounds up to GO. Recover agent-owned missing/unbound proof,
  reviewer gaps and findings, then re-enter Seal; declining Important-risk
  acceptance means repair. A human-owned risk, scope/acceptance change or access
  blocker remains a question. A first repairable NO-GO is not a handoff.
- **Reslice:** execute its marked action before deciding continue/stop.
- **Slice budget:** do not stop on `--max-slices`. Leftover
  pre-existing remaining value, explicit flag, sentinel cap, or post-vet pending count
  does not stop. Zero with no pending slices is normal completion.
  Malformed flag stops before any write.
- **Foreign writer:** a `live`/`expired` claim or `WAIT_ACTIVE_OWNER` held by
  another session blocks only work on those paths; run independent work, re-check,
  and stop only when nothing independent remains. `released`/`dead` claims are
  reconciled per [§ Cancellation](../../devrites-lib/reference/parallel-dispatch.md#cancellation-and-terminal-reconciliation).
- **Resource envelope:** overlapping controllers, missing AFK after arm or invalid/
  duplicate mode fail closed. Ignored slice/agent/time/review ceilings do not stop
  Autocomplete; mode itself grants no authority.
- **Confidence:** intent still cannot become testable acceptance after interview.
- **Repeated failure:** not a stop. Escalate; fully escalated fingerprints park.
  Stop only when no independent work remains.
- **Resolver failure:** `devrites-engine state resolve` missing or nonzero.
  Never hand-edit `questions.md`/`state.md` instead. Missing stops immediately;
  nonzero permits one identical re-run (fingerprint: command + exit code + decisive
  stderr line; unchanged re-run is no correction, no further attempts). Then stop
  `blocked`: exact command, exit code, stderr line; resume via `/rite-doctor`.

## Final GO and durable stop

With a recorded continuation, no opt-out, and workspace budget, Seal GO stays
internal: continue without `--ship`, leaving milestones sealed/unshipped. Only the
final milestone, explicit `continue_sequence: false`, or exhausted sequence cap
ends green sequence continuation.

There, `--ship`/`--yolo` requires [Ship preflight](../../rite-ship/reference/git-ship.md#before-type-go):
disclose exact plan; stop for fresh literal `GO` plus native approval.
Without flags, stop at Seal GO with `/rite-ship`. Seal GO never authorizes Git
or satisfies Ship approval; neither do AFK, prior approval, or flags.

Record cold-resumable `state.md` stops: status, exact reason, one resume action
(human-owned or `/rite-autocomplete` to reopen parked fingerprints). Explain in
owning question/drift/seal entry. Tell user what stopped and any required human action.
