ca2a-runtime 0.1.0a1__tar.gz → 0.2.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.
- ca2a_runtime-0.2.0/.dockerignore +19 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/ci.yml +24 -9
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/codeql.yml +3 -3
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/contributor-check.yml +4 -1
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/docker.yml +30 -5
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/docs.yml +1 -1
- ca2a_runtime-0.2.0/.github/workflows/release.yml +106 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/require-maintainer-approval.yml +1 -7
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/scorecard.yml +2 -2
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.gitignore +3 -0
- ca2a_runtime-0.2.0/ADOPTERS.md +7 -0
- ca2a_runtime-0.2.0/CHANGELOG.md +255 -0
- ca2a_runtime-0.2.0/Dockerfile +30 -0
- ca2a_runtime-0.2.0/LIMITATIONS.md +30 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/PKG-INFO +55 -10
- ca2a_runtime-0.2.0/PRIVACY.md +9 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/README.md +41 -7
- ca2a_runtime-0.2.0/ROADMAP.md +49 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/SPEC.md +5 -5
- ca2a_runtime-0.2.0/docs/assets/og.png +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/concepts.md +2 -0
- ca2a_runtime-0.2.0/docs/configuration.md +73 -0
- ca2a_runtime-0.2.0/docs/hardware-validation.md +219 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/quickstart.md +17 -1
- ca2a_runtime-0.2.0/docs/spec/attestation.md +125 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/call-graph.md +6 -6
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/cedar-policy.md +6 -6
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/component-model.md +6 -5
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/conformance.md +3 -3
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/delegation-chain.md +41 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/error-codes.md +10 -5
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/failure-modes.md +4 -2
- ca2a_runtime-0.2.0/docs/spec/mutual-attestation.md +210 -0
- ca2a_runtime-0.2.0/docs/spec/profile.md +100 -0
- ca2a_runtime-0.2.0/docs/spec/threat-model.md +46 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/trace-a2a-profile.md +1 -1
- ca2a_runtime-0.2.0/docs/spec/transport.md +157 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/verification-library.md +4 -2
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/tutorials/integrating-with-a2a.md +2 -2
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/tutorials/reproducing-the-claims.md +1 -1
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/examples/cross-operator-delegation/README.md +4 -6
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/examples/cross-operator-delegation/ca2a-config.yaml +1 -1
- ca2a_runtime-0.2.0/examples/cross-operator-delegation/chain.json +29 -0
- ca2a_runtime-0.2.0/examples/cross-operator-delegation/dag.json +27 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/examples/cross-operator-delegation/demo.py +8 -11
- ca2a_runtime-0.2.0/examples/minimal/ca2a-config.yaml +11 -0
- ca2a_runtime-0.2.0/examples/rejection-with-proof/README.md +90 -0
- ca2a_runtime-0.2.0/examples/rejection-with-proof/chain.json +42 -0
- ca2a_runtime-0.2.0/examples/rejection-with-proof/dag.json +55 -0
- ca2a_runtime-0.2.0/examples/rejection-with-proof/demo.py +211 -0
- ca2a_runtime-0.2.0/examples/trace-dag/README.md +37 -0
- ca2a_runtime-0.2.0/examples/trace-dag/demo.py +101 -0
- ca2a_runtime-0.2.0/experiments/hardware-validation/README.md +8 -0
- ca2a_runtime-0.2.0/experiments/hardware-validation/ca2a-attested-peer-azure-2026-07-27/bridge.py +226 -0
- ca2a_runtime-0.2.0/experiments/hardware-validation/ca2a-attested-peer-azure-2026-07-27/transcript.json +19 -0
- ca2a_runtime-0.2.0/experiments/hardware-validation/ca2a-cross-tee-2026-07-27/snp_client.py +135 -0
- ca2a_runtime-0.2.0/experiments/hardware-validation/ca2a-cross-tee-2026-07-27/tdx_peer.py +128 -0
- ca2a_runtime-0.2.0/experiments/hardware-validation/ca2a-cross-tee-2026-07-27/transcript.json +54 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/mkdocs.yml +1 -0
- ca2a_runtime-0.2.0/overrides/main.html +88 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/pyproject.toml +123 -96
- ca2a_runtime-0.2.0/requirements-docs.txt +7 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/__init__.py +8 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/agent_manifest.py +163 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/attestation.py +152 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/bootstrap.py +138 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/challenge.py +95 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/cli.py +106 -6
- ca2a_runtime-0.2.0/src/ca2a_runtime/config.py +164 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/delegation/__init__.py +8 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/delegation/credential.py +314 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/delegation/holder.py +264 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/errors.py +177 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/node.py +112 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/peer.py +465 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/provenance.py +244 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/tee/__init__.py +5 -2
- ca2a_runtime-0.2.0/src/ca2a_runtime/tee/base.py +60 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/tee/binding.py +52 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/tee/sev_snp.py +205 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/tee/software.py +38 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/tee/tdx.py +241 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/tee/tpm.py +528 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/tee/tsm.py +149 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/trace_binding.py +248 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/transport/__init__.py +36 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/transport/a2a_adapter.py +270 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/transport/a2a_sdk.py +141 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/transport/client.py +193 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/transport/constants.py +41 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/transport/server.py +138 -0
- ca2a_runtime-0.2.0/src/ca2a_runtime/transport/wire.py +118 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_verify/__init__.py +8 -0
- ca2a_runtime-0.2.0/src/ca2a_verify/dag.py +219 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_verify/sev_snp.py +15 -27
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_verify/tdx.py +1 -3
- ca2a_runtime-0.2.0/src/ca2a_verify/tpm.py +217 -0
- ca2a_runtime-0.2.0/src/ca2a_verify/tpm_roots.py +102 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_verify/verify.py +14 -7
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/conformance/README.md +25 -1
- ca2a_runtime-0.2.0/tests/conformance/test_profile_conformance.py +739 -0
- ca2a_runtime-0.2.0/tests/fixtures/a2a/send_message_ca2a.json +23 -0
- ca2a_runtime-0.2.0/tests/fixtures/hardware/azure-vtpm-2026-07-27/README.md +71 -0
- ca2a_runtime-0.2.0/tests/fixtures/hardware/azure-vtpm-2026-07-27/ak.pub +9 -0
- ca2a_runtime-0.2.0/tests/fixtures/hardware/azure-vtpm-2026-07-27/akcert_0x01C101D0.der +0 -0
- ca2a_runtime-0.2.0/tests/fixtures/hardware/azure-vtpm-2026-07-27/nonce.hex +1 -0
- ca2a_runtime-0.2.0/tests/fixtures/hardware/azure-vtpm-2026-07-27/pcrs.bin +0 -0
- ca2a_runtime-0.2.0/tests/fixtures/hardware/azure-vtpm-2026-07-27/quote.msg +0 -0
- ca2a_runtime-0.2.0/tests/fixtures/hardware/azure-vtpm-2026-07-27/quote.sig +4 -0
- ca2a_runtime-0.2.0/tests/test_challenge.py +108 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/conftest.py +80 -7
- ca2a_runtime-0.2.0/tests/unit/test_a2a_adapter.py +243 -0
- ca2a_runtime-0.2.0/tests/unit/test_a2a_sdk_bridge.py +330 -0
- ca2a_runtime-0.2.0/tests/unit/test_agent_manifest_cose.py +173 -0
- ca2a_runtime-0.2.0/tests/unit/test_bootstrap.py +156 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_cedar.py +22 -1
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_claim1_attenuation.py +1 -3
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_claim3_scope_policy.py +10 -1
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_claim6_cross_operator.py +20 -11
- ca2a_runtime-0.2.0/tests/unit/test_cli_start.py +108 -0
- ca2a_runtime-0.2.0/tests/unit/test_committed_examples_verify.py +75 -0
- ca2a_runtime-0.2.0/tests/unit/test_config.py +133 -0
- ca2a_runtime-0.2.0/tests/unit/test_container_release.py +63 -0
- ca2a_runtime-0.2.0/tests/unit/test_delegation.py +271 -0
- ca2a_runtime-0.2.0/tests/unit/test_dependency_security_floors.py +40 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_errors.py +8 -1
- ca2a_runtime-0.2.0/tests/unit/test_example_rejection_with_proof.py +70 -0
- ca2a_runtime-0.2.0/tests/unit/test_holder_binding.py +499 -0
- ca2a_runtime-0.2.0/tests/unit/test_live_call.py +289 -0
- ca2a_runtime-0.2.0/tests/unit/test_mutual_attestation.py +543 -0
- ca2a_runtime-0.2.0/tests/unit/test_peer.py +155 -0
- ca2a_runtime-0.2.0/tests/unit/test_peer_request.py +92 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_provenance.py +5 -2
- ca2a_runtime-0.2.0/tests/unit/test_release_artifacts.py +52 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_sev_snp.py +97 -31
- ca2a_runtime-0.2.0/tests/unit/test_snp_tdx_attest.py +512 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_tdx.py +63 -12
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_tpm.py +83 -13
- ca2a_runtime-0.2.0/tests/unit/test_tpm_attest.py +511 -0
- ca2a_runtime-0.2.0/tests/unit/test_trace_binding.py +217 -0
- ca2a_runtime-0.1.0a1/.github/workflows/release.yml +0 -75
- ca2a_runtime-0.1.0a1/ADOPTERS.md +0 -7
- ca2a_runtime-0.1.0a1/CHANGELOG.md +0 -47
- ca2a_runtime-0.1.0a1/LIMITATIONS.md +0 -25
- ca2a_runtime-0.1.0a1/ROADMAP.md +0 -44
- ca2a_runtime-0.1.0a1/docs/configuration.md +0 -35
- ca2a_runtime-0.1.0a1/docs/spec/attestation.md +0 -54
- ca2a_runtime-0.1.0a1/docs/spec/profile.md +0 -24
- ca2a_runtime-0.1.0a1/docs/spec/threat-model.md +0 -37
- ca2a_runtime-0.1.0a1/docs/spec/transport.md +0 -71
- ca2a_runtime-0.1.0a1/examples/cross-operator-delegation/chain.json +0 -29
- ca2a_runtime-0.1.0a1/examples/cross-operator-delegation/dag.json +0 -25
- ca2a_runtime-0.1.0a1/examples/minimal/ca2a-config.yaml +0 -6
- ca2a_runtime-0.1.0a1/requirements-docs.txt +0 -7
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/__init__.py +0 -3
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/config.py +0 -73
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/delegation/credential.py +0 -176
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/errors.py +0 -83
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/peer.py +0 -142
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/provenance.py +0 -115
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/tee/base.py +0 -36
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/tee/sev_snp.py +0 -105
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/tee/tdx.py +0 -133
- ca2a_runtime-0.1.0a1/src/ca2a_runtime/tee/tpm.py +0 -98
- ca2a_runtime-0.1.0a1/src/ca2a_verify/tpm.py +0 -72
- ca2a_runtime-0.1.0a1/tests/conformance/test_profile_conformance.py +0 -406
- ca2a_runtime-0.1.0a1/tests/unit/test_config.py +0 -59
- ca2a_runtime-0.1.0a1/tests/unit/test_delegation.py +0 -119
- ca2a_runtime-0.1.0a1/tests/unit/test_peer.py +0 -73
- ca2a_runtime-0.1.0a1/tests/unit/test_peer_request.py +0 -66
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/CODEOWNERS +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/dependabot.yml +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/release-drafter.yml +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/sbom.yml +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/CHARTER.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/CNAME +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/CODE_OF_CONDUCT.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/CONTRIBUTING.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/GOVERNANCE.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/LICENSE +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/MAINTAINERS.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/NOTICE +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/SECURITY.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/benchmarks/.gitkeep +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/assets/icon.svg +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/provenance-dag.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/spec/sealed-channel.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/stylesheets/extra.css +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/tutorials/authoring-a-delegation-credential.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/tutorials/emit-and-verify-provenance.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/docs/tutorials/verify-a-delegation-chain.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/examples/cross-operator-delegation/policy.cedar +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/examples/minimal/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/examples/minimal/chain.json +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim1-attenuation-soundness/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim1-attenuation-soundness/run.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim2-cross-chain-replay/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim2-cross-chain-replay/run.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim3-scope-policy-intersection/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim3-scope-policy-intersection/run.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim4-sealed-payload-confidentiality/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim4-sealed-payload-confidentiality/run.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim5-provenance-dag-integrity/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim5-provenance-dag-integrity/run.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim6-cross-operator-attestation/README.md +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/experiments/claim6-cross-operator-attestation/run.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/governance/ca2a-enforcement.yaml +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/scripts/gen_agt_evidence.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/scripts/gen_example_chain.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/benchmarks.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/canonical.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/cedar.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/channel/__init__.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/channel/sealed.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/src/ca2a_runtime/policy.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/__init__.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/conformance/__init__.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/conformance/conftest.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/fixtures/sev_snp/amd_milan_cert_chain.pem +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/fixtures/tdx/intel_sgx_root_ca.pem +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/__init__.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_canonical.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_channel_and_tee.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_claim2_replay.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_claim4_sealed.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_claim5_provenance.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_sealed_channel.py +0 -0
- {ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/tests/unit/test_verify.py +0 -0
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
steps:
|
|
24
24
|
- uses: actions/checkout@v7
|
|
25
25
|
|
|
26
|
-
- uses: actions/setup-python@
|
|
26
|
+
- uses: actions/setup-python@v7
|
|
27
27
|
with:
|
|
28
28
|
python-version: ${{ matrix.python-version }}
|
|
29
29
|
|
|
@@ -36,6 +36,11 @@ jobs:
|
|
|
36
36
|
- name: Lint
|
|
37
37
|
run: ruff check src/ tests/
|
|
38
38
|
|
|
39
|
+
# Checked, not applied. Without this gate 34 of 77 files drifted out of
|
|
40
|
+
# format unnoticed, because `ruff check` does not cover formatting.
|
|
41
|
+
- name: Format
|
|
42
|
+
run: ruff format --check src/ tests/
|
|
43
|
+
|
|
39
44
|
- name: Type check
|
|
40
45
|
run: mypy src/ca2a_runtime/ src/ca2a_verify/
|
|
41
46
|
|
|
@@ -54,12 +59,22 @@ jobs:
|
|
|
54
59
|
steps:
|
|
55
60
|
- uses: actions/checkout@v7
|
|
56
61
|
|
|
57
|
-
- uses: actions/setup-python@
|
|
62
|
+
- uses: actions/setup-python@v7
|
|
58
63
|
with:
|
|
59
64
|
python-version: "3.12"
|
|
60
65
|
|
|
61
|
-
- name: Install dependencies
|
|
62
|
-
run: python -m pip install --upgrade pip setuptools && pip install -e ".[dev]"
|
|
66
|
+
- name: Install dependencies
|
|
67
|
+
run: python -m pip install --upgrade pip setuptools && pip install -e ".[dev]"
|
|
68
|
+
|
|
69
|
+
# AGT 4.1 currently constrains cryptography below 49, while the runtime
|
|
70
|
+
# requires 50+ for published security fixes. Keep the scanner isolated
|
|
71
|
+
# so its tooling constraints cannot downgrade the package under test,
|
|
72
|
+
# then override that stale upper bound inside the ephemeral scanner too.
|
|
73
|
+
- name: Install governance tooling in an isolated environment
|
|
74
|
+
run: |
|
|
75
|
+
python -m venv .agt-venv
|
|
76
|
+
.agt-venv/bin/pip install "agent-governance-toolkit[full]>=4.1"
|
|
77
|
+
.agt-venv/bin/pip install --upgrade --no-deps "cryptography>=50.0"
|
|
63
78
|
|
|
64
79
|
- name: Generate evidence file
|
|
65
80
|
run: python scripts/gen_agt_evidence.py
|
|
@@ -67,11 +82,11 @@ jobs:
|
|
|
67
82
|
# Blocking gate: the [full] toolkit provides the ASI coverage modules
|
|
68
83
|
# (10/10) and the evidence declares cA2A's governed capabilities, so strict
|
|
69
84
|
# verify is COMPLETE. A regression that drops coverage or governance fails CI.
|
|
70
|
-
- name: AGT governance verify (strict)
|
|
71
|
-
run: agt verify --evidence agt-evidence.json
|
|
85
|
+
- name: AGT governance verify (strict)
|
|
86
|
+
run: .agt-venv/bin/agt verify --evidence agt-evidence.json
|
|
72
87
|
|
|
73
|
-
- name: Save attestation JSON
|
|
74
|
-
run: agt --json verify --evidence agt-evidence.json > agt-attestation.json
|
|
88
|
+
- name: Save attestation JSON
|
|
89
|
+
run: .agt-venv/bin/agt --json verify --evidence agt-evidence.json > agt-attestation.json
|
|
75
90
|
|
|
76
91
|
- name: Upload governance artifacts
|
|
77
92
|
uses: actions/upload-artifact@v7
|
|
@@ -90,7 +105,7 @@ jobs:
|
|
|
90
105
|
steps:
|
|
91
106
|
- uses: actions/checkout@v7
|
|
92
107
|
|
|
93
|
-
- uses: actions/setup-python@
|
|
108
|
+
- uses: actions/setup-python@v7
|
|
94
109
|
with:
|
|
95
110
|
python-version: "3.12"
|
|
96
111
|
|
|
@@ -28,16 +28,16 @@ jobs:
|
|
|
28
28
|
uses: actions/checkout@v7
|
|
29
29
|
|
|
30
30
|
- name: Initialize CodeQL
|
|
31
|
-
uses: github/codeql-action/init@v4
|
|
31
|
+
uses: github/codeql-action/init@v4.37.6
|
|
32
32
|
with:
|
|
33
33
|
languages: python
|
|
34
34
|
queries: +security-extended
|
|
35
35
|
|
|
36
36
|
- name: Autobuild
|
|
37
|
-
uses: github/codeql-action/autobuild@v4
|
|
37
|
+
uses: github/codeql-action/autobuild@v4.37.6
|
|
38
38
|
|
|
39
39
|
- name: Perform CodeQL Analysis
|
|
40
|
-
uses: github/codeql-action/analyze@v4
|
|
40
|
+
uses: github/codeql-action/analyze@v4.37.6
|
|
41
41
|
continue-on-error: true
|
|
42
42
|
with:
|
|
43
43
|
category: /language:python
|
|
@@ -30,7 +30,10 @@ jobs:
|
|
|
30
30
|
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
31
31
|
with:
|
|
32
32
|
repository: agentrust-io/.github
|
|
33
|
-
|
|
33
|
+
# Pinned deliberately: this workflow runs on pull_request_target
|
|
34
|
+
# with a write-capable token, so the code it checks out must not
|
|
35
|
+
# track a mutable ref. Bump this SHA after reviewing the diff.
|
|
36
|
+
ref: 0fe4520ee71a743fcd33f409fe366ee3e1da6f86 # main as of 2026-08-01
|
|
34
37
|
persist-credentials: false
|
|
35
38
|
sparse-checkout: |
|
|
36
39
|
scripts
|
|
@@ -4,12 +4,37 @@ on:
|
|
|
4
4
|
push:
|
|
5
5
|
tags:
|
|
6
6
|
- "v*"
|
|
7
|
+
pull_request:
|
|
8
|
+
paths:
|
|
9
|
+
- "Dockerfile"
|
|
10
|
+
- ".dockerignore"
|
|
11
|
+
- "pyproject.toml"
|
|
12
|
+
- "src/**"
|
|
13
|
+
- ".github/workflows/docker.yml"
|
|
7
14
|
|
|
8
15
|
env:
|
|
9
16
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
10
17
|
|
|
11
18
|
jobs:
|
|
19
|
+
build-pr:
|
|
20
|
+
if: github.event_name == 'pull_request'
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
steps:
|
|
26
|
+
- name: Checkout
|
|
27
|
+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
28
|
+
|
|
29
|
+
- name: Build image without publishing
|
|
30
|
+
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
|
|
31
|
+
with:
|
|
32
|
+
context: .
|
|
33
|
+
push: false
|
|
34
|
+
tags: ghcr.io/agentrust-io/ca2a-runtime:${{ github.sha }}
|
|
35
|
+
|
|
12
36
|
build-and-push:
|
|
37
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
13
38
|
runs-on: ubuntu-latest
|
|
14
39
|
permissions:
|
|
15
40
|
contents: read
|
|
@@ -19,10 +44,10 @@ jobs:
|
|
|
19
44
|
|
|
20
45
|
steps:
|
|
21
46
|
- name: Checkout
|
|
22
|
-
uses: actions/checkout@v7
|
|
47
|
+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
23
48
|
|
|
24
49
|
- name: Log in to GitHub Container Registry
|
|
25
|
-
uses: docker/login-action@v4
|
|
50
|
+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4
|
|
26
51
|
with:
|
|
27
52
|
registry: ghcr.io
|
|
28
53
|
username: ${{ github.actor }}
|
|
@@ -34,7 +59,7 @@ jobs:
|
|
|
34
59
|
|
|
35
60
|
- name: Build and push
|
|
36
61
|
id: build
|
|
37
|
-
uses: docker/build-push-action@v7
|
|
62
|
+
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7
|
|
38
63
|
with:
|
|
39
64
|
context: .
|
|
40
65
|
push: true
|
|
@@ -43,7 +68,7 @@ jobs:
|
|
|
43
68
|
ghcr.io/agentrust-io/ca2a-runtime:latest
|
|
44
69
|
|
|
45
70
|
- name: Install cosign
|
|
46
|
-
uses: sigstore/cosign-installer@v3
|
|
71
|
+
uses: sigstore/cosign-installer@f713795cb21599bc4e5c4b58cbad1da852d7eeb9 # v3
|
|
47
72
|
|
|
48
73
|
- name: Sign the image (keyless, by digest)
|
|
49
74
|
env:
|
|
@@ -51,7 +76,7 @@ jobs:
|
|
|
51
76
|
run: cosign sign --yes ghcr.io/agentrust-io/ca2a-runtime@${DIGEST}
|
|
52
77
|
|
|
53
78
|
- name: Attest build provenance (SLSA)
|
|
54
|
-
uses: actions/attest-build-provenance@v4
|
|
79
|
+
uses: actions/attest-build-provenance@8beda2b7ed98355c0e97c0a63bec38ae472e66c4 # v4
|
|
55
80
|
with:
|
|
56
81
|
subject-name: ghcr.io/agentrust-io/ca2a-runtime
|
|
57
82
|
subject-digest: ${{ steps.build.outputs.digest }}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
15
|
+
|
|
16
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.12"
|
|
19
|
+
|
|
20
|
+
- name: Install release tooling
|
|
21
|
+
run: python -m pip install build twine
|
|
22
|
+
|
|
23
|
+
- name: Verify release tag matches package version
|
|
24
|
+
run: |
|
|
25
|
+
package_version="$(python -c 'import tomllib; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"])')"
|
|
26
|
+
test "${GITHUB_REF_NAME}" = "v${package_version}"
|
|
27
|
+
|
|
28
|
+
- name: Build distributions
|
|
29
|
+
run: python -m build
|
|
30
|
+
|
|
31
|
+
- name: Check distribution metadata
|
|
32
|
+
run: python -m twine check dist/*
|
|
33
|
+
|
|
34
|
+
- name: Install and smoke-test wheel
|
|
35
|
+
run: |
|
|
36
|
+
python -m venv /tmp/ca2a-wheel
|
|
37
|
+
/tmp/ca2a-wheel/bin/python -m pip install dist/*.whl
|
|
38
|
+
/tmp/ca2a-wheel/bin/python -c 'import importlib.metadata, ca2a_runtime; expected="${{ github.ref_name }}"[1:]; assert importlib.metadata.version("ca2a-runtime") == expected; assert ca2a_runtime.__version__ == expected'
|
|
39
|
+
/tmp/ca2a-wheel/bin/ca2a --help
|
|
40
|
+
|
|
41
|
+
- name: Install and smoke-test source distribution
|
|
42
|
+
run: |
|
|
43
|
+
python -m venv /tmp/ca2a-sdist
|
|
44
|
+
/tmp/ca2a-sdist/bin/python -m pip install dist/*.tar.gz
|
|
45
|
+
/tmp/ca2a-sdist/bin/python -c 'import importlib.metadata, ca2a_runtime; expected="${{ github.ref_name }}"[1:]; assert importlib.metadata.version("ca2a-runtime") == expected; assert ca2a_runtime.__version__ == expected'
|
|
46
|
+
/tmp/ca2a-sdist/bin/ca2a --help
|
|
47
|
+
|
|
48
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
49
|
+
with:
|
|
50
|
+
name: dist
|
|
51
|
+
path: dist/
|
|
52
|
+
|
|
53
|
+
publish:
|
|
54
|
+
needs: build
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
environment: pypi
|
|
57
|
+
permissions:
|
|
58
|
+
id-token: write # OIDC trusted publishing, no API tokens
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
61
|
+
with:
|
|
62
|
+
name: dist
|
|
63
|
+
path: dist/
|
|
64
|
+
|
|
65
|
+
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
66
|
+
|
|
67
|
+
governance-release:
|
|
68
|
+
needs: publish
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
permissions:
|
|
71
|
+
contents: write # upload release assets
|
|
72
|
+
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
75
|
+
|
|
76
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
77
|
+
with:
|
|
78
|
+
python-version: "3.12"
|
|
79
|
+
|
|
80
|
+
- name: Install package
|
|
81
|
+
run: python -m pip install --upgrade pip && pip install -e "."
|
|
82
|
+
|
|
83
|
+
# Isolate AGT's tooling dependencies from the release artifact. AGT 4.1
|
|
84
|
+
# constrains cryptography below 49; cA2A requires 50+ security fixes. The
|
|
85
|
+
# ephemeral scanner is upgraded too so the release gate runs no known-
|
|
86
|
+
# vulnerable cryptography build while that upstream bound is stale.
|
|
87
|
+
- name: Install governance tooling in an isolated environment
|
|
88
|
+
run: |
|
|
89
|
+
python -m venv .agt-venv
|
|
90
|
+
.agt-venv/bin/pip install "agent-governance-toolkit[full]>=4.1"
|
|
91
|
+
.agt-venv/bin/pip install --upgrade --no-deps "cryptography>=50.0"
|
|
92
|
+
|
|
93
|
+
- name: Generate evidence file
|
|
94
|
+
run: python scripts/gen_agt_evidence.py
|
|
95
|
+
|
|
96
|
+
- name: AGT governance verify (strict)
|
|
97
|
+
run: .agt-venv/bin/agt verify --evidence agt-evidence.json
|
|
98
|
+
|
|
99
|
+
- name: Save attestation JSON
|
|
100
|
+
run: .agt-venv/bin/agt --json verify --evidence agt-evidence.json > agt-attestation.json
|
|
101
|
+
|
|
102
|
+
- name: Attach evidence to release
|
|
103
|
+
if: github.event_name == 'release'
|
|
104
|
+
run: gh release upload ${{ github.ref_name }} agt-evidence.json agt-attestation.json
|
|
105
|
+
env:
|
|
106
|
+
GITHUB_TOKEN: ${{ github.token }}
|
{ca2a_runtime-0.1.0a1 → ca2a_runtime-0.2.0}/.github/workflows/require-maintainer-approval.yml
RENAMED
|
@@ -25,7 +25,7 @@ jobs:
|
|
|
25
25
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
26
26
|
with:
|
|
27
27
|
script: |
|
|
28
|
-
const MAINTAINERS = ['imran-siddique'];
|
|
28
|
+
const MAINTAINERS = ['imran-siddique', 'pforest', 'podcastinator', 'carloshvp', 'Qiang-Xu', 'zohebk8s'];
|
|
29
29
|
|
|
30
30
|
const author = context.payload.pull_request.user.login;
|
|
31
31
|
if (MAINTAINERS.includes(author)) {
|
|
@@ -33,12 +33,6 @@ jobs:
|
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const association = context.payload.pull_request.author_association;
|
|
37
|
-
if (association === 'MEMBER' || association === 'OWNER') {
|
|
38
|
-
core.info(`Author is ${association}, skipping gate`);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
36
|
// Both pull_request_target and pull_request_review payloads
|
|
43
37
|
// carry the PR at context.payload.pull_request.
|
|
44
38
|
const prNumber = context.payload.pull_request.number;
|
|
@@ -29,7 +29,7 @@ jobs:
|
|
|
29
29
|
fetch-depth: 0
|
|
30
30
|
|
|
31
31
|
- name: Run Scorecard
|
|
32
|
-
uses: ossf/scorecard-action@
|
|
32
|
+
uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
|
|
33
33
|
with:
|
|
34
34
|
results_file: scorecard-results.sarif
|
|
35
35
|
results_format: sarif
|
|
@@ -38,6 +38,6 @@ jobs:
|
|
|
38
38
|
publish_results: true
|
|
39
39
|
|
|
40
40
|
- name: Upload SARIF
|
|
41
|
-
uses: github/codeql-action/upload-sarif@v4
|
|
41
|
+
uses: github/codeql-action/upload-sarif@v4.37.6
|
|
42
42
|
with:
|
|
43
43
|
sarif_file: scorecard-results.sarif
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Adopters
|
|
2
|
+
|
|
3
|
+
Organizations using cA2A in production or evaluation are listed here.
|
|
4
|
+
|
|
5
|
+
To add yours, open a PR adding a line with your organization, the use case, and the month you started. Anything you are not able to say publicly, leave out; a one-line entry is worth more than a case study you have to get approved.
|
|
6
|
+
|
|
7
|
+
cA2A is available as a Developer Preview, so evaluations are especially useful even when they do not become entries here: open a [Discussion](https://github.com/orgs/agentrust-io/discussions) or contact the maintainers listed in [MAINTAINERS.md](MAINTAINERS.md).
|