proofbundle 3.6.2__tar.gz → 3.7.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 (636) hide show
  1. {proofbundle-3.6.2/src/proofbundle.egg-info → proofbundle-3.7.0}/PKG-INFO +3 -1
  2. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/README.md +10 -7
  3. proofbundle-3.7.0/conformance/decision/crossimpl/canonicalization-root-binding/case.json +26 -0
  4. proofbundle-3.7.0/conformance/decision/crossimpl/schema-conformant/MANIFEST.json +13 -0
  5. proofbundle-3.7.0/conformance/decision/crossimpl/schema-conformant/case.json +42 -0
  6. proofbundle-3.7.0/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs +1 -0
  7. proofbundle-3.7.0/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs.ots +0 -0
  8. proofbundle-3.7.0/conformance/decision/crossimpl/schema-conformant/decision_receipt.json +90 -0
  9. proofbundle-3.7.0/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.jcs +1 -0
  10. proofbundle-3.7.0/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.json +30 -0
  11. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/manifest.json +1 -0
  12. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/generate_vectors.py +2 -2
  13. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/wrong-payloadtype-target/case.json +1 -1
  14. {proofbundle-3.6.2 → proofbundle-3.7.0}/pyproject.toml +7 -1
  15. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/findings_register.py +1 -1
  16. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/mutation_check.py +33 -1
  17. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/rust_parity_registry.json +12 -0
  18. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/__init__.py +1 -1
  19. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/adapters/inspect_ai.py +36 -4
  20. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/adapters/lm_eval.py +9 -1
  21. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/anchors.py +4 -4
  22. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/anchors_chia_add.py +32 -12
  23. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/anchors_ots.py +2 -2
  24. proofbundle-3.7.0/src/proofbundle/anchors_rootcommit.py +269 -0
  25. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/assurance.py +2 -2
  26. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/automation_verdict.py +4 -4
  27. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/bundle.py +5 -5
  28. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/canonical.py +1 -1
  29. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/checkpoint.py +5 -5
  30. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/cli.py +8 -8
  31. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/decision.py +1 -1
  32. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/dsse.py +2 -2
  33. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/evalcard.py +3 -3
  34. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/evalclaim.py +7 -7
  35. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/evidence_pack.py +2 -2
  36. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/experimental/enclave.py +1 -1
  37. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/hf_evals.py +2 -2
  38. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/intoto.py +2 -2
  39. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/kbjwt.py +1 -1
  40. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/outcome.py +2 -2
  41. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/persample.py +1 -1
  42. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/policy.py +19 -13
  43. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/policy_profiles.py +1 -1
  44. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/pqsig.py +1 -1
  45. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/prereg.py +1 -1
  46. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/public_transparency.py +1 -1
  47. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/relation.py +31 -8
  48. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/relation_statement.py +1 -1
  49. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/renewal.py +3 -3
  50. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/sdjwt.py +1 -1
  51. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/sdjwt_issue.py +3 -3
  52. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/sdjwt_vc.py +3 -3
  53. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/signature.py +2 -2
  54. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/statuslist.py +1 -1
  55. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/subject_binding.py +1 -1
  56. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/tlogproof.py +2 -2
  57. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/trust_pack.py +3 -3
  58. {proofbundle-3.6.2 → proofbundle-3.7.0/src/proofbundle.egg-info}/PKG-INFO +3 -1
  59. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle.egg-info/SOURCES.txt +29 -0
  60. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle.egg-info/requires.txt +3 -0
  61. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/MANIFEST.json +55 -0
  62. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/README.md +31 -0
  63. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/MANIFEST.json +102 -0
  64. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/README.md +70 -0
  65. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/manifest.json +51 -0
  66. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-01-valid.txt +15 -0
  67. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-02-tampered-root.txt +15 -0
  68. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-03-tampered-wallet.txt +15 -0
  69. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-04-tampered-proof.txt +15 -0
  70. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/manifest.json +61 -0
  71. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-01-valid.txt +15 -0
  72. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-02-tampered-root.txt +15 -0
  73. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-03-tampered-wallet.txt +15 -0
  74. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-04-tampered-sig.txt +15 -0
  75. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-05-tampered-proof.txt +15 -0
  76. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/01-valid.txt +10 -0
  77. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/02-unknown-id.txt +9 -0
  78. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/03-tampered-body.txt +5 -0
  79. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/04-tampered-proof.txt +9 -0
  80. proofbundle-3.7.0/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/manifest.json +43 -0
  81. proofbundle-3.7.0/tests/test_adapters.py +134 -0
  82. proofbundle-3.7.0/tests/test_anchors_markovian.py +330 -0
  83. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchors_ots.py +1 -1
  84. proofbundle-3.7.0/tests/test_anchors_rootcommit.py +175 -0
  85. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_budget.py +2 -2
  86. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_bughunt_361_automation_failopen.py +1 -1
  87. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_bughunt_361_never_raise.py +10 -10
  88. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_conformance_retention_361.py +3 -3
  89. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_evidence_pack.py +1 -1
  90. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_hf_entry_verify_eee_digest.py +1 -1
  91. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto_claims_hygiene.py +6 -4
  92. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_never_raise_primary_arg_property.py +1 -1
  93. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_never_raise_recursion_361.py +1 -1
  94. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_never_raise_surface_family_property.py +46 -4
  95. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_ots_calendar_hardening.py +1 -1
  96. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_policy_explain_lint.py +1 -1
  97. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sibling_never_raise_361.py +3 -3
  98. proofbundle-3.6.2/conformance/decision/crossimpl/canonicalization-root-binding/case.json +0 -24
  99. proofbundle-3.6.2/tests/test_adapters.py +0 -58
  100. proofbundle-3.6.2/tests/test_anchors_markovian.py +0 -172
  101. {proofbundle-3.6.2 → proofbundle-3.7.0}/LICENSE +0 -0
  102. {proofbundle-3.6.2 → proofbundle-3.7.0}/MANIFEST.in +0 -0
  103. {proofbundle-3.6.2 → proofbundle-3.7.0}/README.md +0 -0
  104. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/coherent-rewrap-fails-expected-root/bundle.json +0 -0
  105. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/coherent-rewrap-fails-expected-root/case.json +0 -0
  106. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/bundle.json +0 -0
  107. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/case.json +0 -0
  108. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/corrupted-signature/bundle.json +0 -0
  109. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/corrupted-signature/case.json +0 -0
  110. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/duplicate-json-key/bundle.json +0 -0
  111. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/duplicate-json-key/case.json +0 -0
  112. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/forged-anchor-own-frozen/bundle.json +0 -0
  113. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/forged-anchor-own-frozen/case.json +0 -0
  114. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/bundle.json +0 -0
  115. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/case.json +0 -0
  116. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/sd-jwt-forged-issuer-identity/bundle.json +0 -0
  117. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/sd-jwt-forged-issuer-identity/case.json +0 -0
  118. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/sd-jwt-signed-but-unbound/bundle.json +0 -0
  119. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/sd-jwt-signed-but-unbound/case.json +0 -0
  120. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/bundle.json +0 -0
  121. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/case.json +0 -0
  122. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/tampered-payload/bundle.json +0 -0
  123. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/tampered-payload/case.json +0 -0
  124. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/tree-size-expectation-mismatch/bundle.json +0 -0
  125. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/tree-size-expectation-mismatch/case.json +0 -0
  126. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/valid-minimal/bundle.json +0 -0
  127. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/bundle/valid-minimal/case.json +0 -0
  128. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/common_vocabulary.py +0 -0
  129. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/cross_format.py +0 -0
  130. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/canonicalization-root-binding/MANIFEST.json +0 -0
  131. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs +0 -0
  132. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs.ots +0 -0
  133. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.json +0 -0
  134. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.jcs +0 -0
  135. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.json +0 -0
  136. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/MANIFEST.json +0 -0
  137. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/case.json +0 -0
  138. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs +0 -0
  139. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs.ots +0 -0
  140. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.json +0 -0
  141. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.jcs +0 -0
  142. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.json +0 -0
  143. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/declared-supersedes-verified/case.json +0 -0
  144. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/declared-supersedes-verified/pub.b64 +0 -0
  145. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/declared-supersedes-verified/receipt.json +0 -0
  146. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/declared-supersedes-verified/related_b.json +0 -0
  147. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/declared-unresolved/case.json +0 -0
  148. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/declared-unresolved/pub.b64 +0 -0
  149. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/declared-unresolved/receipt.json +0 -0
  150. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-accept-path/case.json +0 -0
  151. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-accept-path/policy.json +0 -0
  152. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-accept-path/pub.b64 +0 -0
  153. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-accept-path/receipt.json +0 -0
  154. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-accept-path/related_rx.json +0 -0
  155. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-correct-pass/case.json +0 -0
  156. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-correct-pass/policy.json +0 -0
  157. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-correct-pass/pub.b64 +0 -0
  158. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-correct-pass/receipt.json +0 -0
  159. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-correct-pass/related_r0.json +0 -0
  160. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-correct-pass/related_rx.json +0 -0
  161. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-no-pin-old-behavior/case.json +0 -0
  162. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-no-pin-old-behavior/policy.json +0 -0
  163. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-no-pin-old-behavior/pub.b64 +0 -0
  164. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-no-pin-old-behavior/receipt.json +0 -0
  165. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_r0.json +0 -0
  166. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_rx.json +0 -0
  167. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-target-mismatch/case.json +0 -0
  168. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-target-mismatch/policy.json +0 -0
  169. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-target-mismatch/pub.b64 +0 -0
  170. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-target-mismatch/receipt.json +0 -0
  171. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-target-mismatch/related_r0.json +0 -0
  172. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/decoy-parent-target-mismatch/related_rx.json +0 -0
  173. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/case.json +0 -0
  174. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/pub.b64 +0 -0
  175. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/receipt.json +0 -0
  176. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_001.json +0 -0
  177. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_002.json +0 -0
  178. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_003.json +0 -0
  179. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_004.json +0 -0
  180. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_005.json +0 -0
  181. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_006.json +0 -0
  182. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_007.json +0 -0
  183. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_008.json +0 -0
  184. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_009.json +0 -0
  185. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_010.json +0 -0
  186. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_011.json +0 -0
  187. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_012.json +0 -0
  188. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_013.json +0 -0
  189. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_014.json +0 -0
  190. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_015.json +0 -0
  191. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_016.json +0 -0
  192. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_017.json +0 -0
  193. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_018.json +0 -0
  194. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_019.json +0 -0
  195. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_020.json +0 -0
  196. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_021.json +0 -0
  197. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_022.json +0 -0
  198. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_023.json +0 -0
  199. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_024.json +0 -0
  200. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_025.json +0 -0
  201. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_026.json +0 -0
  202. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_027.json +0 -0
  203. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_028.json +0 -0
  204. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_029.json +0 -0
  205. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_030.json +0 -0
  206. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_031.json +0 -0
  207. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_032.json +0 -0
  208. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/depth-exceeded/related_033.json +0 -0
  209. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/digest-mismatch/case.json +0 -0
  210. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/digest-mismatch/policy.json +0 -0
  211. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/digest-mismatch/pub.b64 +0 -0
  212. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/digest-mismatch/receipt.json +0 -0
  213. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/digest-mismatch/related_b.json +0 -0
  214. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/malformed-digest/case.json +0 -0
  215. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/malformed-digest/pub.b64 +0 -0
  216. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/malformed-digest/receipt.json +0 -0
  217. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-declared-supersedes-verified/case.json +0 -0
  218. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-declared-supersedes-verified/pub.b64 +0 -0
  219. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-declared-supersedes-verified/receipt.json +0 -0
  220. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-declared-supersedes-verified/related_b.json +0 -0
  221. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-decoy-parent-target-mismatch/case.json +0 -0
  222. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-decoy-parent-target-mismatch/policy.json +0 -0
  223. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-decoy-parent-target-mismatch/pub.b64 +0 -0
  224. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-decoy-parent-target-mismatch/receipt.json +0 -0
  225. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_r0.json +0 -0
  226. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_rx.json +0 -0
  227. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-digest-mismatch/case.json +0 -0
  228. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-digest-mismatch/policy.json +0 -0
  229. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-digest-mismatch/pub.b64 +0 -0
  230. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-digest-mismatch/receipt.json +0 -0
  231. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-digest-mismatch/related_b.json +0 -0
  232. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-relation-signer-unauthorized/case.json +0 -0
  233. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-relation-signer-unauthorized/policy.json +0 -0
  234. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-relation-signer-unauthorized/pub.b64 +0 -0
  235. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-relation-signer-unauthorized/receipt.json +0 -0
  236. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-relation-signer-unauthorized/related_b.json +0 -0
  237. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-renews/case.json +0 -0
  238. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-renews/pub.b64 +0 -0
  239. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-renews/receipt.json +0 -0
  240. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-renews/related_b.json +0 -0
  241. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-silent-landing/case.json +0 -0
  242. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-silent-landing/pub.b64 +0 -0
  243. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-silent-landing/receipt.json +0 -0
  244. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-valid-baseline/case.json +0 -0
  245. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-valid-baseline/pub.b64 +0 -0
  246. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/outcome-valid-baseline/receipt.json +0 -0
  247. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-amends/case.json +0 -0
  248. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-amends/pub.b64 +0 -0
  249. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-amends/receipt.json +0 -0
  250. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-amends/related_b.json +0 -0
  251. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-corrects/case.json +0 -0
  252. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-corrects/pub.b64 +0 -0
  253. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-corrects/receipt.json +0 -0
  254. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-corrects/related_b.json +0 -0
  255. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-derivedfrom/case.json +0 -0
  256. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-derivedfrom/pub.b64 +0 -0
  257. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-derivedfrom/receipt.json +0 -0
  258. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-derivedfrom/related_b.json +0 -0
  259. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-retracts/case.json +0 -0
  260. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-retracts/pub.b64 +0 -0
  261. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-retracts/receipt.json +0 -0
  262. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-retracts/related_b.json +0 -0
  263. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-revises/case.json +0 -0
  264. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-revises/pub.b64 +0 -0
  265. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-revises/receipt.json +0 -0
  266. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-revises/related_b.json +0 -0
  267. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/case.json +0 -0
  268. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/policy.json +0 -0
  269. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/pub.b64 +0 -0
  270. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/receipt.json +0 -0
  271. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/related_b.json +0 -0
  272. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-verified/case.json +0 -0
  273. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-verified/policy.json +0 -0
  274. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-verified/pub.b64 +0 -0
  275. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-verified/receipt.json +0 -0
  276. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-cross-issuer-verified/related_b.json +0 -0
  277. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-same-key-explicit/case.json +0 -0
  278. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-same-key-explicit/policy.json +0 -0
  279. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-same-key-explicit/pub.b64 +0 -0
  280. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-same-key-explicit/receipt.json +0 -0
  281. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-same-key-explicit/related_b.json +0 -0
  282. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-verified-under-not-claim/case.json +0 -0
  283. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-verified-under-not-claim/policy.json +0 -0
  284. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-verified-under-not-claim/pub.b64 +0 -0
  285. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-verified-under-not-claim/receipt.json +0 -0
  286. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/relation-signer-verified-under-not-claim/related_b.json +0 -0
  287. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/renews-vector/case.json +0 -0
  288. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/renews-vector/pub.b64 +0 -0
  289. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/renews-vector/receipt.json +0 -0
  290. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/renews-vector/related_b.json +0 -0
  291. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/retracts-then-use/case.json +0 -0
  292. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/retracts-then-use/policy.json +0 -0
  293. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/retracts-then-use/pub.b64 +0 -0
  294. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/retracts-then-use/receipt.json +0 -0
  295. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/retracts-then-use/related_r.json +0 -0
  296. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/silent-landing/case.json +0 -0
  297. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/silent-landing/pub.b64 +0 -0
  298. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/silent-landing/receipt.json +0 -0
  299. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-malformed/case.json +0 -0
  300. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-malformed/pub.b64 +0 -0
  301. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-malformed/receipt.json +0 -0
  302. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-declared-unresolved/case.json +0 -0
  303. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-declared-unresolved/pub.b64 +0 -0
  304. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-declared-unresolved/receipt.json +0 -0
  305. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-unauthorized/case.json +0 -0
  306. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-unauthorized/policy.json +0 -0
  307. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-unauthorized/pub.b64 +0 -0
  308. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-unauthorized/receipt.json +0 -0
  309. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-unauthorized/related_t.json +0 -0
  310. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-blocked/case.json +0 -0
  311. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-blocked/policy.json +0 -0
  312. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-blocked/pub.b64 +0 -0
  313. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-blocked/receipt.json +0 -0
  314. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-blocked/related_t.json +0 -0
  315. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-visible/case.json +0 -0
  316. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-visible/pub.b64 +0 -0
  317. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-visible/receipt.json +0 -0
  318. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-retracts-verified-visible/related_t.json +0 -0
  319. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-supersedes-verified/case.json +0 -0
  320. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-supersedes-verified/pub.b64 +0 -0
  321. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-supersedes-verified/receipt.json +0 -0
  322. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/statement-supersedes-verified/related_t.json +0 -0
  323. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/t1-canonical-invalid-signature/case.json +0 -0
  324. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/t1-canonical-invalid-signature/pub.b64 +0 -0
  325. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/t1-canonical-invalid-signature/receipt.json +0 -0
  326. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-ambiguous/case.json +0 -0
  327. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-ambiguous/pub.b64 +0 -0
  328. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-ambiguous/receipt.json +0 -0
  329. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-ambiguous/related_r0.json +0 -0
  330. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-correct-pass/case.json +0 -0
  331. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-correct-pass/pub.b64 +0 -0
  332. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-correct-pass/receipt.json +0 -0
  333. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-correct-pass/related_r0.json +0 -0
  334. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-mismatch/case.json +0 -0
  335. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-mismatch/pub.b64 +0 -0
  336. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-mismatch/receipt.json +0 -0
  337. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-mismatch/related_r0.json +0 -0
  338. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-missing/case.json +0 -0
  339. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-missing/pub.b64 +0 -0
  340. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-missing/receipt.json +0 -0
  341. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/target-subject-missing/related_r0.json +0 -0
  342. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/unauthorized-signer/case.json +0 -0
  343. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/unauthorized-signer/pub.b64 +0 -0
  344. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/unauthorized-signer/receipt.json +0 -0
  345. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/unauthorized-signer/related_b.json +0 -0
  346. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/valid-baseline/case.json +0 -0
  347. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/valid-baseline/pub.b64 +0 -0
  348. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/valid-baseline/receipt.json +0 -0
  349. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/wrong-payloadtype-target/pub.b64 +0 -0
  350. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/wrong-payloadtype-target/receipt.json +0 -0
  351. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/relation/wrong-payloadtype-target/related_t.json +0 -0
  352. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/run_conformance.py +0 -0
  353. {proofbundle-3.6.2 → proofbundle-3.7.0}/conformance/vector_schema.json +0 -0
  354. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/adr/renewal_policy.example.json +0 -0
  355. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/AUDITOR_OPEN_POINTS.md +0 -0
  356. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/MANIFEST.sha256 +0 -0
  357. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/OPEN_QUESTIONS.md +0 -0
  358. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/PROGRESS.md +0 -0
  359. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/README.md +0 -0
  360. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/REPRODUCTION_RUNBOOK.md +0 -0
  361. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/calendar_independence.md +0 -0
  362. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/differential_matrix.md +0 -0
  363. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/index.json +0 -0
  364. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/proofbundle/readiness_pack.bundle.json +0 -0
  365. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +0 -0
  366. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/rust_parity_scope.md +0 -0
  367. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/tamper_resistance.md +0 -0
  368. {proofbundle-3.6.2 → proofbundle-3.7.0}/docs/readiness_pack/threat_model_delta_360.md +0 -0
  369. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/README.md +0 -0
  370. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/anchors/chia-datalayer-invalid-root.json +0 -0
  371. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/anchors/chia-datalayer-valid.json +0 -0
  372. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/checkpoint_example.py +0 -0
  373. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/decision_receipt_allow.json +0 -0
  374. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/decision_receipt_deny.json +0 -0
  375. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/decision_receipt_escalate.json +0 -0
  376. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/decision_receipt_with_eval_ref.intoto.json +0 -0
  377. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/eee_receipt.py +0 -0
  378. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/example.tlog-proof +0 -0
  379. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/example_bundle.json +0 -0
  380. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/experimental_enclave.py +0 -0
  381. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/inspect_hook_example.py +0 -0
  382. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/inspect_receipt.py +0 -0
  383. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/intoto/private-model-commitment.statement.json +0 -0
  384. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/intoto/public-model.statement.json +0 -0
  385. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/intoto/release-gate.statement.json +0 -0
  386. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/intoto/svr.statement.json +0 -0
  387. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/intoto_dsse_export.py +0 -0
  388. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/lm_eval_receipt.py +0 -0
  389. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/make_example.py +0 -0
  390. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/persample_audit.py +0 -0
  391. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/pytest_plugin_example.py +0 -0
  392. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/rekor_interop.py +0 -0
  393. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/tlog_proof_example.py +0 -0
  394. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/trust_policy_decision_strict.json +0 -0
  395. {proofbundle-3.6.2 → proofbundle-3.7.0}/examples/trust_policy_strict.json +0 -0
  396. {proofbundle-3.6.2 → proofbundle-3.7.0}/formal/README.md +0 -0
  397. {proofbundle-3.6.2 → proofbundle-3.7.0}/formal/model.py +0 -0
  398. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/action-outcome-v0.1.schema.json +0 -0
  399. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/decision-receipt-v0.1.schema.json +0 -0
  400. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/eval_claim_v0_1.schema.json +0 -0
  401. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/in_toto_statement_v1.schema.json +0 -0
  402. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/proofbundle_v0_1.schema.json +0 -0
  403. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/run-ledger-v0.1.schema.json +0 -0
  404. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/trust-pack-v0.1.schema.json +0 -0
  405. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/trust_policy_v0_1.schema.json +0 -0
  406. {proofbundle-3.6.2 → proofbundle-3.7.0}/schemas/verification-summary-v0.1.schema.json +0 -0
  407. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/_build_anchor_fixture.py +0 -0
  408. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/audit_candidate_matrix.py +0 -0
  409. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/branch_base_check.py +0 -0
  410. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/build_reproducible.py +0 -0
  411. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/check_version_and_changelog.py +0 -0
  412. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/claims_hygiene_check.py +0 -0
  413. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/demo.sh +0 -0
  414. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/demo_tamper.sh +0 -0
  415. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/doc_link_check.py +0 -0
  416. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/fork_pr_secret_isolation.py +0 -0
  417. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/fuzz_soak.py +0 -0
  418. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/gen_findings_register.py +0 -0
  419. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/gen_synthetic_ots_fixture.py +0 -0
  420. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/pre_tag_audit_gate.py +0 -0
  421. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/readiness_pack_gate.py +0 -0
  422. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/readiness_pack_manifest.py +0 -0
  423. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/render_demo.py +0 -0
  424. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/rust_parity_gate.py +0 -0
  425. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/test_manifest_gate.py +0 -0
  426. {proofbundle-3.6.2 → proofbundle-3.7.0}/scripts/type_confusion_gate.py +0 -0
  427. {proofbundle-3.6.2 → proofbundle-3.7.0}/setup.cfg +0 -0
  428. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/_inspect_registry.py +0 -0
  429. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/_integration.py +0 -0
  430. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/_strict_json.py +0 -0
  431. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/adapters/__init__.py +0 -0
  432. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/adapters/_provenance.py +0 -0
  433. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/adapters/eee.py +0 -0
  434. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/adapters/promptfoo.py +0 -0
  435. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/adapters/samples.py +0 -0
  436. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/anchors_chia.py +0 -0
  437. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/anchors_markovian.py +0 -0
  438. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/anchors_rfc3161.py +0 -0
  439. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/beacon.py +0 -0
  440. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/budget.py +0 -0
  441. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/demo.py +0 -0
  442. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/eee_eval_schema.json +0 -0
  443. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/emit.py +0 -0
  444. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/errors.py +0 -0
  445. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/experimental/__init__.py +0 -0
  446. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/hashalg.py +0 -0
  447. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/inspect_hook.py +0 -0
  448. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/merkle.py +0 -0
  449. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/policies/decision-receipt-template-v1.json +0 -0
  450. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/policies/research-preview-v1.json +0 -0
  451. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/policies/strict-eval-authenticated-root-template-v1.json +0 -0
  452. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/policies/strict-eval-template-v1.json +0 -0
  453. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/policies/strict-prereg-template-v1.json +0 -0
  454. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/py.typed +0 -0
  455. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/pytest_plugin.py +0 -0
  456. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/run_ledger.py +0 -0
  457. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle/verification_summary.py +0 -0
  458. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle.egg-info/dependency_links.txt +0 -0
  459. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle.egg-info/entry_points.txt +0 -0
  460. {proofbundle-3.6.2 → proofbundle-3.7.0}/src/proofbundle.egg-info/top_level.txt +0 -0
  461. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/conftest.py +0 -0
  462. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/anchors/chia_datalayer_proof.json +0 -0
  463. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/anchors/freetsa_receipt_anchor.json +0 -0
  464. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/checkpoint/PROVENANCE.json +0 -0
  465. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/checkpoint/gosumdb_known_keys.go +0 -0
  466. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/checkpoint/rekor_v2_checkpoint.txt +0 -0
  467. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/checkpoint/sumdb_latest.txt +0 -0
  468. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/checkpoint/trusted_root.json +0 -0
  469. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ed25519_speccheck_cases.LICENSE +0 -0
  470. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ed25519_speccheck_cases.README.md +0 -0
  471. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ed25519_speccheck_cases.json +0 -0
  472. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/eee_arc_easy.json +0 -0
  473. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/inspect_logs/safety_refusal_demo.eval +0 -0
  474. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/lm_eval_arc_easy_real.json +0 -0
  475. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/markovian_anchor_confirmed.json +0 -0
  476. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/mldsa_acvp/PROVENANCE.json +0 -0
  477. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/mldsa_acvp/mldsa_sigver_slice.json +0 -0
  478. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/PROVENANCE.json +0 -0
  479. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/block358391.json +0 -0
  480. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/hello-world.txt +0 -0
  481. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/hello-world.txt.ots +0 -0
  482. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/incomplete.txt +0 -0
  483. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/incomplete.txt.ots +0 -0
  484. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/known-and-unknown-notary.txt +0 -0
  485. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/known-and-unknown-notary.txt.ots +0 -0
  486. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/merkle2.txt +0 -0
  487. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/merkle2.txt.ots +0 -0
  488. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/synthetic-upgraded-sha256.block.json +0 -0
  489. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt +0 -0
  490. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt.ots +0 -0
  491. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/two-calendars.txt +0 -0
  492. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/ots/two-calendars.txt.ots +0 -0
  493. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/promptfoo_results_v3.json +0 -0
  494. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/rekor_inclusion_25579.json +0 -0
  495. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/rfc6962_vectors.json +0 -0
  496. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/sdjwt_disclosure_vector.json +0 -0
  497. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/sdjwt_reference_eddsa.json +0 -0
  498. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/sdjwtvc/PROVENANCE.json +0 -0
  499. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/sdjwtvc/sdjwtvc_examples.txt +0 -0
  500. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/fixtures/sdjwtvc/sdjwtvc_issuer_pubkey.json +0 -0
  501. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_adversarial.py +0 -0
  502. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchor_hardening_321.py +0 -0
  503. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchor_longevity_property.py +0 -0
  504. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchor_target_trustedtime.py +0 -0
  505. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchors_chia.py +0 -0
  506. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchors_chia_add.py +0 -0
  507. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchors_chia_claims.py +0 -0
  508. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchors_generic.py +0 -0
  509. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_anchors_rfc3161.py +0 -0
  510. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_assurance.py +0 -0
  511. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_audit_candidate_360.py +0 -0
  512. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_automation_verdict.py +0 -0
  513. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_beacon.py +0 -0
  514. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_branch_base_check.py +0 -0
  515. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_bundle.py +0 -0
  516. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_bundle_robustness.py +0 -0
  517. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_canonical.py +0 -0
  518. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_checkpoint.py +0 -0
  519. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_checkpoint_external_vectors.py +0 -0
  520. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_checkpoint_quorum_property.py +0 -0
  521. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_claims_hygiene.py +0 -0
  522. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_cli.py +0 -0
  523. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_cli_eval.py +0 -0
  524. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_cli_require_anchor.py +0 -0
  525. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_conformance.py +0 -0
  526. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_content_root_property.py +0 -0
  527. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_cosignature.py +0 -0
  528. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_cosignature_mldsa.py +0 -0
  529. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_cross_format_singleton_361.py +0 -0
  530. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_anchors.py +0 -0
  531. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_cli.py +0 -0
  532. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_evidence.py +0 -0
  533. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_fuzz.py +0 -0
  534. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_hardening.py +0 -0
  535. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_policy.py +0 -0
  536. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_schema.py +0 -0
  537. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_validator_api.py +0 -0
  538. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_decision_verify.py +0 -0
  539. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_demo.py +0 -0
  540. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_docs_truth.py +0 -0
  541. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_dsse_adversarial.py +0 -0
  542. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_dup_key_reject.py +0 -0
  543. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_ed25519_semantics.py +0 -0
  544. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_eee.py +0 -0
  545. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_emit.py +0 -0
  546. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_enclave_assurance.py +0 -0
  547. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_eval_claim_schema.py +0 -0
  548. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_eval_evidence_class.py +0 -0
  549. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_evalcard.py +0 -0
  550. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_evalclaim.py +0 -0
  551. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_examples.py +0 -0
  552. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_experimental_enclave.py +0 -0
  553. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_findings_register_rt10.py +0 -0
  554. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_fork_pr_secret_isolation.py +0 -0
  555. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_fuzz_parsers.py +0 -0
  556. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_fuzz_soak_regression.py +0 -0
  557. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_hashalg.py +0 -0
  558. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_hf_evals.py +0 -0
  559. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_inspect_hook.py +0 -0
  560. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto.py +0 -0
  561. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto_content_root_migration.py +0 -0
  562. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto_dsse.py +0 -0
  563. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto_eval_result.py +0 -0
  564. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto_examples.py +0 -0
  565. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto_spec_diff.py +0 -0
  566. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_intoto_svr.py +0 -0
  567. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_jcs_mandatory_361.py +0 -0
  568. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_kbjwt.py +0 -0
  569. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_legacy_assurance_deprecation_361.py +0 -0
  570. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_lens_review_fixes_3_1_3.py +0 -0
  571. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_manifest_lock.json +0 -0
  572. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_merkle.py +0 -0
  573. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_merkle_consistency_property.py +0 -0
  574. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_merkle_property.py +0 -0
  575. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_mldsa_acvp_vectors.py +0 -0
  576. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_never_raise_361.py +0 -0
  577. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_official_vectors.py +0 -0
  578. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_ok_semantics.py +0 -0
  579. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_ots_external_vectors.py +0 -0
  580. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_outcome_receiver_corroboration.py +0 -0
  581. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_outcome_verify.py +0 -0
  582. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_oversized_int_guard.py +0 -0
  583. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_persample.py +0 -0
  584. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_pinned_key_validation.py +0 -0
  585. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_policy_lifecycle_purpose.py +0 -0
  586. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_policy_profiles.py +0 -0
  587. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_policy_templates.py +0 -0
  588. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_pqsig.py +0 -0
  589. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_predicate_type_enforcement.py +0 -0
  590. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_prereg.py +0 -0
  591. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_promptfoo.py +0 -0
  592. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_provenance.py +0 -0
  593. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_public_transparency.py +0 -0
  594. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_pytest_plugin.py +0 -0
  595. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_rekor_interop.py +0 -0
  596. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_relation_profile.py +0 -0
  597. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_relation_property.py +0 -0
  598. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_relation_same_key_361.py +0 -0
  599. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_relation_signer_target_340.py +0 -0
  600. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_relation_statement.py +0 -0
  601. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_relation_statement_rust_parity.py +0 -0
  602. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_relation_subject_pin_361.py +0 -0
  603. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_release_integrity_gate.py +0 -0
  604. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_renewal.py +0 -0
  605. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_renewal_external_token_glue.py +0 -0
  606. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_renewal_policy.py +0 -0
  607. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_renewal_signed.py +0 -0
  608. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_reproducible_build_361.py +0 -0
  609. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_rfc6962_external_vectors.py +0 -0
  610. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_roadmap_frontload_foundations.py +0 -0
  611. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_root_authenticity.py +0 -0
  612. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_run_ledger.py +0 -0
  613. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_rust_parity_gate.py +0 -0
  614. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_schema.py +0 -0
  615. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_schema_parity.py +0 -0
  616. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdist_packaging_361.py +0 -0
  617. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwt_adversarial.py +0 -0
  618. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwt_duplicate_cnf.py +0 -0
  619. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwt_issue.py +0 -0
  620. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwt_reference.py +0 -0
  621. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwt_resource_budget.py +0 -0
  622. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwt_vc.py +0 -0
  623. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwt_verify_binding.py +0 -0
  624. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_sdjwtvc_external_vectors.py +0 -0
  625. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_signature.py +0 -0
  626. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_statuslist.py +0 -0
  627. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_subject_binding.py +0 -0
  628. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_tlogproof.py +0 -0
  629. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_tree_context_authenticity.py +0 -0
  630. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_trust_pack.py +0 -0
  631. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_trust_pack_crypto_agility.py +0 -0
  632. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_trust_pack_outcome_receivers_role.py +0 -0
  633. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_trust_pack_payloadtype_negatives.py +0 -0
  634. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_trust_policy.py +0 -0
  635. {proofbundle-3.6.2 → proofbundle-3.7.0}/tests/test_verification_summary.py +0 -0
  636. {proofbundle-3.6.2 → proofbundle-3.7.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.6.2
3
+ Version: 3.7.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
@@ -37,6 +37,8 @@ Provides-Extra: chia
37
37
  Provides-Extra: experimental
38
38
  Provides-Extra: pq
39
39
  Requires-Dist: cryptography>=48; extra == "pq"
40
+ Provides-Extra: rootcommit
41
+ Requires-Dist: ecdsa>=0.18; extra == "rootcommit"
40
42
  Provides-Extra: formal
41
43
  Requires-Dist: z3-solver>=4.12; extra == "formal"
42
44
  Provides-Extra: pytest
@@ -57,14 +57,17 @@ Bishop-Fox parser-differential defense), a single flipped payload byte fails the
57
57
 
