The corpus had no live windows, so pack_verify.py never read a live-window
receipt, a non-zero `prev_index_digest` or a `first_entry` past zero.
live/ holds the staged golden's source packed live with its key, in windows of
two pieces: each window's index and receipt, and expected.json with each
window's place in the chain, index digest and receipt hash.
pack_verify.py reads each window with its own index reader and §6.3 rules, and
verifies the receipt (§9.1, strict Ed25519). It then checks the chain:
- the parent receipt (`live-window`);
- `prev_index_digest`;
- `first_piece` and `first_entry`;
- the timeline;
- the signer is the golden's key.
It also checks that each window's pieces, entries (but flags and window-relative
`refines`), class plan and plan digest are the golden's.
wai-pack's conformance check writes the windows again, compares their bytes, and
verifies the same chain.
Co-Authored-By: Claude Opus 5.5 <[email protected]>