# Reproducing and verifying E25

1. `python3 scripts/cain45/build_evolution25_bundle.py` -- rebuilds every measured number.
2. Save `verify_e25.py.txt` as `verify_e25.py` (Python 3 + `cryptography`, no CAIN imports) and run
   `python3 verify_e25.py .`.
3. `python3 scripts/cain45/cain_e25_cli.py audit` -- the property set.
4. `python3 scripts/cain45/cain_e25_cli.py adversarial` -- the full attack bench.
5. `python3 scripts/cain45/e25_agency_server.py` and `python3 -m cain_agency` (from `sdk/agency/python`).

The verifier re-derives every signature, digest, delegation-attenuation step, receipt link and event-chain
link with its own canonical implementation. It proves the bundle is intact and self-consistent; it does not
run the fabric and does not show that any real agent is governed.