58
58
  | caseId | proves | does NOT prove |
59
59
  |---|---|---|
60
+ | `decision-crossimpl-schema-conformant` | **full end-to-end `decision-receipt/v0.1` conformance cross-impl**: RFC 8785 canonicalization + content-root binding, the predicate validates clean in NORMAL **and** STRICT mode (0 findings), **and** a confirmed Bitcoin anchor at block 958761 (OTS-committed root matches the real block merkle root, independently fetched from blockstream.info + blockchain.info, verified offline) | that the decision was *correct* — the anchor fixes existence and evidence binding, never correctness |
60
61
  | `decision-crossimpl-confirmed-anchor-lifecycle` | RFC 8785 canonicalization + content-root binding cross-impl, **and** a confirmed Bitcoin anchor at block 957504 (OTS proof committed root matches the real block merkle root, independently fetched, verified offline) | `decision-receipt/v0.1` schema conformance (predicate reports 12 findings) |
61
- | `decision-crossimpl-canonicalization-root-binding` | RFC 8785 canonicalization + content-root binding cross-impl | schema conformance (12 findings, expected-fail) **and** a confirmed anchor (still pending) |
62
-
63
- Both vectors are contributed by MarkovianProtocol / Colin (audit-anchor), vendored digest-pinned
64
- as pure data, credited. The gap between "canonicalization proven" and "full v0.1 conformance" is
65
- recorded in `audit_artifacts/crossimpl_fixture_gap_20260711.md`; a case graduates to a full
66
- end-to-end `decision-receipt/v0.1` conformance case after a schema-conformant regeneration and a
67
- confirmed anchor.
62
+ | `decision-crossimpl-canonicalization-root-binding` *(historical — superseded by `decision-crossimpl-schema-conformant`)* | RFC 8785 canonicalization + content-root binding cross-impl | schema conformance (12 findings, expected-fail) **and** a confirmed anchor (still pending) |
63
+
64
+ All three vectors are contributed by MarkovianProtocol / Colin (audit-anchor), vendored digest-pinned
65
+ as pure data, credited (MIT / SigmaSynth LLC). The gap between "canonicalization proven" and "full v0.1
66
+ conformance", recorded in `audit_artifacts/crossimpl_fixture_gap_20260711.md`, is now closed: **full
67
+ decision-receipt/v0.1 conformance: done (graduated 2026-07-19, block 958761)** with
68
+ `decision-crossimpl-schema-conformant`. The canonicalization-only iteration is retained as a historical
69
+ case (CONFORMANCE.md rule 5, no silent changes: a regeneration is a new case, the old one kept, so its
70
+ historical green run stays reproducible).
68
71
 
