The review's package cases become a corpus, package-mutations/: each the golden altered and, where the receipt or LISTING alone would catch it, re-sealed with the golden's key, held as an overlay (the files that differ or are new, and the files it removes) with its reason. 26 cases: a receipt over no component (on demand and live), the index against its policy (class records, a capability, the string order, the class plan), a class named classic, a patent-pool floor under royalty_free_only, a component of another medium, a floor object missing and corrupted, a live window starting past 2^53 - 1, floor objects that do not open on a key frame / hold an extra one / have another sequence header / framing header / renderer and settings / target, an extra key frame the policy allows (ok), dot-names and a *.sha256 file read strictly, and receipt files that are not canonical or name a member twice. - golden.rs builds them (package_mutations), writes the overlays (regen) and requires each, applied to the golden, to get its reason from verify_files (check, so cargo test and CI). - pack_verify.py writes each case out and verifies it in §11.3's order without the golden's inputs, taking the reason of the first check that fails. Two fixes the corpus found in it: an index no catalog can be written for (a start past 2^53 - 1) is catalog-mismatch, not an uncaught ValueError; and "on-demand, one window" is an assertion about the golden, not a rule a package is held to (a live window is a package too, §6.1, §9.2). An object-rules failure now names its reason in brackets. - review.rs asserts the same cases by name, keeping what the corpus cannot hold (an on-demand index starting past 0 cannot be sealed, a fragment time past 2^64 - 1, the random alterations, the verifier's own directory walk). Co-Authored-By: Claude Opus 5.5 <[email protected]>
35 lines
No EOL
1.3 KiB
JSON
35 lines
No EOL
1.3 KiB
JSON
{
|
|
"asset_id": "video-base-01",
|
|
"components": [
|
|
{
|
|
"id": "v",
|
|
"index": "index-v.wsix",
|
|
"index_digest": "5ffc2be3f21af79078a1158e3d669e4268a35b0ca61a6e73ff252fdf38f346d0",
|
|
"media_class": "video",
|
|
"stage_root": "bd0c7799633b108cf9ccb0c7a4cedbdf6173a83470d3d96b94d075c03e0db7b6"
|
|
}
|
|
],
|
|
"energy_provenance": null,
|
|
"grant": {
|
|
"capability": "wai.video.package",
|
|
"funds_ceiling": null,
|
|
"grant_hash": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
"joule_ceiling_micro": null
|
|
},
|
|
"joules_micro": 0,
|
|
"kind": "package",
|
|
"packager": "builtin:[email protected]",
|
|
"parent_kind": "none",
|
|
"parent_receipt_hash": null,
|
|
"policy_digest": "e1c131d56798eb840e22736076d74908bca2b7585aeae7e4bb1698218c01a35e",
|
|
"receipt_hash": "22c6f558063499040127d58b062f08f9ec2a6cee54b51c97d42e8741d76ad728",
|
|
"sig": "4554bd1c09aaa4af8799e37e2379cde9d341c7982a6d31a050162ee075c07f93c507abfda9c8223e70b9c56a4dbf9cee626ddaa680bd807fb4eda1fd2f885b06",
|
|
"signer_id": "did:key:z6MkfMo6gxqdBhaHMNnmfhgZFBjpCDTkmJMJLoypsBZS9PwD",
|
|
"signer_pubkey": "0d7550754e0800a5d237eef5826035766b9b3e5a15868a940ab289958788e3b0",
|
|
"stored_bytes": 119779,
|
|
"total_bytes": 130963,
|
|
"total_entries": 10,
|
|
"unique_objects": 8,
|
|
"version": 2,
|
|
"work_units": 10
|
|
} |