proofbundle 3.8.0__tar.gz → 5.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (721) hide show
  1. {proofbundle-3.8.0/src/proofbundle.egg-info → proofbundle-5.0.0}/PKG-INFO +43 -42
  2. {proofbundle-3.8.0 → proofbundle-5.0.0}/README.md +40 -39
  3. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/manifest.json +11 -1
  4. proofbundle-5.0.0/conformance/provenance/version-status-absent-legacy-receipt/case.json +15 -0
  5. proofbundle-5.0.0/conformance/provenance/version-status-absent-legacy-receipt/provenance.json +4 -0
  6. proofbundle-5.0.0/conformance/provenance/version-status-lookalike-version-field/case.json +15 -0
  7. proofbundle-5.0.0/conformance/provenance/version-status-lookalike-version-field/provenance.json +6 -0
  8. proofbundle-5.0.0/conformance/provenance/version-status-missing-reason/case.json +17 -0
  9. proofbundle-5.0.0/conformance/provenance/version-status-missing-reason/provenance.json +3 -0
  10. proofbundle-5.0.0/conformance/provenance/version-status-not-bound/case.json +15 -0
  11. proofbundle-5.0.0/conformance/provenance/version-status-not-bound/provenance.json +5 -0
  12. proofbundle-5.0.0/conformance/provenance/version-status-not-reported/case.json +15 -0
  13. proofbundle-5.0.0/conformance/provenance/version-status-not-reported/provenance.json +5 -0
  14. proofbundle-5.0.0/conformance/provenance/version-status-not-reported-with-field/case.json +17 -0
  15. proofbundle-5.0.0/conformance/provenance/version-status-not-reported-with-field/provenance.json +5 -0
  16. proofbundle-5.0.0/conformance/provenance/version-status-reported/case.json +15 -0
  17. proofbundle-5.0.0/conformance/provenance/version-status-reported/provenance.json +5 -0
  18. proofbundle-5.0.0/conformance/provenance/version-status-reported-without-field/case.json +17 -0
  19. proofbundle-5.0.0/conformance/provenance/version-status-reported-without-field/provenance.json +3 -0
  20. proofbundle-5.0.0/conformance/provenance/version-status-unknown-literal/case.json +17 -0
  21. proofbundle-5.0.0/conformance/provenance/version-status-unknown-literal/provenance.json +3 -0
  22. proofbundle-5.0.0/conformance/provenance/version-status-unrelated-status-field/case.json +15 -0
  23. proofbundle-5.0.0/conformance/provenance/version-status-unrelated-status-field/provenance.json +6 -0
  24. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/run_conformance.py +42 -1
  25. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/vector_schema.json +72 -17
  26. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/AUDITOR_OPEN_POINTS.md +4 -3
  27. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/MANIFEST.sha256 +3 -3
  28. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/PROGRESS.md +6 -4
  29. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/index.json +11 -0
  30. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/proofbundle/readiness_pack.bundle.json +4 -4
  31. proofbundle-5.0.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +1 -0
  32. {proofbundle-3.8.0 → proofbundle-5.0.0}/pyproject.toml +37 -3
  33. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/eval_claim_v0_1.schema.json +1 -1
  34. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/audit_candidate_matrix.py +106 -10
  35. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/claims_hygiene_check.py +4 -3
  36. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/fuzz_soak.py +6 -3
  37. proofbundle-5.0.0/scripts/gate_qualification_harness.py +841 -0
  38. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/pre_tag_audit_gate.py +93 -25
  39. proofbundle-5.0.0/scripts/pre_tag_receipt.py +172 -0
  40. proofbundle-5.0.0/scripts/pre_tag_receipt_lib.py +123 -0
  41. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/rust_parity_gate.py +91 -15
  42. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/rust_parity_registry.json +193 -133
  43. proofbundle-5.0.0/scripts/type_confusion_gate.py +696 -0
  44. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/__init__.py +1 -1
  45. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/_integration.py +10 -4
  46. proofbundle-5.0.0/src/proofbundle/_membership.py +79 -0
  47. proofbundle-5.0.0/src/proofbundle/_wire_b64.py +91 -0
  48. proofbundle-5.0.0/src/proofbundle/adapters/_provenance.py +255 -0
  49. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/adapters/eee.py +5 -2
  50. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/adapters/inspect_ai.py +19 -7
  51. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/adapters/lm_eval.py +23 -2
  52. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/adapters/promptfoo.py +19 -2
  53. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/anchors.py +2 -1
  54. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/anchors_ots.py +32 -1
  55. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/anchors_rfc3161.py +18 -5
  56. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/anchors_rootcommit.py +17 -4
  57. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/budget.py +76 -1
  58. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/bundle.py +39 -14
  59. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/checkpoint.py +280 -27
  60. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/cli.py +56 -19
  61. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/decision.py +4 -3
  62. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/dsse.py +2 -4
  63. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/emit.py +23 -3
  64. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/evalclaim.py +9 -6
  65. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/experimental/enclave.py +2 -1
  66. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/hf_evals.py +3 -2
  67. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/inspect_hook.py +14 -1
  68. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/kbjwt.py +38 -3
  69. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/merkle.py +38 -5
  70. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/outcome.py +2 -1
  71. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/persample.py +38 -1
  72. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/policy_profiles.py +6 -5
  73. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/public_transparency.py +17 -2
  74. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/pytest_plugin.py +6 -0
  75. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/relation.py +2 -1
  76. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/relation_statement.py +3 -2
  77. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/renewal.py +208 -25
  78. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/run_ledger.py +3 -2
  79. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/sdjwt.py +4 -2
  80. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/sdjwt_issue.py +13 -4
  81. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/sdjwt_vc.py +16 -3
  82. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/statuslist.py +2 -1
  83. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/tlogproof.py +47 -14
  84. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/verification_summary.py +4 -3
  85. {proofbundle-3.8.0 → proofbundle-5.0.0/src/proofbundle.egg-info}/PKG-INFO +43 -42
  86. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle.egg-info/SOURCES.txt +50 -0
  87. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle.egg-info/requires.txt +2 -2
  88. proofbundle-5.0.0/tests/fixtures/anchors/markovian_log/checkpoint_7397/MANIFEST.json +36 -0
  89. proofbundle-5.0.0/tests/fixtures/anchors/markovian_log/checkpoint_7397/checkpoint_7397.txt +15 -0
  90. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS.json +14 -0
  91. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS_negativ.json +14 -0
  92. proofbundle-5.0.0/tests/fixtures/anchors/markovian_log/proof_7271/MANIFEST.json +143 -0
  93. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/markovian_log/proof_7271/README.md +28 -14
  94. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/markovian_log/proof_7271/SOURCES.md +20 -8
  95. proofbundle-5.0.0/tests/fixtures/anchors/markovian_log/proof_7271/keys_unabhaengig.txt +20 -0
  96. proofbundle-5.0.0/tests/fixtures/inspect_logs/safety_refusal_demo.eval.provenance.json +15 -0
  97. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_adapters.py +24 -0
  98. proofbundle-5.0.0/tests/test_anchor_extra_arg_type_confusion.py +119 -0
  99. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_markovian_log.py +102 -45
  100. proofbundle-5.0.0/tests/test_anchors_ots_frozen_rptrust_guard.py +98 -0
  101. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_audit_candidate_360.py +51 -2
  102. proofbundle-5.0.0/tests/test_audit_candidate_ready_logic.py +62 -0
  103. proofbundle-5.0.0/tests/test_audit_matrix_version_pin_binding.py +135 -0
  104. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_bughunt_361_never_raise.py +1 -1
  105. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_cli_eval.py +49 -0
  106. proofbundle-5.0.0/tests/test_emitter_parser_rundlauf.py +158 -0
  107. proofbundle-5.0.0/tests/test_gate_population_and_nested_leaf.py +205 -0
  108. proofbundle-5.0.0/tests/test_gate_qualification_harness.py +320 -0
  109. proofbundle-5.0.0/tests/test_inspect_hook.py +175 -0
  110. proofbundle-5.0.0/tests/test_int_magnitude_budget_family.py +120 -0
  111. proofbundle-5.0.0/tests/test_iter9_deepgate_round4.py +167 -0
  112. proofbundle-5.0.0/tests/test_iter9_product_fixes.py +80 -0
  113. proofbundle-5.0.0/tests/test_kappe_vor_arbeit.py +141 -0
  114. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_load_signer_fd_hazard.py +72 -0
  115. proofbundle-5.0.0/tests/test_membership_hashable_guard.py +257 -0
  116. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_never_raise_surface_family_property.py +128 -2
  117. proofbundle-5.0.0/tests/test_origin_quorum_rule.py +716 -0
  118. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_pre_tag_audit_provenance.py +14 -13
  119. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_pre_tag_gate_eigenschaften.py +7 -5
  120. proofbundle-5.0.0/tests/test_pre_tag_receipt_commit_flow.py +99 -0
  121. proofbundle-5.0.0/tests/test_pre_tag_receipt_gate.py +117 -0
  122. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_pytest_plugin.py +14 -0
  123. proofbundle-5.0.0/tests/test_render_safe_untrusted_int.py +127 -0
  124. proofbundle-5.0.0/tests/test_renewal_field_magnitude_never_raise.py +166 -0
  125. proofbundle-5.0.0/tests/test_reported_version_status.py +387 -0
  126. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_roadmap_frontload_foundations.py +12 -7
  127. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_rust_parity_gate.py +14 -4
  128. proofbundle-5.0.0/tests/test_sdist_selftest_optional_deps.py +89 -0
  129. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwt_vc.py +28 -0
  130. proofbundle-5.0.0/tests/test_type_confusion_wireform.py +133 -0
  131. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_verify_proof_expected_origin.py +145 -57
  132. proofbundle-5.0.0/tests/test_wire_bytes_strict.py +217 -0
  133. proofbundle-5.0.0/tests/test_wurzelsammlung_schliesst_bauartefakte_aus.py +97 -0
  134. proofbundle-3.8.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +0 -1
  135. proofbundle-3.8.0/scripts/type_confusion_gate.py +0 -301
  136. proofbundle-3.8.0/src/proofbundle/adapters/_provenance.py +0 -91
  137. proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/MANIFEST.json +0 -116
  138. proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/keys_unabhaengig.txt +0 -16
  139. proofbundle-3.8.0/tests/test_inspect_hook.py +0 -57
  140. {proofbundle-3.8.0 → proofbundle-5.0.0}/LICENSE +0 -0
  141. {proofbundle-3.8.0 → proofbundle-5.0.0}/MANIFEST.in +0 -0
  142. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/README.md +0 -0
  143. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/coherent-rewrap-fails-expected-root/bundle.json +0 -0
  144. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/coherent-rewrap-fails-expected-root/case.json +0 -0
  145. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/bundle.json +0 -0
  146. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/case.json +0 -0
  147. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/corrupted-signature/bundle.json +0 -0
  148. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/corrupted-signature/case.json +0 -0
  149. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/duplicate-json-key/bundle.json +0 -0
  150. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/duplicate-json-key/case.json +0 -0
  151. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/forged-anchor-own-frozen/bundle.json +0 -0
  152. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/forged-anchor-own-frozen/case.json +0 -0
  153. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/bundle.json +0 -0
  154. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/case.json +0 -0
  155. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/sd-jwt-forged-issuer-identity/bundle.json +0 -0
  156. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/sd-jwt-forged-issuer-identity/case.json +0 -0
  157. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/sd-jwt-signed-but-unbound/bundle.json +0 -0
  158. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/sd-jwt-signed-but-unbound/case.json +0 -0
  159. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/bundle.json +0 -0
  160. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/case.json +0 -0
  161. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/tampered-payload/bundle.json +0 -0
  162. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/tampered-payload/case.json +0 -0
  163. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/tree-size-expectation-mismatch/bundle.json +0 -0
  164. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/tree-size-expectation-mismatch/case.json +0 -0
  165. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/valid-minimal/bundle.json +0 -0
  166. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/bundle/valid-minimal/case.json +0 -0
  167. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/common_vocabulary.py +0 -0
  168. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/cross_format.py +0 -0
  169. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/canonicalization-root-binding/MANIFEST.json +0 -0
  170. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/canonicalization-root-binding/case.json +0 -0
  171. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs +0 -0
  172. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs.ots +0 -0
  173. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.json +0 -0
  174. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.jcs +0 -0
  175. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.json +0 -0
  176. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/MANIFEST.json +0 -0
  177. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/case.json +0 -0
  178. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs +0 -0
  179. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs.ots +0 -0
  180. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.json +0 -0
  181. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.jcs +0 -0
  182. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.json +0 -0
  183. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/schema-conformant/MANIFEST.json +0 -0
  184. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/schema-conformant/case.json +0 -0
  185. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs +0 -0
  186. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs.ots +0 -0
  187. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.json +0 -0
  188. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.jcs +0 -0
  189. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.json +0 -0
  190. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/declared-supersedes-verified/case.json +0 -0
  191. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/declared-supersedes-verified/pub.b64 +0 -0
  192. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/declared-supersedes-verified/receipt.json +0 -0
  193. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/declared-supersedes-verified/related_b.json +0 -0
  194. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/declared-unresolved/case.json +0 -0
  195. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/declared-unresolved/pub.b64 +0 -0
  196. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/declared-unresolved/receipt.json +0 -0
  197. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-accept-path/case.json +0 -0
  198. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-accept-path/policy.json +0 -0
  199. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-accept-path/pub.b64 +0 -0
  200. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-accept-path/receipt.json +0 -0
  201. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-accept-path/related_rx.json +0 -0
  202. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-correct-pass/case.json +0 -0
  203. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-correct-pass/policy.json +0 -0
  204. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-correct-pass/pub.b64 +0 -0
  205. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-correct-pass/receipt.json +0 -0
  206. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-correct-pass/related_r0.json +0 -0
  207. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-correct-pass/related_rx.json +0 -0
  208. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-no-pin-old-behavior/case.json +0 -0
  209. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-no-pin-old-behavior/policy.json +0 -0
  210. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-no-pin-old-behavior/pub.b64 +0 -0
  211. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-no-pin-old-behavior/receipt.json +0 -0
  212. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_r0.json +0 -0
  213. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_rx.json +0 -0
  214. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-target-mismatch/case.json +0 -0
  215. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-target-mismatch/policy.json +0 -0
  216. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-target-mismatch/pub.b64 +0 -0
  217. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-target-mismatch/receipt.json +0 -0
  218. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-target-mismatch/related_r0.json +0 -0
  219. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/decoy-parent-target-mismatch/related_rx.json +0 -0
  220. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/case.json +0 -0
  221. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/pub.b64 +0 -0
  222. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/receipt.json +0 -0
  223. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_001.json +0 -0
  224. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_002.json +0 -0
  225. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_003.json +0 -0
  226. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_004.json +0 -0
  227. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_005.json +0 -0
  228. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_006.json +0 -0
  229. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_007.json +0 -0
  230. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_008.json +0 -0
  231. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_009.json +0 -0
  232. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_010.json +0 -0
  233. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_011.json +0 -0
  234. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_012.json +0 -0
  235. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_013.json +0 -0
  236. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_014.json +0 -0
  237. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_015.json +0 -0
  238. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_016.json +0 -0
  239. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_017.json +0 -0
  240. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_018.json +0 -0
  241. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_019.json +0 -0
  242. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_020.json +0 -0
  243. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_021.json +0 -0
  244. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_022.json +0 -0
  245. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_023.json +0 -0
  246. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_024.json +0 -0
  247. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_025.json +0 -0
  248. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_026.json +0 -0
  249. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_027.json +0 -0
  250. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_028.json +0 -0
  251. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_029.json +0 -0
  252. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_030.json +0 -0
  253. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_031.json +0 -0
  254. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_032.json +0 -0
  255. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/depth-exceeded/related_033.json +0 -0
  256. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/digest-mismatch/case.json +0 -0
  257. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/digest-mismatch/policy.json +0 -0
  258. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/digest-mismatch/pub.b64 +0 -0
  259. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/digest-mismatch/receipt.json +0 -0
  260. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/digest-mismatch/related_b.json +0 -0
  261. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/generate_vectors.py +0 -0
  262. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/malformed-digest/case.json +0 -0
  263. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/malformed-digest/pub.b64 +0 -0
  264. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/malformed-digest/receipt.json +0 -0
  265. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-declared-supersedes-verified/case.json +0 -0
  266. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-declared-supersedes-verified/pub.b64 +0 -0
  267. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-declared-supersedes-verified/receipt.json +0 -0
  268. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-declared-supersedes-verified/related_b.json +0 -0
  269. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-decoy-parent-target-mismatch/case.json +0 -0
  270. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-decoy-parent-target-mismatch/policy.json +0 -0
  271. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-decoy-parent-target-mismatch/pub.b64 +0 -0
  272. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-decoy-parent-target-mismatch/receipt.json +0 -0
  273. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_r0.json +0 -0
  274. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_rx.json +0 -0
  275. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-digest-mismatch/case.json +0 -0
  276. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-digest-mismatch/policy.json +0 -0
  277. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-digest-mismatch/pub.b64 +0 -0
  278. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-digest-mismatch/receipt.json +0 -0
  279. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-digest-mismatch/related_b.json +0 -0
  280. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-relation-signer-unauthorized/case.json +0 -0
  281. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-relation-signer-unauthorized/policy.json +0 -0
  282. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-relation-signer-unauthorized/pub.b64 +0 -0
  283. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-relation-signer-unauthorized/receipt.json +0 -0
  284. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-relation-signer-unauthorized/related_b.json +0 -0
  285. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-renews/case.json +0 -0
  286. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-renews/pub.b64 +0 -0
  287. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-renews/receipt.json +0 -0
  288. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-renews/related_b.json +0 -0
  289. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-silent-landing/case.json +0 -0
  290. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-silent-landing/pub.b64 +0 -0
  291. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-silent-landing/receipt.json +0 -0
  292. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-valid-baseline/case.json +0 -0
  293. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-valid-baseline/pub.b64 +0 -0
  294. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/outcome-valid-baseline/receipt.json +0 -0
  295. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-amends/case.json +0 -0
  296. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-amends/pub.b64 +0 -0
  297. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-amends/receipt.json +0 -0
  298. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-amends/related_b.json +0 -0
  299. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-corrects/case.json +0 -0
  300. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-corrects/pub.b64 +0 -0
  301. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-corrects/receipt.json +0 -0
  302. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-corrects/related_b.json +0 -0
  303. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-derivedfrom/case.json +0 -0
  304. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-derivedfrom/pub.b64 +0 -0
  305. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-derivedfrom/receipt.json +0 -0
  306. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-derivedfrom/related_b.json +0 -0
  307. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-retracts/case.json +0 -0
  308. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-retracts/pub.b64 +0 -0
  309. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-retracts/receipt.json +0 -0
  310. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-retracts/related_b.json +0 -0
  311. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-revises/case.json +0 -0
  312. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-revises/pub.b64 +0 -0
  313. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-revises/receipt.json +0 -0
  314. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-revises/related_b.json +0 -0
  315. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/case.json +0 -0
  316. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/policy.json +0 -0
  317. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/pub.b64 +0 -0
  318. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/receipt.json +0 -0
  319. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/related_b.json +0 -0
  320. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-verified/case.json +0 -0
  321. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-verified/policy.json +0 -0
  322. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-verified/pub.b64 +0 -0
  323. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-verified/receipt.json +0 -0
  324. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-cross-issuer-verified/related_b.json +0 -0
  325. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-same-key-explicit/case.json +0 -0
  326. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-same-key-explicit/policy.json +0 -0
  327. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-same-key-explicit/pub.b64 +0 -0
  328. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-same-key-explicit/receipt.json +0 -0
  329. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-same-key-explicit/related_b.json +0 -0
  330. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-verified-under-not-claim/case.json +0 -0
  331. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-verified-under-not-claim/policy.json +0 -0
  332. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-verified-under-not-claim/pub.b64 +0 -0
  333. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-verified-under-not-claim/receipt.json +0 -0
  334. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/relation-signer-verified-under-not-claim/related_b.json +0 -0
  335. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/renews-vector/case.json +0 -0
  336. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/renews-vector/pub.b64 +0 -0
  337. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/renews-vector/receipt.json +0 -0
  338. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/renews-vector/related_b.json +0 -0
  339. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/retracts-then-use/case.json +0 -0
  340. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/retracts-then-use/policy.json +0 -0
  341. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/retracts-then-use/pub.b64 +0 -0
  342. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/retracts-then-use/receipt.json +0 -0
  343. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/retracts-then-use/related_r.json +0 -0
  344. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/silent-landing/case.json +0 -0
  345. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/silent-landing/pub.b64 +0 -0
  346. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/silent-landing/receipt.json +0 -0
  347. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-malformed/case.json +0 -0
  348. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-malformed/pub.b64 +0 -0
  349. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-malformed/receipt.json +0 -0
  350. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-declared-unresolved/case.json +0 -0
  351. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-declared-unresolved/pub.b64 +0 -0
  352. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-declared-unresolved/receipt.json +0 -0
  353. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-unauthorized/case.json +0 -0
  354. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-unauthorized/policy.json +0 -0
  355. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-unauthorized/pub.b64 +0 -0
  356. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-unauthorized/receipt.json +0 -0
  357. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-unauthorized/related_t.json +0 -0
  358. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-blocked/case.json +0 -0
  359. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-blocked/policy.json +0 -0
  360. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-blocked/pub.b64 +0 -0
  361. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-blocked/receipt.json +0 -0
  362. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-blocked/related_t.json +0 -0
  363. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-visible/case.json +0 -0
  364. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-visible/pub.b64 +0 -0
  365. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-visible/receipt.json +0 -0
  366. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-retracts-verified-visible/related_t.json +0 -0
  367. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-supersedes-verified/case.json +0 -0
  368. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-supersedes-verified/pub.b64 +0 -0
  369. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-supersedes-verified/receipt.json +0 -0
  370. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/statement-supersedes-verified/related_t.json +0 -0
  371. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/t1-canonical-invalid-signature/case.json +0 -0
  372. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/t1-canonical-invalid-signature/pub.b64 +0 -0
  373. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/t1-canonical-invalid-signature/receipt.json +0 -0
  374. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-ambiguous/case.json +0 -0
  375. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-ambiguous/pub.b64 +0 -0
  376. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-ambiguous/receipt.json +0 -0
  377. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-ambiguous/related_r0.json +0 -0
  378. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-correct-pass/case.json +0 -0
  379. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-correct-pass/pub.b64 +0 -0
  380. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-correct-pass/receipt.json +0 -0
  381. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-correct-pass/related_r0.json +0 -0
  382. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-mismatch/case.json +0 -0
  383. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-mismatch/pub.b64 +0 -0
  384. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-mismatch/receipt.json +0 -0
  385. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-mismatch/related_r0.json +0 -0
  386. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-missing/case.json +0 -0
  387. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-missing/pub.b64 +0 -0
  388. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-missing/receipt.json +0 -0
  389. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/target-subject-missing/related_r0.json +0 -0
  390. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/unauthorized-signer/case.json +0 -0
  391. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/unauthorized-signer/pub.b64 +0 -0
  392. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/unauthorized-signer/receipt.json +0 -0
  393. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/unauthorized-signer/related_b.json +0 -0
  394. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/valid-baseline/case.json +0 -0
  395. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/valid-baseline/pub.b64 +0 -0
  396. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/valid-baseline/receipt.json +0 -0
  397. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/wrong-payloadtype-target/case.json +0 -0
  398. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/wrong-payloadtype-target/pub.b64 +0 -0
  399. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/wrong-payloadtype-target/receipt.json +0 -0
  400. {proofbundle-3.8.0 → proofbundle-5.0.0}/conformance/relation/wrong-payloadtype-target/related_t.json +0 -0
  401. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/adr/renewal_policy.example.json +0 -0
  402. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/OPEN_QUESTIONS.md +0 -0
  403. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/README.md +0 -0
  404. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/REPRODUCTION_RUNBOOK.md +0 -0
  405. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/calendar_independence.md +0 -0
  406. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/differential_matrix.md +0 -0
  407. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/rust_parity_scope.md +0 -0
  408. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/tamper_resistance.md +0 -0
  409. {proofbundle-3.8.0 → proofbundle-5.0.0}/docs/readiness_pack/threat_model_delta_360.md +0 -0
  410. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/README.md +0 -0
  411. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/anchors/chia-datalayer-invalid-root.json +0 -0
  412. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/anchors/chia-datalayer-valid.json +0 -0
  413. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/checkpoint_example.py +0 -0
  414. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/decision_receipt_allow.json +0 -0
  415. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/decision_receipt_deny.json +0 -0
  416. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/decision_receipt_escalate.json +0 -0
  417. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/decision_receipt_with_eval_ref.intoto.json +0 -0
  418. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/eee_receipt.py +0 -0
  419. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/example.tlog-proof +0 -0
  420. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/example_bundle.json +0 -0
  421. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/experimental_enclave.py +0 -0
  422. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/inspect_hook_example.py +0 -0
  423. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/inspect_receipt.py +0 -0
  424. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/intoto/private-model-commitment.statement.json +0 -0
  425. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/intoto/public-model.statement.json +0 -0
  426. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/intoto/release-gate.statement.json +0 -0
  427. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/intoto/svr.statement.json +0 -0
  428. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/intoto_dsse_export.py +0 -0
  429. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/lm_eval_receipt.py +0 -0
  430. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/make_example.py +0 -0
  431. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/persample_audit.py +0 -0
  432. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/pytest_plugin_example.py +0 -0
  433. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/rekor_interop.py +0 -0
  434. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/tlog_proof_example.py +0 -0
  435. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/trust_policy_decision_strict.json +0 -0
  436. {proofbundle-3.8.0 → proofbundle-5.0.0}/examples/trust_policy_strict.json +0 -0
  437. {proofbundle-3.8.0 → proofbundle-5.0.0}/formal/README.md +0 -0
  438. {proofbundle-3.8.0 → proofbundle-5.0.0}/formal/model.py +0 -0
  439. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/action-outcome-v0.1.schema.json +0 -0
  440. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/decision-receipt-v0.1.schema.json +0 -0
  441. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/in_toto_statement_v1.schema.json +0 -0
  442. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/proofbundle_v0_1.schema.json +0 -0
  443. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/run-ledger-v0.1.schema.json +0 -0
  444. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/trust-pack-v0.1.schema.json +0 -0
  445. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/trust_policy_v0_1.schema.json +0 -0
  446. {proofbundle-3.8.0 → proofbundle-5.0.0}/schemas/verification-summary-v0.1.schema.json +0 -0
  447. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/_build_anchor_fixture.py +0 -0
  448. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/branch_base_check.py +0 -0
  449. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/build_reproducible.py +0 -0
  450. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/check_version_and_changelog.py +0 -0
  451. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/demo.sh +0 -0
  452. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/demo_tamper.sh +0 -0
  453. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/doc_link_check.py +0 -0
  454. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/finding_base_drift.py +0 -0
  455. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/findings_register.py +0 -0
  456. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/fork_pr_secret_isolation.py +0 -0
  457. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/gen_findings_register.py +0 -0
  458. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/gen_synthetic_ots_fixture.py +0 -0
  459. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/git-hooks/pre-commit +0 -0
  460. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/install_git_hooks.sh +0 -0
  461. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/mutant_signature_guard.py +0 -0
  462. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/mutation_check.py +0 -0
  463. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/pre_tag_attestation.py +0 -0
  464. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/readiness_pack_gate.py +0 -0
  465. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/readiness_pack_manifest.py +0 -0
  466. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/render_demo.py +0 -0
  467. {proofbundle-3.8.0 → proofbundle-5.0.0}/scripts/test_manifest_gate.py +0 -0
  468. {proofbundle-3.8.0 → proofbundle-5.0.0}/setup.cfg +0 -0
  469. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/_inspect_registry.py +0 -0
  470. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/_strict_json.py +0 -0
  471. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/adapters/__init__.py +0 -0
  472. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/adapters/samples.py +0 -0
  473. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/anchors_chia.py +0 -0
  474. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/anchors_chia_add.py +0 -0
  475. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/anchors_markovian.py +0 -0
  476. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/assurance.py +0 -0
  477. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/automation_verdict.py +0 -0
  478. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/beacon.py +0 -0
  479. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/canonical.py +0 -0
  480. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/demo.py +0 -0
  481. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/eee_eval_schema.json +0 -0
  482. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/errors.py +0 -0
  483. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/evalcard.py +0 -0
  484. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/evidence_pack.py +0 -0
  485. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/experimental/__init__.py +0 -0
  486. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/hashalg.py +0 -0
  487. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/intoto.py +0 -0
  488. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/policies/decision-receipt-template-v1.json +0 -0
  489. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/policies/research-preview-v1.json +0 -0
  490. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/policies/strict-eval-authenticated-root-template-v1.json +0 -0
  491. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/policies/strict-eval-template-v1.json +0 -0
  492. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/policies/strict-prereg-template-v1.json +0 -0
  493. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/policy.py +0 -0
  494. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/pqsig.py +0 -0
  495. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/prereg.py +0 -0
  496. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/py.typed +0 -0
  497. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/signature.py +0 -0
  498. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/subject_binding.py +0 -0
  499. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle/trust_pack.py +0 -0
  500. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle.egg-info/dependency_links.txt +0 -0
  501. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle.egg-info/entry_points.txt +0 -0
  502. {proofbundle-3.8.0 → proofbundle-5.0.0}/src/proofbundle.egg-info/top_level.txt +0 -0
  503. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/_beinahe_treffer.py +0 -0
  504. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/conftest.py +0 -0
  505. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/chia_datalayer_proof.json +0 -0
  506. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/freetsa_receipt_anchor.json +0 -0
  507. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/markovian_log/proof_7271/leaf_7271.raw +0 -0
  508. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/markovian_log/proof_7271/proof_7271.tlog-proof +0 -0
  509. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/MANIFEST.json +0 -0
  510. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/README.md +0 -0
  511. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/MANIFEST.json +0 -0
  512. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/README.md +0 -0
  513. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/manifest.json +0 -0
  514. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-01-valid.txt +0 -0
  515. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-02-tampered-root.txt +0 -0
  516. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-03-tampered-wallet.txt +0 -0
  517. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-04-tampered-proof.txt +0 -0
  518. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/manifest.json +0 -0
  519. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-01-valid.txt +0 -0
  520. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-02-tampered-root.txt +0 -0
  521. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-03-tampered-wallet.txt +0 -0
  522. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-04-tampered-sig.txt +0 -0
  523. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-05-tampered-proof.txt +0 -0
  524. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/01-valid.txt +0 -0
  525. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/02-unknown-id.txt +0 -0
  526. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/03-tampered-body.txt +0 -0
  527. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/04-tampered-proof.txt +0 -0
  528. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/manifest.json +0 -0
  529. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/checkpoint/PROVENANCE.json +0 -0
  530. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/checkpoint/gosumdb_known_keys.go +0 -0
  531. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/checkpoint/rekor_v2_checkpoint.txt +0 -0
  532. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/checkpoint/sumdb_latest.txt +0 -0
  533. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/checkpoint/trusted_root.json +0 -0
  534. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ed25519_speccheck_cases.LICENSE +0 -0
  535. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ed25519_speccheck_cases.README.md +0 -0
  536. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ed25519_speccheck_cases.json +0 -0
  537. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/eee_arc_easy.json +0 -0
  538. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/inspect_logs/safety_refusal_demo.eval +0 -0
  539. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/lm_eval_arc_easy_real.json +0 -0
  540. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/markovian_anchor_confirmed.json +0 -0
  541. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/mldsa_acvp/PROVENANCE.json +0 -0
  542. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/mldsa_acvp/mldsa_sigver_slice.json +0 -0
  543. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/PROVENANCE.json +0 -0
  544. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/block358391.json +0 -0
  545. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/hello-world.txt +0 -0
  546. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/hello-world.txt.ots +0 -0
  547. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/incomplete.txt +0 -0
  548. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/incomplete.txt.ots +0 -0
  549. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/known-and-unknown-notary.txt +0 -0
  550. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/known-and-unknown-notary.txt.ots +0 -0
  551. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/merkle2.txt +0 -0
  552. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/merkle2.txt.ots +0 -0
  553. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/synthetic-upgraded-sha256.block.json +0 -0
  554. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt +0 -0
  555. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt.ots +0 -0
  556. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/two-calendars.txt +0 -0
  557. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/ots/two-calendars.txt.ots +0 -0
  558. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/promptfoo_results_v3.json +0 -0
  559. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/rekor_inclusion_25579.json +0 -0
  560. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/rfc6962_vectors.json +0 -0
  561. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/sdjwt_disclosure_vector.json +0 -0
  562. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/sdjwt_reference_eddsa.json +0 -0
  563. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/sdjwtvc/PROVENANCE.json +0 -0
  564. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/sdjwtvc/sdjwtvc_examples.txt +0 -0
  565. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/fixtures/sdjwtvc/sdjwtvc_issuer_pubkey.json +0 -0
  566. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_adversarial.py +0 -0
  567. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchor_hardening_321.py +0 -0
  568. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchor_longevity_property.py +0 -0
  569. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchor_target_trustedtime.py +0 -0
  570. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_chia.py +0 -0
  571. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_chia_add.py +0 -0
  572. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_chia_claims.py +0 -0
  573. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_generic.py +0 -0
  574. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_markovian.py +0 -0
  575. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_ots.py +0 -0
  576. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_rfc3161.py +0 -0
  577. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_rfc3161_type_floor.py +0 -0
  578. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_anchors_rootcommit.py +0 -0
  579. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_assurance.py +0 -0
  580. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_audit_index_zahlen_stimmen.py +0 -0
  581. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_audit_marker_line_wrap.py +0 -0
  582. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_automation_verdict.py +0 -0
  583. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_beacon.py +0 -0
  584. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_branch_base_check.py +0 -0
  585. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_budget.py +0 -0
  586. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_bughunt_361_automation_failopen.py +0 -0
  587. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_bundle.py +0 -0
  588. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_bundle_robustness.py +0 -0
  589. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_canonical.py +0 -0
  590. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_checkpoint.py +0 -0
  591. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_checkpoint_external_vectors.py +0 -0
  592. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_checkpoint_quorum_property.py +0 -0
  593. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_claims_hygiene.py +0 -0
  594. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_cli.py +0 -0
  595. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_cli_require_anchor.py +0 -0
  596. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_conformance.py +0 -0
  597. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_conformance_retention_361.py +0 -0
  598. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_content_root_property.py +0 -0
  599. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_cosignature.py +0 -0
  600. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_cosignature_mldsa.py +0 -0
  601. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_cross_format_singleton_361.py +0 -0
  602. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_anchors.py +0 -0
  603. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_cli.py +0 -0
  604. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_evidence.py +0 -0
  605. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_fuzz.py +0 -0
  606. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_hardening.py +0 -0
  607. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_policy.py +0 -0
  608. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_schema.py +0 -0
  609. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_validator_api.py +0 -0
  610. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_decision_verify.py +0 -0
  611. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_demo.py +0 -0
  612. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_docs_truth.py +0 -0
  613. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_dsse_adversarial.py +0 -0
  614. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_dup_key_reject.py +0 -0
  615. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_ed25519_semantics.py +0 -0
  616. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_eee.py +0 -0
  617. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_emit.py +0 -0
  618. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_enclave_assurance.py +0 -0
  619. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_erwartungsvergleich_population_guard.py +0 -0
  620. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_eval_claim_schema.py +0 -0
  621. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_eval_evidence_class.py +0 -0
  622. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_evalcard.py +0 -0
  623. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_evalclaim.py +0 -0
  624. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_evidence_pack.py +0 -0
  625. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_examples.py +0 -0
  626. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_experimental_enclave.py +0 -0
  627. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_findings_register_identity_axis.py +0 -0
  628. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_findings_register_rt10.py +0 -0
  629. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_fork_pr_secret_isolation.py +0 -0
  630. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_fuzz_parsers.py +0 -0
  631. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_fuzz_soak_regression.py +0 -0
  632. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_hashalg.py +0 -0
  633. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_hf_entry_verify_eee_digest.py +0 -0
  634. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_hf_evals.py +0 -0
  635. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto.py +0 -0
  636. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto_claims_hygiene.py +0 -0
  637. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto_content_root_migration.py +0 -0
  638. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto_dsse.py +0 -0
  639. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto_eval_result.py +0 -0
  640. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto_examples.py +0 -0
  641. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto_spec_diff.py +0 -0
  642. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_intoto_svr.py +0 -0
  643. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_jcs_mandatory_361.py +0 -0
  644. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_kbjwt.py +0 -0
  645. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_legacy_assurance_deprecation_361.py +0 -0
  646. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_lens_review_fixes_3_1_3.py +0 -0
  647. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_manifest_lock.json +0 -0
  648. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_merkle.py +0 -0
  649. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_merkle_consistency_property.py +0 -0
  650. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_merkle_property.py +0 -0
  651. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_mldsa_acvp_vectors.py +0 -0
  652. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_mutant_signature_guard.py +0 -0
  653. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_mutation_isolation.py +0 -0
  654. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_never_raise_361.py +0 -0
  655. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_never_raise_population_guard.py +0 -0
  656. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_never_raise_primary_arg_property.py +0 -0
  657. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_never_raise_recursion_361.py +0 -0
  658. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_official_vectors.py +0 -0
  659. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_ok_semantics.py +0 -0
  660. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_ots_calendar_hardening.py +0 -0
  661. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_ots_external_vectors.py +0 -0
  662. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_outcome_receiver_corroboration.py +0 -0
  663. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_outcome_verify.py +0 -0
  664. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_oversized_int_guard.py +0 -0
  665. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_path_argument_type_floor.py +0 -0
  666. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_persample.py +0 -0
  667. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_pinned_key_validation.py +0 -0
  668. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_policy_explain_lint.py +0 -0
  669. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_policy_lifecycle_purpose.py +0 -0
  670. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_policy_profiles.py +0 -0
  671. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_policy_templates.py +0 -0
  672. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_pqsig.py +0 -0
  673. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_pre_tag_attestation.py +0 -0
  674. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_predicate_type_enforcement.py +0 -0
  675. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_prereg.py +0 -0
  676. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_promptfoo.py +0 -0
  677. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_provenance.py +0 -0
  678. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_public_transparency.py +0 -0
  679. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_rekor_interop.py +0 -0
  680. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_gate_distance_invariance.py +0 -0
  681. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_profile.py +0 -0
  682. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_property.py +0 -0
  683. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_same_key_361.py +0 -0
  684. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_signer_target_340.py +0 -0
  685. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_statement.py +0 -0
  686. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_statement_rust_parity.py +0 -0
  687. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_relation_subject_pin_361.py +0 -0
  688. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_release_integrity_gate.py +0 -0
  689. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_renewal.py +0 -0
  690. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_renewal_external_token_glue.py +0 -0
  691. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_renewal_policy.py +0 -0
  692. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_renewal_signed.py +0 -0
  693. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_reproducible_build_361.py +0 -0
  694. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_rfc6962_external_vectors.py +0 -0
  695. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_root_authenticity.py +0 -0
  696. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_run_ledger.py +0 -0
  697. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_schema.py +0 -0
  698. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_schema_parity.py +0 -0
  699. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdist_packaging_361.py +0 -0
  700. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdist_selftest_derivation.py +0 -0
  701. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwt_adversarial.py +0 -0
  702. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwt_duplicate_cnf.py +0 -0
  703. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwt_issue.py +0 -0
  704. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwt_reference.py +0 -0
  705. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwt_resource_budget.py +0 -0
  706. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwt_verify_binding.py +0 -0
  707. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sdjwtvc_external_vectors.py +0 -0
  708. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_sibling_never_raise_361.py +0 -0
  709. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_signature.py +0 -0
  710. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_statuslist.py +0 -0
  711. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_structural_budget_reachability.py +0 -0
  712. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_subject_binding.py +0 -0
  713. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_tlogproof.py +0 -0
  714. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_tree_context_authenticity.py +0 -0
  715. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_trust_pack.py +0 -0
  716. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_trust_pack_crypto_agility.py +0 -0
  717. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_trust_pack_outcome_receivers_role.py +0 -0
  718. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_trust_pack_payloadtype_negatives.py +0 -0
  719. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_trust_policy.py +0 -0
  720. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_verification_summary.py +0 -0
  721. {proofbundle-3.8.0 → proofbundle-5.0.0}/tests/test_verify_matrix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proofbundle