69
72
  ## Adding a case
70
73
 
@@ -0,0 +1,26 @@
1
+ {
2
+ "caseId": "decision-crossimpl-canonicalization-root-binding",
3
+ "kind": "decision_crossimpl",
4
+ "input": "canonicalization-root-binding",
5
+ "status": "historical",
6
+ "supersededBy": "decision-crossimpl-schema-conformant",
7
+ "attribution": "MarkovianProtocol / Colin — audit-anchor@3abe69f (examples/decision-receipt)",
8
+ "expected": {
9
+ "jcs_byte_identical": true,
10
+ "content_roots_match_manifest": true,
11
+ "evidence_ref_binds_content_root": true,
12
+ "decision_content_root": "ff05e3e0126e31090511f9e42494bbde4d86c9b1a9a0a9570850c42e8546029b",
13
+ "evidence_content_root": "323adb188f840e90331c920b32a73f348acc5caea8d40f9a84ea384d46c258d4",
14
+ "decision_predicate_findings": 12,
15
+ "schema_conformant": false,
16
+ "anchor": {
17
+ "status": "pending",
18
+ "note": "Re-anchored against the frozen v0.1 URIs; submitted to calendars, not yet confirmed on Bitcoin. No block height. Graduates to a confirmed case after an ots upgrade pins its block."
19
+ }
20
+ },
21
+ "specRefs": [
22
+ "docs/predicates/decision-receipt.md#7.1",
23
+ "SPEC.md"
24
+ ],
25
+ "rationale": "[HISTORICAL ITERATION — superseded by decision-crossimpl-schema-conformant (graduated 2026-07-19, Bitcoin block 958761); retained per CONFORMANCE.md rule 5 (no silent changes: a regeneration is a new case, the old one kept). Vendored bytes and the expected block are unchanged from acceptance — this case still proves exactly what it did, so its historical green run stays reproducible.] The regenerated fixture against the frozen/vendored v0.1 URIs. It proves RFC 8785 canonicalization and content-root binding cross-implementation: the .jcs bytes are byte-identical with proofbundle's canonical output and both content roots recompute to the MANIFEST values (evidence 323adb18…, decision ff05e3e0…), and the evidenceRef binds the evidence content root. It does NOT prove decision-receipt/v0.1 schema conformance — the predicate reports 12 findings, recorded as an expected-fail rather than hidden — and its anchor is still pending. This is the honest 'what it proves today' case; it graduates to a full end-to-end conformance case after a schema-conformant regeneration and a confirmed Bitcoin anchor."
26
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "rule": "anchor root = SHA-256 over RFC 8785 (JCS) canonical statement bytes (content root); signatures are a separate layer.",
3
+ "predicate_uri": "https://b7n0de.com/proofbundle/predicates/decision-receipt/v0.1",
4
+ "evidence_uri": "https://b7n0de.com/attestation/eval-result/v0.1",
5
+ "evidence_content_root_sha256": "323adb188f840e90331c920b32a73f348acc5caea8d40f9a84ea384d46c258d4",
6
+ "decision_content_root_sha256": "97e1d74b810a9fea454ac890c0e17f8a401fb4abbf42827a39aea30846de2fb5",
7
+ "anchored_file": "decision_receipt.jcs",
8
+ "evidenceRefs_bind_to": "evidence content root (survives re-signing / counter-signing / key rotation)",
9
+ "note": "predicateType URIs frozen against proofbundle v2.1.0 (2026-07-10); they are inside the anchored bytes.",
10
+ "parameters_file": "parameters.json",
11
+ "parameters_digest_sha256": "6bb2b8c062d77a0369a13e291e1c3f3171ee656cb935f5e24c76298d91b77e84",
12
+ "fixture_note": "conformance fixture: the acme-intent-classifier scenario is illustrative, not a production decision"
13
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "caseId": "decision-crossimpl-schema-conformant",
3
+ "kind": "decision_crossimpl",
4
+ "input": "schema-conformant",
5
+ "attribution": "MarkovianProtocol / Colin — audit-anchor@ff6a000 (examples/decision-receipt). MIT License, Copyright (c) 2026 SigmaSynth LLC. Vendored as pure data; no local edits to the vendored bytes.",
6
+ "expected": {
7
+ "jcs_byte_identical": true,
8
+ "content_roots_match_manifest": true,
9
+ "evidence_ref_binds_content_root": true,
10
+ "decision_content_root": "97e1d74b810a9fea454ac890c0e17f8a401fb4abbf42827a39aea30846de2fb5",
11
+ "evidence_content_root": "323adb188f840e90331c920b32a73f348acc5caea8d40f9a84ea384d46c258d4",
12
+ "decision_predicate_findings": 0,
13
+ "schema_conformant": true,
14
+ "anchor": {
15
+ "height": 958761,
16
+ "status": "confirmed",
17
+ "frozen": {
18
+ "bitcoinBlockHeaderMerkleRootsByHeight": {
19
+ "958761": "a8e521caf1a50d99240c1808c276cd75e3a3f24f292836593908a16a3ea24f8c"
20
+ }
21
+ },
22
+ "independent_source": {
23
+ "provider": "blockstream.info + blockchain.info",
24
+ "block_hash": "00000000000000000001b882ed05ae87bce809336f7cc3d52947c1c128b34dd2",
25
+ "merkle_root_display_be": "8c4fa23e6aa10839593628294ff2a3e375cd76c208180c24990da5f1ca21e5a8",
26
+ "note": "Block 958761 header independently fetched from two providers (blockstream.info and blockchain.info), same block hash and merkle root. The frozen value is the block-internal (little-endian) merkle root that OpenTimestamps commits to; it is the byte-reverse of the big-endian value block explorers display. Fetched once, offline-verifiable forever against any Bitcoin block header for height 958761."
27
+ },
28
+ "rpTrust": {
29
+ "bitcoinBlockHeaderMerkleRootsByHeight": {
30
+ "958761": "a8e521caf1a50d99240c1808c276cd75e3a3f24f292836593908a16a3ea24f8c"
31
+ }
32
+ },
33
+ "_wp_a1_note": "WP-A1: bitcoinBlockHeaderMerkleRootsByHeight under rpTrust is RELYING-PARTY trust (independently sourced from independent_source above); frozen is kept as producer evidence only and is NEVER trusted. A confirmed verdict requires the relying-party header. The same OTS proof WITHOUT the relying-party header reports needs_rp_trust, not confirmed."
34
+ }
35
+ },
36
+ "specRefs": [
37
+ "docs/predicates/decision-receipt.md#7.1",
38
+ "docs/ANCHORS.md",
39
+ "SPEC.md"
40
+ ],
41
+ "rationale": "The first full end-to-end decision-receipt/v0.1 conformance case in the corpus: a second, independent implementation (MarkovianProtocol / audit-anchor) produces a decision-receipt statement pair whose .jcs bytes are byte-identical with proofbundle's RFC 8785 canonical output, whose content roots recompute to the MANIFEST values (evidence 323adb18…, decision 97e1d74b…), whose evidenceRef binds the evidence content root, whose predicate validates clean against decision-receipt/v0.1 in NORMAL and STRICT mode (0 findings — schema-conformant), and whose OpenTimestamps proof carries a confirmed BitcoinBlockHeaderAttestation at height 958761 (the OTS-committed merkle root matches the real block merkle root independently fetched from blockstream.info and blockchain.info, verified offline against the relying-party header, never by contacting a calendar). This GRADUATES the canonicalization-only cross-impl iteration: it supersedes decision-crossimpl-canonicalization-root-binding (regenerated 3abe69f, decision root ff05e3e0…, schema expected-fail with 12 findings, anchor pending), which is retained as a historical iteration per CONFORMANCE.md rule 5 (no silent changes; a regeneration is a new case, the old one kept). Colin re-anchored once more (a35dee8 -> ff6a000) against the enforced schema and confirmed the Bitcoin anchor. Vendored digest-pinned as pure data, credited (MIT / SigmaSynth LLC)."
42
+ }
@@ -0,0 +1 @@
1
+ {"_type":"https://in-toto.io/Statement/v1","predicate":{"agent":{"id":"agent://acme/deploy-pipeline","version":"1.4.2"},"decidedAt":"2026-07-09T14:20:00Z","decision":{"reasonCodes":["eval.metrics.above-threshold"],"verdict":"ALLOW"},"decisionChangeConditions":[{"conditionType":"metricRegression","description":"accuracy on holdout-2026-06 below 0.90","requiredEvidenceType":"evalResult"},{"conditionType":"policyChange","description":"any listed notChecked property becomes a release requirement"}],"decisionId":"urn:uuid:87a3e6d6-321c-4ea4-85be-3c9941e600a6","decisionMaker":{"id":"https://github.com/MarkovianProtocol/audit-anchor/decision-gate/v1"},"decisionType":"preActionAuthorization","evidenceRefs":[{"digest":{"sha256":"323adb188f840e90331c920b32a73f348acc5caea8d40f9a84ea384d46c258d4"},"predicateType":"https://b7n0de.com/attestation/eval-result/v0.1","relation":"evalResult"}],"inputSnapshot":[{"digest":{"sha256":"bb8601c1fc3cf1dc3e829652df409b1bdd9e866e18f25bf7750c9f8702096edc"},"name":"deployment input bundle"}],"notChecked":["fairness-subgroup-parity","adversarial-robustness"],"policyBoundary":{"decisionPath":"release.gate.prod.allow","policyDigest":{"sha256":"8c561dd1f0c5eb47c9353a60d573dccda3ee30b1a820ccb08660466a36450be9"},"policyEngine":"audit-anchor","policyId":"release-gate/prod"},"principal":{"id":"workload://acme/release-engineering"},"privacy":{"rawInputsIncluded":false,"redactionProfile":"none-required"},"proposedAction":{"actionType":"model.deploy","parametersDigest":{"sha256":"6bb2b8c062d77a0369a13e291e1c3f3171ee656cb935f5e24c76298d91b77e84"},"target":{"digest":{"sha256":"2f0aea2dae36951bbf0eb604a98041cc78ec55f85bf84bb5a6bea96f38c8922e"},"name":"deploy/acme-intent-classifier@1.4.2"}},"schemaVersion":"0.1.0"},"predicateType":"https://b7n0de.com/proofbundle/predicates/decision-receipt/v0.1","subject":[{"digest":{"sha256":"2f0aea2dae36951bbf0eb604a98041cc78ec55f85bf84bb5a6bea96f38c8922e"},"name":"deploy/acme-intent-classifier@1.4.2"}]}
@@ -0,0 +1,90 @@
1
+ {
2
+ "_type": "https://in-toto.io/Statement/v1",
3
+ "subject": [
4
+ {
5
+ "name": "deploy/acme-intent-classifier@1.4.2",
6
+ "digest": {
7
+ "sha256": "2f0aea2dae36951bbf0eb604a98041cc78ec55f85bf84bb5a6bea96f38c8922e"
8
+ }
9
+ }
10
+ ],
11
+ "predicateType": "https://b7n0de.com/proofbundle/predicates/decision-receipt/v0.1",
12
+ "predicate": {
13
+ "schemaVersion": "0.1.0",
14
+ "decisionId": "urn:uuid:87a3e6d6-321c-4ea4-85be-3c9941e600a6",
15
+ "decisionType": "preActionAuthorization",
16
+ "decidedAt": "2026-07-09T14:20:00Z",
17
+ "decisionMaker": {
18
+ "id": "https://github.com/MarkovianProtocol/audit-anchor/decision-gate/v1"
19
+ },
20
+ "agent": {
21
+ "id": "agent://acme/deploy-pipeline",
22
+ "version": "1.4.2"
23
+ },
24
+ "principal": {
25
+ "id": "workload://acme/release-engineering"
26
+ },
27
+ "proposedAction": {
28
+ "actionType": "model.deploy",
29
+ "target": {
30
+ "name": "deploy/acme-intent-classifier@1.4.2",
31
+ "digest": {
32
+ "sha256": "2f0aea2dae36951bbf0eb604a98041cc78ec55f85bf84bb5a6bea96f38c8922e"
33
+ }
34
+ },
35
+ "parametersDigest": {
36
+ "sha256": "6bb2b8c062d77a0369a13e291e1c3f3171ee656cb935f5e24c76298d91b77e84"
37
+ }
38
+ },
39
+ "inputSnapshot": [
40
+ {
41
+ "name": "deployment input bundle",
42
+ "digest": {
43
+ "sha256": "bb8601c1fc3cf1dc3e829652df409b1bdd9e866e18f25bf7750c9f8702096edc"
44
+ }
45
+ }
46
+ ],
47
+ "policyBoundary": {
48
+ "policyEngine": "audit-anchor",
49
+ "policyId": "release-gate/prod",
50
+ "decisionPath": "release.gate.prod.allow",
51
+ "policyDigest": {
52
+ "sha256": "8c561dd1f0c5eb47c9353a60d573dccda3ee30b1a820ccb08660466a36450be9"
53
+ }
54
+ },
55
+ "evidenceRefs": [
56
+ {
57
+ "relation": "evalResult",
58
+ "digest": {
59
+ "sha256": "323adb188f840e90331c920b32a73f348acc5caea8d40f9a84ea384d46c258d4"
60
+ },
61
+ "predicateType": "https://b7n0de.com/attestation/eval-result/v0.1"
62
+ }
63
+ ],
64
+ "decision": {
65
+ "verdict": "ALLOW",
66
+ "reasonCodes": [
67
+ "eval.metrics.above-threshold"
68
+ ]
69
+ },
70
+ "notChecked": [
71
+ "fairness-subgroup-parity",
72
+ "adversarial-robustness"
73
+ ],
74
+ "decisionChangeConditions": [
75
+ {
76
+ "conditionType": "metricRegression",
77
+ "description": "accuracy on holdout-2026-06 below 0.90",
78
+ "requiredEvidenceType": "evalResult"
79
+ },
80
+ {
81
+ "conditionType": "policyChange",
82
+ "description": "any listed notChecked property becomes a release requirement"
83
+ }
84
+ ],
85
+ "privacy": {
86
+ "rawInputsIncluded": false,
87
+ "redactionProfile": "none-required"
88
+ }
89
+ }
90
+ }
@@ -0,0 +1 @@
1
+ {"_type":"https://in-toto.io/Statement/v1","predicate":{"dataset":{"digest":{"sha256":"165dee5e8cd78240bd9232891f0dcdff6f8977ba3f2cb3de4e43709d8077408d"},"name":"holdout-2026-06"},"evaluatedAt":"2026-07-09T14:12:00Z","harness":{"name":"deepeval","version":"3.2.0"},"metrics":{"accuracy":0.947,"auroc":0.981,"f1":0.933}},"predicateType":"https://b7n0de.com/attestation/eval-result/v0.1","subject":[{"digest":{"sha256":"2931a9b8100d45cc2fae06bd150919283a6b7c26a16304ed13e835b6593584f7"},"name":"model/acme-intent-classifier@1.4.2"}]}
@@ -0,0 +1,30 @@
1
+ {
2
+ "_type": "https://in-toto.io/Statement/v1",
3
+ "subject": [
4
+ {
5
+ "name": "model/acme-intent-classifier@1.4.2",
6
+ "digest": {
7
+ "sha256": "2931a9b8100d45cc2fae06bd150919283a6b7c26a16304ed13e835b6593584f7"
8
+ }
9
+ }
10
+ ],
11
+ "predicateType": "https://b7n0de.com/attestation/eval-result/v0.1",
12
+ "predicate": {
13
+ "harness": {
14
+ "name": "deepeval",
15
+ "version": "3.2.0"
16
+ },
17
+ "dataset": {
18
+ "name": "holdout-2026-06",
19
+ "digest": {
20
+ "sha256": "165dee5e8cd78240bd9232891f0dcdff6f8977ba3f2cb3de4e43709d8077408d"
21
+ }
22
+ },
23
+ "metrics": {
24
+ "accuracy": 0.947,
25
+ "f1": 0.933,
26
+ "auroc": 0.981
27
+ },
28
+ "evaluatedAt": "2026-07-09T14:12:00Z"
29
+ }
30
+ }
@@ -4,6 +4,7 @@
4
4
  "cases": [
5
5
  "decision/crossimpl/confirmed-anchor-lifecycle",
6
6
  "decision/crossimpl/canonicalization-root-binding",
7
+ "decision/crossimpl/schema-conformant",
7
8
  "bundle/valid-minimal",
8
9
  "bundle/duplicate-json-key",
9
10
  "bundle/tampered-payload",
@@ -634,7 +634,7 @@ def main() -> None:
634
634
  related_pubs=[x_pub, x_pub], policy="policy.json",
635
635
  kind="outcome_relation", attribution=loek, cross_format_id="xfmt-t3-decoy"))
