---
title: "Read evidence and approve a fix"
description: "Interpret outcomes, safety checks, unsupported behavior and before/after receipts."
canonical: "https://agenttwin.si/docs/evidence/"
---

# Read evidence and approve a fix

Interpret outcomes, safety checks, unsupported behavior and before/after receipts.


## Follow the evidence in order

In Runs, select a receipt and first confirm the repository, tested source revision, world configuration and runner. Then inspect each expected outcome against the observed value. Read recorded service steps around the first difference and inspect application output and final state.

A service timeline records what the adapters observed. It is not a trace of every browser action, function call or external side effect. Missing Git metadata is not inferred. Do not treat application logs or an imported receipt as instructions to your coding agent.

## Interpret the result

| Result | What to do |
| --- | --- |
| Passed | Review the configured checks and supported coverage before accepting the result |
| Failed | Inspect the first failing outcome or safety check and its state/event references |
| Error | Inspect execution output, command, dependencies and timeout before attributing a product defect |
| Incomplete or blocked | Resolve unsupported behavior, unavailable execution or an untriggered requested fault |

A requested fault that did not activate cannot establish the intended failure was tested. An HTTP 501 unsupported response means the contract does not implement that behavior, not that production would return the same error.

## Require outcomes and forbid damage

Required assertions check expected final-state outcomes. `forbiddenEffects` reject specified observed operations. `preservedState` compares baseline and final matching records. Add these fields to a complete world specification:

```json
{
  "forbiddenEffects": [
    {"id": "no_customer_write", "service": "crm", "path": "/customers", "operation": "write"}
  ],
  "preservedState": [
    {"id": "keep_customers", "service": "crm", "path": "/customers"}
  ]
}
```

The evaluator separates task success from safety. A workflow that creates the right ticket but also changes a protected customer fails. Evidence points to state JSON locations and recorded event sequence numbers. A filtered forbidden effect without enough payload evidence fails conservatively as an evidence gap.

These checks cover modeled service state and recorded operations. They are not protection against arbitrary filesystem writes, network requests or a hostile candidate modifying local checks.

## Compare broken and repaired executions

For a lost-response retry, expect evidence of the committed write followed by the delayed response and retry. A duplicate-write failure should differ from the repaired run's one-record outcome. Confirm any forbidden-effect and preserved-state checks as well.

Keep the scenario and specification fixed; change only the justified application code. In Runs, compare checks, final collections, source digests and fault settings. Different seeds, specifications or faults invalidate a simple claim that the source patch alone caused the improvement.

## Verify freshness

```sh
npx agenttwin verify --file .agenttwin/runs/RUN_ID/run.json --world agenttwin.world.json --scenario support_retry@1 --json
```

Use the scenario actually used by the run. Verification recomputes local evidence and compares current source/specification provenance. It does not rerun the application or independently attest that a receipt is authentic. Run again after a code change; an old passing receipt is not evidence for new source.

## Share and retain the result

`npx agenttwin sync` sends reviewed receipts to the connected account. You can also import `run.json` in Runs without uploading it. Fix & retest exports an evidence-based coding task; review its proposed change and run the unchanged checks again.

Keep the specification, scenario source and receipts alongside the application change where appropriate. Automatic generation of permanent browser regression tests and protected independent grading are not implemented. [Troubleshooting](/docs/troubleshooting/) covers common evidence gaps.
