# Reproduce the retained analysis

## Offline: no API key and no new model calls

Use Python 3.10 or later. This public wrapper and the archived checks were tested with Python 3.14.3; no minimum-version matrix was tested. Only the Python standard library is required. Allow roughly 200 MB of working space. Extract the public ZIP, open a terminal in its top-level directory, then run:

```sh
python3 verify.py
python3 reproduce.py --out ../assumption-lab-reproduced-v1
```

The output path must not exist. The wrapper creates it, writes complete step logs, and extracts working copies there. It rejects network access in the Python checks and does not invoke any live experiment runner. The downloaded ZIPs and their inputs remain unchanged. If a step fails, retain its log; use a different fresh output directory after correcting the cause.

The procedure:

1. Verifies this edition's payload hashes and all four original ZIPs' internal file manifests.
2. Runs v2's offline verifier: checks frozen source and exact requests, reparses responses, reconciles tool events, reproduces saved original aggregations, checks interrupted attempts, and runs 36 original tests plus 11 analysis tests.
3. Applies the retained fresh-context AI worksheet to the 48 saved fresh-test episodes using the unchanged v2 analyzer. Compares the four analysis files preserved by the AI addendum and the supplied review with their originals. The regenerated packet and blank worksheet are also available for inspection.
4. Recomputes the blind/disclosed-key comparison in a disposable copy and compares it with the sealed addendum's saved comparison. The original sealed judgments are never edited.
5. Recomputes the 18-episode refund follow-up's reviewed analysis and historical comparison and compares them with the retained outputs.
6. Rechecks the extracted original payload hashes after analysis and writes `reproduction-result.json`, including the commands, exit codes, Python version and comparison results.

All comparisons must pass. The reviewer worksheet is an input to these calculations: passing does not establish that its judgments are correct. Human peer review remains open.

## Inspect or rerun individual steps

The wrapper saves exact command arrays in `reproduction-result.json`, and logs in `logs/`. Working archives are extracted beneath `archives/`. From `archives/assumption-lab-review-v2/`:

```sh
python3 review_v2/verify.py
python3 review_v2/analyze.py --run original/reports/agent-trust-v1b --out ../../another-screen
python3 review_v2/analyze.py --run original/reports/agent-trust-v1b --review ../assumption-lab-independent-ai-review-v1/review_independent_v1/review-worksheet.json --out ../../another-ai-reviewed
```

From `archives/assumption-lab-refund-clarification-v1/`:

```sh
python3 review_v2/analyze.py --run reports/refund-clarification-v1 --review followup_refunds_v1/review-worksheet.json --out ../../another-refund-reviewed
python3 followup_refunds_v1/compare.py --out ../../another-refund-comparison.json
```

Use new output paths each time. Do not run legacy report writers in the retained source trees: several write into fixed historical run directories. The v2 verifier isolates those writers in temporary copies. The wrapper also isolates the AI comparison's fixed-path output.

## New paid replication

This is optional and is not part of offline reproduction. It requires your own authorized API access and may incur charges. Read the relevant frozen protocol, limits and archived runner before starting. Model/endpoint availability may change; aliases do not identify immutable model weights, and exact future outputs are not guaranteed.

For the fresh-test protocol, from the extracted v2 root:

```sh
python3 original/experiments/agent_trust_v1.py --key-file /private/path/to/key.env --output reports/replication-001
python3 review_v2/analyze.py --run original/reports/replication-001 --out analysis/replication-001-screen
```

The runner resolves its output relative to `original/`, which explains the different run path in the analyzer command. For the refund follow-up, from that addendum's root:

```sh
python3 followup_refunds_v1/run.py --key-file /private/path/to/key.env --output reports/refund-replication-001
python3 review_v2/analyze.py --run reports/refund-replication-001 --out analysis/refund-replication-001-screen
```

Review every new episode with its own generated worksheet; an old worksheet cannot be reused for a new run. Record reviewer identity, evidence references and disagreements before using `--review` to produce a new reviewed summary.

## Extend the design

Freeze new cases, expected actions, settings, limits and ordering before execution. Preserve original cases and failures. Changed tool semantics or scoring require separately versioned analysis. Distinguish a new experiment from replication of the frozen protocol, and report any model, fixture, rubric or reviewer changes.