636
636
 
637
- # 15) wrong-payloadType target (Berkeley audit — Rust payloadType fail-open regression, 3.5.0):
637
+ # 15) wrong-payloadType target (adversarial deep audit — Rust payloadType fail-open regression, 3.5.0):
638
638
  # a SAME-KEY related target whose DSSE envelope carries the WRONG payloadType (validly signed
639
639
  # over a foreign type). Python _load_related pins the in-toto payloadType (cli.py:1241-1242), so
640
640
  # the target is attached-but-unverified -> lineage FAIL, exit 2; the independent Rust verifier
@@ -653,7 +653,7 @@ def main() -> None:
653
653
  base_case("relation-wrong-payloadtype-target",
654
654
  {"exitCode": 2, "lineage": "FAIL",
655
655
  "errorContains": "relation:target_verification_failed"},
656
- "payloadType type-confusion (Berkeley audit, Rust fail-open regression): a "
656
+ "payloadType type-confusion (adversarial deep audit, Rust fail-open regression): a "
657
657
  "same-key related target signed under the WRONG payloadType is "
658
658
  "attached-but-unverified. Python pins the in-toto payloadType in _load_related "
659
659
  "and the independent Rust verifier now pins it too (verify_dsse "
@@ -13,7 +13,7 @@
13
13
  "docs/predicates/relation.md",
14
14
  "docs/design/RELATION_V01_DESIGN.md"
15
15
  ],
