proofbundle 3.7.0__tar.gz → 3.8.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-3.7.0/src/proofbundle.egg-info → proofbundle-3.8.0}/PKG-INFO +47 -6
- {proofbundle-3.7.0 → proofbundle-3.8.0}/README.md +44 -3
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/MANIFEST.sha256 +4 -4
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/PROGRESS.md +2 -2
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/README.md +3 -3
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/differential_matrix.md +3 -1
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/proofbundle/readiness_pack.bundle.json +4 -4
- proofbundle-3.8.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +1 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/rust_parity_scope.md +1 -1
- {proofbundle-3.7.0 → proofbundle-3.8.0}/pyproject.toml +82 -2
- proofbundle-3.8.0/scripts/check_version_and_changelog.py +381 -0
- proofbundle-3.8.0/scripts/finding_base_drift.py +145 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/findings_register.py +66 -14
- proofbundle-3.8.0/scripts/git-hooks/pre-commit +9 -0
- proofbundle-3.8.0/scripts/install_git_hooks.sh +17 -0
- proofbundle-3.8.0/scripts/mutant_signature_guard.py +306 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/mutation_check.py +145 -19
- proofbundle-3.8.0/scripts/pre_tag_attestation.py +184 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/pre_tag_audit_gate.py +106 -11
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/type_confusion_gate.py +41 -2
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/__init__.py +1 -1
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/anchors.py +16 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/anchors_chia.py +18 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/anchors_rfc3161.py +34 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/checkpoint.py +75 -6
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/cli.py +162 -8
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/dsse.py +26 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/emit.py +12 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/evalcard.py +14 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/evidence_pack.py +23 -1
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/persample.py +18 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/prereg.py +14 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/relation.py +67 -2
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/tlogproof.py +9 -1
- {proofbundle-3.7.0 → proofbundle-3.8.0/src/proofbundle.egg-info}/PKG-INFO +47 -6
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle.egg-info/SOURCES.txt +32 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle.egg-info/requires.txt +2 -2
- proofbundle-3.8.0/tests/_beinahe_treffer.py +105 -0
- proofbundle-3.8.0/tests/conftest.py +206 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS.json +36 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/ERGEBNIS_negativ.json +36 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/MANIFEST.json +116 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/README.md +114 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/SOURCES.md +36 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/keys_unabhaengig.txt +16 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/leaf_7271.raw +1 -0
- proofbundle-3.8.0/tests/fixtures/anchors/markovian_log/proof_7271/proof_7271.tlog-proof +29 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_adversarial.py +30 -0
- proofbundle-3.8.0/tests/test_anchors_markovian_log.py +427 -0
- proofbundle-3.8.0/tests/test_anchors_rfc3161_type_floor.py +124 -0
- proofbundle-3.8.0/tests/test_audit_index_zahlen_stimmen.py +298 -0
- proofbundle-3.8.0/tests/test_audit_marker_line_wrap.py +164 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_bughunt_361_never_raise.py +6 -2
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_cosignature.py +51 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_cosignature_mldsa.py +9 -2
- proofbundle-3.8.0/tests/test_erwartungsvergleich_population_guard.py +215 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_experimental_enclave.py +19 -0
- proofbundle-3.8.0/tests/test_findings_register_identity_axis.py +148 -0
- proofbundle-3.8.0/tests/test_intoto_spec_diff.py +101 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_kbjwt.py +22 -0
- proofbundle-3.8.0/tests/test_load_signer_fd_hazard.py +91 -0
- proofbundle-3.8.0/tests/test_mutant_signature_guard.py +130 -0
- proofbundle-3.8.0/tests/test_mutation_isolation.py +112 -0
- proofbundle-3.8.0/tests/test_never_raise_population_guard.py +151 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_never_raise_surface_family_property.py +43 -1
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_outcome_verify.py +16 -0
- proofbundle-3.8.0/tests/test_path_argument_type_floor.py +131 -0
- proofbundle-3.8.0/tests/test_pre_tag_attestation.py +181 -0
- proofbundle-3.8.0/tests/test_pre_tag_audit_provenance.py +181 -0
- proofbundle-3.8.0/tests/test_pre_tag_gate_eigenschaften.py +128 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_predicate_type_enforcement.py +17 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_public_transparency.py +14 -0
- proofbundle-3.8.0/tests/test_relation_gate_distance_invariance.py +187 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_relation_property.py +30 -5
- proofbundle-3.8.0/tests/test_release_integrity_gate.py +385 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_roadmap_frontload_foundations.py +23 -4
- proofbundle-3.8.0/tests/test_sdist_selftest_derivation.py +195 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_statuslist.py +14 -0
- proofbundle-3.8.0/tests/test_structural_budget_reachability.py +235 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_tree_context_authenticity.py +129 -3
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_trust_policy.py +42 -0
- proofbundle-3.8.0/tests/test_verify_proof_expected_origin.py +996 -0
- proofbundle-3.7.0/docs/readiness_pack/proofbundle/readiness_pack.pub.b64 +0 -1
- proofbundle-3.7.0/scripts/check_version_and_changelog.py +0 -121
- proofbundle-3.7.0/tests/conftest.py +0 -96
- proofbundle-3.7.0/tests/test_intoto_spec_diff.py +0 -38
- proofbundle-3.7.0/tests/test_release_integrity_gate.py +0 -88
- {proofbundle-3.7.0 → proofbundle-3.8.0}/LICENSE +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/MANIFEST.in +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/README.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/coherent-rewrap-fails-expected-root/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/coherent-rewrap-fails-expected-root/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/coherent-rewrap-verifies-no-policy/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/corrupted-signature/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/corrupted-signature/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/duplicate-json-key/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/duplicate-json-key/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/forged-anchor-own-frozen/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/forged-anchor-own-frozen/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/n1-eval-sdjwt-graft-non-eval/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/sd-jwt-forged-issuer-identity/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/sd-jwt-forged-issuer-identity/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/sd-jwt-signed-but-unbound/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/sd-jwt-signed-but-unbound/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/sd-jwt-unsigned-unauthenticated/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/tampered-payload/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/tampered-payload/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/tree-size-expectation-mismatch/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/tree-size-expectation-mismatch/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/valid-minimal/bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/bundle/valid-minimal/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/common_vocabulary.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/cross_format.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/canonicalization-root-binding/MANIFEST.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/canonicalization-root-binding/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.jcs.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/canonicalization-root-binding/decision_receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.jcs +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/canonicalization-root-binding/evidence_eval_result.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/MANIFEST.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.jcs.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/decision_receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.jcs +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/confirmed-anchor-lifecycle/evidence_eval_result.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/schema-conformant/MANIFEST.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/schema-conformant/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.jcs.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/schema-conformant/decision_receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.jcs +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/decision/crossimpl/schema-conformant/evidence_eval_result.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/manifest.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/declared-supersedes-verified/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/declared-supersedes-verified/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/declared-supersedes-verified/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/declared-supersedes-verified/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/declared-unresolved/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/declared-unresolved/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/declared-unresolved/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-accept-path/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-accept-path/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-accept-path/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-accept-path/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-accept-path/related_rx.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-correct-pass/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-correct-pass/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-correct-pass/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-correct-pass/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-correct-pass/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-correct-pass/related_rx.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-no-pin-old-behavior/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-no-pin-old-behavior/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-no-pin-old-behavior/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-no-pin-old-behavior/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-no-pin-old-behavior/related_rx.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-target-mismatch/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-target-mismatch/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-target-mismatch/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-target-mismatch/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-target-mismatch/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/decoy-parent-target-mismatch/related_rx.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_001.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_002.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_003.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_004.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_005.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_006.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_007.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_008.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_009.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_010.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_011.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_012.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_013.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_014.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_015.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_016.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_017.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_018.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_019.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_020.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_021.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_022.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_023.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_024.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_025.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_026.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_027.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_028.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_029.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_030.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_031.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_032.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/depth-exceeded/related_033.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/digest-mismatch/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/digest-mismatch/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/digest-mismatch/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/digest-mismatch/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/digest-mismatch/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/generate_vectors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/malformed-digest/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/malformed-digest/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/malformed-digest/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-declared-supersedes-verified/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-declared-supersedes-verified/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-declared-supersedes-verified/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-declared-supersedes-verified/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-decoy-parent-target-mismatch/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-decoy-parent-target-mismatch/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-decoy-parent-target-mismatch/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-decoy-parent-target-mismatch/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-decoy-parent-target-mismatch/related_rx.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-digest-mismatch/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-digest-mismatch/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-digest-mismatch/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-digest-mismatch/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-digest-mismatch/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-relation-signer-unauthorized/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-relation-signer-unauthorized/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-relation-signer-unauthorized/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-relation-signer-unauthorized/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-relation-signer-unauthorized/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-renews/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-renews/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-renews/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-renews/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-silent-landing/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-silent-landing/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-silent-landing/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-valid-baseline/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-valid-baseline/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/outcome-valid-baseline/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-amends/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-amends/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-amends/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-amends/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-corrects/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-corrects/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-corrects/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-corrects/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-derivedfrom/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-derivedfrom/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-derivedfrom/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-derivedfrom/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-retracts/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-retracts/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-retracts/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-retracts/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-revises/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-revises/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-revises/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-revises/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-unauthorized/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-verified/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-verified/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-verified/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-verified/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-cross-issuer-verified/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-same-key-explicit/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-same-key-explicit/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-same-key-explicit/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-same-key-explicit/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-same-key-explicit/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-verified-under-not-claim/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-verified-under-not-claim/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-verified-under-not-claim/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-verified-under-not-claim/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/relation-signer-verified-under-not-claim/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/renews-vector/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/renews-vector/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/renews-vector/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/renews-vector/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/retracts-then-use/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/retracts-then-use/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/retracts-then-use/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/retracts-then-use/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/retracts-then-use/related_r.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/silent-landing/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/silent-landing/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/silent-landing/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-malformed/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-malformed/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-malformed/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-declared-unresolved/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-declared-unresolved/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-declared-unresolved/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-unauthorized/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-unauthorized/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-unauthorized/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-unauthorized/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-unauthorized/related_t.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-blocked/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-blocked/policy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-blocked/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-blocked/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-blocked/related_t.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-visible/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-visible/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-visible/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-retracts-verified-visible/related_t.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-supersedes-verified/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-supersedes-verified/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-supersedes-verified/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/statement-supersedes-verified/related_t.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/t1-canonical-invalid-signature/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/t1-canonical-invalid-signature/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/t1-canonical-invalid-signature/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-ambiguous/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-ambiguous/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-ambiguous/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-ambiguous/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-correct-pass/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-correct-pass/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-correct-pass/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-correct-pass/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-mismatch/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-mismatch/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-mismatch/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-mismatch/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-missing/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-missing/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-missing/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/target-subject-missing/related_r0.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/unauthorized-signer/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/unauthorized-signer/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/unauthorized-signer/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/unauthorized-signer/related_b.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/valid-baseline/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/valid-baseline/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/valid-baseline/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/wrong-payloadtype-target/case.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/wrong-payloadtype-target/pub.b64 +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/wrong-payloadtype-target/receipt.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/relation/wrong-payloadtype-target/related_t.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/run_conformance.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/conformance/vector_schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/adr/renewal_policy.example.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/AUDITOR_OPEN_POINTS.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/OPEN_QUESTIONS.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/REPRODUCTION_RUNBOOK.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/calendar_independence.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/index.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/tamper_resistance.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/threat_model_delta_360.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/README.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/anchors/chia-datalayer-invalid-root.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/anchors/chia-datalayer-valid.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/checkpoint_example.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/decision_receipt_allow.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/decision_receipt_deny.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/decision_receipt_escalate.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/decision_receipt_with_eval_ref.intoto.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/eee_receipt.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/example.tlog-proof +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/example_bundle.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/experimental_enclave.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/inspect_hook_example.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/inspect_receipt.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/intoto/private-model-commitment.statement.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/intoto/public-model.statement.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/intoto/release-gate.statement.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/intoto/svr.statement.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/intoto_dsse_export.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/lm_eval_receipt.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/make_example.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/persample_audit.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/pytest_plugin_example.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/rekor_interop.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/tlog_proof_example.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/trust_policy_decision_strict.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/examples/trust_policy_strict.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/formal/README.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/formal/model.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/action-outcome-v0.1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/decision-receipt-v0.1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/eval_claim_v0_1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/in_toto_statement_v1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/proofbundle_v0_1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/run-ledger-v0.1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/trust-pack-v0.1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/trust_policy_v0_1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/schemas/verification-summary-v0.1.schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/_build_anchor_fixture.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/audit_candidate_matrix.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/branch_base_check.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/build_reproducible.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/claims_hygiene_check.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/demo.sh +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/demo_tamper.sh +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/doc_link_check.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/fork_pr_secret_isolation.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/fuzz_soak.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/gen_findings_register.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/gen_synthetic_ots_fixture.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/readiness_pack_gate.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/readiness_pack_manifest.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/render_demo.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/rust_parity_gate.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/rust_parity_registry.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/scripts/test_manifest_gate.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/setup.cfg +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/_inspect_registry.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/_integration.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/_strict_json.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/adapters/__init__.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/adapters/_provenance.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/adapters/eee.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/adapters/inspect_ai.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/adapters/lm_eval.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/adapters/promptfoo.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/adapters/samples.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/anchors_chia_add.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/anchors_markovian.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/anchors_ots.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/anchors_rootcommit.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/assurance.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/automation_verdict.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/beacon.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/budget.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/bundle.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/canonical.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/decision.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/demo.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/eee_eval_schema.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/errors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/evalclaim.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/experimental/__init__.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/experimental/enclave.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/hashalg.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/hf_evals.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/inspect_hook.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/intoto.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/kbjwt.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/merkle.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/outcome.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/policies/decision-receipt-template-v1.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/policies/research-preview-v1.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/policies/strict-eval-authenticated-root-template-v1.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/policies/strict-eval-template-v1.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/policies/strict-prereg-template-v1.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/policy.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/policy_profiles.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/pqsig.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/public_transparency.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/py.typed +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/pytest_plugin.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/relation_statement.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/renewal.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/run_ledger.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/sdjwt.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/sdjwt_issue.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/sdjwt_vc.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/signature.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/statuslist.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/subject_binding.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/trust_pack.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle/verification_summary.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle.egg-info/dependency_links.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle.egg-info/entry_points.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/src/proofbundle.egg-info/top_level.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/chia_datalayer_proof.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/freetsa_receipt_anchor.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/MANIFEST.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/README.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/MANIFEST.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/README.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/manifest.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-01-valid.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-02-tampered-root.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-03-tampered-wallet.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors/rootcommit-04-tampered-proof.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/manifest.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-01-valid.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-02-tampered-root.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-03-tampered-wallet.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-04-tampered-sig.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/rootcommit/vectors_sig/v2sig-05-tampered-proof.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/01-valid.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/02-unknown-id.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/03-tampered-body.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/04-tampered-proof.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/anchors/tlog_bitcoin_anchor/vectors/manifest.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/checkpoint/PROVENANCE.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/checkpoint/gosumdb_known_keys.go +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/checkpoint/rekor_v2_checkpoint.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/checkpoint/sumdb_latest.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/checkpoint/trusted_root.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ed25519_speccheck_cases.LICENSE +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ed25519_speccheck_cases.README.md +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ed25519_speccheck_cases.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/eee_arc_easy.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/inspect_logs/safety_refusal_demo.eval +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/lm_eval_arc_easy_real.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/markovian_anchor_confirmed.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/mldsa_acvp/PROVENANCE.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/mldsa_acvp/mldsa_sigver_slice.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/PROVENANCE.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/block358391.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/hello-world.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/hello-world.txt.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/incomplete.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/incomplete.txt.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/known-and-unknown-notary.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/known-and-unknown-notary.txt.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/merkle2.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/merkle2.txt.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/synthetic-upgraded-sha256.block.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/synthetic-upgraded-sha256.txt.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/two-calendars.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/ots/two-calendars.txt.ots +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/promptfoo_results_v3.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/rekor_inclusion_25579.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/rfc6962_vectors.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/sdjwt_disclosure_vector.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/sdjwt_reference_eddsa.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/sdjwtvc/PROVENANCE.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/sdjwtvc/sdjwtvc_examples.txt +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/fixtures/sdjwtvc/sdjwtvc_issuer_pubkey.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_adapters.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchor_hardening_321.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchor_longevity_property.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchor_target_trustedtime.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_chia.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_chia_add.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_chia_claims.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_generic.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_markovian.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_ots.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_rfc3161.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_anchors_rootcommit.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_assurance.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_audit_candidate_360.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_automation_verdict.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_beacon.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_branch_base_check.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_budget.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_bughunt_361_automation_failopen.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_bundle.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_bundle_robustness.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_canonical.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_checkpoint.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_checkpoint_external_vectors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_checkpoint_quorum_property.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_claims_hygiene.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_cli.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_cli_eval.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_cli_require_anchor.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_conformance.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_conformance_retention_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_content_root_property.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_cross_format_singleton_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_anchors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_cli.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_evidence.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_fuzz.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_hardening.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_policy.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_schema.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_validator_api.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_decision_verify.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_demo.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_docs_truth.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_dsse_adversarial.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_dup_key_reject.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_ed25519_semantics.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_eee.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_emit.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_enclave_assurance.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_eval_claim_schema.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_eval_evidence_class.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_evalcard.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_evalclaim.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_evidence_pack.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_examples.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_findings_register_rt10.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_fork_pr_secret_isolation.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_fuzz_parsers.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_fuzz_soak_regression.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_hashalg.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_hf_entry_verify_eee_digest.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_hf_evals.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_inspect_hook.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_intoto.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_intoto_claims_hygiene.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_intoto_content_root_migration.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_intoto_dsse.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_intoto_eval_result.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_intoto_examples.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_intoto_svr.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_jcs_mandatory_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_legacy_assurance_deprecation_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_lens_review_fixes_3_1_3.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_manifest_lock.json +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_merkle.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_merkle_consistency_property.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_merkle_property.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_mldsa_acvp_vectors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_never_raise_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_never_raise_primary_arg_property.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_never_raise_recursion_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_official_vectors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_ok_semantics.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_ots_calendar_hardening.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_ots_external_vectors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_outcome_receiver_corroboration.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_oversized_int_guard.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_persample.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_pinned_key_validation.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_policy_explain_lint.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_policy_lifecycle_purpose.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_policy_profiles.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_policy_templates.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_pqsig.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_prereg.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_promptfoo.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_provenance.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_pytest_plugin.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_rekor_interop.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_relation_profile.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_relation_same_key_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_relation_signer_target_340.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_relation_statement.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_relation_statement_rust_parity.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_relation_subject_pin_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_renewal.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_renewal_external_token_glue.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_renewal_policy.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_renewal_signed.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_reproducible_build_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_rfc6962_external_vectors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_root_authenticity.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_run_ledger.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_rust_parity_gate.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_schema.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_schema_parity.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdist_packaging_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwt_adversarial.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwt_duplicate_cnf.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwt_issue.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwt_reference.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwt_resource_budget.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwt_vc.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwt_verify_binding.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sdjwtvc_external_vectors.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_sibling_never_raise_361.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_signature.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_subject_binding.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_tlogproof.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_trust_pack.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_trust_pack_crypto_agility.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_trust_pack_outcome_receivers_role.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_trust_pack_payloadtype_negatives.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_verification_summary.py +0 -0
- {proofbundle-3.7.0 → proofbundle-3.8.0}/tests/test_verify_matrix.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: proofbundle
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.8.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
|
|
@@ -54,9 +54,9 @@ Provides-Extra: inspect
|
|
|
54
54
|
Requires-Dist: inspect_ai<0.4,>=0.3.112; extra == "inspect"
|
|
55
55
|
Provides-Extra: dev
|
|
56
56
|
Requires-Dist: pytest>=7; extra == "dev"
|
|
57
|
-
Requires-Dist: ruff
|
|
57
|
+
Requires-Dist: ruff<0.17,>=0.5; extra == "dev"
|
|
58
58
|
Requires-Dist: jsonschema>=4; extra == "dev"
|
|
59
|
-
Requires-Dist: mypy
|
|
59
|
+
Requires-Dist: mypy<3,>=1.8; extra == "dev"
|
|
60
60
|
Requires-Dist: build>=1; extra == "dev"
|
|
61
61
|
Requires-Dist: hypothesis>=6; extra == "dev"
|
|
62
62
|
Requires-Dist: rfc8785>=0.1.4; extra == "dev"
|
|
@@ -86,11 +86,48 @@ Merkle, one file, no server, no network.
|
|
|
86
86
|
[](https://pypi.org/project/proofbundle/)
|
|
87
87
|
[](https://github.com/b7n0de/proofbundle/blob/main/LICENSE)
|
|
88
88
|
[](https://doi.org/10.5281/zenodo.21110642)
|
|
89
|
+
[](https://scorecard.dev/viewer/?uri=github.com/b7n0de/proofbundle)
|
|
90
|
+
|
|
91
|
+
Scorecard **6.5/10** — [what the four zeros mean, in one sentence each](#what-the-scorecard-badge-says-including-the-parts-that-are-low)
|
|
89
92
|
|
|
90
93
|
**Reviewing this for adoption?** Start with the 30-minute adversarial audit path: **[docs/REVIEWERS.md](https://github.com/b7n0de/proofbundle/blob/main/docs/REVIEWERS.md)**.
|
|
91
94
|
|
|
92
95
|
</div>
|
|
93
96
|
|
|
97
|
+
## What the Scorecard badge says, including the parts that are low
|
|
98
|
+
|
|
99
|
+
The badge is live, so it will move. Measured 2026-08-07, re-measured 2026-08-10 with identical
|
|
100
|
+
per-check values (Scorecard v5.5.0 both times): **6.5 / 10**. Ten checks
|
|
101
|
+
score 10/10 — Security-Policy, Token-Permissions, SAST, Fuzzing, CI-Tests, Vulnerabilities,
|
|
102
|
+
Dangerous-Workflow, Dependency-Update-Tool, Packaging, License. Four score 0, and rather than let you
|
|
103
|
+
wonder, here is each cause in one sentence:
|
|
104
|
+
|
|
105
|
+
- **Maintained (0/10)** — the check wants sustained activity on the default branch over 90 days, and
|
|
106
|
+
this repository is younger than that window. It resolves itself with time and is not worth chasing.
|
|
107
|
+
- **CII-Best-Practices (0/10)** — the OpenSSF Best Practices badge has not been applied for. The
|
|
108
|
+
criteria were walked through honestly first:
|
|
109
|
+
[docs/openssf_best_practices_self_assessment.md](https://github.com/b7n0de/proofbundle/blob/main/docs/openssf_best_practices_self_assessment.md).
|
|
110
|
+
- **Contributors (0/10)** — it counts contributors from two or more organisations. This is a
|
|
111
|
+
one-person project, and the zero is an accurate description of that.
|
|
112
|
+
- **Signed-Releases (0/10)** — the check reads GitHub **release assets** looking for a signature file.
|
|
113
|
+
Every version release (`v*`) is attested (SLSA build provenance over the exact built bytes, PyPI
|
|
114
|
+
upload gated on a sha256 match), but that attestation lives in GitHub's attestation store and on
|
|
115
|
+
PyPI — not next to the release, which is where the check looks. The release workflow now also
|
|
116
|
+
places the provenance bundle next to the release assets; that takes effect with the next release,
|
|
117
|
+
and already-published releases were not modified after the fact. Nothing is re-signed — an
|
|
118
|
+
existing file is placed in a second location. Of the five releases the check reads, three are
|
|
119
|
+
corpus-review pre-releases that carry no such assets either, so the number will climb only as new
|
|
120
|
+
releases move through that window.
|
|
121
|
+
|
|
122
|
+
Three further checks sit in between: **Code-Review 1/10** (most commits are not reviewed by a second
|
|
123
|
+
person — structural for a single maintainer), **Binary-Artifacts 9/10** (the deducted point is a
|
|
124
|
+
checked-in wheel+sdist pair kept as a reproduction fixture in `dist_final/`, and one point is not
|
|
125
|
+
worth rebuilding that fixture), and **Pinned-Dependencies 3/10** / **Branch-Protection 3/10**, both
|
|
126
|
+
measured and not yet addressed.
|
|
127
|
+
|
|
128
|
+
Publishing a middling number with its causes is the point. A project that sells evidence cannot
|
|
129
|
+
withhold its own.
|
|
130
|
+
|
|
94
131
|
## 60-second try (offline)
|
|
95
132
|
|
|
96
133
|
```bash
|
|
@@ -117,8 +154,10 @@ Every AI eval number you read — a safety benchmark, a capability score, a lead
|
|
|
117
154
|
**unverifiable claim**. You trust the lab. There is no portable way to check, offline, that a result
|
|
118
155
|
was signed by a stated party, has not been altered, and covers the samples it claims.
|
|
119
156
|
|
|
120
|
-
proofbundle is that check: a small MIT-licensed Python tool (a compact, auditable trusted
|
|
121
|
-
depends only on [`cryptography`](https://cryptography.io)
|
|
157
|
+
proofbundle is that check: a small MIT-licensed Python tool (a compact, auditable trusted verify
|
|
158
|
+
core that depends only on [`cryptography`](https://cryptography.io); the package installs one more
|
|
159
|
+
hard dependency, the RFC 8785 canonicalizer [`rfc8785`](https://pypi.org/project/rfc8785/), used on
|
|
160
|
+
the emit and canonicalization paths) that turns a result into a signed receipt
|
|
122
161
|
anyone can verify from a single file. In plain terms it is the cash-register receipt of an AI test
|
|
123
162
|
result: it shows who claimed the number and that nobody quietly changed it, not that the test was
|
|
124
163
|
good. Without a receipt there is nothing to check at all.
|
|
@@ -200,7 +239,7 @@ version history (see also [CHANGELOG.md](https://github.com/b7n0de/proofbundle/b
|
|
|
200
239
|
## Install
|
|
201
240
|
|
|
202
241
|
```bash
|
|
203
|
-
pip install proofbundle # core: offline verify + plain emit (
|
|
242
|
+
pip install proofbundle # core: offline verify + plain emit (two deps: cryptography, rfc8785)
|
|
204
243
|
pip install "proofbundle[eval]" # + eval receipts, prereg, and the demo (RFC 8785 JCS canonicalizer)
|
|
205
244
|
pip install "proofbundle[inspect]" # inspect_ai adapter + hook
|
|
206
245
|
pip install "proofbundle[pq]" # verify ML-DSA-44 (post-quantum) witness cosignatures
|
|
@@ -238,6 +277,8 @@ DOI [10.5281/zenodo.21110642](https://doi.org/10.5281/zenodo.21110642); the Tech
|
|
|
238
277
|
| The demos, tier by tier | [docs/DEMO.md](https://github.com/b7n0de/proofbundle/blob/main/docs/DEMO.md) |
|
|
239
278
|
| The normative format + verification order | [SPEC.md](https://github.com/b7n0de/proofbundle/blob/main/SPEC.md) |
|
|
240
279
|
| Honest comparison to Rekor / in-toto / OMS / ValiChord | [INTEROP.md](https://github.com/b7n0de/proofbundle/blob/main/INTEROP.md) |
|
|
280
|
+
| What the conformance corpus does and does not establish | [CONFORMANCE.md](https://github.com/b7n0de/proofbundle/blob/main/CONFORMANCE.md) |
|
|
281
|
+
| The commercial boundary of the project | [docs/COMMERCIAL_BOUNDARY.md](https://github.com/b7n0de/proofbundle/blob/main/docs/COMMERCIAL_BOUNDARY.md) |
|
|
241
282
|
| Regulatory mapping (and what to never claim) | [COMPLIANCE.md](https://github.com/b7n0de/proofbundle/blob/main/COMPLIANCE.md) |
|
|
242
283
|
| Funders / role fit | [docs/PROJECT_BRIEF.md](https://github.com/b7n0de/proofbundle/blob/main/docs/PROJECT_BRIEF.md) |
|
|
243
284
|
| **Preview:** TEE-attestation bridge (RATS/EAT, `[experimental]`) | [docs/EXPERIMENTAL_ENCLAVE.md](https://github.com/b7n0de/proofbundle/blob/main/docs/EXPERIMENTAL_ENCLAVE.md) |
|
|
@@ -19,11 +19,48 @@ Merkle, one file, no server, no network.
|
|
|
19
19
|
[](https://pypi.org/project/proofbundle/)
|
|
20
20
|
[](https://github.com/b7n0de/proofbundle/blob/main/LICENSE)
|
|
21
21
|
[](https://doi.org/10.5281/zenodo.21110642)
|
|
22
|
+
[](https://scorecard.dev/viewer/?uri=github.com/b7n0de/proofbundle)
|
|
23
|
+
|
|
24
|
+
Scorecard **6.5/10** — [what the four zeros mean, in one sentence each](#what-the-scorecard-badge-says-including-the-parts-that-are-low)
|
|
22
25
|
|
|
23
26
|
**Reviewing this for adoption?** Start with the 30-minute adversarial audit path: **[docs/REVIEWERS.md](https://github.com/b7n0de/proofbundle/blob/main/docs/REVIEWERS.md)**.
|
|
24
27
|
|
|
25
28
|
</div>
|
|
26
29
|
|
|
30
|
+
## What the Scorecard badge says, including the parts that are low
|
|
31
|
+
|
|
32
|
+
The badge is live, so it will move. Measured 2026-08-07, re-measured 2026-08-10 with identical
|
|
33
|
+
per-check values (Scorecard v5.5.0 both times): **6.5 / 10**. Ten checks
|
|
34
|
+
score 10/10 — Security-Policy, Token-Permissions, SAST, Fuzzing, CI-Tests, Vulnerabilities,
|
|
35
|
+
Dangerous-Workflow, Dependency-Update-Tool, Packaging, License. Four score 0, and rather than let you
|
|
36
|
+
wonder, here is each cause in one sentence:
|
|
37
|
+
|
|
38
|
+
- **Maintained (0/10)** — the check wants sustained activity on the default branch over 90 days, and
|
|
39
|
+
this repository is younger than that window. It resolves itself with time and is not worth chasing.
|
|
40
|
+
- **CII-Best-Practices (0/10)** — the OpenSSF Best Practices badge has not been applied for. The
|
|
41
|
+
criteria were walked through honestly first:
|
|
42
|
+
[docs/openssf_best_practices_self_assessment.md](https://github.com/b7n0de/proofbundle/blob/main/docs/openssf_best_practices_self_assessment.md).
|
|
43
|
+
- **Contributors (0/10)** — it counts contributors from two or more organisations. This is a
|
|
44
|
+
one-person project, and the zero is an accurate description of that.
|
|
45
|
+
- **Signed-Releases (0/10)** — the check reads GitHub **release assets** looking for a signature file.
|
|
46
|
+
Every version release (`v*`) is attested (SLSA build provenance over the exact built bytes, PyPI
|
|
47
|
+
upload gated on a sha256 match), but that attestation lives in GitHub's attestation store and on
|
|
48
|
+
PyPI — not next to the release, which is where the check looks. The release workflow now also
|
|
49
|
+
places the provenance bundle next to the release assets; that takes effect with the next release,
|
|
50
|
+
and already-published releases were not modified after the fact. Nothing is re-signed — an
|
|
51
|
+
existing file is placed in a second location. Of the five releases the check reads, three are
|
|
52
|
+
corpus-review pre-releases that carry no such assets either, so the number will climb only as new
|
|
53
|
+
releases move through that window.
|
|
54
|
+
|
|
55
|
+
Three further checks sit in between: **Code-Review 1/10** (most commits are not reviewed by a second
|
|
56
|
+
person — structural for a single maintainer), **Binary-Artifacts 9/10** (the deducted point is a
|
|
57
|
+
checked-in wheel+sdist pair kept as a reproduction fixture in `dist_final/`, and one point is not
|
|
58
|
+
worth rebuilding that fixture), and **Pinned-Dependencies 3/10** / **Branch-Protection 3/10**, both
|
|
59
|
+
measured and not yet addressed.
|
|
60
|
+
|
|
61
|
+
Publishing a middling number with its causes is the point. A project that sells evidence cannot
|
|
62
|
+
withhold its own.
|
|
63
|
+
|
|
27
64
|
## 60-second try (offline)
|
|
28
65
|
|
|
29
66
|
```bash
|
|
@@ -50,8 +87,10 @@ Every AI eval number you read — a safety benchmark, a capability score, a lead
|
|
|
50
87
|
**unverifiable claim**. You trust the lab. There is no portable way to check, offline, that a result
|
|
51
88
|
was signed by a stated party, has not been altered, and covers the samples it claims.
|
|
52
89
|
|
|
53
|
-
proofbundle is that check: a small MIT-licensed Python tool (a compact, auditable trusted
|
|
54
|
-
depends only on [`cryptography`](https://cryptography.io)
|
|
90
|
+
proofbundle is that check: a small MIT-licensed Python tool (a compact, auditable trusted verify
|
|
91
|
+
core that depends only on [`cryptography`](https://cryptography.io); the package installs one more
|
|
92
|
+
hard dependency, the RFC 8785 canonicalizer [`rfc8785`](https://pypi.org/project/rfc8785/), used on
|
|
93
|
+
the emit and canonicalization paths) that turns a result into a signed receipt
|
|
55
94
|
anyone can verify from a single file. In plain terms it is the cash-register receipt of an AI test
|
|
56
95
|
result: it shows who claimed the number and that nobody quietly changed it, not that the test was
|
|
57
96
|
good. Without a receipt there is nothing to check at all.
|
|
@@ -133,7 +172,7 @@ version history (see also [CHANGELOG.md](https://github.com/b7n0de/proofbundle/b
|
|
|
133
172
|
## Install
|
|
134
173
|
|
|
135
174
|
```bash
|
|
136
|
-
pip install proofbundle # core: offline verify + plain emit (
|
|
175
|
+
pip install proofbundle # core: offline verify + plain emit (two deps: cryptography, rfc8785)
|
|
137
176
|
pip install "proofbundle[eval]" # + eval receipts, prereg, and the demo (RFC 8785 JCS canonicalizer)
|
|
138
177
|
pip install "proofbundle[inspect]" # inspect_ai adapter + hook
|
|
139
178
|
pip install "proofbundle[pq]" # verify ML-DSA-44 (post-quantum) witness cosignatures
|
|
@@ -171,6 +210,8 @@ DOI [10.5281/zenodo.21110642](https://doi.org/10.5281/zenodo.21110642); the Tech
|
|
|
171
210
|
| The demos, tier by tier | [docs/DEMO.md](https://github.com/b7n0de/proofbundle/blob/main/docs/DEMO.md) |
|
|
172
211
|
| The normative format + verification order | [SPEC.md](https://github.com/b7n0de/proofbundle/blob/main/SPEC.md) |
|
|
173
212
|
| Honest comparison to Rekor / in-toto / OMS / ValiChord | [INTEROP.md](https://github.com/b7n0de/proofbundle/blob/main/INTEROP.md) |
|
|
213
|
+
| What the conformance corpus does and does not establish | [CONFORMANCE.md](https://github.com/b7n0de/proofbundle/blob/main/CONFORMANCE.md) |
|
|
214
|
+
| The commercial boundary of the project | [docs/COMMERCIAL_BOUNDARY.md](https://github.com/b7n0de/proofbundle/blob/main/docs/COMMERCIAL_BOUNDARY.md) |
|
|
174
215
|
| Regulatory mapping (and what to never claim) | [COMPLIANCE.md](https://github.com/b7n0de/proofbundle/blob/main/COMPLIANCE.md) |
|
|
175
216
|
| Funders / role fit | [docs/PROJECT_BRIEF.md](https://github.com/b7n0de/proofbundle/blob/main/docs/PROJECT_BRIEF.md) |
|
|
176
217
|
| **Preview:** TEE-attestation bridge (RATS/EAT, `[experimental]`) | [docs/EXPERIMENTAL_ENCLAVE.md](https://github.com/b7n0de/proofbundle/blob/main/docs/EXPERIMENTAL_ENCLAVE.md) |
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
e6e2f1ca00c1798975005315172248db3ee8fefb02b978cd12627c526dd5dc60 AUDITOR_OPEN_POINTS.md
|
|
2
2
|
3d66a85ff79c0258d794e7c8d8740f8a3b7a62e6ffd9bd7dada158a939964660 OPEN_QUESTIONS.md
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
f9079c57df7b037f3c4a30137c5305de42c46cb12bf1c620f6ea5ce1b7c42c82 PROGRESS.md
|
|
4
|
+
6ccab20c7daef6d71c13e0dcacba24a6a18dd480b5d41418e01b5bf2983ffc9c README.md
|
|
5
5
|
c9ceb3f92a2f720d901affa8defb47004b58a51029317208db641ce53d90b284 REPRODUCTION_RUNBOOK.md
|
|
6
6
|
1b4e4316aaea6c962664fc08945c65a048147fdc4ad89a1e694818b934ef6fa2 calendar_independence.md
|
|
7
|
-
|
|
7
|
+
9a9a9e4956076c6c287dada5de82eb66cf259cec89a6e791088e1733a74c5ea3 differential_matrix.md
|
|
8
8
|
426a22bd91c7a7529700c06570a3e55fb4c11281992d6215fc2315b12731f9cd index.json
|
|
9
|
-
|
|
9
|
+
d1d1e04e9d2de38443ec2b953c3a9c968a303e81977cb7e128468945160b56d7 rust_parity_scope.md
|
|
10
10
|
f2a77cacd7fefe39450edb1857ec2ffc25a4d4c3d8d68efa094ba84ab7325708 tamper_resistance.md
|
|
11
11
|
6d6a4065a1e7e071819960cef8e0117ada98e931cd62fd94341b45af4865711a threat_model_delta_360.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Honest progress accounting (No-Overclaim)
|
|
2
2
|
|
|
3
|
-
The denominator is the full distance from
|
|
3
|
+
The denominator is the full distance from the 3.3.0 baseline (current release: 3.8.0) to "4.0.0-stable, externally audited,
|
|
4
4
|
trustworthy". This is a factual progress statement, not a forward promise, and it is deliberately
|
|
5
5
|
placed in the readiness pack so an auditor reads our own honest number before forming theirs.
|
|
6
6
|
|
|
@@ -26,7 +26,7 @@ placed in the readiness pack so an auditor reads our own honest number before fo
|
|
|
26
26
|
## Consequence
|
|
27
27
|
|
|
28
28
|
With the five front-loaded foundations plus the pre-tag audit discipline, the audit-candidate (3.6.0)
|
|
29
|
-
|
|
29
|
+
was reached at ~85% of the total distance (3.6.0 tagged 2026-07-17) with **practically zero avoidable rework**; the remaining
|
|
30
30
|
~15% is, by definition, not anticipatable — only best-prepared, which is what this pack is.
|
|
31
31
|
|
|
32
32
|
## Where this number is enforced against drift
|
|
@@ -30,9 +30,9 @@ it does not, and cannot, close on its own.
|
|
|
30
30
|
## Release evidence slots (front-loaded)
|
|
31
31
|
|
|
32
32
|
- `3.3.1-frontload` — **filled**: the five foundations (F1–F5) + the pre-tag audit discipline (F7).
|
|
33
|
-
- `3.4.0` —
|
|
34
|
-
- `3.5.0` —
|
|
35
|
-
- `3.6.0` —
|
|
33
|
+
- `3.4.0` — **filled** (shipped under the 3.6.0 tag): relation_signer receipts, decoy-parent F1 vectors; formal obligation O5 remains reserved (see `index.json`).
|
|
34
|
+
- `3.5.0` — **filled** (shipped under the 3.6.0 tag): relation_statement Rust parity, F4 auto-coverage; formal obligation O6 remains reserved (see `index.json`).
|
|
35
|
+
- `3.6.0` — **filled**: fuzz-soak corpora, differential matrix, threat-model delta, 33-check acceptance matrix; formal obligation O7 remains reserved (see `index.json`).
|
|
36
36
|
|
|
37
37
|
A `reserved` slot is declared honestly; it is not evidence yet, and nothing here counts it as such.
|
|
38
38
|
|
|
@@ -19,7 +19,9 @@ python3 tools/pb_verify_rs/crosscheck.py --matrix audit_artifacts/360/rust_diffe
|
|
|
19
19
|
|
|
20
20
|
The artifact carries an environment freeze (cargo / rustc / python versions) so a re-run on another box
|
|
21
21
|
is comparable. On the recorded run: 40 relation vectors, Python == Rust on all, and the whole 54-case
|
|
22
|
-
conformance corpus reproduced independently by the Rust binary
|
|
22
|
+
conformance corpus of that era reproduced independently by the Rust binary (the corpus has since
|
|
23
|
+
grown to 57 cases; the named `make conformance-crossimpl` gate re-runs the cross-check on every
|
|
24
|
+
invocation, 56/56 as of v3.7.0).
|
|
23
25
|
|
|
24
26
|
## Scope of coverage
|
|
25
27
|
|
{proofbundle-3.7.0 → proofbundle-3.8.0}/docs/readiness_pack/proofbundle/readiness_pack.bundle.json
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "proofbundle/v0.1",
|
|
3
|
-
"payload_b64": "
|
|
3
|
+
"payload_b64": "ZTZlMmYxY2EwMGMxNzk4OTc1MDA1MzE1MTcyMjQ4ZGIzZWU4ZmVmYjAyYjk3OGNkMTI2MjdjNTI2ZGQ1ZGM2MCAgQVVESVRPUl9PUEVOX1BPSU5UUy5tZAozZDY2YTg1ZmY3OWMwMjU4ZDc5NGU3YzhkODc0MGY4YTNiN2E2MmU2ZmZkOWJkN2RhZGExNThhOTM5OTY0NjYwICBPUEVOX1FVRVNUSU9OUy5tZApmOTA3OWM1N2RmN2IwMzdmM2M0YTMwMTM3YzUzMDVkZTQyYzQ2Y2IxMmJmMWM2MjBmNmVhNWNlMWI3YzQyYzgyICBQUk9HUkVTUy5tZAo2Y2NhYjIwYzdkYWVmNmQ3MWMxM2UwZGNhY2JhMjRhNmExOGRkNDgwYjVkNDE0MThlMDFiNWJmMjk4M2ZmYzljICBSRUFETUUubWQKYzljZWIzZjkyYTJmNzIwZDkwMWFmZmE4ZGVmYjQ3MDA0YjU4YTUxMDI5MzE3MjA4ZGI2NDFjZTUzZDkwYjI4NCAgUkVQUk9EVUNUSU9OX1JVTkJPT0subWQKMWI0ZTQzMTZhYWVhNmM5NjI2NjRmYzA4OTQ1YzY1YTA0ODE0N2ZkYzRhZDg5YTFlNjk0ODE4YjkzNGVmNmZhMiAgY2FsZW5kYXJfaW5kZXBlbmRlbmNlLm1kCjlhOWE5ZTQ5NTYwNzZjNmMyODdkYWRhNWRlODJlYjY2Y2YyNTljZWM4OWE2ZTc5MTA4OGUxNzMzYTc0YzVlYTMgIGRpZmZlcmVudGlhbF9tYXRyaXgubWQKNDI2YTIyYmQ5MWM3YTc1Mjk3MDBjMDY1NzBhM2U1NWZiNGMxMTI4MTk5MmQ2MjE1ZmMyMzE1YjEyNzMxZjljZCAgaW5kZXguanNvbgpkMWQxZTA0ZTlkMmRlMzg0NDNlYzJiOTUzYzNhOWM5NjhhMzAzZTgxOTc3Y2I3ZTEyODQ2ODk0NTE2MGI1NmQ3ICBydXN0X3Bhcml0eV9zY29wZS5tZApmMmE3N2NhY2Q3ZmVmZTM5NDUwZWRiMTg1N2VjMmZmYzI1YTRkNGMzZDhkNjhlZmEwOTRiYTg0YWI3MzI1NzA4ICB0YW1wZXJfcmVzaXN0YW5jZS5tZAo2ZDZhNDA2NWExZTdlMDcxODE5OTYwY2VmOGUwMTE3YWRhOThlOTMxY2Q2MmZkOTQzNDFiNDVhZjQ4NjU3MTFhICB0aHJlYXRfbW9kZWxfZGVsdGFfMzYwLm1kCg==",
|
|
4
4
|
"signature": {
|
|
5
5
|
"alg": "ed25519",
|
|
6
|
-
"public_key_b64": "
|
|
7
|
-
"sig_b64": "
|
|
6
|
+
"public_key_b64": "GB+LMY2k3nnr1Cm64iVJLLMdiEstoP4DGflIXXN2/2Q=",
|
|
7
|
+
"sig_b64": "sgKuvyQ1j477RZ2MARU89S9oiopJkI7yfwRjeyTRj1P6N3N5rCMAEyMwhVvN5vupfwDo/CaJO/dVdZs3VribAA=="
|
|
8
8
|
},
|
|
9
9
|
"merkle": {
|
|
10
10
|
"hash_alg": "sha256-rfc6962",
|
|
11
11
|
"leaf_index": 0,
|
|
12
12
|
"tree_size": 1,
|
|
13
13
|
"inclusion_proof_b64": [],
|
|
14
|
-
"root_b64": "
|
|
14
|
+
"root_b64": "jaW3qlMpoFggIW4V2uP4mdPOw3prJdMP0Mc6BXihy2o="
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
GB+LMY2k3nnr1Cm64iVJLLMdiEstoP4DGflIXXN2/2Q=
|
|
@@ -24,7 +24,7 @@ python3 tools/pb_verify_rs/crosscheck.py --matrix audit_artifacts/360/rust_diffe
|
|
|
24
24
|
negative (decoy-parent, subject-mismatch, signer, lineage tiers), Python == Rust on exit-class +
|
|
25
25
|
lineage on every one
|
|
26
26
|
|
|
27
|
-
The whole conformance corpus (
|
|
27
|
+
The whole conformance corpus (57 cases as of v3.7.0; the `make conformance-crossimpl` gate reproduces 56/56 of its corpus cases) is reproduced independently by the Rust binary.
|
|
28
28
|
|
|
29
29
|
## Deliberately PENDING (honestly not Rust-covered, never silently accepted)
|
|
30
30
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "proofbundle"
|
|
7
|
-
version = "3.
|
|
7
|
+
version = "3.8.0"
|
|
8
8
|
description = "Emit and verify portable cryptographic evidence bundles, offline: Ed25519 + RFC 6962 Merkle + optional SD-JWT."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -96,7 +96,46 @@ test = ["pytest>=7", "hypothesis>=6", "PyYAML>=6", "jsonschema>=4", "sd-jwt>=0.1
|
|
|
96
96
|
# test is bound to this range. Since v1.4.0 the project floor is Python 3.10, so no per-extra version
|
|
97
97
|
# marker is needed here (inspect_ai's own >=3.10 requirement is always satisfiable on a supported base).
|
|
98
98
|
inspect = ['inspect_ai>=0.3.112,<0.4']
|
|
99
|
-
|
|
99
|
+
# ruff is bounded, but the bound is no longer what protects this repo — `[tool.ruff.lint] select`
|
|
100
|
+
# is (see that section). The cap `<0.16` that stood here from 2026-07-31 to 2026-08-07 bought time
|
|
101
|
+
# to find out WHY 0.16 turned a green tree red. It is now measured, and it was never our code:
|
|
102
|
+
#
|
|
103
|
+
# ruff 0.16.0 expanded its DEFAULT rule set from 59 rules to 413 (Astral's v0.16.0 release; the
|
|
104
|
+
# default had been untouched since v0.1.0). Measured here on the identical tree @2e5807a:
|
|
105
|
+
# ruff 0.15.0 / 0.15.10 / 0.15.22 -> 59 default rules -> exit 0 over all 258 tracked .py
|
|
106
|
+
# ruff 0.16.0 / 0.16.1 / 0.16.2 -> 413 default rules -> exit 1, 1168 findings
|
|
107
|
+
# Top rules, re-measured on that same tree with 0.16.0: RUF100 400, UP045 181, I001 163,
|
|
108
|
+
# RUF059 57, EXE001 40, PLW1510 37, BLE001 36, UP006 30. NONE of them was enabled in 0.15.
|
|
109
|
+
# (The earlier note here cited "E402 257" and "F401 72". Both are wrong: on that tree, with
|
|
110
|
+
# that ruff, E402 and F401 each find ZERO. The total, 1168, was right. Corrected 2026-08-07.)
|
|
111
|
+
#
|
|
112
|
+
# So the bound stays, but for a NARROWER and honestly smaller reason: `select` fixes WHICH rules
|
|
113
|
+
# judge us, it cannot fix a change in what an individual rule MEANS. That residue is what `<0.17`
|
|
114
|
+
# still covers, and it is a much cheaper thing to re-check than a 7x rule-set swing.
|
|
115
|
+
#
|
|
116
|
+
# mypy is `mypy src`, the OTHER blocking judge in ci.yml, and it was unbounded for the same reason
|
|
117
|
+
# ruff was. Two things were measured on 2026-08-07 before this bound went in, and they point in
|
|
118
|
+
# opposite directions, so both are stated:
|
|
119
|
+
#
|
|
120
|
+
# NO FAILURE WAS FOUND. Every one of mypy 1.8.0 / 1.11.2 / 1.15.0 / 1.18.2 / 2.0.0 / 2.1.0 /
|
|
121
|
+
# 2.2.0 / 2.3.0 exits 0 over `src` (63 files) — across BOTH major versions. So the declared
|
|
122
|
+
# floor `>=1.8` is not a guess, it is verified. That is the honest state and this bound does
|
|
123
|
+
# not pretend otherwise: it is prospective, not a fix for something broken.
|
|
124
|
+
#
|
|
125
|
+
# THE MECHANISM IS REAL THOUGH. mypy changes CHECKING DEFAULTS at major versions: 2.0 turned on
|
|
126
|
+
# `--local-partial-types` and `--strict-bytes` (PEP 688: `bytearray`/`memoryview` no longer
|
|
127
|
+
# assignable to `bytes`) and redefined `--allow-redefinition`. This tree happens not to be
|
|
128
|
+
# sensitive to those three; the next major is a coin flip nobody has flipped yet.
|
|
129
|
+
#
|
|
130
|
+
# `<3` is therefore the granularity that matches where mypy actually moves, and it blocks nothing
|
|
131
|
+
# today (2.3.0 is well under it). A bump is a deliberate act, like ruff's.
|
|
132
|
+
#
|
|
133
|
+
# HONEST CAVEAT ON HOW THE FLOOR WAS MEASURED: the first attempt ran each pinned mypy in a bare
|
|
134
|
+
# venv and "found" that everything below 2.3 fails at pqsig.py:91. That was the measurement, not
|
|
135
|
+
# the code — those venvs had no `cryptography`, so the `type: ignore[attr-defined]` on the
|
|
136
|
+
# optional `slhdsa` import really is unused there. With the project's own dependency present, all
|
|
137
|
+
# eight versions pass. A floor claim is only worth the environment it was measured in.
|
|
138
|
+
dev = ["pytest>=7", "ruff>=0.5,<0.17", "jsonschema>=4", "mypy>=1.8,<3", "build>=1", "hypothesis>=6",
|
|
100
139
|
"rfc8785>=0.1.4", "sd-jwt>=0.10", "PyYAML>=6", 'inspect_ai>=0.3.112,<0.4']
|
|
101
140
|
|
|
102
141
|
[project.urls]
|
|
@@ -124,6 +163,47 @@ proofbundle = ["py.typed", "eee_eval_schema.json", "policies/*.json"]
|
|
|
124
163
|
[tool.ruff]
|
|
125
164
|
line-length = 100
|
|
126
165
|
|
|
166
|
+
[tool.ruff.lint]
|
|
167
|
+
# THE JUDGE'S CRITERIA ARE OURS, NOT THE VENDOR'S DEFAULT-OF-THE-DAY.
|
|
168
|
+
#
|
|
169
|
+
# `ruff check .` is a blocking CI step, so the set of enabled rules is an INPUT to a gate. Until
|
|
170
|
+
# 2026-08-07 this file pinned only ruff's VERSION and left the rule SELECTION implicit, which meant
|
|
171
|
+
# an upstream release could redefine what "green" means here without a line of our code changing.
|
|
172
|
+
# It did: 0.16.0 took the default from 59 rules to 413. Capping the version deferred that; every
|
|
173
|
+
# future cap raise would have replayed the same triage. Naming the rules removes the class.
|
|
174
|
+
#
|
|
175
|
+
# These four prefixes ARE the set that judged this repo through the whole 0.15 line — verified by
|
|
176
|
+
# set comparison, not by eye: `--select E4,E7,E9,F` under 0.16.2 enables exactly the same 59 rules
|
|
177
|
+
# that 0.15.0/0.15.10/0.15.22 enabled by default, and under that selection every one of
|
|
178
|
+
# 0.15.0 / 0.15.10 / 0.15.22 / 0.16.0 / 0.16.1 / 0.16.2 exits 0 over all 258 tracked .py files.
|
|
179
|
+
# This is also Astral's own documented way to keep the pre-0.16 behaviour.
|
|
180
|
+
#
|
|
181
|
+
# WHAT A PREFIX DOES NOT DO, said plainly because the sentence above reads stronger than it is:
|
|
182
|
+
# a prefix is an OPEN set. `E4` means "every E4xx rule this ruff knows", not "these fifteen". A
|
|
183
|
+
# future release can add a rule under one of these four prefixes and it is selected here without
|
|
184
|
+
# anyone choosing it — the same shape of surprise as the 0.16 default swing, just narrower. So the
|
|
185
|
+
# set equality above is a measurement AT a version, not a property of the config.
|
|
186
|
+
# Measured across the whole declared range (0.5.0, 0.15.0, 0.15.22, 0.16.0, 0.16.2), membership
|
|
187
|
+
# under these four prefixes: 0 rules added, 1 removed (E999, deprecated as a selectable rule).
|
|
188
|
+
# Eleven minor releases, no growth. That is evidence about the past, not a guarantee.
|
|
189
|
+
# THIS is the residue the version bound in [project.optional-dependencies] actually catches, and it
|
|
190
|
+
# is a better reason for that bound than the rule-semantics drift also named there. Enumerating all
|
|
191
|
+
# 59 rule IDs would close it completely, at the cost of a config nobody re-reads; the bound plus a
|
|
192
|
+
# deliberate bump was chosen instead. If that bump ever gets rubber-stamped, this trade is void.
|
|
193
|
+
#
|
|
194
|
+
# THE HALF THAT IS EASY TO MISS: 0.16 did not only ADD rules, it DROPPED 18 from the default —
|
|
195
|
+
# E401 E402 E701 E702 E703 E711 E712 E713 E714 E721 E731 E741 E742 E743 F403 F405 F406 F722.
|
|
196
|
+
# Among them `== None` (E711), `== True` (E712), type comparison by `==` (E721) and star-import
|
|
197
|
+
# leakage (F403/F405). Simply raising the cap would have SILENTLY STOPPED checking all eighteen,
|
|
198
|
+
# and nothing would have shown it: the finding count goes UP, so the regression hides inside an
|
|
199
|
+
# apparent tightening. All eighteen sit inside the E4/E7/E9/F prefixes below, so they keep being
|
|
200
|
+
# checked here. (Upstream has an open issue that this removal never reached BREAKING_CHANGES.md.)
|
|
201
|
+
#
|
|
202
|
+
# EXPANDING this set is a separate, deliberate task with its own diff — several of the 372 newly
|
|
203
|
+
# defaulted rules look worth adopting. The point of naming the set is that adopting them becomes a
|
|
204
|
+
# decision we make, at a time we choose, instead of one a `pip install` makes for us.
|
|
205
|
+
select = ["E4", "E7", "E9", "F"]
|
|
206
|
+
|
|
127
207
|
[tool.mypy]
|
|
128
208
|
python_version = "3.10"
|
|
129
209
|
files = ["src"]
|