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]>
31 lines
928 B
JSON
31 lines
928 B
JSON
{
|
|
"pack": "video-staged-01",
|
|
"component": "v",
|
|
"window_pieces": 2,
|
|
"windows": [
|
|
{
|
|
"window": 0,
|
|
"first_piece": 0,
|
|
"pieces": 2,
|
|
"first_entry": 0,
|
|
"index_digest": "66b9399454a9937a52eef21bb7c452c8a03257d707d4a8238e99db447926aca0",
|
|
"receipt_hash": "c8143d2452499a4d3772e40c528255eae90e781511995a76b1cabd12c87b5950"
|
|
},
|
|
{
|
|
"window": 1,
|
|
"first_piece": 2,
|
|
"pieces": 2,
|
|
"first_entry": 6,
|
|
"index_digest": "b31b0d7e1faab1b7331bf26f8400ca848692aba315e2e8083086d1523baac510",
|
|
"receipt_hash": "03e9c415609e457da2a3d47298d91c541b36f03b634fb56060c9a4da1c2d8f13"
|
|
},
|
|
{
|
|
"window": 2,
|
|
"first_piece": 4,
|
|
"pieces": 1,
|
|
"first_entry": 10,
|
|
"index_digest": "61c64b3027c30891039da2d2b8e30744d83bd6f5b695d6b00ea616c575ceab94",
|
|
"receipt_hash": "11621610dbfff4321e11dc4ff8ba32cb2cb9e61fb17707a114bea4ec85d84e6c"
|
|
}
|
|
]
|
|
}
|