# Review agent performance from a run

Judge a loop by the accepted result, not by an agent's confident answer or a green step label. Follow one governed workflow run, inspect each action and compare its output with the intended goal before editing the next draft. This procedure does not promise automatic optimization or measured speed and token savings.

## Keep the comparison specific

Before running, record the intended output and the check that would accept it. Keep the same inputs when comparing revisions, unless changing the input is the experiment. Preserve the draft revision, actual run identity and non-secret error; never substitute an invented baseline or a sample chart for observations.

For a safe first draft, use [the canvas quickstart](/docs/loop-builder/quickstart). If the object is a hosted immutable version instead, use [hosted run identity](/docs/loop-builder/run-reference); its states and retention rules are different.

## Follow the owning workflow

1. Open **Runs** or **Runs & approvals** in Loop Builder.
2. Select the intended workflow by its recorded identity and time. Keep similarly named runs separate.
3. Inspect the step states, exact pending actions and available results.
4. Approve or deny a waiting action only after checking its inputs and authority. Approval can dispatch that action.
5. Read each completed result, then apply your acceptance check to the final output.

### Interpret the state narrowly

| State or label | What to do |
| --- | --- |
| Needs approval | Inspect the exact action; no result is established by waiting |
| Running | Follow the same run rather than submitting again |
| Paused or Ready | Check the workflow and available continuation before proceeding |
| Completed | Inspect the result; completion is not task acceptance |
| Not run | This step did not execute in the terminal workflow; do not count it as success |
| Denied, Revoked or Cancelled | Inspect already dispatched work separately |
| Failed | Preserve the failing step and error before revising |
| Check outcome | The outcome is uncertain; reconcile the same action before retrying |

**Continue loop** and **Cancel loop** act on a governed workflow. Cancellation does not recall an external action already sent or roll back a saved note. The hosted artifact API has a different contract and does not expose this workflow's cancel control.

## Separate result quality from usage

Open a step's **Run receipt** for the reported reference and settlement state. **Not settled** is not zero cost, and a reservation is not a final charge. Policy balances are not a complete monthly usage statement or a subscription price. Use the account's own usage and hosted billing surfaces for those records.

If duration, token counts or comparable observations are absent, leave that comparison unavailable. Do not derive quality from the number of steps, or claim provider performance from a model name.

## Make one deliberate improvement

1. Identify the actual failure: missing input, wrong function, denied authority, unclear instructions or unacceptable output.
2. Preserve the original result and change only the relevant draft material.
3. Review function arguments and earlier-step bindings again. A reordered step must still reference the intended output.
4. Save the revised draft. Run again only when the new execution is intended and authorized.
5. Compare the checked outcomes, not just the responses.

Keep durable operating rules in [Policy Hub](/docs/shared/policy-hub). A one-off repair belongs in the draft; a stable boundary belongs in the document its consumer reads. Do not loosen permissions or raise spending limits merely to turn a failed state into a completed one.