3
- Version: 3.8.0
3
+ Version: 5.0.0
4
4
  Summary: Emit and verify portable cryptographic evidence bundles, offline: Ed25519 + RFC 6962 Merkle + optional SD-JWT.
5
5
  Author: Konrad Gruszka
6
6
  License: MIT
@@ -51,7 +51,7 @@ Requires-Dist: jsonschema>=4; extra == "test"
51
51
  Requires-Dist: sd-jwt>=0.10; extra == "test"
52
52
  Requires-Dist: rfc8785>=0.1.4; extra == "test"
53
53
  Provides-Extra: inspect
54
- Requires-Dist: inspect_ai<0.4,>=0.3.112; extra == "inspect"
54
+ Requires-Dist: inspect_ai<=0.3.260,>=0.3.112; extra == "inspect"
55
55
  Provides-Extra: dev
56
56
  Requires-Dist: pytest>=7; extra == "dev"
57
57
  Requires-Dist: ruff<0.17,>=0.5; extra == "dev"
@@ -62,7 +62,7 @@ Requires-Dist: hypothesis>=6; extra == "dev"
62
62
  Requires-Dist: rfc8785>=0.1.4; extra == "dev"
63
63
  Requires-Dist: sd-jwt>=0.10; extra == "dev"
64
64
  Requires-Dist: PyYAML>=6; extra == "dev"
