proofbundle 5.0.0__tar.gz → 5.1.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 (817) hide show
  1. {proofbundle-5.0.0 → proofbundle-5.1.0}/MANIFEST.in +26 -0
  2. proofbundle-5.1.0/Makefile +71 -0
  3. {proofbundle-5.0.0/src/proofbundle.egg-info → proofbundle-5.1.0}/PKG-INFO +3 -3
  4. proofbundle-5.1.0/conformance/agent_review/_generator/build_vectors.py +362 -0
  5. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-foreign-key-cannot-supersede-our-receipt/case.json +16 -0
  6. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-foreign-key-cannot-supersede-our-receipt/chain.json +22 -0
  7. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-superseded-predecessor-must-still-be-present/case.json +16 -0
  8. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-superseded-predecessor-must-still-be-present/chain.json +13 -0
  9. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-anchored-time-needs-evidence/case.json +16 -0
  10. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-anchored-time-needs-evidence/predicate.json +66 -0
  11. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-assurance-cannot-be-self-raised/case.json +16 -0
  12. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-assurance-cannot-be-self-raised/predicate.json +66 -0
  13. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-complete-needs-an-expectation/case.json +16 -0
  14. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-complete-needs-an-expectation/predicate.json +62 -0
  15. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-duplicate-disclosure-block-fails-closed/body.json +3 -0
  16. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-duplicate-disclosure-block-fails-closed/case.json +16 -0
  17. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-findings-root-covers-the-list/case.json +19 -0
  18. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-findings-root-covers-the-list/envelope.json +9 -0
  19. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-gap-duty-cannot-be-switched-off/case.json +16 -0
  20. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-gap-duty-cannot-be-switched-off/predicate.json +58 -0
  21. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-introducing-the-first-block-moves-the-digest/bodies.json +4 -0
  22. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-introducing-the-first-block-moves-the-digest/case.json +16 -0
  23. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-partial-must-name-its-gap/case.json +16 -0
  24. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-partial-must-name-its-gap/predicate.json +63 -0
  25. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-receipt-does-not-travel-between-subjects/case.json +19 -0
  26. proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-receipt-does-not-travel-between-subjects/envelope.json +9 -0
  27. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-absent-expectation-is-reported/case.json +16 -0
  28. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-absent-expectation-is-reported/envelope.json +9 -0
  29. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-emit-verify-roundtrip/case.json +18 -0
  30. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-emit-verify-roundtrip/predicate.json +49 -0
  31. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-prepare-then-fill-keeps-the-digest/bodies.json +4 -0
  32. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-prepare-then-fill-keeps-the-digest/case.json +16 -0
  33. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-rerendered-block-keeps-body-core/bodies.json +4 -0
  34. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-rerendered-block-keeps-body-core/case.json +16 -0
  35. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-supersession-names-the-current-receipt/case.json +16 -0
  36. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-supersession-names-the-current-receipt/chain.json +22 -0
  37. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-valid-self-declared/case.json +19 -0
  38. proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-valid-self-declared/envelope.json +9 -0
  39. proofbundle-5.1.0/conformance/agent_review/publickey.hex +1 -0
  40. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/common_vocabulary.py +18 -0
  41. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/cross_format.py +5 -2
  42. proofbundle-5.1.0/conformance/envelope_profile/generate_vectors.py +239 -0
  43. proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-float-is-refused-so-two-axes-cannot-arise/case.json +16 -0
  44. proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-float-is-refused-so-two-axes-cannot-arise/objects.json +8 -0
  45. proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-nonconformant-serializer-diverges/case.json +16 -0
  46. proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-nonconformant-serializer-diverges/object.json +11 -0
  47. proofbundle-5.1.0/conformance/envelope_profile/r1-positive-control-canonical-root/case.json +17 -0
  48. proofbundle-5.1.0/conformance/envelope_profile/r1-positive-control-canonical-root/object.json +11 -0
  49. proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-foreign-schema-id-is-refused-not-invalid/bundle.json +16 -0
  50. proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-foreign-schema-id-is-refused-not-invalid/case.json +15 -0
  51. proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-unverifiable-is-invalid-not-refused/bundle.json +16 -0
  52. proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-unverifiable-is-invalid-not-refused/case.json +15 -0
  53. proofbundle-5.1.0/conformance/envelope_profile/r2-positive-control-known-schema-classifies-valid/bundle.json +16 -0
  54. proofbundle-5.1.0/conformance/envelope_profile/r2-positive-control-known-schema-classifies-valid/case.json +15 -0
  55. proofbundle-5.1.0/conformance/envelope_profile/r3-counter-proof-hand-signed-binding-lies-about-tree-size/bundle.json +16 -0
  56. proofbundle-5.1.0/conformance/envelope_profile/r3-counter-proof-hand-signed-binding-lies-about-tree-size/case.json +15 -0
  57. proofbundle-5.1.0/conformance/envelope_profile/r3-positive-control-coherent-sample-binding/bundle.json +16 -0
  58. proofbundle-5.1.0/conformance/envelope_profile/r3-positive-control-coherent-sample-binding/case.json +15 -0
  59. proofbundle-5.1.0/conformance/envelope_profile/r4-counter-proof-issuer-is-not-the-signing-key/bundle.json +16 -0
  60. proofbundle-5.1.0/conformance/envelope_profile/r4-counter-proof-issuer-is-not-the-signing-key/case.json +15 -0
  61. proofbundle-5.1.0/conformance/envelope_profile/r4-positive-control-issuer-is-the-signing-key/bundle.json +16 -0
  62. proofbundle-5.1.0/conformance/envelope_profile/r4-positive-control-issuer-is-the-signing-key/case.json +15 -0
  63. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/manifest.json +75 -48
  64. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/run_conformance.py +328 -1
  65. proofbundle-5.1.0/conformance/unshipped_spec_refs_baseline.json +23 -0
  66. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/vector_schema.json +6 -4
  67. proofbundle-5.1.0/docs/AGENT_REVIEW_PREDICATE.md +187 -0
  68. proofbundle-5.1.0/docs/RECEIPT_ENVELOPE_PROFILE.md +240 -0
  69. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/MANIFEST.sha256 +2 -2
  70. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/PROGRESS.md +1 -1
  71. proofbundle-5.1.0/docs/readiness_pack/index.json +270 -0
  72. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/proofbundle/readiness_pack.bundle.json +4 -4
  73. proofbundle-5.1.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +1 -0
  74. {proofbundle-5.0.0 → proofbundle-5.1.0}/pyproject.toml +15 -3
  75. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/decision-receipt-v0.1.schema.json +14 -1
  76. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/audit_candidate_matrix.py +51 -4
  77. proofbundle-5.1.0/scripts/audit_output_aufloesbar.py +133 -0
  78. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/mutation_check.py +12 -4
  79. proofbundle-5.1.0/scripts/mutation_operators_fresh.py +106 -0
  80. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/rust_parity_registry.json +36 -0
  81. proofbundle-5.1.0/scripts/shipped_docs_check.py +132 -0
  82. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/type_confusion_gate.py +6 -0
  83. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/__init__.py +1 -1
  84. proofbundle-5.1.0/src/proofbundle/agent_review.py +2337 -0
  85. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/automation_verdict.py +27 -0
  86. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/decision.py +36 -1
  87. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/evalclaim.py +46 -0
  88. {proofbundle-5.0.0 → proofbundle-5.1.0/src/proofbundle.egg-info}/PKG-INFO +3 -3
  89. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/SOURCES.txt +100 -0
  90. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/requires.txt +2 -2
  91. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/conftest.py +174 -15
  92. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/MANIFEST.json +45 -0
  93. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/checkpoint_at_submit.txt +16 -0
  94. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/checkpoint_latest.txt +16 -0
  95. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/checkpoint_witnessed.txt +16 -0
  96. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/inclusion_path.txt +9 -0
  97. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/leaf.txt +1 -0
  98. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/proof_bundle.json +28 -0
  99. proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/submit_response.json +13 -0
  100. proofbundle-5.1.0/tests/fixtures/kette_147/body_wie_am_ziel.md +29 -0
  101. proofbundle-5.1.0/tests/fixtures/kette_147/receipt.json +9 -0
  102. proofbundle-5.1.0/tests/test_agent_review_binding_semantics.py +367 -0
  103. proofbundle-5.1.0/tests/test_agent_review_conformance_runner.py +443 -0
  104. proofbundle-5.1.0/tests/test_agent_review_statement_shape.py +202 -0
  105. proofbundle-5.1.0/tests/test_agent_review_zeitsemantik.py +290 -0
  106. proofbundle-5.1.0/tests/test_anchors_markovian_submit.py +194 -0
  107. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_matrix_version_pin_binding.py +23 -3
  108. proofbundle-5.1.0/tests/test_audit_output_aufloesbar.py +133 -0
  109. proofbundle-5.1.0/tests/test_ausgelieferte_doku_haelt.py +170 -0
  110. proofbundle-5.1.0/tests/test_automation_nie_nachsichtiger_als_ok.py +436 -0
  111. proofbundle-5.1.0/tests/test_beide_verifier_pfade_antworten_gleich.py +104 -0
  112. proofbundle-5.1.0/tests/test_classify_eval_claim.py +183 -0
  113. proofbundle-5.1.0/tests/test_dokumentierte_laeufer_koennen_die_suite_fahren.py +427 -0
  114. proofbundle-5.1.0/tests/test_evidence_typed_digest.py +179 -0
  115. proofbundle-5.1.0/tests/test_findings_root_bindet_die_liste.py +143 -0
  116. proofbundle-5.1.0/tests/test_gegenbeweis_zeigt_nicht_ins_leere.py +109 -0
  117. proofbundle-5.1.0/tests/test_jede_formpruefung_nennt_ihren_grund.py +853 -0
  118. proofbundle-5.1.0/tests/test_jeder_code_meint_genau_eine_lage.py +724 -0
  119. proofbundle-5.1.0/tests/test_jeder_gegenbeweis_faellt_auf_seiner_achse.py +90 -0
  120. proofbundle-5.1.0/tests/test_kette_verliert_kein_gueltiges_receipt.py +88 -0
  121. proofbundle-5.1.0/tests/test_korpus_arten_haben_eine_quelle.py +67 -0
  122. proofbundle-5.1.0/tests/test_korpus_stammt_aus_seinem_generator.py +91 -0
  123. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_surface_family_property.py +41 -0
  124. proofbundle-5.1.0/tests/test_p05_kette_ereignis_bis_offline_verify.py +133 -0
  125. proofbundle-5.1.0/tests/test_p0_2_disclosure_core_digest.py +273 -0
  126. proofbundle-5.1.0/tests/test_p0_4_coverage_und_zeit.py +196 -0
  127. proofbundle-5.1.0/tests/test_p0_urspruengliche_mutationen.py +224 -0
  128. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_audit_provenance.py +13 -7
  129. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_roadmap_frontload_foundations.py +13 -2
  130. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdist_selftest_derivation.py +95 -0
  131. proofbundle-5.1.0/tests/test_zeitsemantik_policy_und_supersession.py +370 -0
  132. proofbundle-5.0.0/docs/readiness_pack/index.json +0 -121
  133. proofbundle-5.0.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +0 -1
  134. {proofbundle-5.0.0 → proofbundle-5.1.0}/LICENSE +0 -0
  135. {proofbundle-5.0.0 → proofbundle-5.1.0}/README.md +0 -0
  136. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/README.md +0 -0
  137. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-fails-expected-root/bundle.json +0 -0
  138. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-fails-expected-root/case.json +0 -0
  139. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/bundle.json +0 -0
  140. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/case.json +0 -0
  141. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/corrupted-signature/bundle.json +0 -0
  142. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/corrupted-signature/case.json +0 -0
  143. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/duplicate-json-key/bundle.json +0 -0
  144. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/duplicate-json-key/case.json +0 -0
  145. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/forged-anchor-own-frozen/bundle.json +0 -0
  146. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/forged-anchor-own-frozen/case.json +0 -0
  147. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/bundle.json +0 -0
  148. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/case.json +0 -0
  149. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-forged-issuer-identity/bundle.json +0 -0
  150. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-forged-issuer-identity/case.json +0 -0
  151. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-signed-but-unbound/bundle.json +0 -0
  152. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-signed-but-unbound/case.json +0 -0
  153. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/bundle.json +0 -0
  154. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/case.json +0 -0
  155. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tampered-payload/bundle.json +0 -0
  156. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tampered-payload/case.json +0 -0
  157. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tree-size-expectation-mismatch/bundle.json +0 -0
  158. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tree-size-expectation-mismatch/case.json +0 -0
  159. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/valid-minimal/bundle.json +0 -0
  160. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/valid-minimal/case.json +0 -0
  161. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/MANIFEST.json +0 -0
  162. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/case.json +0 -0
  163. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs +0 -0
  164. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs.ots +0 -0
  165. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.json +0 -0
  166. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.jcs +0 -0
  167. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.json +0 -0
  168. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/MANIFEST.json +0 -0
  169. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/case.json +0 -0
  170. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs +0 -0
  171. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs.ots +0 -0
  172. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.json +0 -0
  173. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.jcs +0 -0
  174. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.json +0 -0
  175. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/MANIFEST.json +0 -0
  176. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/case.json +0 -0
  177. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs +0 -0
  178. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs.ots +0 -0
  179. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.json +0 -0
  180. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.jcs +0 -0
  181. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.json +0 -0
  182. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-absent-legacy-receipt/case.json +0 -0
  183. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-absent-legacy-receipt/provenance.json +0 -0
  184. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-lookalike-version-field/case.json +0 -0
  185. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-lookalike-version-field/provenance.json +0 -0
  186. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-missing-reason/case.json +0 -0
  187. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-missing-reason/provenance.json +0 -0
  188. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-bound/case.json +0 -0
  189. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-bound/provenance.json +0 -0
  190. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported/case.json +0 -0
  191. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported/provenance.json +0 -0
  192. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported-with-field/case.json +0 -0
  193. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported-with-field/provenance.json +0 -0
  194. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported/case.json +0 -0
  195. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported/provenance.json +0 -0
  196. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported-without-field/case.json +0 -0
  197. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported-without-field/provenance.json +0 -0
  198. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unknown-literal/case.json +0 -0
  199. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unknown-literal/provenance.json +0 -0
  200. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unrelated-status-field/case.json +0 -0
  201. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unrelated-status-field/provenance.json +0 -0
  202. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/case.json +0 -0
  203. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/pub.b64 +0 -0
  204. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/receipt.json +0 -0
  205. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/related_b.json +0 -0
  206. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-unresolved/case.json +0 -0
  207. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-unresolved/pub.b64 +0 -0
  208. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-unresolved/receipt.json +0 -0
  209. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/case.json +0 -0
  210. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/policy.json +0 -0
  211. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/pub.b64 +0 -0
  212. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/receipt.json +0 -0
  213. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/related_rx.json +0 -0
  214. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/case.json +0 -0
  215. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/policy.json +0 -0
  216. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/pub.b64 +0 -0
  217. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/receipt.json +0 -0
  218. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/related_r0.json +0 -0
  219. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/related_rx.json +0 -0
  220. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/case.json +0 -0
  221. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/policy.json +0 -0
  222. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/pub.b64 +0 -0
  223. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/receipt.json +0 -0
  224. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_r0.json +0 -0
  225. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_rx.json +0 -0
  226. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/case.json +0 -0
  227. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/policy.json +0 -0
  228. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/pub.b64 +0 -0
  229. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/receipt.json +0 -0
  230. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/related_r0.json +0 -0
  231. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/related_rx.json +0 -0
  232. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/case.json +0 -0
  233. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/pub.b64 +0 -0
  234. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/receipt.json +0 -0
  235. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_001.json +0 -0
  236. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_002.json +0 -0
  237. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_003.json +0 -0
  238. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_004.json +0 -0
  239. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_005.json +0 -0
  240. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_006.json +0 -0
  241. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_007.json +0 -0
  242. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_008.json +0 -0
  243. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_009.json +0 -0
  244. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_010.json +0 -0
  245. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_011.json +0 -0
  246. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_012.json +0 -0
  247. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_013.json +0 -0
  248. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_014.json +0 -0
  249. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_015.json +0 -0
  250. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_016.json +0 -0
  251. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_017.json +0 -0
  252. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_018.json +0 -0
  253. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_019.json +0 -0
  254. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_020.json +0 -0
  255. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_021.json +0 -0
  256. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_022.json +0 -0
  257. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_023.json +0 -0
  258. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_024.json +0 -0
  259. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_025.json +0 -0
  260. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_026.json +0 -0
  261. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_027.json +0 -0
  262. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_028.json +0 -0
  263. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_029.json +0 -0
  264. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_030.json +0 -0
  265. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_031.json +0 -0
  266. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_032.json +0 -0
  267. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_033.json +0 -0
  268. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/case.json +0 -0
  269. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/policy.json +0 -0
  270. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/pub.b64 +0 -0
  271. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/receipt.json +0 -0
  272. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/related_b.json +0 -0
  273. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/generate_vectors.py +0 -0
  274. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/malformed-digest/case.json +0 -0
  275. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/malformed-digest/pub.b64 +0 -0
  276. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/malformed-digest/receipt.json +0 -0
  277. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/case.json +0 -0
  278. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/pub.b64 +0 -0
  279. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/receipt.json +0 -0
  280. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/related_b.json +0 -0
  281. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/case.json +0 -0
  282. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/policy.json +0 -0
  283. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/pub.b64 +0 -0
  284. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/receipt.json +0 -0
  285. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_r0.json +0 -0
  286. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_rx.json +0 -0
  287. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/case.json +0 -0
  288. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/policy.json +0 -0
  289. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/pub.b64 +0 -0
  290. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/receipt.json +0 -0
  291. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/related_b.json +0 -0
  292. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/case.json +0 -0
  293. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/policy.json +0 -0
  294. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/pub.b64 +0 -0
  295. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/receipt.json +0 -0
  296. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/related_b.json +0 -0
  297. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/case.json +0 -0
  298. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/pub.b64 +0 -0
  299. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/receipt.json +0 -0
  300. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/related_b.json +0 -0
  301. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-silent-landing/case.json +0 -0
  302. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-silent-landing/pub.b64 +0 -0
  303. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-silent-landing/receipt.json +0 -0
  304. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-valid-baseline/case.json +0 -0
  305. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-valid-baseline/pub.b64 +0 -0
  306. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-valid-baseline/receipt.json +0 -0
  307. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/case.json +0 -0
  308. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/pub.b64 +0 -0
  309. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/receipt.json +0 -0
  310. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/related_b.json +0 -0
  311. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/case.json +0 -0
  312. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/pub.b64 +0 -0
  313. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/receipt.json +0 -0
  314. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/related_b.json +0 -0
  315. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/case.json +0 -0
  316. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/pub.b64 +0 -0
  317. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/receipt.json +0 -0
  318. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/related_b.json +0 -0
  319. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/case.json +0 -0
  320. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/pub.b64 +0 -0
  321. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/receipt.json +0 -0
  322. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/related_b.json +0 -0
  323. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/case.json +0 -0
  324. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/pub.b64 +0 -0
  325. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/receipt.json +0 -0
  326. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/related_b.json +0 -0
  327. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/case.json +0 -0
  328. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/policy.json +0 -0
  329. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/pub.b64 +0 -0
  330. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/receipt.json +0 -0
  331. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/related_b.json +0 -0
  332. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/case.json +0 -0
  333. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/policy.json +0 -0
  334. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/pub.b64 +0 -0
  335. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/receipt.json +0 -0
  336. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/related_b.json +0 -0
  337. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/case.json +0 -0
  338. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/policy.json +0 -0
  339. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/pub.b64 +0 -0
  340. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/receipt.json +0 -0
  341. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/related_b.json +0 -0
  342. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/case.json +0 -0
  343. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/policy.json +0 -0
  344. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/pub.b64 +0 -0
  345. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/receipt.json +0 -0
  346. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/related_b.json +0 -0
  347. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/case.json +0 -0
  348. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/pub.b64 +0 -0
  349. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/receipt.json +0 -0
  350. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/related_b.json +0 -0
  351. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/case.json +0 -0
  352. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/policy.json +0 -0
  353. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/pub.b64 +0 -0
  354. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/receipt.json +0 -0
  355. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/related_r.json +0 -0
  356. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/silent-landing/case.json +0 -0
  357. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/silent-landing/pub.b64 +0 -0
  358. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/silent-landing/receipt.json +0 -0
  359. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-malformed/case.json +0 -0
  360. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-malformed/pub.b64 +0 -0
  361. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-malformed/receipt.json +0 -0
  362. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-declared-unresolved/case.json +0 -0
  363. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-declared-unresolved/pub.b64 +0 -0
  364. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-declared-unresolved/receipt.json +0 -0
  365. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/case.json +0 -0
  366. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/policy.json +0 -0
  367. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/pub.b64 +0 -0
  368. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/receipt.json +0 -0
  369. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/related_t.json +0 -0
  370. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/case.json +0 -0
  371. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/policy.json +0 -0
  372. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/pub.b64 +0 -0
  373. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/receipt.json +0 -0
  374. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/related_t.json +0 -0
  375. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/case.json +0 -0
  376. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/pub.b64 +0 -0
  377. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/receipt.json +0 -0
  378. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/related_t.json +0 -0
  379. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/case.json +0 -0
  380. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/pub.b64 +0 -0
  381. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/receipt.json +0 -0
  382. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/related_t.json +0 -0
  383. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/t1-canonical-invalid-signature/case.json +0 -0
  384. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/t1-canonical-invalid-signature/pub.b64 +0 -0
  385. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/t1-canonical-invalid-signature/receipt.json +0 -0
  386. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/case.json +0 -0
  387. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/pub.b64 +0 -0
  388. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/receipt.json +0 -0
  389. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/related_r0.json +0 -0
  390. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/case.json +0 -0
  391. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/pub.b64 +0 -0
  392. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/receipt.json +0 -0
  393. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/related_r0.json +0 -0
  394. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/case.json +0 -0
  395. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/pub.b64 +0 -0
  396. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/receipt.json +0 -0
  397. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/related_r0.json +0 -0
  398. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/case.json +0 -0
  399. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/pub.b64 +0 -0
  400. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/receipt.json +0 -0
  401. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/related_r0.json +0 -0
  402. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/case.json +0 -0
  403. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/pub.b64 +0 -0
  404. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/receipt.json +0 -0
  405. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/related_b.json +0 -0
  406. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/valid-baseline/case.json +0 -0
  407. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/valid-baseline/pub.b64 +0 -0
  408. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/valid-baseline/receipt.json +0 -0
  409. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/case.json +0 -0
  410. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/pub.b64 +0 -0
  411. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/receipt.json +0 -0
  412. {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/related_t.json +0 -0
  413. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/adr/renewal_policy.example.json +0 -0
  414. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/AUDITOR_OPEN_POINTS.md +0 -0
  415. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/OPEN_QUESTIONS.md +0 -0
  416. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/README.md +0 -0
  417. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/REPRODUCTION_RUNBOOK.md +0 -0
  418. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/calendar_independence.md +0 -0
  419. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/differential_matrix.md +0 -0
  420. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/rust_parity_scope.md +0 -0
  421. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/tamper_resistance.md +0 -0
  422. {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/threat_model_delta_360.md +0 -0
  423. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/README.md +0 -0
  424. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/anchors/chia-datalayer-invalid-root.json +0 -0
  425. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/anchors/chia-datalayer-valid.json +0 -0
  426. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/checkpoint_example.py +0 -0
  427. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_allow.json +0 -0
  428. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_deny.json +0 -0
  429. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_escalate.json +0 -0
  430. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_with_eval_ref.intoto.json +0 -0
  431. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/eee_receipt.py +0 -0
  432. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/example.tlog-proof +0 -0
  433. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/example_bundle.json +0 -0
  434. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/experimental_enclave.py +0 -0
  435. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/inspect_hook_example.py +0 -0
  436. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/inspect_receipt.py +0 -0
  437. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/private-model-commitment.statement.json +0 -0
  438. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/public-model.statement.json +0 -0
  439. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/release-gate.statement.json +0 -0
  440. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/svr.statement.json +0 -0
  441. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto_dsse_export.py +0 -0
  442. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/lm_eval_receipt.py +0 -0
  443. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/make_example.py +0 -0
  444. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/persample_audit.py +0 -0
  445. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/pytest_plugin_example.py +0 -0
  446. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/rekor_interop.py +0 -0
  447. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/tlog_proof_example.py +0 -0
  448. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/trust_policy_decision_strict.json +0 -0
  449. {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/trust_policy_strict.json +0 -0
  450. {proofbundle-5.0.0 → proofbundle-5.1.0}/formal/README.md +0 -0
  451. {proofbundle-5.0.0 → proofbundle-5.1.0}/formal/model.py +0 -0
  452. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/action-outcome-v0.1.schema.json +0 -0
  453. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/eval_claim_v0_1.schema.json +0 -0
  454. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/in_toto_statement_v1.schema.json +0 -0
  455. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/proofbundle_v0_1.schema.json +0 -0
  456. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/run-ledger-v0.1.schema.json +0 -0
  457. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/trust-pack-v0.1.schema.json +0 -0
  458. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/trust_policy_v0_1.schema.json +0 -0
  459. {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/verification-summary-v0.1.schema.json +0 -0
  460. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/_build_anchor_fixture.py +0 -0
  461. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/branch_base_check.py +0 -0
  462. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/build_reproducible.py +0 -0
  463. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/check_version_and_changelog.py +0 -0
  464. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/claims_hygiene_check.py +0 -0
  465. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/demo.sh +0 -0
  466. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/demo_tamper.sh +0 -0
  467. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/doc_link_check.py +0 -0
  468. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/finding_base_drift.py +0 -0
  469. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/findings_register.py +0 -0
  470. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/fork_pr_secret_isolation.py +0 -0
  471. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/fuzz_soak.py +0 -0
  472. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/gate_qualification_harness.py +0 -0
  473. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/gen_findings_register.py +0 -0
  474. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/gen_synthetic_ots_fixture.py +0 -0
  475. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/git-hooks/pre-commit +0 -0
  476. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/install_git_hooks.sh +0 -0
  477. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/mutant_signature_guard.py +0 -0
  478. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_attestation.py +0 -0
  479. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_audit_gate.py +0 -0
  480. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_receipt.py +0 -0
  481. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_receipt_lib.py +0 -0
  482. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/readiness_pack_gate.py +0 -0
  483. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/readiness_pack_manifest.py +0 -0
  484. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/render_demo.py +0 -0
  485. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/rust_parity_gate.py +0 -0
  486. {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/test_manifest_gate.py +0 -0
  487. {proofbundle-5.0.0 → proofbundle-5.1.0}/setup.cfg +0 -0
  488. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_inspect_registry.py +0 -0
  489. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_integration.py +0 -0
  490. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_membership.py +0 -0
  491. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_strict_json.py +0 -0
  492. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_wire_b64.py +0 -0
  493. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/__init__.py +0 -0
  494. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/_provenance.py +0 -0
  495. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/eee.py +0 -0
  496. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/inspect_ai.py +0 -0
  497. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/lm_eval.py +0 -0
  498. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/promptfoo.py +0 -0
  499. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/samples.py +0 -0
  500. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors.py +0 -0
  501. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_chia.py +0 -0
  502. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_chia_add.py +0 -0
  503. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_markovian.py +0 -0
  504. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_ots.py +0 -0
  505. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_rfc3161.py +0 -0
  506. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_rootcommit.py +0 -0
  507. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/assurance.py +0 -0
  508. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/beacon.py +0 -0
  509. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/budget.py +0 -0
  510. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/bundle.py +0 -0
  511. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/canonical.py +0 -0
  512. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/checkpoint.py +0 -0
  513. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/cli.py +0 -0
  514. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/demo.py +0 -0
  515. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/dsse.py +0 -0
  516. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/eee_eval_schema.json +0 -0
  517. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/emit.py +0 -0
  518. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/errors.py +0 -0
  519. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/evalcard.py +0 -0
  520. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/evidence_pack.py +0 -0
  521. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/experimental/__init__.py +0 -0
  522. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/experimental/enclave.py +0 -0
  523. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/hashalg.py +0 -0
  524. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/hf_evals.py +0 -0
  525. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/inspect_hook.py +0 -0
  526. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/intoto.py +0 -0
  527. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/kbjwt.py +0 -0
  528. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/merkle.py +0 -0
  529. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/outcome.py +0 -0
  530. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/persample.py +0 -0
  531. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/decision-receipt-template-v1.json +0 -0
  532. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/research-preview-v1.json +0 -0
  533. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/strict-eval-authenticated-root-template-v1.json +0 -0
  534. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/strict-eval-template-v1.json +0 -0
  535. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/strict-prereg-template-v1.json +0 -0
  536. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policy.py +0 -0
  537. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policy_profiles.py +0 -0
  538. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/pqsig.py +0 -0
  539. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/prereg.py +0 -0
  540. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/public_transparency.py +0 -0
  541. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/py.typed +0 -0
  542. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/pytest_plugin.py +0 -0
  543. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/relation.py +0 -0
  544. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/relation_statement.py +0 -0
  545. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/renewal.py +0 -0
  546. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/run_ledger.py +0 -0
  547. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/sdjwt.py +0 -0
  548. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/sdjwt_issue.py +0 -0
  549. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/sdjwt_vc.py +0 -0
  550. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/signature.py +0 -0
  551. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/statuslist.py +0 -0
  552. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/subject_binding.py +0 -0
  553. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/tlogproof.py +0 -0
  554. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/trust_pack.py +0 -0
  555. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/verification_summary.py +0 -0
  556. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/dependency_links.txt +0 -0
  557. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/entry_points.txt +0 -0
  558. {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/top_level.txt +0 -0
  559. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/_beinahe_treffer.py +0 -0
  560. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/chia_datalayer_proof.json +0 -0
  561. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/freetsa_receipt_anchor.json +0 -0
  562. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/checkpoint_7397/MANIFEST.json +0 -0
  563. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/checkpoint_7397/checkpoint_7397.txt +0 -0
  564. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS.json +0 -0
  565. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS_negativ.json +0 -0
  566. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/MANIFEST.json +0 -0
  567. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/README.md +0 -0
  568. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/SOURCES.md +0 -0
  569. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/keys_unabhaengig.txt +0 -0
  570. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/leaf_7271.raw +0 -0
  571. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/proof_7271.tlog-proof +0 -0
  572. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/MANIFEST.json +0 -0
  573. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/README.md +0 -0
  574. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/MANIFEST.json +0 -0
  575. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/README.md +0 -0
  576. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/manifest.json +0 -0
  577. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-01-valid.txt +0 -0
  578. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-02-tampered-root.txt +0 -0
  579. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-03-tampered-wallet.txt +0 -0
  580. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-04-tampered-proof.txt +0 -0
  581. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/manifest.json +0 -0
  582. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-01-valid.txt +0 -0
  583. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-02-tampered-root.txt +0 -0
  584. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-03-tampered-wallet.txt +0 -0
  585. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-04-tampered-sig.txt +0 -0
  586. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-05-tampered-proof.txt +0 -0
  587. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/01-valid.txt +0 -0
  588. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/02-unknown-id.txt +0 -0
  589. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/03-tampered-body.txt +0 -0
  590. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/04-tampered-proof.txt +0 -0
  591. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/manifest.json +0 -0
  592. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/PROVENANCE.json +0 -0
  593. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/gosumdb_known_keys.go +0 -0
  594. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/rekor_v2_checkpoint.txt +0 -0
  595. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/sumdb_latest.txt +0 -0
  596. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/trusted_root.json +0 -0
  597. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ed25519_speccheck_cases.LICENSE +0 -0
  598. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ed25519_speccheck_cases.README.md +0 -0
  599. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ed25519_speccheck_cases.json +0 -0
  600. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/eee_arc_easy.json +0 -0
  601. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/inspect_logs/safety_refusal_demo.eval +0 -0
  602. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/inspect_logs/safety_refusal_demo.eval.provenance.json +0 -0
  603. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/lm_eval_arc_easy_real.json +0 -0
  604. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/markovian_anchor_confirmed.json +0 -0
  605. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/mldsa_acvp/PROVENANCE.json +0 -0
  606. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/mldsa_acvp/mldsa_sigver_slice.json +0 -0
  607. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/PROVENANCE.json +0 -0
  608. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/block358391.json +0 -0
  609. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/hello-world.txt +0 -0
  610. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/hello-world.txt.ots +0 -0
  611. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/incomplete.txt +0 -0
  612. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/incomplete.txt.ots +0 -0
  613. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/known-and-unknown-notary.txt +0 -0
  614. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/known-and-unknown-notary.txt.ots +0 -0
  615. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/merkle2.txt +0 -0
  616. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/merkle2.txt.ots +0 -0
  617. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/synthetic-upgraded-sha256.block.json +0 -0
  618. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt +0 -0
  619. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt.ots +0 -0
  620. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/two-calendars.txt +0 -0
  621. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/two-calendars.txt.ots +0 -0
  622. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/promptfoo_results_v3.json +0 -0
  623. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/rekor_inclusion_25579.json +0 -0
  624. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/rfc6962_vectors.json +0 -0
  625. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwt_disclosure_vector.json +0 -0
  626. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwt_reference_eddsa.json +0 -0
  627. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwtvc/PROVENANCE.json +0 -0
  628. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwtvc/sdjwtvc_examples.txt +0 -0
  629. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwtvc/sdjwtvc_issuer_pubkey.json +0 -0
  630. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_adapters.py +0 -0
  631. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_adversarial.py +0 -0
  632. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_extra_arg_type_confusion.py +0 -0
  633. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_hardening_321.py +0 -0
  634. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_longevity_property.py +0 -0
  635. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_target_trustedtime.py +0 -0
  636. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_chia.py +0 -0
  637. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_chia_add.py +0 -0
  638. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_chia_claims.py +0 -0
  639. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_generic.py +0 -0
  640. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_markovian.py +0 -0
  641. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_markovian_log.py +0 -0
  642. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_ots.py +0 -0
  643. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_ots_frozen_rptrust_guard.py +0 -0
  644. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_rfc3161.py +0 -0
  645. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_rfc3161_type_floor.py +0 -0
  646. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_rootcommit.py +0 -0
  647. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_assurance.py +0 -0
  648. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_candidate_360.py +0 -0
  649. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_candidate_ready_logic.py +0 -0
  650. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_index_zahlen_stimmen.py +0 -0
  651. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_marker_line_wrap.py +0 -0
  652. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_automation_verdict.py +0 -0
  653. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_beacon.py +0 -0
  654. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_branch_base_check.py +0 -0
  655. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_budget.py +0 -0
  656. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bughunt_361_automation_failopen.py +0 -0
  657. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bughunt_361_never_raise.py +0 -0
  658. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bundle.py +0 -0
  659. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bundle_robustness.py +0 -0
  660. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_canonical.py +0 -0
  661. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_checkpoint.py +0 -0
  662. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_checkpoint_external_vectors.py +0 -0
  663. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_checkpoint_quorum_property.py +0 -0
  664. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_claims_hygiene.py +0 -0
  665. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cli.py +0 -0
  666. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cli_eval.py +0 -0
  667. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cli_require_anchor.py +0 -0
  668. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_conformance.py +0 -0
  669. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_conformance_retention_361.py +0 -0
  670. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_content_root_property.py +0 -0
  671. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cosignature.py +0 -0
  672. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cosignature_mldsa.py +0 -0
  673. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cross_format_singleton_361.py +0 -0
  674. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_anchors.py +0 -0
  675. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_cli.py +0 -0
  676. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_evidence.py +0 -0
  677. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_fuzz.py +0 -0
  678. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_hardening.py +0 -0
  679. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_policy.py +0 -0
  680. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_schema.py +0 -0
  681. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_validator_api.py +0 -0
  682. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_verify.py +0 -0
  683. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_demo.py +0 -0
  684. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_docs_truth.py +0 -0
  685. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_dsse_adversarial.py +0 -0
  686. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_dup_key_reject.py +0 -0
  687. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ed25519_semantics.py +0 -0
  688. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_eee.py +0 -0
  689. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_emit.py +0 -0
  690. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_emitter_parser_rundlauf.py +0 -0
  691. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_enclave_assurance.py +0 -0
  692. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_erwartungsvergleich_population_guard.py +0 -0
  693. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_eval_claim_schema.py +0 -0
  694. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_eval_evidence_class.py +0 -0
  695. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_evalcard.py +0 -0
  696. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_evalclaim.py +0 -0
  697. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_evidence_pack.py +0 -0
  698. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_examples.py +0 -0
  699. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_experimental_enclave.py +0 -0
  700. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_findings_register_identity_axis.py +0 -0
  701. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_findings_register_rt10.py +0 -0
  702. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_fork_pr_secret_isolation.py +0 -0
  703. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_fuzz_parsers.py +0 -0
  704. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_fuzz_soak_regression.py +0 -0
  705. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_gate_population_and_nested_leaf.py +0 -0
  706. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_gate_qualification_harness.py +0 -0
  707. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_hashalg.py +0 -0
  708. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_hf_entry_verify_eee_digest.py +0 -0
  709. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_hf_evals.py +0 -0
  710. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_inspect_hook.py +0 -0
  711. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_int_magnitude_budget_family.py +0 -0
  712. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto.py +0 -0
  713. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_claims_hygiene.py +0 -0
  714. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_content_root_migration.py +0 -0
  715. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_dsse.py +0 -0
  716. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_eval_result.py +0 -0
  717. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_examples.py +0 -0
  718. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_spec_diff.py +0 -0
  719. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_svr.py +0 -0
  720. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_iter9_deepgate_round4.py +0 -0
  721. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_iter9_product_fixes.py +0 -0
  722. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_jcs_mandatory_361.py +0 -0
  723. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_kappe_vor_arbeit.py +0 -0
  724. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_kbjwt.py +0 -0
  725. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_legacy_assurance_deprecation_361.py +0 -0
  726. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_lens_review_fixes_3_1_3.py +0 -0
  727. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_load_signer_fd_hazard.py +0 -0
  728. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_manifest_lock.json +0 -0
  729. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_membership_hashable_guard.py +0 -0
  730. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_merkle.py +0 -0
  731. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_merkle_consistency_property.py +0 -0
  732. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_merkle_property.py +0 -0
  733. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_mldsa_acvp_vectors.py +0 -0
  734. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_mutant_signature_guard.py +0 -0
  735. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_mutation_isolation.py +0 -0
  736. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_361.py +0 -0
  737. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_population_guard.py +0 -0
  738. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_primary_arg_property.py +0 -0
  739. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_recursion_361.py +0 -0
  740. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_official_vectors.py +0 -0
  741. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ok_semantics.py +0 -0
  742. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_origin_quorum_rule.py +0 -0
  743. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ots_calendar_hardening.py +0 -0
  744. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ots_external_vectors.py +0 -0
  745. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_outcome_receiver_corroboration.py +0 -0
  746. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_outcome_verify.py +0 -0
  747. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_oversized_int_guard.py +0 -0
  748. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_path_argument_type_floor.py +0 -0
  749. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_persample.py +0 -0
  750. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pinned_key_validation.py +0 -0
  751. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_explain_lint.py +0 -0
  752. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_lifecycle_purpose.py +0 -0
  753. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_profiles.py +0 -0
  754. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_templates.py +0 -0
  755. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pqsig.py +0 -0
  756. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_attestation.py +0 -0
  757. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_gate_eigenschaften.py +0 -0
  758. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_receipt_commit_flow.py +0 -0
  759. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_receipt_gate.py +0 -0
  760. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_predicate_type_enforcement.py +0 -0
  761. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_prereg.py +0 -0
  762. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_promptfoo.py +0 -0
  763. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_provenance.py +0 -0
  764. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_public_transparency.py +0 -0
  765. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pytest_plugin.py +0 -0
  766. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_rekor_interop.py +0 -0
  767. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_gate_distance_invariance.py +0 -0
  768. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_profile.py +0 -0
  769. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_property.py +0 -0
  770. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_same_key_361.py +0 -0
  771. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_signer_target_340.py +0 -0
  772. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_statement.py +0 -0
  773. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_statement_rust_parity.py +0 -0
  774. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_subject_pin_361.py +0 -0
  775. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_release_integrity_gate.py +0 -0
  776. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_render_safe_untrusted_int.py +0 -0
  777. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal.py +0 -0
  778. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_external_token_glue.py +0 -0
  779. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_field_magnitude_never_raise.py +0 -0
  780. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_policy.py +0 -0
  781. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_signed.py +0 -0
  782. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_reported_version_status.py +0 -0
  783. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_reproducible_build_361.py +0 -0
  784. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_rfc6962_external_vectors.py +0 -0
  785. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_root_authenticity.py +0 -0
  786. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_run_ledger.py +0 -0
  787. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_rust_parity_gate.py +0 -0
  788. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_schema.py +0 -0
  789. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_schema_parity.py +0 -0
  790. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdist_packaging_361.py +0 -0
  791. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdist_selftest_optional_deps.py +0 -0
  792. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_adversarial.py +0 -0
  793. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_duplicate_cnf.py +0 -0
  794. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_issue.py +0 -0
  795. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_reference.py +0 -0
  796. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_resource_budget.py +0 -0
  797. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_vc.py +0 -0
  798. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_verify_binding.py +0 -0
  799. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwtvc_external_vectors.py +0 -0
  800. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sibling_never_raise_361.py +0 -0
  801. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_signature.py +0 -0
  802. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_statuslist.py +0 -0
  803. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_structural_budget_reachability.py +0 -0
  804. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_subject_binding.py +0 -0
  805. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_tlogproof.py +0 -0
  806. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_tree_context_authenticity.py +0 -0
  807. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack.py +0 -0
  808. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack_crypto_agility.py +0 -0
  809. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack_outcome_receivers_role.py +0 -0
  810. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack_payloadtype_negatives.py +0 -0
  811. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_policy.py +0 -0
  812. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_type_confusion_wireform.py +0 -0
  813. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_verification_summary.py +0 -0
  814. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_verify_matrix.py +0 -0
  815. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_verify_proof_expected_origin.py +0 -0
  816. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_wire_bytes_strict.py +0 -0
  817. {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_wurzelsammlung_schliesst_bauartefakte_aus.py +0 -0
@@ -25,6 +25,32 @@ graft conformance
25
25
  graft formal
26
26
  graft docs/readiness_pack
27
27
  include docs/adr/renewal_policy.example.json
28
+
29
+ # PB-2026-0831-01: the receipt-envelope profile and its vectors landed on main in #159, but the
30
+ # profile document itself was NOT in the sdist and NOT in the wheel — measured, 0 hits in both.
31
+ # NO prune or exclude rule removed it. MANIFEST.in is an allowlist and the file was simply not on
32
+ # any line; it was missing by absence, not by exclusion. That distinction matters: looking for the
33
+ # offending prune rule would have found nothing and left the file out.
34
+ #
35
+ # The vectors under conformance/envelope_profile/ were already shipped by `graft conformance`
36
+ # (21 of 21 files, 10 of 10 case.json, measured). Only the prose document was missing, and it is
37
+ # the half a reader needs to know what the vectors prove.
38
+ #
39
+ # Named by exact path rather than `graft docs`, for the same reason the ADR example above is: a
40
+ # blanket graft would also ship documents whose internal links point at pruned repo files, which
41
+ # breaks test_docs_truth from the sdist.
42
+ include docs/RECEIPT_ENVELOPE_PROFILE.md
43
+ # Same reason, measured 01.09.2026: 14 conformance cases under conformance/agent_review/
44
+ # cite this file NORMATIVELY (`specRef`), and it was not shipped — the corpus referred to a
45
+ # document the installed package did not contain. It carries no local links, so it cannot
46
+ # break test_docs_truth the way a `graft docs` would.
47
+ include docs/AGENT_REVIEW_PREDICATE.md
48
+ # PB-2026-0902-01: der sdist enthielt `conformance/` (94 Faelle, `graft conformance`), aber NICHT
49
+ # das Makefile, ueber das die Doku den Korpus fahren laesst. Wer den sdist auspackt und
50
+ # `make conformance` ruft, bekommt "No rule to make target" — der Korpus ist da und
51
+ # unerreichbar. Gefunden von der as-shipped-Linse des Tiefen-Gates am 02.09.2026. Wie schon bei
52
+ # `RECEIPT_ENVELOPE_PROFILE.md`: keine prune-Regel entfernte es, es stand auf keiner Zeile.
53
+ include Makefile
28
54
  graft scripts
29
55
 
30
56
  # Never ship: the Rust verifier + build artifacts, repo/CI meta, caches, VCS, big review packs.
@@ -0,0 +1,71 @@
1
+ .PHONY: test lint typecheck demo tamper-demo persample-demo full-demo mutation examples conformance conformance-crossimpl all coverage
2
+
3
+ PYTHON ?= python3
4
+
5
+ # EIN ZIEL, DAS IM AUSGELIEFERTEN ZUSTAND NICHT LAUFEN KANN, MUSS DAS SAGEN — nicht scheitern.
6
+ #
7
+ # GEMESSEN am 02.09.2026 (adversariale as-shipped-Linse): `include Makefile` machte alle 13 Ziele
8
+ # zu ausgelieferten Versprechen. Sieben laufen aus dem sdist nicht, und `conformance-crossimpl`
9
+ # scheiterte an einem fehlenden Verzeichnis, waehrend sein Kommentar "needs cargo" sagte — die
10
+ # falsche Vorbedingung. `prune tools` ist richtig; die MELDUNG war es nicht.
11
+ #
12
+ # Der Wachtposten ist EINE Zeile je Ziel und nennt die Vorbedingung im Klartext, statt eine
13
+ # Shell-Fehlermeldung ueber ein fehlendes Verzeichnis zu produzieren.
14
+ # EIN SHELL-AUFRUF, kein zweizeiliger Wachtposten.
15
+ #
16
+ # Die erste Fassung war eine EIGENE Rezeptzeile mit `|| { echo …; exit 0; }`. Gemessen aus dem
17
+ # entpackten sdist: sie meldete die Vorbedingung KORREKT — und make fuhr die naechste Zeile
18
+ # trotzdem, weil jede Rezeptzeile ihre eigene Shell hat und `exit 0` nur diese verlaesst. Das Ziel
19
+ # scheiterte danach genau wie vorher, jetzt nur mit einer beruhigenden Zeile davor. Ein Riegel,
20
+ # der ankuendigt und dann durchlaesst, ist schlimmer als keiner. Deshalb umschliesst die Bedingung
21
+ # den GANZEN Rumpf in EINER Zeile.
22
+ CHECKOUT_FEHLT = echo "== $@: skipped — needs a source checkout, not the shipped package."; \
23
+ echo " Why: tools/ and .github/ are deliberately pruned from the sdist (MANIFEST.in)."; \
24
+ echo " How: run this target from a source checkout of the repository."
25
+
26
+ test: ## needs pytest (in the [test] extra) — it is the only runner that sees this suite
27
+ $(PYTHON) -m pytest -q
28
+
29
+ lint: ## needs `pip install ruff` — deliberately NOT in the [test] extra
30
+ ruff check .
31
+
32
+ typecheck: ## needs `pip install mypy` — deliberately NOT in the [test] extra
33
+ $(PYTHON) -m mypy src
34
+
35
+ demo: ## pip-only, offline: honest receipt verifies, tampers fail, sample swap caught (in memory)
36
+ PYTHONPATH=src $(PYTHON) -m proofbundle.cli demo
37
+
38
+ tamper-demo: ## the demo with an exit-code contract (fails if any guarantee breaks)
39
+ bash scripts/demo_tamper.sh
40
+
41
+ persample-demo: ## offline forced-random-sample audit walkthrough
42
+ $(PYTHON) examples/persample_audit.py
43
+
44
+ full-demo: ## real eval logs -> signed receipts -> verified OK (needs [eval,inspect] extras)
45
+ bash scripts/demo.sh
46
+
47
+ mutation: ## anti-Goodhart gate: the tests must KILL broken implementations (needs a source checkout: it walks the tracked file list)
48
+ @if [ -d tools ] && [ -d .github ]; then $(PYTHON) scripts/mutation_check.py; \
49
+ else $(CHECKOUT_FEHLT); fi
50
+
51
+ coverage: ## line coverage of the core over the test suite (needs `pip install coverage`)
52
+ $(PYTHON) -m coverage run -m pytest -q
53
+ $(PYTHON) -m coverage report -m --include="src/proofbundle/*"
54
+
55
+ examples: ## run every offline example (those without optional extras)
56
+ @for f in examples/make_example.py examples/lm_eval_receipt.py examples/eee_receipt.py \
57
+ examples/intoto_dsse_export.py examples/checkpoint_example.py \
58
+ examples/tlog_proof_example.py examples/rekor_interop.py \
59
+ examples/persample_audit.py; do \
60
+ echo "== $$f =="; PYTHONPATH=src $(PYTHON) $$f || exit 1; done
61
+
62
+ conformance: ## offline conformance corpus (anchor sub-checks need the [anchors] extra)
63
+ PYTHONPATH=src $(PYTHON) conformance/run_conformance.py
64
+
65
+ conformance-crossimpl: ## cross-impl acceptance gate: the independent Rust second-verifier must AGREE with Python over the verifier core (needs a source checkout AND cargo; #55 S2)
66
+ @if [ -d tools ] && [ -d .github ]; then \
67
+ ( cd tools/pb_verify_rs && cargo build --release ) && \
68
+ PYTHONPATH=src $(PYTHON) tools/pb_verify_rs/crosscheck.py; \
69
+ else $(CHECKOUT_FEHLT); fi
70
+
71
+ all: lint typecheck test ## needs ruff + mypy; from the shipped package run `make test` alone
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proofbundle
3
- Version: 5.0.0
3
+ Version: 5.1.0
4
4
  Summary: Emit and verify portable cryptographic evidence bundles, offline: Ed25519 + RFC 6962 Merkle + optional SD-JWT.
5
5
  Author: Konrad Gruszka
6
6
  License: MIT
@@ -51,7 +51,7 @@ Requires-Dist: jsonschema>=4; extra == "test"
51
51
  Requires-Dist: sd-jwt>=0.10; extra == "test"
52
52
  Requires-Dist: rfc8785>=0.1.4; extra == "test"
53
53
  Provides-Extra: inspect
54
- Requires-Dist: inspect_ai<=0.3.260,>=0.3.112; extra == "inspect"
54
+ Requires-Dist: inspect_ai<=0.3.261,>=0.3.112; extra == "inspect"
55
55
  Provides-Extra: dev
56
56
  Requires-Dist: pytest>=7; extra == "dev"
57
57
  Requires-Dist: ruff<0.17,>=0.5; extra == "dev"
@@ -62,7 +62,7 @@ Requires-Dist: hypothesis>=6; extra == "dev"
62
62
  Requires-Dist: rfc8785>=0.1.4; extra == "dev"
63
63
  Requires-Dist: sd-jwt>=0.10; extra == "dev"
64
64
  Requires-Dist: PyYAML>=6; extra == "dev"
65
- Requires-Dist: inspect_ai<=0.3.260,>=0.3.112; extra == "dev"
65
+ Requires-Dist: inspect_ai<=0.3.261,>=0.3.112; extra == "dev"
66
66
  Dynamic: license-file
67
67
 
68
68
  <div align="center">
@@ -0,0 +1,362 @@
1
+ """Konformitaets-Vektoren fuer agent-review/v0.1 — nach dem Hausmuster von conformance/envelope_profile."""
2
+ import copy
3
+ import json
4
+ import os
5
+ import pathlib
6
+ import sys
7
+ sys.path.insert(0, "src")
8
+ from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
9
+ from proofbundle import agent_review as AR
10
+
11
+ # Das Ziel ist ueberschreibbar, damit ein Test den Korpus NEBEN den echten erzeugen und beide
12
+ # bytegenau vergleichen kann. Ohne diesen Schalter muesste ein solcher Test in den echten Korpus
13
+ # schreiben — und genau das hat am 01.09.2026 einen von Hand nachgetragenen Fix (K-D, die fehlende
14
+ # expectedSubjectDigest-Erwartung) STILL GELOESCHT, weil die Aenderung am ERZEUGTEN Artefakt und
15
+ # nicht an seiner Quelle gemacht worden war. Ein Pruefwerkzeug, das seinen Prueflig veraendert,
16
+ # ist selbst ein Risiko.
17
+ ROOT = pathlib.Path(os.environ.get("AGENT_REVIEW_CORPUS_ROOT") or "conformance/agent_review")
18
+ # Deterministischer Schluessel: ein Vektorkorpus, dessen Bytes sich bei jedem Lauf aendern, ist
19
+ # kein Korpus — er waere bei jedem Regenerieren ein Diff ohne inhaltlichen Anlass.
20
+ sk = Ed25519PrivateKey.from_private_bytes(bytes(range(32)))
21
+ pk = sk.public_key().public_bytes_raw()
22
+
23
+ BODY = ("# Title\n\nSome PR text.\n\n" + AR.DISCLOSURE_BEGIN + "\n- **X:** y\n"
24
+ + AR.DISCLOSURE_END + "\n\nTail.\n")
25
+ FINDINGS = [
26
+ {"id": "F1", "severity": "high", "title": "unbalanced marker accepted",
27
+ "disposition": "fixed", "fixCommit": "a" * 40},
28
+ {"id": "F2", "severity": "low", "title": "wording too broad",
29
+ "disposition": "dismissed", "reason": "covered by the limitations block"},
30
+ ]
31
+ BASE = {
32
+ "schemaVersion": "0.1.0",
33
+ "reviewId": "agent-review-conformance-01",
34
+ "subjectContext": {
35
+ "kind": "githubPullRequest", "forge": "github.com",
36
+ "repositoryId": "R_kgDOAbCdEf", "pullRequestNodeId": "PR_kwDOAbCdEf",
37
+ "headSha": "b" * 40, "baseSha": "c" * 40,
38
+ "reviewedDiffDigest": "d" * 64,
39
+ "bodyCoreDigest": AR.body_core_digest(BODY),
40
+ },
41
+ "declaration": {
42
+ "authoring": [{"assurance": "selfDeclared", "assertedBy": "an agent"}],
43
+ "reviewRuns": [{"assurance": "selfDeclared", "assertedBy": "an agent, second pass"}],
44
+ "findings": FINDINGS,
45
+ "findingsTotal": len(FINDINGS),
46
+ "findingsRoot": AR.findings_root(FINDINGS),
47
+ "nonClaims": ["does not prove the named agent was involved"],
48
+ },
49
+ "coverage": {"status": "PARTIAL", "observedRuns": 2, "expectedRuns": None,
50
+ "knownGaps": ["runs outside this session are not visible"]},
51
+ "times": {"declaredAt": "2026-08-31T17:00:00Z", "observedAt": None,
52
+ "signedAt": "2026-08-31T17:00:01Z", "anchoredAt": None},
53
+ "limitations": ["offline verification cannot establish currency"],
54
+ }
55
+
56
+ def schreibe(case_id, role, rule, expected, rationale, *, envelope=None, obj=None,
57
+ input_name, params=None, attribution=None, spec_refs=None):
58
+ d = ROOT / case_id
59
+ d.mkdir(parents=True, exist_ok=True)
60
+ payload = envelope if envelope is not None else obj
61
+ (d / input_name).write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8")
62
+ (d / "case.json").write_text(json.dumps({
63
+ "caseId": case_id, "kind": "agent_review_predicate", "rule": rule, "role": role,
64
+ "input": input_name,
65
+ "attribution": attribution or (
66
+ "agent-review/v0.1 — built 31.08.2026 against the external adversarial read "
67
+ "(18 findings). Rule ids are that read's finding ids."),
68
+ "expected": expected,
69
+ **({"params": params} if params is not None else {}),
70
+ "specRefs": spec_refs or ["docs/AGENT_REVIEW_PREDICATE.md",
71
+ "src/proofbundle/agent_review.py"],
72
+ "rationale": rationale,
73
+ }, indent=2, sort_keys=True) + "\n", encoding="utf-8")
74
+ return d
75
+
76
+ # 1 — Positivkontrolle
77
+ env = AR.emit_agent_review(BASE, sk)
78
+ schreibe("agent-review-positive-control-valid-self-declared", "positive_control", "F01",
79
+ {"classification": "valid"},
80
+ "A well-formed v0.1 receipt verifies and reports selfDeclared. If this vector ever fails, the "
81
+ "emit or verify path changed shape and every counter-proof below becomes unreadable. It "
82
+ "SUPPLIES the expected subject digest, because that is what a real relying party does: it "
83
+ "knows which pull request it is looking at. Since the second review round, `ok` is only true "
84
+ "when that question was actually asked — a receipt can be internally sound and still belong "
85
+ "to something else, and a control that never asks would pass on the weaker statement.",
86
+ envelope=env, input_name="envelope.json",
87
+ params={"expectedSubjectDigest": AR._subject_digest(BASE)})
88
+
89
+ # 2 — Gegenprobe: Assurance hochgestuft
90
+ p = copy.deepcopy(BASE)
91
+ p["declaration"]["authoring"][0]["assurance"] = "independentlyWitnessed"
92
+ schreibe("agent-review-counter-proof-assurance-cannot-be-self-raised", "counter_proof", "F01",
93
+ {"classification": "refused"},
94
+ "The whole point of the predicate: a producer must not be able to label its own claim as "
95
+ "independently witnessed. This is rejected at EMIT time, not merely reported at verify — a "
96
+ "receipt that cannot be produced cannot be shown to anyone.",
97
+ obj=p, input_name="predicate.json")
98
+
99
+ # 3 — Gegenprobe: findingsRoot deckt die Liste nicht mehr
100
+ p = copy.deepcopy(BASE)
101
+ p["declaration"]["findings"] = FINDINGS[:1]
102
+ env3 = AR.emit_agent_review(p, sk) # Erzeugen erlaubt: die Root ist dann schlicht falsch
103
+ schreibe("agent-review-counter-proof-findings-root-covers-the-list", "counter_proof", "F09",
104
+ {"classification": "invalid"},
105
+ "Removing a finding after the root was taken must be detectable. A receipt that reports "
106
+ "'3 findings, 2 fixed' without a root binding is an aggregate anyone can rewrite.\n\n"
107
+ "NACHTRAG 01.09.2026, Tiefen-Gate 5.1.0: dieser Fall KONNTE NICHT KIPPEN. Ohne "
108
+ "params.expectedSubjectDigest ist subject_expectation=not_supplied, damit ok=False fuer "
109
+ "JEDE Eingabe, damit ist die Klassifikation immer die erwartete 'invalid' — der Fall "
110
+ "bestand auch mit abgeschalteter findingsRoot-Pruefung, und die ganze Strecke blieb rc=0. "
111
+ "Zwei unabhaengige Linsen haben das mit je eigenen Mutanten gemessen. F09 war zudem die "
112
+ "einzige Regel MIT Gegenbeweis und OHNE Positivkontrolle, es gab also keinen zweiten "
113
+ "Faenger. Die Erwartung ist derselbe Wert, den die zwei Geschwister-Faelle bereits "
114
+ "tragen; damit faellt der Fall wieder auf SEINER eigenen Achse.",
115
+ envelope=env3, input_name="envelope.json",
116
+ params={"expectedSubjectDigest": AR._subject_digest(BASE)})
117
+
118
+ # 4 — Gegenprobe: anchoredAt ohne Beleg
119
+ p = copy.deepcopy(BASE)
120
+ p["times"]["anchoredAt"] = "2026-08-31T17:00:02Z"
121
+ schreibe("agent-review-counter-proof-anchored-time-needs-evidence", "counter_proof", "F06",
122
+ {"classification": "refused"},
123
+ "A signature proves the signed bytes contain a time value, not that the value is externally "
124
+ "true. v0.1 carries no anchor evidence, so it refuses the claim instead of passing it through.",
125
+ obj=p, input_name="predicate.json")
126
+
127
+ # 5 — Gegenprobe: COMPLETE ohne genannte Erwartung
128
+ p = copy.deepcopy(BASE)
129
+ p["coverage"] = {"status": "COMPLETE", "observedRuns": 2}
130
+ schreibe("agent-review-counter-proof-complete-needs-an-expectation", "counter_proof", "F07",
131
+ {"classification": "refused"},
132
+ "Without a stated expectation, 'complete' means 'I saw everything I happened to see' and "
133
+ "cannot be falsified. Unobserved work must appear as a gap, never as a zero count.",
134
+ obj=p, input_name="predicate.json")
135
+
136
+ # 6 — Gegenprobe: Receipt auf einen anderen PR kopiert
137
+ p = copy.deepcopy(BASE)
138
+ p["subjectContext"]["pullRequestNodeId"] = "PR_kwDOZZZZZZ"
139
+ env6 = AR.emit_agent_review(p, sk)
140
+ schreibe("agent-review-counter-proof-receipt-does-not-travel-between-subjects", "counter_proof", "F02",
141
+ {"classification": "invalid"},
142
+ "A valid signature on the wrong object is the failure mode this binding exists for. Verified "
143
+ "against the original subject digest, this receipt must fail — it is cryptographically sound "
144
+ "and bound to something else.",
145
+ envelope=env6, input_name="envelope.json",
146
+ params={"expectedSubjectDigest": AR._subject_digest(BASE)})
147
+
148
+ # 7 — Gegenprobe: duplizierter Offenlegungsblock
149
+ schreibe("agent-review-counter-proof-duplicate-disclosure-block-fails-closed", "counter_proof", "F03",
150
+ {"classification": "refused"},
151
+ "An attacker who may append a second block could otherwise choose which one defines the "
152
+ "digest. Two blocks is not a body we can reduce to one canonical form, so the digest is "
153
+ "refused rather than guessed.",
154
+ obj={"body": BODY + AR.render_disclosure_block(BASE)}, input_name="body.json")
155
+
156
+ # 8 — Positivkontrolle: Block neu gerendert, Digest stabil
157
+ blk = AR.render_disclosure_block(BASE, receipt_digest="e" * 64)
158
+ neu = BODY[:BODY.index(AR.DISCLOSURE_BEGIN)] + blk + BODY[BODY.index(AR.DISCLOSURE_END) + len(AR.DISCLOSURE_END):]
159
+ schreibe("agent-review-positive-control-rerendered-block-keeps-body-core", "positive_control", "F03",
160
+ {"bodyCoreStable": True},
161
+ "Re-rendering the machine-managed block from the same canonical receipt must not move the "
162
+ "body core digest. If it did, every disclosure update would look like body tampering and the "
163
+ "binding would be unusable in practice.",
164
+ obj={"bodyBefore": BODY, "bodyAfter": neu}, input_name="bodies.json")
165
+
166
+
167
+ # 9 — Gegenprobe: die Luecken-Pflicht durch Weglassen abschalten
168
+ p = copy.deepcopy(BASE)
169
+ del p["declaration"]["findingsTotal"]
170
+ p["declaration"]["findings"] = FINDINGS[:1]
171
+ schreibe("agent-review-counter-proof-gap-duty-cannot-be-switched-off", "counter_proof", "F07",
172
+ {"classification": "refused"},
173
+ "THE ATTACK AN EXTERNAL REVIEW ACTUALLY RAN (31.08.2026) AND THAT SUCCEEDED. While "
174
+ "findingsTotal was optional, a producer could list one finding of eight, omit the field, "
175
+ "leave knownGaps empty — and the validator reported ZERO errors. A duty that switches off "
176
+ "by omitting a field is not a duty. The field is now required.",
177
+ obj=p, input_name="predicate.json")
178
+
179
+ # 10 — Gegenprobe: PARTIAL ohne benannte Luecke (Nachbar derselben Klasse)
180
+ p = copy.deepcopy(BASE)
181
+ p["coverage"] = {"status": "PARTIAL", "observedRuns": 2, "knownGaps": []}
182
+ schreibe("agent-review-counter-proof-partial-must-name-its-gap", "counter_proof", "F07",
183
+ {"classification": "refused"},
184
+ "The neighbour of the case above, closed in the same pass. COMPLETE had to state its "
185
+ "expectation; PARTIAL had to state nothing at all and was therefore just as unfalsifiable — "
186
+ "'incomplete, but I will not say in what' is not a statement about coverage.",
187
+ obj=p, input_name="predicate.json")
188
+
189
+ # 11 — Positivkontrolle: ohne Erwartung wird die Grenze GEMELDET, nicht verschwiegen
190
+ env11 = AR.emit_agent_review(BASE, sk)
191
+ schreibe("agent-review-positive-control-absent-expectation-is-reported", "positive_control", "F02",
192
+ {"subjectExpectation": "not_supplied"},
193
+ "A CORRECTION TO A CLAIM WE MADE OURSELVES. We wrote that a receipt copied onto another "
194
+ "pull request fails the subject check. It does not: derived and claimed both come from the "
195
+ "same signed subjectContext, so they always agree unless someone hand-builds the statement. "
196
+ "Without an expectation supplied from outside, this is a CONSISTENCY check, not a binding "
197
+ "to the object the reader is looking at. The absence is now reported instead of passing "
198
+ "silently.",
199
+ envelope=env11, input_name="envelope.json")
200
+
201
+
202
+ # 12 — Gegenprobe: die EINFUEHRUNG des ersten Blocks bewegt den Digest sehr wohl
203
+ roh = "# Title\n\nSome PR text.\n\n### Agent review\n\n- Passes: 2\n"
204
+ schreibe("agent-review-counter-proof-introducing-the-first-block-moves-the-digest", "counter_proof",
205
+ "F03", {"bodyCoreStable": False},
206
+ "THE ORDERING DEFECT, FOUND WHILE ADDING A REAL DISCLOSURE LINE TO A LIVE PULL REQUEST "
207
+ "(31.08.2026). Changing a block leaves the core digest alone; INTRODUCING the first one "
208
+ "does not, because a body without a block and the same body with an empty one differ by "
209
+ "the token's own bytes. A receipt emitted over the pre-block body binds a body that stops "
210
+ "existing the moment its own disclosure line is added. This case pins the difference so "
211
+ "nobody assumes the stable case covers both.",
212
+ obj={"bodyBefore": roh,
213
+ "bodyAfter": AR.prepare_body_for_disclosure(roh, anchor="### Agent review")},
214
+ input_name="bodies.json")
215
+
216
+ # 13 — Positivkontrolle: prepare, dann replace — der Digest darf sich NICHT bewegen
217
+ vorbereitet = AR.prepare_body_for_disclosure(roh, anchor="### Agent review")
218
+ gefuellt = AR.replace_disclosure_block(
219
+ vorbereitet, AR.DISCLOSURE_BEGIN + "\n- **Receipt:** sha256:" + "f" * 64 + "\n" + AR.DISCLOSURE_END)
220
+ schreibe("agent-review-positive-control-prepare-then-fill-keeps-the-digest", "positive_control",
221
+ "F03", {"bodyCoreStable": True},
222
+ "The correct order, pinned as a control. Prepare the body, take the digest over THAT, emit, "
223
+ "then fill the prepared position. The last step cannot move the digest because the block's "
224
+ "content is replaced by the token either way — which is the entire reason the markers "
225
+ "exist. Without this control the counter-proof above could be satisfied by a verifier that "
226
+ "simply reports instability for everything.",
227
+ obj={"bodyBefore": vorbereitet, "bodyAfter": gefuellt}, input_name="bodies.json")
228
+
229
+
230
+ # 14 — Positivkontrolle: der ECHTE Emit-Verify-Roundtrip
231
+ #
232
+ # NACHGETRAGEN 01.09.2026. Dieser Fall wurde am selben Tag von Hand angelegt und stand danach auf
233
+ # der Platte UND im Manifest, aber NICHT hier — ein Neulauf des Generators haette ihn nicht
234
+ # erzeugt, und damit waere der Korpus nicht mehr aus seiner Quelle reproduzierbar gewesen. Die
235
+ # Gegenlese Runde 2 verlangt unter P0.5.1 ausdruecklich reproduzierbare Fixtures.
236
+ #
237
+ # Das Praedikat ist bewusst NICHT von BASE abgeleitet: es soll den positiven Zweig unabhaengig
238
+ # treffen, und ein Ableger haette dieselben Werte noch einmal behauptet statt sie zu pruefen.
239
+ ROUNDTRIP = {
240
+ "coverage": {
241
+ "knownGaps": [
242
+ "nur ein Lauf erfasst"
243
+ ],
244
+ "status": "PARTIAL"
245
+ },
246
+ "declaration": {
247
+ "authoring": [
248
+ {
249
+ "assertedBy": "agent",
250
+ "assurance": "selfDeclared"
251
+ }
252
+ ],
253
+ "findings": [
254
+ {
255
+ "disposition": "dismissed",
256
+ "id": "F1",
257
+ "reason": "im Kontext nicht anwendbar",
258
+ "severity": "low",
259
+ "title": "ein Fund"
260
+ }
261
+ ],
262
+ "findingsRoot": "a9315babdef60590b291d47617a6dade99f407e3d66d5edf8e98a2d851e876e2",
263
+ "findingsTotal": 1,
264
+ "nonClaims": [
265
+ "kein Nachweis von Unabhaengigkeit"
266
+ ],
267
+ "reviewRuns": []
268
+ },
269
+ "limitations": [
270
+ "Tier 1, selbst deklariert, kein externer Zeuge"
271
+ ],
272
+ "reviewId": "roundtrip-positive-control",
273
+ "schemaVersion": "0.1.0",
274
+ "subjectContext": {
275
+ "baseSha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
276
+ "bodyCoreDigest": "2de5900a45b84d021dfb8cf9850be84c0c848f92bf780516ce9edf74383f7365",
277
+ "forge": "github.com",
278
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
279
+ "kind": "githubPullRequest",
280
+ "pullRequestNodeId": "PR_kwDOroundtrip",
281
+ "repositoryId": "R_kgDOroundtrip",
282
+ "reviewedDiffDigest": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
283
+ },
284
+ "times": {
285
+ "declaredAt": "2026-09-01T09:00:00Z"
286
+ }
287
+ }
288
+ schreibe("agent-review-positive-control-emit-verify-roundtrip", "positive_control", "PBF08",
289
+ {"classification": "valid"},
290
+ "OHNE DIESEN FALL MISST DIE UMSTELLUNG NICHTS, und das ist gemessen: alle fuenf bisherigen predicate.json-Faelle erwarten `refused`, also wurde der `valid`-Zweig nie erreicht. Ein eingepflanzter Defekt, der die Validierung besteht und erst im Verifier faellt (Statement mit falschem Subject-Digest), liess die Strecke gruen — mit der Umstellung UND ohne sie. Dieser Fall fuehrt den positiven Roundtrip: das Praedikat wird mit dem deterministischen Korpus-Schluessel wirklich EMITTIERT und das erzeugte Envelope danach verifiziert. `valid` heisst hier also 'erzeugt und wieder gelesen', nicht 'bestand die Validierung'.",
291
+ obj=ROUNDTRIP, input_name="predicate.json", params={},
292
+ attribution="agent-review/v0.1 — ergaenzt 01.09.2026 nach der Gegenlese Runde 2 (N06 / P0.5): die Strecke rief fuer Praedikat-Faelle den VALIDATOR, nicht den Erzeuger.",
293
+ spec_refs=["docs/AGENT_REVIEW_PREDICATE.md", "src/proofbundle/agent_review.py", "conformance/run_conformance.py"])
294
+
295
+
296
+ # ── Test 19: Supersession ───────────────────────────────────────────────────────────────────────
297
+ # Die Gegenlese Runde 2 fuehrt Test 19 ZWEIMAL als "WIDERLEGT als gefahrene Mutation": der
298
+ # Erstanwendungsbericht nannte ihn gefahren, und in der vollstaendigen Fall-Liste existierte
299
+ # ueberhaupt kein Supersessions-Fall. Diese drei schliessen das.
300
+ #
301
+ # Der Angreiferschluessel ist ebenso deterministisch wie der Korpusschluessel und ausdruecklich
302
+ # NICHT der unsere — ein Uebernahmeversuch, der mit unserem Schluessel signiert, waere kein
303
+ # Uebernahmeversuch, sondern wir selbst.
304
+ angreifer_sk = Ed25519PrivateKey.from_private_bytes(bytes(range(32, 64)))
305
+
306
+ alt = copy.deepcopy(BASE)
307
+ alt["reviewId"] = "agent-review-conformance-01-erste-fassung"
308
+ env_alt = AR.emit_agent_review(alt, sk)
309
+ digest_alt = AR.receipt_digest(env_alt)
310
+
311
+ neu_p = copy.deepcopy(BASE)
312
+ neu_p["reviewId"] = "agent-review-conformance-01-zweite-fassung"
313
+ neu_p["supersession"] = {"supersedes": [
314
+ {"priorDigest": {"sha256": digest_alt},
315
+ "reason": "die erste Fassung zaehlte einen Fund doppelt"}]}
316
+ env_neu = AR.emit_agent_review(neu_p, sk)
317
+ digest_neu = AR.receipt_digest(env_neu)
318
+
319
+ # 15 — Positivkontrolle: die Kette benennt genau einen aktuellen Beleg
320
+ schreibe("agent-review-positive-control-supersession-names-the-current-receipt", "positive_control",
321
+ "F15", {"currentReceipt": digest_neu},
322
+ "Ohne diese Kontrolle misst die Gegenprobe darunter nichts: ein Resolver, der IMMER "
323
+ "None liefert, bestuende jeden Fall, der nur Abwehr prueft. Zwei Belege, der zweite "
324
+ "benennt den ersten als ueberholt — genau einer darf danach aktuell sein, und es muss "
325
+ "der zweite sein. Ein ueberholtes Receipt wird dabei nicht ungueltig, es ist nur nicht "
326
+ "mehr der Stand, auf den ein oeffentlicher Verweis zeigen soll.",
327
+ obj={"envelopes": [env_alt, env_neu]}, input_name="chain.json")
328
+
329
+ # 16 — Gegenprobe: ein fremd signierter Umschlag darf die Kette NICHT uebernehmen
330
+ uebernahme = copy.deepcopy(BASE)
331
+ uebernahme["reviewId"] = "uebernahme-versuch"
332
+ uebernahme["supersession"] = {"supersedes": [
333
+ {"priorDigest": {"sha256": digest_alt},
334
+ "reason": "behauptet, unseren Beleg zu ersetzen"}]}
335
+ env_fremd = AR.emit_agent_review(uebernahme, angreifer_sk)
336
+ schreibe("agent-review-counter-proof-a-foreign-key-cannot-supersede-our-receipt", "counter_proof",
337
+ "F15", {"unverifiedSupersessionClaim": AR.receipt_digest(env_fremd)},
338
+ "DER ANGRIFF, DEN DER RESOLVER ABWEHREN MUSS. Ein Angreifer mit EIGENEM Schluessel legt "
339
+ "einen Umschlag dazu, der unseren Beleg als ueberholt benennt. Wuerde die Ordnung vor "
340
+ "der Signaturpruefung entstehen, zeigte `current` danach auf SEIN Receipt und unseres "
341
+ "stuende unter `corrected` — bei gueltiger Signatur, denn seine ist gueltig, nur nicht "
342
+ "unsere. Der Laeufer prueft deshalb jeden Umschlag SELBST und uebergibt nur die "
343
+ "bestandenen; der fremde faellt heraus und darf danach nichts mehr korrigieren.\n\n"
344
+ "DIE ACHSE IST BEWUSST NICHT `current`. Gemessen 01.09.2026: nach der Abwehr sind ZWEI "
345
+ "Belege unkorrigiert, also meldet der Resolver ehrlich `current=None` statt zu raten — "
346
+ "und genau dasselbe kaeme heraus, wenn er Supersession gar nicht ansaehe. Ein Fall auf "
347
+ "`current` bestuende also auch bei einem blinden Resolver. Die unterscheidende Aussage "
348
+ "ist der GEMELDETE Anspruch: er belegt, dass der Versuch gesehen und verworfen wurde. "
349
+ "Zusaetzlich wird geprueft, dass gar nichts korrigiert wurde.",
350
+ obj={"envelopes": [env_alt, env_fremd]}, input_name="chain.json")
351
+
352
+ # 17 — Gegenprobe: ein ueberholter Vorgaenger, der nicht mehr vorliegt, bricht die Kette
353
+ schreibe("agent-review-counter-proof-a-superseded-predecessor-must-still-be-present", "counter_proof",
354
+ "F15", {"chainIntegrity": False},
355
+ "Verschwindet der ueberholte Beleg, ist die Korrektur nicht mehr nachvollziehbar: der "
356
+ "Leser sieht nur noch die neue Fassung und kann nicht pruefen, WAS korrigiert wurde. "
357
+ "Jedes einzelne Stueck bleibt dabei kryptografisch gueltig — die Kette ist trotzdem "
358
+ "kaputt, und das ist die Aussage, die `integrity_ok` traegt und `crypto_ok` nicht.",
359
+ obj={"envelopes": [env_neu]}, input_name="chain.json")
360
+
361
+ (ROOT / "publickey.hex").write_text(pk.hex() + "\n", encoding="utf-8")
362
+ print(f"{len(list(ROOT.glob('*/case.json')))} Vektoren geschrieben nach {ROOT}")
@@ -0,0 +1,16 @@
1
+ {
2
+ "attribution": "agent-review/v0.1 \u2014 built 31.08.2026 against the external adversarial read (18 findings). Rule ids are that read's finding ids.",
3
+ "caseId": "agent-review-counter-proof-a-foreign-key-cannot-supersede-our-receipt",
4
+ "expected": {
5
+ "unverifiedSupersessionClaim": "32fc4455e730b23436216c3f98e414f564aeb63a254abe2c24183f4c07f83e2e"
6
+ },
7
+ "input": "chain.json",
8
+ "kind": "agent_review_predicate",
9
+ "rationale": "DER ANGRIFF, DEN DER RESOLVER ABWEHREN MUSS. Ein Angreifer mit EIGENEM Schluessel legt einen Umschlag dazu, der unseren Beleg als ueberholt benennt. Wuerde die Ordnung vor der Signaturpruefung entstehen, zeigte `current` danach auf SEIN Receipt und unseres stuende unter `corrected` \u2014 bei gueltiger Signatur, denn seine ist gueltig, nur nicht unsere. Der Laeufer prueft deshalb jeden Umschlag SELBST und uebergibt nur die bestandenen; der fremde faellt heraus und darf danach nichts mehr korrigieren.\n\nDIE ACHSE IST BEWUSST NICHT `current`. Gemessen 01.09.2026: nach der Abwehr sind ZWEI Belege unkorrigiert, also meldet der Resolver ehrlich `current=None` statt zu raten \u2014 und genau dasselbe kaeme heraus, wenn er Supersession gar nicht ansaehe. Ein Fall auf `current` bestuende also auch bei einem blinden Resolver. Die unterscheidende Aussage ist der GEMELDETE Anspruch: er belegt, dass der Versuch gesehen und verworfen wurde. Zusaetzlich wird geprueft, dass gar nichts korrigiert wurde.",
10
+ "role": "counter_proof",
11
+ "rule": "F15",
12
+ "specRefs": [
13
+ "docs/AGENT_REVIEW_PREDICATE.md",
14
+ "src/proofbundle/agent_review.py"
15
+ ]
16
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "envelopes": [
3
+ {
4
+ "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJwcmVkaWNhdGUiOnsiY292ZXJhZ2UiOnsiZXhwZWN0ZWRSdW5zIjpudWxsLCJrbm93bkdhcHMiOlsicnVucyBvdXRzaWRlIHRoaXMgc2Vzc2lvbiBhcmUgbm90IHZpc2libGUiXSwib2JzZXJ2ZWRSdW5zIjoyLCJzdGF0dXMiOiJQQVJUSUFMIn0sImRlY2xhcmF0aW9uIjp7ImF1dGhvcmluZyI6W3siYXNzZXJ0ZWRCeSI6ImFuIGFnZW50IiwiYXNzdXJhbmNlIjoic2VsZkRlY2xhcmVkIn1dLCJmaW5kaW5ncyI6W3siZGlzcG9zaXRpb24iOiJmaXhlZCIsImZpeENvbW1pdCI6ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJpZCI6IkYxIiwic2V2ZXJpdHkiOiJoaWdoIiwidGl0bGUiOiJ1bmJhbGFuY2VkIG1hcmtlciBhY2NlcHRlZCJ9LHsiZGlzcG9zaXRpb24iOiJkaXNtaXNzZWQiLCJpZCI6IkYyIiwicmVhc29uIjoiY292ZXJlZCBieSB0aGUgbGltaXRhdGlvbnMgYmxvY2siLCJzZXZlcml0eSI6ImxvdyIsInRpdGxlIjoid29yZGluZyB0b28gYnJvYWQifV0sImZpbmRpbmdzUm9vdCI6ImY3NjNjMzg2NGZkYTBkYzY5NWUwMzAwNmVjOWE2NTczNDY1ZjU0NmNjMGMzMTZjNDUxMTI2N2RhODBjMWFmMDYiLCJmaW5kaW5nc1RvdGFsIjoyLCJub25DbGFpbXMiOlsiZG9lcyBub3QgcHJvdmUgdGhlIG5hbWVkIGFnZW50IHdhcyBpbnZvbHZlZCJdLCJyZXZpZXdSdW5zIjpbeyJhc3NlcnRlZEJ5IjoiYW4gYWdlbnQsIHNlY29uZCBwYXNzIiwiYXNzdXJhbmNlIjoic2VsZkRlY2xhcmVkIn1dfSwibGltaXRhdGlvbnMiOlsib2ZmbGluZSB2ZXJpZmljYXRpb24gY2Fubm90IGVzdGFibGlzaCBjdXJyZW5jeSJdLCJyZXZpZXdJZCI6ImFnZW50LXJldmlldy1jb25mb3JtYW5jZS0wMS1lcnN0ZS1mYXNzdW5nIiwic2NoZW1hVmVyc2lvbiI6IjAuMS4wIiwic3ViamVjdENvbnRleHQiOnsiYmFzZVNoYSI6ImNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2MiLCJib2R5Q29yZURpZ2VzdCI6ImFkM2RkOThjODc4Mjk5NWQ0NjY1ZmEwYmZlYjJlNGJmMTdkNzhjZjZkZjM5MmRhMDg3OGQyMDUyY2RhYTVhOWEiLCJmb3JnZSI6ImdpdGh1Yi5jb20iLCJoZWFkU2hhIjoiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYiIsImtpbmQiOiJnaXRodWJQdWxsUmVxdWVzdCIsInB1bGxSZXF1ZXN0Tm9kZUlkIjoiUFJfa3dET0FiQ2RFZiIsInJlcG9zaXRvcnlJZCI6IlJfa2dET0FiQ2RFZiIsInJldmlld2VkRGlmZkRpZ2VzdCI6ImRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQifSwidGltZXMiOnsiYW5jaG9yZWRBdCI6bnVsbCwiZGVjbGFyZWRBdCI6IjIwMjYtMDgtMzFUMTc6MDA6MDBaIiwib2JzZXJ2ZWRBdCI6bnVsbCwic2lnbmVkQXQiOiIyMDI2LTA4LTMxVDE3OjAwOjAxWiJ9fSwicHJlZGljYXRlVHlwZSI6Imh0dHBzOi8vYjduMGRlLmNvbS9wcm9vZmJ1bmRsZS9wcmVkaWNhdGVzL2FnZW50LXJldmlldy92MC4xIiwic3ViamVjdCI6W3siZGlnZXN0Ijp7InNoYTI1NiI6ImYyZmNhOGFjMTQ2YjMyMzZjOGYzNzUzMzg5MGY0MjM1MGE4NTYyYTY0MjZlYzdkOTZjMTI5ZTA0ZGUzYzY2MmEifSwibmFtZSI6ImdpdGh1Yi1wcjpSX2tnRE9BYkNkRWY6UFJfa3dET0FiQ2RFZiJ9XX0=",
5
+ "payloadType": "application/vnd.in-toto+json",
6
+ "signatures": [
7
+ {
8
+ "sig": "YigIGymu0qG7rltPZLCrPGY8egz/1jZ6P0jnL4afabEJpALAgQ4dPFLUh3lqRWwrbJ2n9n5jaJ1f+3PfCjm/Bg=="
9
+ }
10
+ ]
11
+ },
12
+ {
13
+ "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJwcmVkaWNhdGUiOnsiY292ZXJhZ2UiOnsiZXhwZWN0ZWRSdW5zIjpudWxsLCJrbm93bkdhcHMiOlsicnVucyBvdXRzaWRlIHRoaXMgc2Vzc2lvbiBhcmUgbm90IHZpc2libGUiXSwib2JzZXJ2ZWRSdW5zIjoyLCJzdGF0dXMiOiJQQVJUSUFMIn0sImRlY2xhcmF0aW9uIjp7ImF1dGhvcmluZyI6W3siYXNzZXJ0ZWRCeSI6ImFuIGFnZW50IiwiYXNzdXJhbmNlIjoic2VsZkRlY2xhcmVkIn1dLCJmaW5kaW5ncyI6W3siZGlzcG9zaXRpb24iOiJmaXhlZCIsImZpeENvbW1pdCI6ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJpZCI6IkYxIiwic2V2ZXJpdHkiOiJoaWdoIiwidGl0bGUiOiJ1bmJhbGFuY2VkIG1hcmtlciBhY2NlcHRlZCJ9LHsiZGlzcG9zaXRpb24iOiJkaXNtaXNzZWQiLCJpZCI6IkYyIiwicmVhc29uIjoiY292ZXJlZCBieSB0aGUgbGltaXRhdGlvbnMgYmxvY2siLCJzZXZlcml0eSI6ImxvdyIsInRpdGxlIjoid29yZGluZyB0b28gYnJvYWQifV0sImZpbmRpbmdzUm9vdCI6ImY3NjNjMzg2NGZkYTBkYzY5NWUwMzAwNmVjOWE2NTczNDY1ZjU0NmNjMGMzMTZjNDUxMTI2N2RhODBjMWFmMDYiLCJmaW5kaW5nc1RvdGFsIjoyLCJub25DbGFpbXMiOlsiZG9lcyBub3QgcHJvdmUgdGhlIG5hbWVkIGFnZW50IHdhcyBpbnZvbHZlZCJdLCJyZXZpZXdSdW5zIjpbeyJhc3NlcnRlZEJ5IjoiYW4gYWdlbnQsIHNlY29uZCBwYXNzIiwiYXNzdXJhbmNlIjoic2VsZkRlY2xhcmVkIn1dfSwibGltaXRhdGlvbnMiOlsib2ZmbGluZSB2ZXJpZmljYXRpb24gY2Fubm90IGVzdGFibGlzaCBjdXJyZW5jeSJdLCJyZXZpZXdJZCI6InVlYmVybmFobWUtdmVyc3VjaCIsInNjaGVtYVZlcnNpb24iOiIwLjEuMCIsInN1YmplY3RDb250ZXh0Ijp7ImJhc2VTaGEiOiJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjIiwiYm9keUNvcmVEaWdlc3QiOiJhZDNkZDk4Yzg3ODI5OTVkNDY2NWZhMGJmZWIyZTRiZjE3ZDc4Y2Y2ZGYzOTJkYTA4NzhkMjA1MmNkYWE1YTlhIiwiZm9yZ2UiOiJnaXRodWIuY29tIiwiaGVhZFNoYSI6ImJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIiLCJraW5kIjoiZ2l0aHViUHVsbFJlcXVlc3QiLCJwdWxsUmVxdWVzdE5vZGVJZCI6IlBSX2t3RE9BYkNkRWYiLCJyZXBvc2l0b3J5SWQiOiJSX2tnRE9BYkNkRWYiLCJyZXZpZXdlZERpZmZEaWdlc3QiOiJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkIn0sInN1cGVyc2Vzc2lvbiI6eyJzdXBlcnNlZGVzIjpbeyJwcmlvckRpZ2VzdCI6eyJzaGEyNTYiOiJmOTMxNjExM2Y2ZTQ1NmJmNmRkMzI3ZWI2NmQ0MzE0OGNmZDg1NWEzYzdhMGFmNmFmZTU0ZmY1NzU0NDczNTIzIn0sInJlYXNvbiI6ImJlaGF1cHRldCwgdW5zZXJlbiBCZWxlZyB6dSBlcnNldHplbiJ9XX0sInRpbWVzIjp7ImFuY2hvcmVkQXQiOm51bGwsImRlY2xhcmVkQXQiOiIyMDI2LTA4LTMxVDE3OjAwOjAwWiIsIm9ic2VydmVkQXQiOm51bGwsInNpZ25lZEF0IjoiMjAyNi0wOC0zMVQxNzowMDowMVoifX0sInByZWRpY2F0ZVR5cGUiOiJodHRwczovL2I3bjBkZS5jb20vcHJvb2ZidW5kbGUvcHJlZGljYXRlcy9hZ2VudC1yZXZpZXcvdjAuMSIsInN1YmplY3QiOlt7ImRpZ2VzdCI6eyJzaGEyNTYiOiJmMmZjYThhYzE0NmIzMjM2YzhmMzc1MzM4OTBmNDIzNTBhODU2MmE2NDI2ZWM3ZDk2YzEyOWUwNGRlM2M2NjJhIn0sIm5hbWUiOiJnaXRodWItcHI6Ul9rZ0RPQWJDZEVmOlBSX2t3RE9BYkNkRWYifV19",
14
+ "payloadType": "application/vnd.in-toto+json",
15
+ "signatures": [
16
+ {
17
+ "sig": "WMPWrAdOCX7T4h88UxALJoLUwWN00kT26CMmOkYuti8ml57oux7yWE6ZBEHr7CeCU5GYeCUzR5GN5B08M7lYDQ=="
18
+ }
19
+ ]
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "attribution": "agent-review/v0.1 \u2014 built 31.08.2026 against the external adversarial read (18 findings). Rule ids are that read's finding ids.",
3
+ "caseId": "agent-review-counter-proof-a-superseded-predecessor-must-still-be-present",
4
+ "expected": {
5
+ "chainIntegrity": false
6
+ },
7
+ "input": "chain.json",
8
+ "kind": "agent_review_predicate",
9
+ "rationale": "Verschwindet der ueberholte Beleg, ist die Korrektur nicht mehr nachvollziehbar: der Leser sieht nur noch die neue Fassung und kann nicht pruefen, WAS korrigiert wurde. Jedes einzelne Stueck bleibt dabei kryptografisch gueltig \u2014 die Kette ist trotzdem kaputt, und das ist die Aussage, die `integrity_ok` traegt und `crypto_ok` nicht.",
10
+ "role": "counter_proof",
11
+ "rule": "F15",
12
+ "specRefs": [
13
+ "docs/AGENT_REVIEW_PREDICATE.md",
14
+ "src/proofbundle/agent_review.py"
15
+ ]
16
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "envelopes": [
3
+ {
4
+ "payload": "eyJfdHlwZSI6Imh0dHBzOi8vaW4tdG90by5pby9TdGF0ZW1lbnQvdjEiLCJwcmVkaWNhdGUiOnsiY292ZXJhZ2UiOnsiZXhwZWN0ZWRSdW5zIjpudWxsLCJrbm93bkdhcHMiOlsicnVucyBvdXRzaWRlIHRoaXMgc2Vzc2lvbiBhcmUgbm90IHZpc2libGUiXSwib2JzZXJ2ZWRSdW5zIjoyLCJzdGF0dXMiOiJQQVJUSUFMIn0sImRlY2xhcmF0aW9uIjp7ImF1dGhvcmluZyI6W3siYXNzZXJ0ZWRCeSI6ImFuIGFnZW50IiwiYXNzdXJhbmNlIjoic2VsZkRlY2xhcmVkIn1dLCJmaW5kaW5ncyI6W3siZGlzcG9zaXRpb24iOiJmaXhlZCIsImZpeENvbW1pdCI6ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJpZCI6IkYxIiwic2V2ZXJpdHkiOiJoaWdoIiwidGl0bGUiOiJ1bmJhbGFuY2VkIG1hcmtlciBhY2NlcHRlZCJ9LHsiZGlzcG9zaXRpb24iOiJkaXNtaXNzZWQiLCJpZCI6IkYyIiwicmVhc29uIjoiY292ZXJlZCBieSB0aGUgbGltaXRhdGlvbnMgYmxvY2siLCJzZXZlcml0eSI6ImxvdyIsInRpdGxlIjoid29yZGluZyB0b28gYnJvYWQifV0sImZpbmRpbmdzUm9vdCI6ImY3NjNjMzg2NGZkYTBkYzY5NWUwMzAwNmVjOWE2NTczNDY1ZjU0NmNjMGMzMTZjNDUxMTI2N2RhODBjMWFmMDYiLCJmaW5kaW5nc1RvdGFsIjoyLCJub25DbGFpbXMiOlsiZG9lcyBub3QgcHJvdmUgdGhlIG5hbWVkIGFnZW50IHdhcyBpbnZvbHZlZCJdLCJyZXZpZXdSdW5zIjpbeyJhc3NlcnRlZEJ5IjoiYW4gYWdlbnQsIHNlY29uZCBwYXNzIiwiYXNzdXJhbmNlIjoic2VsZkRlY2xhcmVkIn1dfSwibGltaXRhdGlvbnMiOlsib2ZmbGluZSB2ZXJpZmljYXRpb24gY2Fubm90IGVzdGFibGlzaCBjdXJyZW5jeSJdLCJyZXZpZXdJZCI6ImFnZW50LXJldmlldy1jb25mb3JtYW5jZS0wMS16d2VpdGUtZmFzc3VuZyIsInNjaGVtYVZlcnNpb24iOiIwLjEuMCIsInN1YmplY3RDb250ZXh0Ijp7ImJhc2VTaGEiOiJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjIiwiYm9keUNvcmVEaWdlc3QiOiJhZDNkZDk4Yzg3ODI5OTVkNDY2NWZhMGJmZWIyZTRiZjE3ZDc4Y2Y2ZGYzOTJkYTA4NzhkMjA1MmNkYWE1YTlhIiwiZm9yZ2UiOiJnaXRodWIuY29tIiwiaGVhZFNoYSI6ImJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIiLCJraW5kIjoiZ2l0aHViUHVsbFJlcXVlc3QiLCJwdWxsUmVxdWVzdE5vZGVJZCI6IlBSX2t3RE9BYkNkRWYiLCJyZXBvc2l0b3J5SWQiOiJSX2tnRE9BYkNkRWYiLCJyZXZpZXdlZERpZmZEaWdlc3QiOiJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkIn0sInN1cGVyc2Vzc2lvbiI6eyJzdXBlcnNlZGVzIjpbeyJwcmlvckRpZ2VzdCI6eyJzaGEyNTYiOiJmOTMxNjExM2Y2ZTQ1NmJmNmRkMzI3ZWI2NmQ0MzE0OGNmZDg1NWEzYzdhMGFmNmFmZTU0ZmY1NzU0NDczNTIzIn0sInJlYXNvbiI6ImRpZSBlcnN0ZSBGYXNzdW5nIHphZWhsdGUgZWluZW4gRnVuZCBkb3BwZWx0In1dfSwidGltZXMiOnsiYW5jaG9yZWRBdCI6bnVsbCwiZGVjbGFyZWRBdCI6IjIwMjYtMDgtMzFUMTc6MDA6MDBaIiwib2JzZXJ2ZWRBdCI6bnVsbCwic2lnbmVkQXQiOiIyMDI2LTA4LTMxVDE3OjAwOjAxWiJ9fSwicHJlZGljYXRlVHlwZSI6Imh0dHBzOi8vYjduMGRlLmNvbS9wcm9vZmJ1bmRsZS9wcmVkaWNhdGVzL2FnZW50LXJldmlldy92MC4xIiwic3ViamVjdCI6W3siZGlnZXN0Ijp7InNoYTI1NiI6ImYyZmNhOGFjMTQ2YjMyMzZjOGYzNzUzMzg5MGY0MjM1MGE4NTYyYTY0MjZlYzdkOTZjMTI5ZTA0ZGUzYzY2MmEifSwibmFtZSI6ImdpdGh1Yi1wcjpSX2tnRE9BYkNkRWY6UFJfa3dET0FiQ2RFZiJ9XX0=",
5
+ "payloadType": "application/vnd.in-toto+json",
6
+ "signatures": [
7
+ {
8
+ "sig": "4w+gfp/rXpjfvlnExl4yQLdNDrMYn40fBTgHseYCzW+Gtd/v/JsZGJYWzMiMETPPlqSgqngfYGgA7p+BA9HfBQ=="
9
+ }
10
+ ]
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "attribution": "agent-review/v0.1 \u2014 built 31.08.2026 against the external adversarial read (18 findings). Rule ids are that read's finding ids.",
3
+ "caseId": "agent-review-counter-proof-anchored-time-needs-evidence",
4
+ "expected": {
5
+ "classification": "refused"
6
+ },
7
+ "input": "predicate.json",
8
+ "kind": "agent_review_predicate",
9
+ "rationale": "A signature proves the signed bytes contain a time value, not that the value is externally true. v0.1 carries no anchor evidence, so it refuses the claim instead of passing it through.",
10
+ "role": "counter_proof",
11
+ "rule": "F06",
12
+ "specRefs": [
13
+ "docs/AGENT_REVIEW_PREDICATE.md",
14
+ "src/proofbundle/agent_review.py"
15
+ ]
16
+ }