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

# Rerun and Carry Results

> See whether each slot executes, is adopted automatically, or is accepted by an operator, and how those relationships enter the Record.

Every Invocation creates a new Run. Its expected slots define that run's denominator, and each slot has at most one Member. A Member has one of three forms:

| Member     | When it appears                                       |
| ---------- | ----------------------------------------------------- |
| `executed` | The Runner executes this slot.                        |
| `carried`  | The planner automatically adopts an existing Attempt. |
| `accepted` | An operator explicitly adopts an existing Attempt.    |

All three Members refer to one Attempt. The Attempt's `origin` stays unchanged, so an adopted slot reads that Attempt's current Verdict, Usage, and other channel values.

## Inspect the plan first

Use `--dry` before a run. It reads the planning channels from a quiescent Record and lists why each slot will execute or be adopted.

```sh theme={null}
npx niceeval exp checkout --dry
```

Example output:

```text theme={null}
PLAN
checkout  cart/add-item  ordinal 0  carried @01J8ZK3M6P4T7V9X2C5N8QW0RY
checkout  cart/add-item  ordinal 1  execute: input-identity-changed
```

If information is missing, invalid, unsupported, or from a different domain, the planner explains the reason and executes that slot instead of treating it as adoptable.

## Conditions for automatic adoption

An Attempt becomes a `carried` Member only when all of these conditions hold:

* Its Verdict is a terminal Verdict that can be adopted.
* Its input identity matches the current input.
* Its execution duration satisfies the current timeout.
* This Invocation's `--rerun` setting permits the Verdict to be adopted.
* This Invocation does not require a real execution through `--keep-sandbox`.

Input and configuration identity are opaque values with domains. NiceEval compares their values only when the domains match exactly. When it creates a `carried` Member, it writes eligibility, identity, and reason into the target Run's `niceeval.actions` channel. The Member itself does not copy those explanations or the Attempt's business values.

## Control the rerun scope

```sh theme={null}
# By default, adopt eligible passed and failed Attempts
npx niceeval exp checkout

# Rerun failed Attempts
npx niceeval exp checkout --rerun

# Execute every selected slot again
npx niceeval exp checkout --rerun all
```

Changing `--rerun` affects this Invocation only. It never changes an existing Run or Attempt.

## Explicitly accept an existing Attempt

When automatic-adoption conditions do not hold but an existing Attempt is still valid, use its complete locator:

```sh theme={null}
npx niceeval accept @01J8ZK3M6P4T7V9X2C5N8QW0RY
```

`accept` checks every input before it creates a Run with `accepted` Members. It writes the operator's reason, differences, and eligibility into that Run's `niceeval.actions` channel. It does not modify the source Attempt or copy the source Attempt's channel values.

## An edit affects the next read

After a directory becomes quiescent, editing an Attempt's Verdict, Usage, or another channel changes what a later read of a `carried` or `accepted` Member sees. If an Attempt or its reference is invalid, the Sample marks that slot `invalid`, not `not-recorded`.

After a run completes, select its results with the receipt's `runIds`. See [Viewing Results](/docs/tutorials/viewing-results) for the viewing workflow.
