> ## Documentation Index
> Fetch the complete documentation index at: https://runinfra.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Runbook execution lifecycle

> What locks when you accept a runbook, how to revise an accepted plan, and what happens to a run that sits parked without activity.

A runbook moves through three states you can act on: a **draft** you can still edit, an **accepted** plan waiting to run or already running, and a **terminal** result. This page covers what changes at each boundary, because the accepted boundary is the one that stops accepting edits.

## The accepted plan is locked

Once you accept a runbook, its plan and its execution basis are locked. Two kinds of edit are refused while the lock holds:

* **Revising the runbook itself**, meaning the phases and the execution graph.
* **Changing the optimization goal, the models, or the GPU.**

Both refusals are explicit. They tell you the plan was not changed, and they tell you which state the runbook is in.

| Runbook state             | What you see                                                                                 | What to do                                                                    |
| ------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| Accepted, not yet running | The runbook is already accepted and its execution graph is locked. The plan was not changed. | Cancel the accepted runbook, then revise, review, and accept the replacement. |
| Executing                 | The runbook is executing and its execution graph is locked. The plan was not changed.        | Wait for the run to finish, or cancel it, then revise.                        |

Nothing is silently applied and nothing is silently dropped. If a request to change the goal arrives while the lock holds, the run continues on exactly the basis you reviewed.

<Note>
  The lock exists because the accepted plan is what the price and your consent were bound to. Editing it underneath a live or paid-for run would change what you agreed to buy after you agreed to buy it.
</Note>

### Revising an accepted runbook

The remedy is the same in both states, and it is deliberate rather than a workaround:

1. **Cancel** the accepted or executing runbook.
2. **Revise** the goal, models, GPU, or plan.
3. **Review** the replacement.
4. **Accept** it.

The replacement is quoted and consented to on its own terms, so the run that follows is bound to the plan you actually approved.

## Parked runs expire

A run that stops making progress is parked rather than deleted, so you keep the option to recover it. Parking is not permanent: a parked run that sees no activity within its window is closed out.

| Parked state        | What it means                                                | Expires after                                      |
| ------------------- | ------------------------------------------------------------ | -------------------------------------------------- |
| Blocked             | The run is waiting for an explicit recovery action from you. | 24 hours without a heartbeat or recovery action    |
| Recoverable failure | A recovery path already ran and did not succeed.             | 6 hours without a recovery completing successfully |

Recovery activity resets the clock. Claiming or finalizing a recovery attempt counts as activity, and a recovery attempt that is already in flight when the window elapses is protected rather than cut off.

### An expired run reads as expired

An expired run is labelled **Run expired**. It is not relabelled as a fresh failure, and it does not present recovery buttons that would no longer work.

The run carries its own reason, naming both the window and what it was waiting on, for example *expired after 24 hours without a heartbeat or recovery action*. The full sentence states that the run can no longer be resumed and that starting a new run is the way forward.

### Money parked with the run is released

While a run is parked, its credit hold stays held, because a recovery can resume the same run and reuse the same hold. Releasing it early would strip the recovery of the funds it needs.

When the run expires, that reasoning no longer applies. The expiry is terminal, so any remaining hold is released through the same path a failed run uses. You are not charged for a run that expired without completing.

## Related

* [Per-modality optimization runbooks](/docs/runbooks/overview) for what each runbook actually does.
* [Quality gates](/docs/features/quality-gates) for why a completed run may still decline to promote a candidate.
* [Billing FAQ](/docs/faq/billing) for how holds and settlement work.
