# Reproducing and verifying E30

1. Download every file of this bundle into one directory.
2. Python: save `verify_e30.py.txt` as `verify_e30.py`; `pip install cryptography`; `python3 verify_e30.py .` -- `result` must be `INTACT`.
3. TypeScript: extract `governance_receipts`, `universal_receipts` and `budget_ledger` from `E2E_ARTIFACTS.json` into one JSON file. Save `cain-verify.js.txt` (the strict `tsc` build of `cain-verify.ts.txt`) as `cain-verify.mjs` and run `node cain-verify.mjs that.json` (Node >= 20), or run the source directly with `node --experimental-strip-types cain-verify.ts that.json` where Node supports it.

Neither verifier imports CAIN code. Implementation source is not published; SIGNATURE.json carries sha256 commitments to it.
