# Reproduce the WARC revisit controls

Seven constructed file sets were tested with warcio 1.8.2 and six 1.17.0.
The checksum command can return exit 0 while explicitly leaving revisit
digests unchecked. That outcome neither establishes availability of the
referenced payload nor authenticates the capture's history.

The paired explanation is in [Hesela's deduplication analysis](https://hesela.com/analyses/deduplication-restore-fragmentation/#warc-revisits).
The [revisit-record definition](https://hesela.dev/terms/warc-revisit-record/)
connects this evidence to deduplication, checksums and backup verification.

## Inspect and run

Unpack the ZIP into a fresh directory. MANIFEST.json lists SHA-256 hashes
for its payload files; it is an integrity inventory, not a digital signature.
Evidence is synthetic and contains no crawled pages or personal data.

```sh
python3 -m venv /tmp/hesela-warc-env
/tmp/hesela-warc-env/bin/pip install --only-binary=:all: --require-hashes -r requirements.txt
/tmp/hesela-warc-env/bin/python -B experiment.py capture /tmp/hesela-warc-fresh
/tmp/hesela-warc-env/bin/python -B experiment.py verify /tmp/hesela-warc-fresh
```

Use a new capture directory. Dependencies need network access unless cached;
the experiment itself makes no network requests. The committed evidence was
captured with Python 3.14.8, and test_experiment.py checks that exact identity.
With that interpreter and the pinned packages, run:

```sh
python -B test_experiment.py
python -B -O test_experiment.py
```

A separate Python 3.12.3 transcript is retained in cross-version/observations.json.
Other interpreters should generate a new capture, not overwrite the historical one.

## Read the result correctly

table.json is derived from evidence/observations.json, not hand-entered.
The raw report preserves command output and per-record digest state.
Exit 0 and a verified digest are different observations. A successful local
one-hop check reconstructs the known 42-byte body only for these fixtures.

The helper is not a general WARC validator or replay engine. It handles fixed,
uncompressed WARC 1.1 fixtures with explicit direct references. It does not
resolve every valid archive, authenticate history or reconstruct a complete
web page. SHA-1 reflects the fixture writer's default, not a recommendation.
No modern pywb deployment or institutional failure rate was measured.

METHODS.md describes the original experiment. sources.json identifies six
primary sources and retrieval receipts. validation.json retains the original
two-interpreter verification; it is not a claim of external peer review.

The public package contains Hesela's original code, constructed data and
source metadata, not copies of the third-party papers or source code.
Dependencies retain their respective licenses.
