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.
- {proofbundle-5.0.0 → proofbundle-5.1.0}/MANIFEST.in +26 -0
- proofbundle-5.1.0/Makefile +71 -0
- {proofbundle-5.0.0/src/proofbundle.egg-info → proofbundle-5.1.0}/PKG-INFO +3 -3
- proofbundle-5.1.0/conformance/agent_review/_generator/build_vectors.py +362 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-foreign-key-cannot-supersede-our-receipt/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-foreign-key-cannot-supersede-our-receipt/chain.json +22 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-superseded-predecessor-must-still-be-present/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-a-superseded-predecessor-must-still-be-present/chain.json +13 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-anchored-time-needs-evidence/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-anchored-time-needs-evidence/predicate.json +66 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-assurance-cannot-be-self-raised/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-assurance-cannot-be-self-raised/predicate.json +66 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-complete-needs-an-expectation/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-complete-needs-an-expectation/predicate.json +62 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-duplicate-disclosure-block-fails-closed/body.json +3 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-duplicate-disclosure-block-fails-closed/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-findings-root-covers-the-list/case.json +19 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-findings-root-covers-the-list/envelope.json +9 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-gap-duty-cannot-be-switched-off/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-gap-duty-cannot-be-switched-off/predicate.json +58 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-introducing-the-first-block-moves-the-digest/bodies.json +4 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-introducing-the-first-block-moves-the-digest/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-partial-must-name-its-gap/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-partial-must-name-its-gap/predicate.json +63 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-receipt-does-not-travel-between-subjects/case.json +19 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-counter-proof-receipt-does-not-travel-between-subjects/envelope.json +9 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-absent-expectation-is-reported/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-absent-expectation-is-reported/envelope.json +9 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-emit-verify-roundtrip/case.json +18 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-emit-verify-roundtrip/predicate.json +49 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-prepare-then-fill-keeps-the-digest/bodies.json +4 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-prepare-then-fill-keeps-the-digest/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-rerendered-block-keeps-body-core/bodies.json +4 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-rerendered-block-keeps-body-core/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-supersession-names-the-current-receipt/case.json +16 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-supersession-names-the-current-receipt/chain.json +22 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-valid-self-declared/case.json +19 -0
- proofbundle-5.1.0/conformance/agent_review/agent-review-positive-control-valid-self-declared/envelope.json +9 -0
- proofbundle-5.1.0/conformance/agent_review/publickey.hex +1 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/common_vocabulary.py +18 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/cross_format.py +5 -2
- proofbundle-5.1.0/conformance/envelope_profile/generate_vectors.py +239 -0
- proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-float-is-refused-so-two-axes-cannot-arise/case.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-float-is-refused-so-two-axes-cannot-arise/objects.json +8 -0
- proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-nonconformant-serializer-diverges/case.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r1-counter-proof-nonconformant-serializer-diverges/object.json +11 -0
- proofbundle-5.1.0/conformance/envelope_profile/r1-positive-control-canonical-root/case.json +17 -0
- proofbundle-5.1.0/conformance/envelope_profile/r1-positive-control-canonical-root/object.json +11 -0
- proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-foreign-schema-id-is-refused-not-invalid/bundle.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-foreign-schema-id-is-refused-not-invalid/case.json +15 -0
- proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-unverifiable-is-invalid-not-refused/bundle.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r2-counter-proof-unverifiable-is-invalid-not-refused/case.json +15 -0
- proofbundle-5.1.0/conformance/envelope_profile/r2-positive-control-known-schema-classifies-valid/bundle.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r2-positive-control-known-schema-classifies-valid/case.json +15 -0
- proofbundle-5.1.0/conformance/envelope_profile/r3-counter-proof-hand-signed-binding-lies-about-tree-size/bundle.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r3-counter-proof-hand-signed-binding-lies-about-tree-size/case.json +15 -0
- proofbundle-5.1.0/conformance/envelope_profile/r3-positive-control-coherent-sample-binding/bundle.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r3-positive-control-coherent-sample-binding/case.json +15 -0
- proofbundle-5.1.0/conformance/envelope_profile/r4-counter-proof-issuer-is-not-the-signing-key/bundle.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r4-counter-proof-issuer-is-not-the-signing-key/case.json +15 -0
- proofbundle-5.1.0/conformance/envelope_profile/r4-positive-control-issuer-is-the-signing-key/bundle.json +16 -0
- proofbundle-5.1.0/conformance/envelope_profile/r4-positive-control-issuer-is-the-signing-key/case.json +15 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/manifest.json +75 -48
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/run_conformance.py +328 -1
- proofbundle-5.1.0/conformance/unshipped_spec_refs_baseline.json +23 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/vector_schema.json +6 -4
- proofbundle-5.1.0/docs/AGENT_REVIEW_PREDICATE.md +187 -0
- proofbundle-5.1.0/docs/RECEIPT_ENVELOPE_PROFILE.md +240 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/MANIFEST.sha256 +2 -2
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/PROGRESS.md +1 -1
- proofbundle-5.1.0/docs/readiness_pack/index.json +270 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/proofbundle/readiness_pack.bundle.json +4 -4
- proofbundle-5.1.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +1 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/pyproject.toml +15 -3
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/decision-receipt-v0.1.schema.json +14 -1
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/audit_candidate_matrix.py +51 -4
- proofbundle-5.1.0/scripts/audit_output_aufloesbar.py +133 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/mutation_check.py +12 -4
- proofbundle-5.1.0/scripts/mutation_operators_fresh.py +106 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/rust_parity_registry.json +36 -0
- proofbundle-5.1.0/scripts/shipped_docs_check.py +132 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/type_confusion_gate.py +6 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/__init__.py +1 -1
- proofbundle-5.1.0/src/proofbundle/agent_review.py +2337 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/automation_verdict.py +27 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/decision.py +36 -1
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/evalclaim.py +46 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0/src/proofbundle.egg-info}/PKG-INFO +3 -3
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/SOURCES.txt +100 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/requires.txt +2 -2
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/conftest.py +174 -15
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/MANIFEST.json +45 -0
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/checkpoint_at_submit.txt +16 -0
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/checkpoint_latest.txt +16 -0
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/checkpoint_witnessed.txt +16 -0
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/inclusion_path.txt +9 -0
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/leaf.txt +1 -0
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/proof_bundle.json +28 -0
- proofbundle-5.1.0/tests/fixtures/anchors/markovian_log/submit_7727/submit_response.json +13 -0
- proofbundle-5.1.0/tests/fixtures/kette_147/body_wie_am_ziel.md +29 -0
- proofbundle-5.1.0/tests/fixtures/kette_147/receipt.json +9 -0
- proofbundle-5.1.0/tests/test_agent_review_binding_semantics.py +367 -0
- proofbundle-5.1.0/tests/test_agent_review_conformance_runner.py +443 -0
- proofbundle-5.1.0/tests/test_agent_review_statement_shape.py +202 -0
- proofbundle-5.1.0/tests/test_agent_review_zeitsemantik.py +290 -0
- proofbundle-5.1.0/tests/test_anchors_markovian_submit.py +194 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_matrix_version_pin_binding.py +23 -3
- proofbundle-5.1.0/tests/test_audit_output_aufloesbar.py +133 -0
- proofbundle-5.1.0/tests/test_ausgelieferte_doku_haelt.py +170 -0
- proofbundle-5.1.0/tests/test_automation_nie_nachsichtiger_als_ok.py +436 -0
- proofbundle-5.1.0/tests/test_beide_verifier_pfade_antworten_gleich.py +104 -0
- proofbundle-5.1.0/tests/test_classify_eval_claim.py +183 -0
- proofbundle-5.1.0/tests/test_dokumentierte_laeufer_koennen_die_suite_fahren.py +427 -0
- proofbundle-5.1.0/tests/test_evidence_typed_digest.py +179 -0
- proofbundle-5.1.0/tests/test_findings_root_bindet_die_liste.py +143 -0
- proofbundle-5.1.0/tests/test_gegenbeweis_zeigt_nicht_ins_leere.py +109 -0
- proofbundle-5.1.0/tests/test_jede_formpruefung_nennt_ihren_grund.py +853 -0
- proofbundle-5.1.0/tests/test_jeder_code_meint_genau_eine_lage.py +724 -0
- proofbundle-5.1.0/tests/test_jeder_gegenbeweis_faellt_auf_seiner_achse.py +90 -0
- proofbundle-5.1.0/tests/test_kette_verliert_kein_gueltiges_receipt.py +88 -0
- proofbundle-5.1.0/tests/test_korpus_arten_haben_eine_quelle.py +67 -0
- proofbundle-5.1.0/tests/test_korpus_stammt_aus_seinem_generator.py +91 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_surface_family_property.py +41 -0
- proofbundle-5.1.0/tests/test_p05_kette_ereignis_bis_offline_verify.py +133 -0
- proofbundle-5.1.0/tests/test_p0_2_disclosure_core_digest.py +273 -0
- proofbundle-5.1.0/tests/test_p0_4_coverage_und_zeit.py +196 -0
- proofbundle-5.1.0/tests/test_p0_urspruengliche_mutationen.py +224 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_audit_provenance.py +13 -7
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_roadmap_frontload_foundations.py +13 -2
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdist_selftest_derivation.py +95 -0
- proofbundle-5.1.0/tests/test_zeitsemantik_policy_und_supersession.py +370 -0
- proofbundle-5.0.0/docs/readiness_pack/index.json +0 -121
- proofbundle-5.0.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +0 -1
- {proofbundle-5.0.0 → proofbundle-5.1.0}/LICENSE +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-fails-expected-root/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-fails-expected-root/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/corrupted-signature/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/corrupted-signature/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/duplicate-json-key/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/duplicate-json-key/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/forged-anchor-own-frozen/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/forged-anchor-own-frozen/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-forged-issuer-identity/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-forged-issuer-identity/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-signed-but-unbound/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-signed-but-unbound/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tampered-payload/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tampered-payload/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tree-size-expectation-mismatch/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/tree-size-expectation-mismatch/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/valid-minimal/bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/bundle/valid-minimal/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/MANIFEST.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.jcs +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/MANIFEST.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.jcs +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/MANIFEST.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.jcs +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-absent-legacy-receipt/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-absent-legacy-receipt/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-lookalike-version-field/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-lookalike-version-field/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-missing-reason/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-missing-reason/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-bound/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-bound/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported-with-field/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-not-reported-with-field/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported-without-field/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-reported-without-field/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unknown-literal/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unknown-literal/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unrelated-status-field/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/provenance/version-status-unrelated-status-field/provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-supersedes-verified/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-unresolved/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-unresolved/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/declared-unresolved/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-accept-path/related_rx.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-correct-pass/related_rx.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_rx.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/decoy-parent-target-mismatch/related_rx.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_001.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_002.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_003.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_004.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_005.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_006.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_007.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_008.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_009.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_010.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_011.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_012.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_013.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_014.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_015.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_016.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_017.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_018.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_019.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_020.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_021.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_022.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_023.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_024.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_025.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_026.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_027.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_028.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_029.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_030.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_031.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_032.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/depth-exceeded/related_033.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/digest-mismatch/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/generate_vectors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/malformed-digest/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/malformed-digest/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/malformed-digest/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-declared-supersedes-verified/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_rx.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-digest-mismatch/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-relation-signer-unauthorized/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-renews/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-silent-landing/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-silent-landing/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-silent-landing/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-valid-baseline/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-valid-baseline/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/outcome-valid-baseline/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-amends/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-corrects/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-derivedfrom/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-retracts/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-revises/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-cross-issuer-verified/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-same-key-explicit/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/relation-signer-verified-under-not-claim/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/renews-vector/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/retracts-then-use/related_r.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/silent-landing/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/silent-landing/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/silent-landing/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-malformed/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-malformed/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-malformed/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-declared-unresolved/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-declared-unresolved/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-declared-unresolved/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-unauthorized/related_t.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/policy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-blocked/related_t.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-retracts-verified-visible/related_t.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/statement-supersedes-verified/related_t.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/t1-canonical-invalid-signature/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/t1-canonical-invalid-signature/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/t1-canonical-invalid-signature/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-ambiguous/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-correct-pass/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-mismatch/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/target-subject-missing/related_r0.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/unauthorized-signer/related_b.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/valid-baseline/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/valid-baseline/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/valid-baseline/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/case.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/pub.b64 +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/receipt.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/conformance/relation/wrong-payloadtype-target/related_t.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/adr/renewal_policy.example.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/AUDITOR_OPEN_POINTS.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/OPEN_QUESTIONS.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/REPRODUCTION_RUNBOOK.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/calendar_independence.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/differential_matrix.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/rust_parity_scope.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/tamper_resistance.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/docs/readiness_pack/threat_model_delta_360.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/anchors/chia-datalayer-invalid-root.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/anchors/chia-datalayer-valid.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/checkpoint_example.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_allow.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_deny.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_escalate.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/decision_receipt_with_eval_ref.intoto.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/eee_receipt.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/example.tlog-proof +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/example_bundle.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/experimental_enclave.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/inspect_hook_example.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/inspect_receipt.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/private-model-commitment.statement.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/public-model.statement.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/release-gate.statement.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto/svr.statement.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/intoto_dsse_export.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/lm_eval_receipt.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/make_example.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/persample_audit.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/pytest_plugin_example.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/rekor_interop.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/tlog_proof_example.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/trust_policy_decision_strict.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/examples/trust_policy_strict.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/formal/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/formal/model.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/action-outcome-v0.1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/eval_claim_v0_1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/in_toto_statement_v1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/proofbundle_v0_1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/run-ledger-v0.1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/trust-pack-v0.1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/trust_policy_v0_1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/schemas/verification-summary-v0.1.schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/_build_anchor_fixture.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/branch_base_check.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/build_reproducible.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/check_version_and_changelog.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/claims_hygiene_check.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/demo.sh +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/demo_tamper.sh +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/doc_link_check.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/finding_base_drift.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/findings_register.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/fork_pr_secret_isolation.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/fuzz_soak.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/gate_qualification_harness.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/gen_findings_register.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/gen_synthetic_ots_fixture.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/git-hooks/pre-commit +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/install_git_hooks.sh +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/mutant_signature_guard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_attestation.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_audit_gate.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_receipt.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/pre_tag_receipt_lib.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/readiness_pack_gate.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/readiness_pack_manifest.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/render_demo.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/rust_parity_gate.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/scripts/test_manifest_gate.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/setup.cfg +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_inspect_registry.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_integration.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_membership.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_strict_json.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/_wire_b64.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/__init__.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/_provenance.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/eee.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/inspect_ai.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/lm_eval.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/promptfoo.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/adapters/samples.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_chia.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_chia_add.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_markovian.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_ots.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_rfc3161.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/anchors_rootcommit.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/assurance.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/beacon.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/budget.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/bundle.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/canonical.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/checkpoint.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/cli.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/demo.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/dsse.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/eee_eval_schema.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/emit.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/errors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/evalcard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/evidence_pack.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/experimental/__init__.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/experimental/enclave.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/hashalg.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/hf_evals.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/inspect_hook.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/intoto.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/kbjwt.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/merkle.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/outcome.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/persample.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/decision-receipt-template-v1.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/research-preview-v1.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/strict-eval-authenticated-root-template-v1.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/strict-eval-template-v1.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policies/strict-prereg-template-v1.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policy.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/policy_profiles.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/pqsig.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/prereg.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/public_transparency.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/py.typed +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/pytest_plugin.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/relation.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/relation_statement.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/renewal.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/run_ledger.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/sdjwt.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/sdjwt_issue.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/sdjwt_vc.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/signature.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/statuslist.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/subject_binding.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/tlogproof.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/trust_pack.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle/verification_summary.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/dependency_links.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/entry_points.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/src/proofbundle.egg-info/top_level.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/_beinahe_treffer.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/chia_datalayer_proof.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/freetsa_receipt_anchor.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/checkpoint_7397/MANIFEST.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/checkpoint_7397/checkpoint_7397.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS_negativ.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/MANIFEST.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/SOURCES.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/keys_unabhaengig.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/leaf_7271.raw +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/markovian_log/proof_7271/proof_7271.tlog-proof +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/MANIFEST.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/MANIFEST.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/manifest.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-01-valid.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-02-tampered-root.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-03-tampered-wallet.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-04-tampered-proof.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/manifest.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-01-valid.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-02-tampered-root.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-03-tampered-wallet.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-04-tampered-sig.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-05-tampered-proof.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/01-valid.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/02-unknown-id.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/03-tampered-body.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/04-tampered-proof.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/manifest.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/PROVENANCE.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/gosumdb_known_keys.go +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/rekor_v2_checkpoint.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/sumdb_latest.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/checkpoint/trusted_root.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ed25519_speccheck_cases.LICENSE +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ed25519_speccheck_cases.README.md +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ed25519_speccheck_cases.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/eee_arc_easy.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/inspect_logs/safety_refusal_demo.eval +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/inspect_logs/safety_refusal_demo.eval.provenance.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/lm_eval_arc_easy_real.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/markovian_anchor_confirmed.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/mldsa_acvp/PROVENANCE.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/mldsa_acvp/mldsa_sigver_slice.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/PROVENANCE.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/block358391.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/hello-world.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/hello-world.txt.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/incomplete.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/incomplete.txt.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/known-and-unknown-notary.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/known-and-unknown-notary.txt.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/merkle2.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/merkle2.txt.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/synthetic-upgraded-sha256.block.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/two-calendars.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/ots/two-calendars.txt.ots +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/promptfoo_results_v3.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/rekor_inclusion_25579.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/rfc6962_vectors.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwt_disclosure_vector.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwt_reference_eddsa.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwtvc/PROVENANCE.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwtvc/sdjwtvc_examples.txt +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/fixtures/sdjwtvc/sdjwtvc_issuer_pubkey.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_adapters.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_adversarial.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_extra_arg_type_confusion.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_hardening_321.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_longevity_property.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchor_target_trustedtime.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_chia.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_chia_add.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_chia_claims.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_generic.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_markovian.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_markovian_log.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_ots.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_ots_frozen_rptrust_guard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_rfc3161.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_rfc3161_type_floor.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_anchors_rootcommit.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_assurance.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_candidate_360.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_candidate_ready_logic.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_index_zahlen_stimmen.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_audit_marker_line_wrap.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_automation_verdict.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_beacon.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_branch_base_check.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_budget.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bughunt_361_automation_failopen.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bughunt_361_never_raise.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bundle.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_bundle_robustness.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_canonical.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_checkpoint.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_checkpoint_external_vectors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_checkpoint_quorum_property.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_claims_hygiene.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cli.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cli_eval.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cli_require_anchor.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_conformance.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_conformance_retention_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_content_root_property.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cosignature.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cosignature_mldsa.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_cross_format_singleton_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_anchors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_cli.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_evidence.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_fuzz.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_hardening.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_policy.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_schema.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_validator_api.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_decision_verify.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_demo.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_docs_truth.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_dsse_adversarial.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_dup_key_reject.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ed25519_semantics.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_eee.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_emit.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_emitter_parser_rundlauf.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_enclave_assurance.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_erwartungsvergleich_population_guard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_eval_claim_schema.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_eval_evidence_class.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_evalcard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_evalclaim.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_evidence_pack.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_examples.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_experimental_enclave.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_findings_register_identity_axis.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_findings_register_rt10.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_fork_pr_secret_isolation.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_fuzz_parsers.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_fuzz_soak_regression.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_gate_population_and_nested_leaf.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_gate_qualification_harness.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_hashalg.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_hf_entry_verify_eee_digest.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_hf_evals.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_inspect_hook.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_int_magnitude_budget_family.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_claims_hygiene.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_content_root_migration.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_dsse.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_eval_result.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_examples.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_spec_diff.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_intoto_svr.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_iter9_deepgate_round4.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_iter9_product_fixes.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_jcs_mandatory_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_kappe_vor_arbeit.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_kbjwt.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_legacy_assurance_deprecation_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_lens_review_fixes_3_1_3.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_load_signer_fd_hazard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_manifest_lock.json +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_membership_hashable_guard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_merkle.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_merkle_consistency_property.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_merkle_property.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_mldsa_acvp_vectors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_mutant_signature_guard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_mutation_isolation.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_population_guard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_primary_arg_property.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_never_raise_recursion_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_official_vectors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ok_semantics.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_origin_quorum_rule.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ots_calendar_hardening.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_ots_external_vectors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_outcome_receiver_corroboration.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_outcome_verify.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_oversized_int_guard.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_path_argument_type_floor.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_persample.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pinned_key_validation.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_explain_lint.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_lifecycle_purpose.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_profiles.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_policy_templates.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pqsig.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_attestation.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_gate_eigenschaften.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_receipt_commit_flow.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pre_tag_receipt_gate.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_predicate_type_enforcement.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_prereg.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_promptfoo.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_provenance.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_public_transparency.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_pytest_plugin.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_rekor_interop.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_gate_distance_invariance.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_profile.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_property.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_same_key_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_signer_target_340.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_statement.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_statement_rust_parity.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_relation_subject_pin_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_release_integrity_gate.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_render_safe_untrusted_int.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_external_token_glue.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_field_magnitude_never_raise.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_policy.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_renewal_signed.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_reported_version_status.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_reproducible_build_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_rfc6962_external_vectors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_root_authenticity.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_run_ledger.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_rust_parity_gate.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_schema.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_schema_parity.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdist_packaging_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdist_selftest_optional_deps.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_adversarial.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_duplicate_cnf.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_issue.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_reference.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_resource_budget.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_vc.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwt_verify_binding.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sdjwtvc_external_vectors.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_sibling_never_raise_361.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_signature.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_statuslist.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_structural_budget_reachability.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_subject_binding.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_tlogproof.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_tree_context_authenticity.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack_crypto_agility.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack_outcome_receivers_role.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_pack_payloadtype_negatives.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_trust_policy.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_type_confusion_wireform.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_verification_summary.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_verify_matrix.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_verify_proof_expected_origin.py +0 -0
- {proofbundle-5.0.0 → proofbundle-5.1.0}/tests/test_wire_bytes_strict.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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
|
+
}
|