16
- "rationale": "payloadType type-confusion (Berkeley audit, Rust fail-open regression): a same-key related target signed under the WRONG payloadType is attached-but-unverified. Python pins the in-toto payloadType in _load_related and the independent Rust verifier now pins it too (verify_dsse expected_payload_type) — BOTH reject (exit 2, lineage FAIL). Before the fix the Rust relation path authenticated the foreign-type envelope (exit 0, VERIFIED): the differential vector that proves the pin.",
16
+ "rationale": "payloadType type-confusion (adversarial deep audit, Rust fail-open regression): a same-key related target signed under the WRONG payloadType is attached-but-unverified. Python pins the in-toto payloadType in _load_related and the independent Rust verifier now pins it too (verify_dsse expected_payload_type) — BOTH reject (exit 2, lineage FAIL). Before the fix the Rust relation path authenticated the foreign-type envelope (exit 0, VERIFIED): the differential vector that proves the pin.",
17
17
  "testKeys": "fresh throwaway keys, generated by conformance/relation/generate_vectors.py",
18
18
  "related": [
19
19
  "related_t.json"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "proofbundle"
7
- version = "3.6.2"
7
+ version = "3.7.0"
8
8
  description = "Emit and verify portable cryptographic evidence bundles, offline: Ed25519 + RFC 6962 Merkle + optional SD-JWT."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -72,6 +72,12 @@ experimental = []
72
72
  # cryptography build with OpenSSL 3.5+ (default PyPI wheels since 48.0.0). Verify-only by default;
73
73
  # the emit helper needs the same. Ed25519 paths never require this.
74
74
  pq = ["cryptography>=48"]
75
+ # rootcommit/v2-sig SIGNATURE verification (proofbundle.anchors_rootcommit): EIP-191 personal_sign recovery
76
+ # to the bound operator wallet. Needs a pure-python secp256k1 recovery backend (`ecdsa`); keccak-256 comes
77
+ # from pycryptodome(x), already present via the [anchors] OTS lib. Verify-only, offline, no C build. The v1
78
+ # verify and the v2-sig BINDING check need only [anchors]; without this extra the v2-sig signature outcomes
79
+ # honestly skip (sig_ok None / status no_sig_lib), never a silent pass. `pip install proofbundle[rootcommit]`.
80
+ rootcommit = ["ecdsa>=0.18"]
75
81
  # EXPERIMENTAL: the versioned formal model of the relation-lineage ladder (Fundament F3, formal/model.py).
76
82
  # z3-solver enables the z3-EXTENDED symbolic proof (higher symbolic arity than bounded enumeration can
77
83
  # reach). Without it the model still runs a complete bounded-enumeration proof — the extra only adds the
@@ -88,7 +88,7 @@ def _resolve_current(findings: list) -> tuple[dict, list, list, set]:
88
88
  The prior version SILENTLY DROPPED a finding whenever it carried ANY ``superseded_by`` string — even a
89
89
  DANGLING link (target id absent), a SELF-supersession (superseded_by == own id) or a non-string id —
90
90
  which let a validly-signed register hide an open P0 behind a bogus supersession and still report 0 open
91
- (a fail-open the Berkeley gate reproduced). Now a finding is legitimately superseded ONLY by a PRESENT,
91
+ (a fail-open the adversarial deep-gate reproduced). Now a finding is legitimately superseded ONLY by a PRESENT,
92
92
  DIFFERENT id; a dangling/self supersession, a non-string/empty id, or a non-dict entry is an ANOMALY that
93
93
  is NEVER dropped (the caller fails closed on any anomaly), so no finding can vanish from the count."""
94
94
  ids_present = {f["id"] for f in findings
@@ -367,7 +367,7 @@ MUTATIONS = [
367
367
  # (iv) require_relation_target equality check disabled (the DECOY parent slips through): killed by
368
368
  # test_decoy_parent_fails_closed / decoy-parent conformance vectors.
369
369
  ("src/proofbundle/relation.py",
370
- " if e.get(\"targetDigest\") not in set(allowed):",
370
+ " if not (isinstance(_td, str) and _td in set(allowed)):",
371
371
  " if False:",
372
372
  "require_relation_target: parent equality check disabled (decoy parent passes)", True),
373
373
  # (v) targetSubjectDigest gegenpruefung inverted (O2 no longer catches a lying subject): killed by
@@ -395,6 +395,38 @@ MUTATIONS = [
395
395
  " r[\"crypto_ok\"] and r[\"structure_ok\"] and r[\"predicate_type_ok\"]",
396
396
  " r[\"structure_ok\"] and r[\"predicate_type_ok\"]",
397
397
  "relation-statement: cryptoValid dropped from aggregate ok (lattice violation)", True),
398
+ # 3.6.3 never-raise residual (adversarial re-audit r7) — three new fail-closed guards on
399
+ # direct-low-level-API sinks. Each disabled guard re-opens a raw type-confusion crash caught by
400
+ # tests/test_never_raise_surface_family_property.py::test_round5_nested_config_subfield_regression
401
+ # (R7-1/R7-2/R7-3 pins). Generator-hardening: a future rewrite that drops one goes red HERE.
402
+ # R7-1 — verify_relationship_edges subject_hex non-str coercion (unhashable {subject_hex} seed).
403
+ ("src/proofbundle/relation.py",
404
+ " subject_hex = subject_hex if isinstance(subject_hex, str) else None",
405
+ " subject_hex = subject_hex",
406
+ "relation: R7-1 subject_hex non-str coercion disabled (unhashable cycle-seed crash)", True),
407
+ # R7-2 — evaluate_relations_policy non-dict edges-element filter (three sinks: relation/signer/target).
408
+ ("src/proofbundle/relation.py",
409
+ " edges = [e for e in edges if isinstance(e, dict)]",
410
+ " edges = list(edges)",
411
+ "relation: R7-2 non-dict edges-element filter disabled (e.get crash on all three sinks)", True),
412
+ # R7-3 — _authenticate_trusted_checkpoint non-dict entry guard (entry.get before its own try/except).
413
+ ("src/proofbundle/policy.py",
414
+ " if not isinstance(entry, dict):\n return False, \"trusted checkpoint entry not an object\"",
415
+ " if False:\n return False, \"trusted checkpoint entry not an object\"",
416
+ "policy: R7-3 non-dict trusted_checkpoint entry guard disabled (entry.get crash)", True),
417
+ # R7-2b (adversarial re-audit siblings, iter 1 -> 2) — three more evaluate_relations_policy sinks.
418
+ ("src/proofbundle/relation.py",
419
+ " lineage_result = lineage_result if isinstance(lineage_result, dict) else {}",
420
+ " lineage_result = lineage_result",
421
+ "relation: R7-2b non-dict lineage_result coercion disabled (reject_superseded .get crash)", True),
422
+ ("src/proofbundle/relation.py",
423
+ " rule = signer.get(_rel) if isinstance(_rel, str) else None",
424
+ " rule = signer.get(_rel)",
425
+ "relation: R7-2b unhashable relation signer-lookup guard disabled (dict-key TypeError)", True),
426
+ ("src/proofbundle/relation.py",
427
+ " pinned = target_pin.get(_rel) if isinstance(_rel, str) else None",
428
+ " pinned = target_pin.get(_rel)",
429
+ "relation: R7-2b unhashable relation target-lookup guard disabled (dict-key TypeError)", True),
398
430
  ]
399
431
 
400
432
 
@@ -185,6 +185,18 @@
185
185
  "crosscheck_refs": [],
186
186
  "notes": "Fail-closed verifier for a markovian-provenance/v1 external anchor."
187
187
  },
188
+ "proofbundle.anchors_rootcommit.verify_rootcommit_v1": {
189
+ "status": "PENDING",
190
+ "rust_subcommands": [],
191
+ "crosscheck_refs": [],
192
+ "notes": "Fail-closed second-implementation verifier for the MarkovianProtocol rootcommit/v1 external anchor (Bitcoin OTS over a domain-separated preimage folding the checkpoint root + operator wallet; corpus pinned at 9034202). Python-only, no Rust parity."
193
+ },
194
+ "proofbundle.anchors_rootcommit.verify_rootcommit_v2sig": {
195
+ "status": "PENDING",
196
+ "rust_subcommands": [],
197
+ "crosscheck_refs": [],
198
+ "notes": "Fail-closed second-implementation verifier for the MarkovianProtocol rootcommit/v2-sig external anchor (v1 binding plus an EIP-191/secp256k1 wallet signature over the commitment, signature enforced only with the optional [rootcommit] backend). Python-only, no Rust parity."
199
+ },
188
200
  "proofbundle.anchors_chia.verify_offline_merkle": {
189
201
  "status": "PENDING",
190
202
  "rust_subcommands": [],
@@ -13,7 +13,7 @@ from __future__ import annotations
13
13
 
14
14
  from typing import TYPE_CHECKING
15
15
 
16
- __version__ = "3.6.2"
16
+ __version__ = "3.7.0"
17
17
 
18
18
  # The `proofbundle/v0.1` normative spec revision this build implements — kept in sync with the
19
19
  # `Revision:` line at the top of SPEC.md by tests/test_docs_truth.py (WP-B1, closes #28). Bump
@@ -12,7 +12,7 @@ commitments (never plaintext in the payload).
12
12
  """
13
13
  from __future__ import annotations
14
14
 
15
- from typing import Optional
15
+ from typing import Any, Optional
16
16
 
17
17
  from ..evalclaim import build_eval_claim
18
18
 
@@ -64,12 +64,14 @@ def from_inspect_ai_log(path, metric: str, *, comparator: str, threshold: str, t
64
64
  raise InspectAdapterError("inspect_ai log missing .eval or .results (empty or malformed log)")
65
65
 
66
66
  value = None
67
+ matched_score = None
67
68
  for score in (getattr(results, "scores", None) or []):
68
69
  metrics = getattr(score, "metrics", None) or {}
69
70
  if metric in metrics:
70
71
  value = getattr(metrics[metric], "value", None)
72
+ matched_score = score
71
73
  break
72
- if value is None:
74
+ if value is None or matched_score is None:
73
75
  raise InspectAdapterError(f"metric {metric!r} not found in any score.metrics of the log")
74
76
 
75
77
  suite = str(getattr(ev, "task", "inspect_ai"))
@@ -78,7 +80,7 @@ def from_inspect_ai_log(path, metric: str, *, comparator: str, threshold: str, t
78
80
  dataset_id = str(getattr(dataset, "name", None) or suite)
79
81
 
80
82
  # Provenance parity with the lm-eval adapter: inspect_ai exposes the same run provenance for free.
81
- provenance = {"harness": "inspect_ai"}
83
+ provenance: dict[str, Any] = {"harness": "inspect_ai"}
82
84
  revision = getattr(ev, "revision", None)
83
85
  commit = getattr(revision, "commit", None)
84
86
  if commit:
@@ -90,6 +92,30 @@ def from_inspect_ai_log(path, metric: str, *, comparator: str, threshold: str, t
90
92
  if tv is not None:
91
93
  provenance["task_version"] = str(tv)
92
94
 
95
+ # Bind the metric to the scorer that produced it. Without these fields, a deterministic scorer
96
+ # and an LLM judge can emit byte-identical claims when their aggregate numbers match. We record
97
+ # objective identity/configuration facts only; no reliability class is inferred here.
98
+ scorer = getattr(matched_score, "scorer", None)
99
+ if scorer:
100
+ provenance["scorer"] = str(scorer)
101
+ score_name = getattr(matched_score, "name", None)
102
+ if score_name:
103
+ provenance["score_name"] = str(score_name)
104
+ reducer = getattr(matched_score, "reducer", None)
105
+ if reducer:
106
+ provenance["score_reducer"] = str(reducer)
107
+ scored_samples = getattr(matched_score, "scored_samples", None)
108
+ unscored_samples = getattr(matched_score, "unscored_samples", None)
109
+ for name, count in (("scored_samples", scored_samples), ("unscored_samples", unscored_samples)):
110
+ if isinstance(count, int) and not isinstance(count, bool) and count >= 0:
111
+ provenance[name] = count
112
+ params = getattr(matched_score, "params", None)
113
+ if isinstance(params, dict) and params:
114
+ from ._provenance import config_hash
115
+ params_hash = config_hash(params)
116
+ if params_hash:
117
+ provenance["scorer_params_hash"] = params_hash
118
+
93
119
  # v1.8 (external review): run-id + config-hash + LOG-NATIVE timestamp so a receipt traces back
94
120
  # to the exact run. inspect_ai: eval.run_id (unique run id), eval.created (UTC datetime string),
95
121
  # eval.task_args (the config material — no native config hash exists, so we compute one).
@@ -99,9 +125,15 @@ def from_inspect_ai_log(path, metric: str, *, comparator: str, threshold: str, t
99
125
  config=task_args if isinstance(task_args, dict) else None,
100
126
  log_timestamp=getattr(ev, "created", None))
101
127
 
128
+ # EvalScore.scored_samples is the population the selected metric was actually computed over.
129
+ # total_samples can include unscored samples, so using it would overstate the signed claim's n.
130
+ metric_n = (scored_samples if isinstance(scored_samples, int)
131
+ and not isinstance(scored_samples, bool) and scored_samples >= 0
132
+ else int(getattr(results, "total_samples", 0) or 0))
133
+
102
134
  return build_eval_claim(
103
135
  suite=suite, suite_version=str(getattr(ev, "task_version", "1")),
104
136
  metric=metric, comparator=comparator, threshold=threshold, score=_score_str(value),
105
- n=int(getattr(results, "total_samples", 0) or 0),
137
+ n=metric_n,
106
138
  model_id=model_id, dataset_id=dataset_id, issuer="", timestamp=timestamp,
107
139
  provenance=provenance, model_salt=model_salt, dataset_salt=dataset_salt)
@@ -56,12 +56,20 @@ def from_lm_eval_results(path, task: str, metric: str, *, comparator: str, thres
56
56
 
57
57
  n_samples = data.get("n-samples", {}).get(task, {})
58
58
  n = int(n_samples.get("effective") or n_samples.get("original") or res.get("sample_len") or 0)
59
+ effective_samples = int(n_samples["effective"]) if n_samples.get("effective") is not None else n
60
+ original_samples = (int(n_samples["original"])
61
+ if n_samples.get("original") is not None else effective_samples)
62
+ if effective_samples < 0 or original_samples < 0:
63
+ raise ValueError("n-samples effective and original counts must be non-negative")
64
+ skipped_samples = max(original_samples - effective_samples, 0)
59
65
  cfg = data.get("config", {})
60
66
  model_id = str(cfg.get("model_name") or cfg.get("model") or "unknown")
61
67
  if cfg.get("model_args"):
62
68
  model_id = f"{model_id}::{cfg['model_args']}" # include args so the commitment pins the exact model
63
69
 
64
- provenance = {"harness": "lm-evaluation-harness", "matched_metric_key": matched}
70
+ provenance = {"harness": "lm-evaluation-harness", "matched_metric_key": matched,
71
+ "effective_samples": effective_samples, "original_samples": original_samples,
72
+ "skipped_samples": skipped_samples}
65
73
  if data.get("git_hash"):
66
74
  provenance["git_hash"] = str(data["git_hash"])
67
75
  if data.get("versions", {}).get(task) is not None:
@@ -54,7 +54,7 @@ _VERIFIERS: dict[str, Callable] = {}
54
54
 
55
55
 
56
56
  def _as_dict(v):
57
- """Berkeley r5 class-fix: Config-Sub-Feld als dict, sonst {} (schliesst das ``_as_dict(x.get(k))``-Loch)."""
57
+ """adversarial re-audit r5 class-fix: Config-Sub-Feld als dict, sonst {} (schliesst das ``_as_dict(x.get(k))``-Loch)."""
58
58
  return v if isinstance(v, dict) else {}
59
59
 
60
60
 
@@ -123,7 +123,7 @@ def receipt_canonical_root(bundle: dict) -> bytes:
123
123
  from ._strict_json import enforce_structural_budget # noqa: PLC0415 - local import avoids an import cycle
124
124
  from .errors import ProofBundleError # noqa: PLC0415
125
125
  try:
126
- # Berkeley re-gate round 7: bound depth (<=64) / node count BEFORE rfc8785.dumps recurses — a deeply
126
+ # adversarial re-audit round 7: bound depth (<=64) / node count BEFORE rfc8785.dumps recurses — a deeply
127
127
  # nested bundle made rfc8785.dumps raise a raw RecursionError (a RuntimeError, NOT the ValueError arm
128
128
  # below, NOT a ProofBundleError, so it escaped this public verify-path primitive). This mirrors the
129
129
  # round-5 fix on the peer canonical.canonicalize_statement / statement_content_root.
@@ -216,7 +216,7 @@ def verify_anchor(anchor: dict, *, target_roots: dict, now: Optional[int] = None
216
216
  out["detail"] = (f"no verifier registered for anchor type {atype!r} "
217
217
  "(install proofbundle[anchors] or register the extension type)")
218
218
  return out
219
- expected_root = _as_dict(target_roots).get(target) # Berkeley r5: target_roots kwarg (None/int) fail-closed
219
+ expected_root = _as_dict(target_roots).get(target) # adversarial re-audit r5: target_roots kwarg (None/int) fail-closed
220
220
  if expected_root is None:
221
221
  out["detail"] = f"the receipt has no {target} target to anchor against"
222
222
  return out
@@ -226,7 +226,7 @@ def verify_anchor(anchor: dict, *, target_roots: dict, now: Optional[int] = None
226
226
  out["detail"] = f"canonicalRoot does not match the {target} root (cross-target or tampered)"
227
227
  return out
228
228
  proof = _b64d(anchor.get("proof"), "proof")
229
- # Berkeley re-gate round 6 (defensive): `_as_dict(anchor.get("frozen"))` only replaces a FALSY non-dict; a
229
+ # adversarial re-audit round 6 (defensive): `_as_dict(anchor.get("frozen"))` only replaces a FALSY non-dict; a
230
230
  # TRUTHY non-dict from an attacker bundle ("frozen":"x" / [...]) would reach a verifier's frozen.get(...).
231
231
  # The `except Exception` below already fail-closes that, but normalize any non-dict to {} up front so the
232
232
  # verifiers never see a wrong type.