65
- Requires-Dist: inspect_ai<0.4,>=0.3.112; extra == "dev"
65
+ Requires-Dist: inspect_ai<=0.3.260,>=0.3.112; extra == "dev"
66
66
  Dynamic: license-file
67
67
 
68
68
  <div align="center">
@@ -74,12 +74,6 @@ Dynamic: license-file
74
74
 
75
75
  <h1>proofbundle</h1>
76
76
 
77
- **AI eval results need receipts.**
78
-
79
- Turn an AI evaluation result into one portable, offline-verifiable receipt. It proves *who signed
80
- these exact bytes* and *that nothing changed since* — not that the number is true. Ed25519 + RFC 6962
81
- Merkle, one file, no server, no network.
82
-
83
77
  [![CI](https://github.com/b7n0de/proofbundle/actions/workflows/ci.yml/badge.svg)](https://github.com/b7n0de/proofbundle/actions/workflows/ci.yml)
84
78
  [![demo reproducible](https://github.com/b7n0de/proofbundle/actions/workflows/demo-reproducible.yml/badge.svg)](https://github.com/b7n0de/proofbundle/actions/workflows/demo-reproducible.yml)
85
79
  [![PyPI](https://img.shields.io/pypi/v/proofbundle.svg)](https://pypi.org/project/proofbundle/)
@@ -90,10 +84,48 @@ Merkle, one file, no server, no network.
90
84
 
91
85
  Scorecard **6.5/10** — [what the four zeros mean, in one sentence each](#what-the-scorecard-badge-says-including-the-parts-that-are-low)
92
86
 
87
+ **AI eval results need receipts.**
88
+
89
+ Turn an AI evaluation result into one portable, offline-verifiable receipt. It proves *who signed
90
+ these exact bytes* and *that nothing changed since* — not that the number is true. Ed25519 + RFC 6962
91
+ Merkle, one file, no server, no network.
92
+
93
93
  **Reviewing this for adoption?** Start with the 30-minute adversarial audit path: **[docs/REVIEWERS.md](https://github.com/b7n0de/proofbundle/blob/main/docs/REVIEWERS.md)**.
94
94
 
95
95
  </div>
96
96
 
97
+ ## Install
98
+
99
+ ```bash
100
+ pip install proofbundle # core: offline verify + plain emit (two deps: cryptography, rfc8785)
101
+ pip install "proofbundle[eval]" # + eval receipts, prereg, and the demo (RFC 8785 JCS canonicalizer)
102
+ pip install "proofbundle[inspect]" # inspect_ai adapter + hook
103
+ pip install "proofbundle[pq]" # verify ML-DSA-44 (post-quantum) witness cosignatures
104
+ ```
105
+
106
+ Requires Python 3.10+. The verify path never rolls its own crypto — Ed25519 comes from
107
+ `cryptography`; Merkle hashing is RFC 6962.
108
+
109
+ ## 60-second try (offline)
110
+
111
+ ```bash
112
+ pip install "proofbundle[eval]"
113
+ proofbundle demo # honest receipt => OK, six tampers each => FAILED, sample swap caught
114
+ ```
115
+
116
+ The demo runs entirely in memory and exits non-zero if any tamper slips through, so it doubles as a
117
+ self-test.
118
+
119
+ ```bash
120
+ # verify a real hosted receipt without writing any code — the verify runs fully offline:
121
+ curl -fsSL https://raw.githubusercontent.com/b7n0de/proofbundle/main/examples/example_bundle.json -o receipt.json
122
+ proofbundle verify receipt.json # CRYPTO: OK (exit 0 ok · 1 fail · 2 malformed · 3 policy)
123
+ ```
124
+
125
+ Emit your own receipt, apply a trust policy, start from a shipped template, or run the Inspect-native
126
+ path (METR Task Standard / UK-AISI ecosystem, mockllm, no API key): **[docs/DEMO.md](https://github.com/b7n0de/proofbundle/blob/main/docs/DEMO.md)** ·
127
+ Inspect walkthrough **[docs/INSPECT_HAPPY_PATH.md](https://github.com/b7n0de/proofbundle/blob/main/docs/INSPECT_HAPPY_PATH.md)**.
128
+
97
129
  ## What the Scorecard badge says, including the parts that are low
98
130
 
99
131
  The badge is live, so it will move. Measured 2026-08-07, re-measured 2026-08-10 with identical
@@ -128,26 +160,6 @@ measured and not yet addressed.
128
160
  Publishing a middling number with its causes is the point. A project that sells evidence cannot
129
161
  withhold its own.
130
162
 
131
- ## 60-second try (offline)
132
-
133
- ```bash
134
- pip install "proofbundle[eval]"
135
- proofbundle demo # honest receipt => OK, six tampers each => FAILED, sample swap caught
136
- ```
137
-
138
- The demo runs entirely in memory and exits non-zero if any tamper slips through, so it doubles as a
139
- self-test.
140
-
141
- ```bash
142
- # verify a real hosted receipt without writing any code — the verify runs fully offline:
143
- curl -fsSL https://raw.githubusercontent.com/b7n0de/proofbundle/main/examples/example_bundle.json -o receipt.json
144
- proofbundle verify receipt.json # CRYPTO: OK (exit 0 ok · 1 fail · 2 malformed · 3 policy)
145
- ```
146
-
147
- Emit your own receipt, apply a trust policy, start from a shipped template, or run the Inspect-native
148
- path (METR Task Standard / UK-AISI ecosystem, mockllm, no API key): **[docs/DEMO.md](https://github.com/b7n0de/proofbundle/blob/main/docs/DEMO.md)** ·
149
- Inspect walkthrough **[docs/INSPECT_HAPPY_PATH.md](https://github.com/b7n0de/proofbundle/blob/main/docs/INSPECT_HAPPY_PATH.md)**.
150
-
151
163
  ## The problem
152
164
 
153
165
  Every AI eval number you read — a safety benchmark, a capability score, a leaderboard entry — is an
@@ -236,18 +248,6 @@ version history (see also [CHANGELOG.md](https://github.com/b7n0de/proofbundle/b
236
248
  separation (executor ≠ decision maker) — never a claim that the decision was correct.
237
249
  [decision-receipt.md](https://github.com/b7n0de/proofbundle/blob/main/docs/predicates/decision-receipt.md) · [action-outcome.md](https://github.com/b7n0de/proofbundle/blob/main/docs/predicates/action-outcome.md)
238
250
 
239
- ## Install
240
-
241
- ```bash
242
- pip install proofbundle # core: offline verify + plain emit (two deps: cryptography, rfc8785)
243
- pip install "proofbundle[eval]" # + eval receipts, prereg, and the demo (RFC 8785 JCS canonicalizer)
244
- pip install "proofbundle[inspect]" # inspect_ai adapter + hook
245
- pip install "proofbundle[pq]" # verify ML-DSA-44 (post-quantum) witness cosignatures
246
- ```
247
-
248
- Requires Python 3.10+. The verify path never rolls its own crypto — Ed25519 comes from
249
- `cryptography`; Merkle hashing is RFC 6962.
250
-
251
251
  ## Post-quantum posture (honest)
252
252
 
253
253
  proofbundle is **not** "quantum-safe" as a whole. Its hash-based layers (SHA-256, RFC 6962 / 9162
@@ -264,7 +264,8 @@ a post-quantum *payload* signature is on the roadmap. Detail: [docs/ANCHORS.md](
264
264
  If proofbundle helped your evaluation pipeline, please cite it. Machine-readable metadata is in
265
265
  [`CITATION.cff`](https://github.com/b7n0de/proofbundle/blob/main/CITATION.cff). The archival software record is on Zenodo under concept
266
266
  DOI [10.5281/zenodo.21110642](https://doi.org/10.5281/zenodo.21110642); the Technical Note (design write-up) under concept DOI
267
- [10.5281/zenodo.21230466](https://doi.org/10.5281/zenodo.21230466), also linked from [b7n0de.com/proofbundle](https://b7n0de.com/proofbundle).
267
+ [10.5281/zenodo.21230466](https://doi.org/10.5281/zenodo.21230466) version 4.0.0 of the Note is
268
+ [10.5281/zenodo.22004295](https://doi.org/10.5281/zenodo.22004295) — also linked from [b7n0de.com/proofbundle](https://b7n0de.com/proofbundle).
268
269
 
269
270
  ## Docs
270
271
 
@@ -7,12 +7,6 @@
7
7
 
8
8
  <h1>proofbundle</h1>
9
9
 
10
- **AI eval results need receipts.**
11
-
12
- Turn an AI evaluation result into one portable, offline-verifiable receipt. It proves *who signed
13
- these exact bytes* and *that nothing changed since* — not that the number is true. Ed25519 + RFC 6962
14
- Merkle, one file, no server, no network.
15
-
16
10
  [![CI](https://github.com/b7n0de/proofbundle/actions/workflows/ci.yml/badge.svg)](https://github.com/b7n0de/proofbundle/actions/workflows/ci.yml)
17
11
  [![demo reproducible](https://github.com/b7n0de/proofbundle/actions/workflows/demo-reproducible.yml/badge.svg)](https://github.com/b7n0de/proofbundle/actions/workflows/demo-reproducible.yml)
18
12
  [![PyPI](https://img.shields.io/pypi/v/proofbundle.svg)](https://pypi.org/project/proofbundle/)
@@ -23,10 +17,48 @@ Merkle, one file, no server, no network.
23
17
 
24
18
  Scorecard **6.5/10** — [what the four zeros mean, in one sentence each](#what-the-scorecard-badge-says-including-the-parts-that-are-low)
25
19
 
20
+ **AI eval results need receipts.**
21
+
22
+ Turn an AI evaluation result into one portable, offline-verifiable receipt. It proves *who signed
23
+ these exact bytes* and *that nothing changed since* — not that the number is true. Ed25519 + RFC 6962
24
+ Merkle, one file, no server, no network.
25
+
26
26
  **Reviewing this for adoption?** Start with the 30-minute adversarial audit path: **[docs/REVIEWERS.md](https://github.com/b7n0de/proofbundle/blob/main/docs/REVIEWERS.md)**.
27
27
 
28
28
  </div>
29
29
 
30
+ ## Install
31
+
32
+ ```bash
33
+ pip install proofbundle # core: offline verify + plain emit (two deps: cryptography, rfc8785)
34
+ pip install "proofbundle[eval]" # + eval receipts, prereg, and the demo (RFC 8785 JCS canonicalizer)
35
+ pip install "proofbundle[inspect]" # inspect_ai adapter + hook
36
+ pip install "proofbundle[pq]" # verify ML-DSA-44 (post-quantum) witness cosignatures
37
+ ```
38
+
39
+ Requires Python 3.10+. The verify path never rolls its own crypto — Ed25519 comes from
40
+ `cryptography`; Merkle hashing is RFC 6962.
41
+
42
+ ## 60-second try (offline)
43
+
44
+ ```bash
45
+ pip install "proofbundle[eval]"
46
+ proofbundle demo # honest receipt => OK, six tampers each => FAILED, sample swap caught
47
+ ```
48
+
49
+ The demo runs entirely in memory and exits non-zero if any tamper slips through, so it doubles as a
50
+ self-test.
51
+
52
+ ```bash
53
+ # verify a real hosted receipt without writing any code — the verify runs fully offline:
54
+ curl -fsSL https://raw.githubusercontent.com/b7n0de/proofbundle/main/examples/example_bundle.json -o receipt.json
55
+ proofbundle verify receipt.json # CRYPTO: OK (exit 0 ok · 1 fail · 2 malformed · 3 policy)
56
+ ```
57
+
58
+ Emit your own receipt, apply a trust policy, start from a shipped template, or run the Inspect-native
59
+ path (METR Task Standard / UK-AISI ecosystem, mockllm, no API key): **[docs/DEMO.md](https://github.com/b7n0de/proofbundle/blob/main/docs/DEMO.md)** ·
60
+ Inspect walkthrough **[docs/INSPECT_HAPPY_PATH.md](https://github.com/b7n0de/proofbundle/blob/main/docs/INSPECT_HAPPY_PATH.md)**.
61
+
30
62
  ## What the Scorecard badge says, including the parts that are low
31
63
 
32
64
  The badge is live, so it will move. Measured 2026-08-07, re-measured 2026-08-10 with identical
@@ -61,26 +93,6 @@ measured and not yet addressed.
61
93
  Publishing a middling number with its causes is the point. A project that sells evidence cannot
62
94
  withhold its own.
63
95
 
64
- ## 60-second try (offline)
65
-
66
- ```bash
67
- pip install "proofbundle[eval]"
68
- proofbundle demo # honest receipt => OK, six tampers each => FAILED, sample swap caught
69
- ```
70
-
71
- The demo runs entirely in memory and exits non-zero if any tamper slips through, so it doubles as a
72
- self-test.
73
-
74
- ```bash
75
- # verify a real hosted receipt without writing any code — the verify runs fully offline:
76
- curl -fsSL https://raw.githubusercontent.com/b7n0de/proofbundle/main/examples/example_bundle.json -o receipt.json
77
- proofbundle verify receipt.json # CRYPTO: OK (exit 0 ok · 1 fail · 2 malformed · 3 policy)
78
- ```
79
-
80
- Emit your own receipt, apply a trust policy, start from a shipped template, or run the Inspect-native
81
- path (METR Task Standard / UK-AISI ecosystem, mockllm, no API key): **[docs/DEMO.md](https://github.com/b7n0de/proofbundle/blob/main/docs/DEMO.md)** ·
82
- Inspect walkthrough **[docs/INSPECT_HAPPY_PATH.md](https://github.com/b7n0de/proofbundle/blob/main/docs/INSPECT_HAPPY_PATH.md)**.
83
-
84
96
  ## The problem
85
97
 
86
98
  Every AI eval number you read — a safety benchmark, a capability score, a leaderboard entry — is an
@@ -169,18 +181,6 @@ version history (see also [CHANGELOG.md](https://github.com/b7n0de/proofbundle/b
169
181
  separation (executor ≠ decision maker) — never a claim that the decision was correct.
170
182
  [decision-receipt.md](https://github.com/b7n0de/proofbundle/blob/main/docs/predicates/decision-receipt.md) · [action-outcome.md](https://github.com/b7n0de/proofbundle/blob/main/docs/predicates/action-outcome.md)
171
183
 
172
- ## Install
173
-
174
- ```bash
175
- pip install proofbundle # core: offline verify + plain emit (two deps: cryptography, rfc8785)
176
- pip install "proofbundle[eval]" # + eval receipts, prereg, and the demo (RFC 8785 JCS canonicalizer)
177
- pip install "proofbundle[inspect]" # inspect_ai adapter + hook
178
- pip install "proofbundle[pq]" # verify ML-DSA-44 (post-quantum) witness cosignatures
179
- ```
180
-
181
- Requires Python 3.10+. The verify path never rolls its own crypto — Ed25519 comes from
182
- `cryptography`; Merkle hashing is RFC 6962.
183
-
184
184
  ## Post-quantum posture (honest)
185
185
 
186
186
  proofbundle is **not** "quantum-safe" as a whole. Its hash-based layers (SHA-256, RFC 6962 / 9162
@@ -197,7 +197,8 @@ a post-quantum *payload* signature is on the roadmap. Detail: [docs/ANCHORS.md](
197
197
  If proofbundle helped your evaluation pipeline, please cite it. Machine-readable metadata is in
198
198
  [`CITATION.cff`](https://github.com/b7n0de/proofbundle/blob/main/CITATION.cff). The archival software record is on Zenodo under concept
199
199
  DOI [10.5281/zenodo.21110642](https://doi.org/10.5281/zenodo.21110642); the Technical Note (design write-up) under concept DOI
200
- [10.5281/zenodo.21230466](https://doi.org/10.5281/zenodo.21230466), also linked from [b7n0de.com/proofbundle](https://b7n0de.com/proofbundle).
200
+ [10.5281/zenodo.21230466](https://doi.org/10.5281/zenodo.21230466) version 4.0.0 of the Note is
201
+ [10.5281/zenodo.22004295](https://doi.org/10.5281/zenodo.22004295) — also linked from [b7n0de.com/proofbundle](https://b7n0de.com/proofbundle).
201
202
 
202
203
  ## Docs
203
204
 
@@ -58,6 +58,16 @@
58
58
  "relation/statement-retracts-declared-unresolved",
59
59
  "relation/statement-supersedes-verified",
60
60
  "relation/statement-malformed",
61
- "relation/wrong-payloadtype-target"
61
+ "relation/wrong-payloadtype-target",
62
+ "provenance/version-status-reported",
63
+ "provenance/version-status-not-reported",
64
+ "provenance/version-status-not-bound",
65
+ "provenance/version-status-reported-without-field",
66
+ "provenance/version-status-not-reported-with-field",
67
+ "provenance/version-status-missing-reason",
68
+ "provenance/version-status-unknown-literal",
69
+ "provenance/version-status-unrelated-status-field",
70
+ "provenance/version-status-absent-legacy-receipt",
71
+ "provenance/version-status-lookalike-version-field"
62
72
  ]
63
73
  }
@@ -0,0 +1,15 @@
1
+ {
2
+ "caseId": "provenance-version-status-absent-legacy-receipt",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (jury lens 1, 2026-08-26)",
6
+ "expected": {
7
+ "issues": []
8
+ },
9
+ "specRefs": [
10
+ "EVAL_CLAIM.md",
11
+ "CONFORMANCE.md",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "rationale": "A receipt issued before 5.0.0 carries NO status at all and stays valid. The change is additive by requirement, not by accident: demanding a status would invalidate every receipt ever issued. This vector locks that in, so a later reading cannot quietly turn absence into a rejection."
15
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "harness": "lm-eval",
3
+ "harness_version": "0.4.12"
4
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "caseId": "provenance-version-status-lookalike-version-field",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (jury lens 1 round 2, 2026-08-26)",
6
+ "expected": {
7
+ "issues": []
8
+ },
9
+ "specRefs": [
10
+ "EVAL_CLAIM.md",
11
+ "CONFORMANCE.md",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "rationale": "`schema_version` ends in `_version` but is NOT a harness-reported field. Its status — even a malformed one — must produce NO finding, while the real harness field beside it is still checked. The rule governs a NAMED set, not every name that looks like a version: for a verifier a false finding (a valid receipt made to look non-conformant) is the worse error direction, and a suffix rule over-matches by construction."
15
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "schema_version_status": "v1",
3
+ "schema_version": "0.1",
4
+ "harness_version": "0.4.12",
5
+ "harness_version_status": "reported"
6
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "caseId": "provenance-version-status-missing-reason",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (deep-gate iteration 5, finding F-C)",
6
+ "expected": {
7
+ "issues": [
8
+ "harness_version_status=not_reported without harness_version_status_reason (reason is mandatory)"
9
+ ]
10
+ },
11
+ "specRefs": [
12
+ "EVAL_CLAIM.md",
13
+ "CONFORMANCE.md",
14
+ "CHANGELOG.md"
15
+ ],
16
+ "rationale": "A non-`reported` status without its reason moves the ambiguity instead of closing it — which is the whole point of the rule. The reason is mandatory and its absence is non-conformant."
17
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "harness_version_status": "not_reported"
3
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "caseId": "provenance-version-status-not-bound",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (deep-gate iteration 5, finding F-C)",
6
+ "expected": {
7
+ "issues": []
8
+ },
9
+ "specRefs": [
10
+ "EVAL_CLAIM.md",
11
+ "CONFORMANCE.md",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "rationale": "No harness version is bound for this format at all. This is the OTHER meaning that bare absence used to carry, and it is now a distinct, named state."
15
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "harness": "custom-runner",
3
+ "harness_version_status": "not_bound",
4
+ "harness_version_status_reason": "this format carries no harness version; the adapter binds none"
5
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "caseId": "provenance-version-status-not-reported",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (deep-gate iteration 5, finding F-C)",
6
+ "expected": {
7
+ "issues": []
8
+ },
9
+ "specRefs": [
10
+ "EVAL_CLAIM.md",
11
+ "CONFORMANCE.md",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "rationale": "The harness RAN and reported no version. The version field stays ABSENT — writing a value the harness never reported is forbidden — and the status plus its mandatory reason say so explicitly. Before 5.0.0 this receipt was byte-indistinguishable from one where nobody bound the field at all."
15
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "harness": "lm-eval",
3
+ "harness_version_status": "not_reported",
4
+ "harness_version_status_reason": "lm-eval did not write `lm_eval_version` into results.json"
5
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "caseId": "provenance-version-status-not-reported-with-field",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (deep-gate iteration 5, finding F-C)",
6
+ "expected": {
7
+ "issues": [
8
+ "harness_version_status=not_reported but harness_version is present ('0.4.12')"
9
+ ]
10
+ },
11
+ "specRefs": [
12
+ "EVAL_CLAIM.md",
13
+ "CONFORMANCE.md",
14
+ "CHANGELOG.md"
15
+ ],
16
+ "rationale": "The mirror contradiction: the status denies a report while the value sits right beside it. Both directions must be caught, otherwise the pair can lie in one of them."
17
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "harness_version": "0.4.12",
3
+ "harness_version_status": "not_reported",
4
+ "harness_version_status_reason": "x"
5
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "caseId": "provenance-version-status-reported",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (deep-gate iteration 5, finding F-C)",
6
+ "expected": {
7
+ "issues": []
8
+ },
9
+ "specRefs": [
10
+ "EVAL_CLAIM.md",
11
+ "CONFORMANCE.md",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "rationale": "The harness reported a version: the field is present and the status says `reported`. No reason is required — a reported version explains itself. This is the baseline case; an implementation that flags it has made the status itself a finding."
15
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "harness": "lm-eval",
3
+ "harness_version": "0.4.12",
4
+ "harness_version_status": "reported"
5
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "caseId": "provenance-version-status-reported-without-field",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (deep-gate iteration 5, finding F-C)",
6
+ "expected": {
7
+ "issues": [
8
+ "harness_version_status=reported but harness_version is absent"
9
+ ]
10
+ },
11
+ "specRefs": [
12
+ "EVAL_CLAIM.md",
13
+ "CONFORMANCE.md",
14
+ "CHANGELOG.md"
15
+ ],
16
+ "rationale": "A status that claims `reported` while the field it speaks about is absent MUST be rejected. Without this case a verifier could be told anything by the status alone."
17
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "harness_version_status": "reported"
3
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "caseId": "provenance-version-status-unknown-literal",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (deep-gate iteration 5, finding F-C)",
6
+ "expected": {
7
+ "issues": [
8
+ "harness_version_status='maybe' is not one of ['reported', 'not_reported', 'not_bound']"
9
+ ]
10
+ },
11
+ "specRefs": [
12
+ "EVAL_CLAIM.md",
13
+ "CONFORMANCE.md",
14
+ "CHANGELOG.md"
15
+ ],
16
+ "rationale": "Only the three English literals are conformant. An open vocabulary would let an implementation invent a fourth state and call a receipt conformant."
17
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "harness_version_status": "maybe"
3
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "caseId": "provenance-version-status-unrelated-status-field",
3
+ "kind": "provenance_version_status",
4
+ "input": "provenance.json",
5
+ "attribution": "proofbundle 5.0.0 — reported-version status (jury lens 1, 2026-08-26)",
6
+ "expected": {
7
+ "issues": []
8
+ },
9
+ "specRefs": [
10
+ "EVAL_CLAIM.md",
11
+ "CONFORMANCE.md",
12
+ "CHANGELOG.md"
13
+ ],
14
+ "rationale": "A provenance block may carry OTHER fields ending in `_status` (run_status, scorer_status). They are not harness-reported version fields and MUST NOT produce a finding. A verifier that invents a finding on a field it was never asked about makes a valid receipt look non-conformant — the failure this product exists against, pointed the other way. The rule follows the field suffix `_version`, not a hard-coded list, so a future `foo_version` is covered and nothing else is ever touched."
15
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "run_status": "active",
3
+ "scorer_status": "llm",
4
+ "harness_version": "0.4.12",
5
+ "harness_version_status": "reported"
6
+ }
@@ -293,9 +293,50 @@ def _check_relation_statement(case: dict, case_dir: pathlib.Path, *, require_anc
293
293
  return _check_relation(case, case_dir, verb="relation-statement")
294
294
 
295
295
 
296
+ def _check_provenance_version_status(case: dict, case_dir: pathlib.Path, *,
297
+ require_anchors: bool = False) -> dict:
298
+ """A provenance block is checked against the reported-version status rule (v5.0.0).
299
+
300
+ WHY THIS KIND EXISTS. A harness-reported version field used to be simply ABSENT when the
301
+ harness reported none, so absence carried two meanings at once — "the harness reported
302
+ nothing" and "nobody bound this field". For a verifier that ambiguity is the failure class
303
+ the product exists against. v5.0.0 adds an explicit three-value status beside each such
304
+ field; the corpus is the original authority for that rule, so the rule needs cases here and
305
+ not only unit tests.
306
+
307
+ The case declares `expected.issues`: the exact list of problem sentences the verifier must
308
+ produce for that provenance block. An EMPTY list means the block is consistent. Declaring
309
+ the exact list (rather than only a count) is deliberate — a case that merely asserted "some
310
+ problem" would pass on the wrong problem.
311
+ """
312
+ cid = case.get("caseId", str(case_dir))
313
+ exp = case.get("expected") or {}
314
+ if "issues" not in exp:
315
+ return _fail(cid, "provenance_version_status case under-declares its expectations "
316
+ "(fail-closed): missing `issues`")
317
+ name = case.get("input") or "provenance.json"
318
+ if pathlib.Path(name).is_absolute() or ".." in pathlib.PurePosixPath(name).parts:
319
+ return _fail(cid, f"input {name!r} escapes the case directory")
320
+ try:
321
+ prov = json.loads((case_dir / name).read_text())
322
+ except Exception as e: # noqa: BLE001
323
+ return _fail(cid, f"{name} unreadable ({type(e).__name__}: {e})")
324
+ if not isinstance(prov, dict):
325
+ return _fail(cid, f"{name} must contain a JSON object")
326
+ sys.path.insert(0, str(ROOT.parent / "src"))
327
+ from proofbundle.adapters._provenance import version_status_issues # noqa: PLC0415
328
+ got = sorted(version_status_issues(prov))
329
+ want = sorted(str(x) for x in exp["issues"])
330
+ if got != want:
331
+ return _fail(cid, f"issues {got!r} != expected {want!r}")
332
+ return {"caseId": cid, "ok": True,
333
+ "detail": f"{len(got)} issue(s) as expected"}
334
+
335
+
296
336
  _DISPATCH = {"decision_crossimpl": _check_decision_crossimpl, "native_bundle": _check_native_bundle,
297
337
  "decision_relation": _check_decision_relation, "outcome_relation": _check_outcome_relation,
298
- "relation_statement": _check_relation_statement}
338
+ "relation_statement": _check_relation_statement,
339
+ "provenance_version_status": _check_provenance_version_status}
299
340
 
300
341
 
301
342
  def run(*, require_anchors: bool = False) -> int: