agentrust-trace 0.3.0__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. agentrust_trace-0.5.0/.github/CODEOWNERS +5 -0
  2. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  3. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/PULL_REQUEST_TEMPLATE.md +1 -1
  4. agentrust_trace-0.5.0/.github/dependabot.yml +19 -0
  5. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/ci.yml +2 -2
  6. agentrust_trace-0.5.0/.github/workflows/codeql.yml +43 -0
  7. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/contributor-check.yml +1 -1
  8. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/docs.yml +5 -3
  9. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/publish.yml +5 -5
  10. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/require-maintainer-approval.yml +1 -1
  11. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/sbom.yml +2 -2
  12. agentrust_trace-0.5.0/.github/workflows/scorecard.yml +40 -0
  13. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CHANGELOG.md +100 -76
  14. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CONTRIBUTING.md +1 -1
  15. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/PKG-INFO +87 -4
  16. agentrust_trace-0.5.0/PRIVACY.md +9 -0
  17. agentrust_trace-0.5.0/README.md +155 -0
  18. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/ROADMAP.md +48 -48
  19. agentrust_trace-0.5.0/docs/assets/og.png +0 -0
  20. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/crosswalks/owasp-agentic-top-10.md +7 -7
  21. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/glossary.md +1 -1
  22. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/index.md +9 -2
  23. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/quickstart.md +9 -5
  24. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/schema.md +175 -165
  25. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/trust-levels.md +7 -3
  26. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/agt-adapter.md +4 -4
  27. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/anchoring-to-the-registry.md +2 -2
  28. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/hardware-attestation-platforms.md +1 -1
  29. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/signing-your-first-trust-record.md +2 -2
  30. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/verifying-a-trust-record.md +2 -2
  31. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/verification.md +35 -4
  32. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/README.md +3 -0
  33. agentrust_trace-0.5.0/examples/action-receipts/README.md +111 -0
  34. agentrust_trace-0.5.0/examples/action-receipts/conformance/01-valid-controller-accepted.json +52 -0
  35. agentrust_trace-0.5.0/examples/action-receipts/conformance/02-valid-controller-rejected.json +52 -0
  36. agentrust_trace-0.5.0/examples/action-receipts/conformance/03-missing-required-receipt.json +35 -0
  37. agentrust_trace-0.5.0/examples/action-receipts/conformance/04-signature-key-mismatch.json +54 -0
  38. agentrust_trace-0.5.0/examples/action-receipts/conformance/05-action-ref-mismatch.json +54 -0
  39. agentrust_trace-0.5.0/examples/action-receipts/conformance/06-stale-receipt.json +54 -0
  40. agentrust_trace-0.5.0/examples/action-receipts/conformance/07-receipt-chain-gap.json +54 -0
  41. agentrust_trace-0.5.0/examples/action-receipts/conformance/08-same-party-self-report.json +54 -0
  42. agentrust_trace-0.5.0/examples/action-receipts/conformance/09-unsupported-physical-completion.json +54 -0
  43. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/amd-sev-snp.json +5 -5
  44. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/intel-tdx.json +5 -5
  45. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/nvidia-h100.json +5 -5
  46. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/tpm2.json +7 -7
  47. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/mkdocs.yml +34 -1
  48. agentrust_trace-0.5.0/overrides/main.html +68 -0
  49. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/pyproject.toml +1 -1
  50. agentrust_trace-0.5.0/requirements-docs.txt +7 -0
  51. agentrust_trace-0.5.0/robots.txt +35 -0
  52. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/schema/trace-claim.json +285 -266
  53. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/spec/trace-v0.1.md +41 -1
  54. agentrust_trace-0.5.0/spec/trace-v0.2.md +486 -0
  55. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/__init__.py +55 -53
  56. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/adapters/agt.py +3 -3
  57. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/models.py +166 -143
  58. agentrust_trace-0.5.0/src/agentrust_trace/schema/trace-v0.1.json +285 -0
  59. agentrust_trace-0.3.0/src/agentrust_trace/schema/trace-v0.1.json → agentrust_trace-0.5.0/src/agentrust_trace/schema/trace-v0.2.json +24 -5
  60. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/sign.py +3 -3
  61. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/validate.py +1 -1
  62. agentrust_trace-0.5.0/tests/test_action_receipt_fixtures.py +166 -0
  63. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/test_agt_adapter.py +2 -2
  64. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/test_models.py +206 -165
  65. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/test_sign.py +11 -1
  66. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/test_validate.py +88 -73
  67. agentrust_trace-0.3.0/README.md +0 -72
  68. agentrust_trace-0.3.0/requirements-docs.txt +0 -6
  69. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  70. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/ISSUE_TEMPLATE/spec_change.md +0 -0
  71. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/ADOPTERS.md +0 -0
  72. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/ANTITRUST.md +0 -0
  73. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CHARTER.md +0 -0
  74. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CNAME +0 -0
  75. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CODE_OF_CONDUCT.md +0 -0
  76. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/GOVERNANCE.md +0 -0
  77. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/LICENSE +0 -0
  78. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/LIMITATIONS.md +0 -0
  79. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/MAINTAINERS.md +0 -0
  80. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/NOTICE +0 -0
  81. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/SECURITY.md +0 -0
  82. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/assets/icon.svg +0 -0
  83. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/integration/agt.md +0 -0
  84. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/integration/cmcp.md +0 -0
  85. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/amd-sev-snp.md +0 -0
  86. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/index.md +0 -0
  87. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/intel-tdx.md +0 -0
  88. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/nvidia-h100.md +0 -0
  89. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/stylesheets/extra.css +0 -0
  90. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/integrating-with-cmcp.md +0 -0
  91. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/verifying-the-audit-chain.md +0 -0
  92. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/adapters/__init__.py +0 -0
  93. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/py.typed +0 -0
  94. {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/__init__.py +0 -0
@@ -0,0 +1,5 @@
1
+ # Default owners for all files
2
+ * @agentrust-io/maintainers
3
+
4
+ # CI/CD workflow changes
5
+ .github/workflows/ @agentrust-io/maintainers
@@ -8,7 +8,7 @@ labels: bug
8
8
  <!-- Describe the problem. Quote the specific text or schema path. -->
9
9
 
10
10
  **Spec section or file**
11
- <!-- e.g. spec/trace-v0.1.md §3.2.1, schema/trace-claim.json #/properties/runtime -->
11
+ <!-- e.g. spec/trace-v0.2.md §3.2.1, schema/trace-claim.json #/properties/runtime -->
12
12
 
13
13
  **Expected behavior**
14
14
  <!-- What should it say or do? -->
@@ -12,7 +12,7 @@
12
12
 
13
13
  ## Spec section
14
14
 
15
- <!-- Which section(s) of spec/trace-v0.1.md does this affect? -->
15
+ <!-- Which section(s) of spec/trace-v0.2.md does this affect? -->
16
16
 
17
17
  ## Checklist
18
18
 
@@ -0,0 +1,19 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ day: "monday"
8
+ open-pull-requests-limit: 5
9
+ ignore:
10
+ - dependency-name: "*"
11
+ update-types:
12
+ - "version-update:semver-major"
13
+
14
+ - package-ecosystem: "github-actions"
15
+ directory: "/"
16
+ schedule:
17
+ interval: "weekly"
18
+ day: "monday"
19
+ open-pull-requests-limit: 5
@@ -16,9 +16,9 @@ jobs:
16
16
  python-version: ["3.11", "3.12"]
17
17
 
18
18
  steps:
19
- - uses: actions/checkout@v4
19
+ - uses: actions/checkout@v7
20
20
 
21
- - uses: actions/setup-python@v4
21
+ - uses: actions/setup-python@v7
22
22
  with:
23
23
  python-version: ${{ matrix.python-version }}
24
24
 
@@ -0,0 +1,43 @@
1
+ name: CodeQL
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+ schedule:
11
+ - cron: '15 3 * * 0'
12
+
13
+ permissions:
14
+ actions: read
15
+ contents: read
16
+ security-events: write
17
+
18
+ env:
19
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
20
+
21
+ jobs:
22
+ analyze:
23
+ name: Analyze (python)
24
+ runs-on: ubuntu-latest
25
+
26
+ steps:
27
+ - name: Checkout repository
28
+ uses: actions/checkout@v7
29
+
30
+ - name: Initialize CodeQL
31
+ uses: github/codeql-action/init@v4
32
+ with:
33
+ languages: python
34
+ queries: +security-extended
35
+
36
+ - name: Autobuild
37
+ uses: github/codeql-action/autobuild@v4
38
+
39
+ - name: Perform CodeQL Analysis
40
+ uses: github/codeql-action/analyze@v4
41
+ continue-on-error: true
42
+ with:
43
+ category: /language:python
@@ -27,7 +27,7 @@ jobs:
27
27
  github.actor != 'imran-siddique'
28
28
  steps:
29
29
  - name: Checkout org action
30
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
30
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
31
31
  with:
32
32
  repository: agentrust-io/.github
33
33
  ref: main
@@ -6,6 +6,8 @@ on:
6
6
  paths:
7
7
  - "docs/**"
8
8
  - "spec/**"
9
+ - "overrides/**"
10
+ - "robots.txt"
9
11
  - "mkdocs.yml"
10
12
  - "requirements-docs.txt"
11
13
  - "README.md"
@@ -30,11 +32,11 @@ jobs:
30
32
  runs-on: ubuntu-latest
31
33
 
32
34
  steps:
33
- - uses: actions/checkout@v4
35
+ - uses: actions/checkout@v7
34
36
  with:
35
37
  fetch-depth: 0
36
38
 
37
- - uses: actions/setup-python@v6
39
+ - uses: actions/setup-python@v7
38
40
  with:
39
41
  python-version: "3.11"
40
42
  cache: pip
@@ -58,7 +60,7 @@ jobs:
58
60
  if [ -d spec ]; then cp -r spec $BUILD/spec; fi
59
61
  if [ -d examples ]; then cp -r examples $BUILD/examples; fi
60
62
 
61
- for fname in README.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md ROADMAP.md LIMITATIONS.md CNAME; do
63
+ for fname in README.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md ROADMAP.md LIMITATIONS.md CNAME robots.txt; do
62
64
  if [ -f "$fname" ]; then cp "$fname" "$BUILD/$fname"; fi
63
65
  done
64
66
 
@@ -16,9 +16,9 @@ jobs:
16
16
  build:
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
- - uses: actions/checkout@v4
19
+ - uses: actions/checkout@v7
20
20
 
21
- - uses: actions/setup-python@v4
21
+ - uses: actions/setup-python@v7
22
22
  with:
23
23
  python-version: "3.11"
24
24
 
@@ -27,7 +27,7 @@ jobs:
27
27
  pip install hatchling
28
28
  python -m hatchling build
29
29
 
30
- - uses: actions/upload-artifact@v4
30
+ - uses: actions/upload-artifact@v7
31
31
  with:
32
32
  name: dist
33
33
  path: dist/
@@ -37,9 +37,9 @@ jobs:
37
37
  runs-on: ubuntu-latest
38
38
  environment: pypi
39
39
  steps:
40
- - uses: actions/download-artifact@v4
40
+ - uses: actions/download-artifact@v8
41
41
  with:
42
42
  name: dist
43
43
  path: dist/
44
44
 
45
- - uses: pypa/gh-action-pypi-publish@release/v1
45
+ - uses: pypa/gh-action-pypi-publish@ba38be9e461d3875417946c167d0b5f3d385a247 # v1.14.1
@@ -22,7 +22,7 @@ jobs:
22
22
  if: github.event.pull_request.base.ref == 'main'
23
23
  steps:
24
24
  - name: Check for maintainer approval
25
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
25
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
26
26
  with:
27
27
  script: |
28
28
  const MAINTAINERS = ['imran-siddique'];
@@ -17,14 +17,14 @@ jobs:
17
17
  sbom:
18
18
  runs-on: ubuntu-latest
19
19
  steps:
20
- - uses: actions/checkout@v4
20
+ - uses: actions/checkout@v7
21
21
  - name: Generate SBOM
22
22
  uses: anchore/sbom-action@v0
23
23
  with:
24
24
  format: spdx-json
25
25
  output-file: sbom.spdx.json
26
26
  - name: Upload SBOM artifact
27
- uses: actions/upload-artifact@v4
27
+ uses: actions/upload-artifact@v7
28
28
  with:
29
29
  name: sbom
30
30
  path: sbom.spdx.json
@@ -0,0 +1,40 @@
1
+ name: OpenSSF Scorecard
2
+
3
+ on:
4
+ branch_protection_rule:
5
+ schedule:
6
+ - cron: '30 4 * * 1'
7
+ push:
8
+ branches:
9
+ - main
10
+
11
+ permissions: read-all
12
+
13
+ jobs:
14
+ scorecard:
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ security-events: write
18
+ id-token: write
19
+ contents: read
20
+ actions: read
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v7
24
+ with:
25
+ persist-credentials: false
26
+ fetch-depth: 0
27
+
28
+ - name: Run Scorecard
29
+ uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
30
+ with:
31
+ results_file: scorecard-results.sarif
32
+ results_format: sarif
33
+ # publish_results requires a public repo; flip to true after the
34
+ # 2026-06-23 public launch.
35
+ publish_results: false
36
+
37
+ - name: Upload SARIF
38
+ uses: github/codeql-action/upload-sarif@v4
39
+ with:
40
+ sarif_file: scorecard-results.sarif
@@ -1,76 +1,100 @@
1
- # Changelog
2
-
3
- All notable changes to the TRACE specification will be documented here.
4
-
5
- Format: [Semantic Versioning](https://semver.org/). Spec versions follow `MAJOR.MINOR.PATCH`:
6
- - **MAJOR**: breaking changes to wire format or required Trust Record fields
7
- - **MINOR**: new optional fields, new platform profiles, new conformance levels
8
- - **PATCH**: editorial fixes, clarifications, non-normative additions
9
-
10
- ---
11
-
12
- ## [0.3.0] — 2026-06-30
13
-
14
- ### Security
15
-
16
- - `verify_record` now requires an explicit trusted key. Self-verification from the embedded `cnf.jwk` is no longer the default; use `allow_embedded_key=True` to opt in.
17
- - Verification enforces freshness (`iat` / `max_age_seconds`, default 24h) and an optional `expected_nonce`. JWK `kty` / `crv` are validated.
18
-
19
- ### Breaking
20
-
21
- - **BREAKING:** Canonicalization is now RFC 8785 (JCS). Trust records are NOT cross-verifiable with 0.2.0 (the prior `json.dumps` canonicalization was non-conformant).
22
-
23
- ---
24
-
25
- ## [0.1.0] — 2026-06-23
26
-
27
- Initial public draft. Announced at Confidential Computing Summit, San Francisco.
28
-
29
- ### Specification
30
-
31
- - Trust Record logical schema (§3.1): `subject`, `model`, `runtime`, `policy`, `data_class`, `tool_transcript`, `build_provenance`, `appraisal`, `transparency`, `cnf`
32
- - Wire format (§3.2): EAT/JWT and CBOR-COSE envelopes; profile URI `tag:agentrust.io,2026:trace-v0.1`
33
- - Signing and key management (§3.2.1): ES256/ES384/EdDSA; four-layer key hierarchy; hash agility; revocation
34
- - Verification protocol (§3.3): five-step offline verification, no issuer callback
35
- - Standards composition (§4): RATS/EAT, SLSA, SPIFFE, SCITT, EAR, MCP, A2A, AIBOM, C2PA
36
- - Hardware roots (§4.2): NVIDIA H100/Blackwell, Intel TDX, AMD SEV-SNP, Azure MAA, GCP Confidential Space, AWS Nitro
37
- - Reference implementation (§5): cMCP Phase 1–3 roadmap
38
-
39
- ### Schema
40
-
41
- - `schema/trace-claim.json`: JSON Schema (draft/2020-12) for Trust Record validation
42
-
43
- ### Examples
44
-
45
- - `examples/amd-sev-snp.json`: AMD SEV-SNP Trust Record
46
- - `examples/intel-tdx.json`: Intel TDX Trust Record
47
- - `examples/nvidia-h100.json`: NVIDIA H100 Confidential Computing Trust Record
48
-
49
- ### Open questions
50
-
51
- Seven open questions requiring community input before v0.2 are documented in §7 of the spec.
52
-
53
- ---
54
-
55
- ## [0.2.0] TBD
56
-
57
- ### Specification
58
-
59
- - Extend `subject` field to accept DID URIs (any `did:` method) in addition to SPIFFE SVIDs.
60
- Previously `^spiffe://` only; now `^(spiffe://|did:)`. Additive, backward-compatible.
61
- DID-native runtimes (e.g. AGT `did:mesh:` identities) no longer require a parallel SPIFFE identity.
62
- Closes: microsoft/agent-governance-toolkit ADR-0032, agentrust-io/trace-spec#35.
63
-
64
- ### Schema
65
-
66
- - `schema/trace-claim.json`: `subject` pattern updated to `^(spiffe://|did:)`, description updated.
67
-
68
- ### Reference Implementation
69
-
70
- - `TrustRecord.subject` pattern updated to `r"^(spiffe://|did:)"`.
71
-
72
- ---
73
-
74
- ## Upcoming
75
-
76
- See [ROADMAP.md](ROADMAP.md) for planned changes in v0.2 and v1.0.
1
+ # Changelog
2
+
3
+ All notable changes to the TRACE specification will be documented here.
4
+
5
+ Format: [Semantic Versioning](https://semver.org/). Spec versions follow `MAJOR.MINOR.PATCH`:
6
+ - **MAJOR**: breaking changes to wire format or required Trust Record fields
7
+ - **MINOR**: new optional fields, new platform profiles, new conformance levels
8
+ - **PATCH**: editorial fixes, clarifications, non-normative additions
9
+
10
+ ---
11
+
12
+ ## [Unreleased]
13
+
14
+ ### Changed
15
+
16
+ - **BREAKING: TRACE v0.2 changes the EAT profile URI to `tag:agentrust-io.com,2026:trace-v0.2`** (was `tag:agentrust.io,2026:trace-v0.1`). `agentrust.io` was never a domain this project controlled; it resolves to third-party parked addresses. RFC 4151 permits a tag URI only where the minting authority controlled the named domain on the stated date, so the v0.1 identifier was invalid rather than merely misspelled: it asserted authority over a name someone else could stand up a conflicting definition at.
17
+
18
+ **Cutover, not coexistence.** A v0.2 verifier requires the new URI and rejects the old one; it does not accept both. Dual acceptance would keep the invalid identifier live indefinitely, which is the thing being fixed. Records already issued under v0.1 stay verifiable against `spec/trace-v0.1.md` and the published `agentrust-trace` 0.4.x releases, which remain on PyPI. They are v0.1 records and are read as such.
19
+
20
+ Nothing else in the record format changed. No field was added, removed, or re-typed, so migration for a producer is the profile string and a dependency bump.
21
+
22
+ Moved together: `spec/trace-v0.2.md` (new, with a "Changes from v0.1" section), `spec/trace-v0.1.md` (retained, marked superseded), the root `schema/trace-claim.json` const, the packaged `agentrust_trace/schema/trace-v0.2.json`, the `eat_profile` `Literal` in `models.py`, the AGT adapter, `validate.py`'s schema resource, the four platform example records, and the docs.
23
+
24
+ - Other `agentrust.io` URLs moved to `agentrust-io.com`: the registry and verifier hosts in the AGT adapter and the schema `$id`.
25
+
26
+ ## [0.4.0]
27
+
28
+ ### Added
29
+
30
+ - **`azure-cvm-sev-snp` platform** — Azure confidential VMs run AMD SEV-SNP behind a Hyper-V paravisor: the SNP report is read from the vTPM (the guest does not control `REPORT_DATA`), so the runtime binding rides a vTPM AK-signed quote rather than the SNP `report_data`. Given its own `runtime.platform` value (distinct from `amd-sev-snp`) so a consumer keying on `runtime.platform` knows the root of trust is vTPM-rooted, not direct-silicon. Added to the `RuntimeInfo` model and the JSON schema enum. Hardware-validated on a live Azure SEV-SNP VM via cMCP.
31
+
32
+ - `delegation` (optional object): the A2A profile delegation-link block, carrying `parent_record_hash` (digest of the parent hop's Trust Record) and `credential_id` (the delegation credential this hop acted under). A chain of records linked this way forms an offline-verifiable delegation DAG. Backward-compatible: existing records without `delegation` remain valid. This is a MINOR (additive) change and the foundation of the forthcoming A2A profile; A2A is now stable at v1.x, clearing the prior blocker.
33
+
34
+ ---
35
+
36
+ ## [0.3.0] 2026-06-30
37
+
38
+ ### Security
39
+
40
+ - `verify_record` now requires an explicit trusted key. Self-verification from the embedded `cnf.jwk` is no longer the default; use `allow_embedded_key=True` to opt in.
41
+ - Verification enforces freshness (`iat` / `max_age_seconds`, default 24h) and an optional `expected_nonce`. JWK `kty` / `crv` are validated.
42
+
43
+ ### Breaking
44
+
45
+ - **BREAKING:** Canonicalization is now RFC 8785 (JCS). Trust records are NOT cross-verifiable with 0.2.0 (the prior `json.dumps` canonicalization was non-conformant).
46
+
47
+ ---
48
+
49
+ ## [0.1.0] — 2026-06-23
50
+
51
+ Initial public draft. Announced at Confidential Computing Summit, San Francisco.
52
+
53
+ ### Specification
54
+
55
+ - Trust Record logical schema (§3.1): `subject`, `model`, `runtime`, `policy`, `data_class`, `tool_transcript`, `build_provenance`, `appraisal`, `transparency`, `cnf`
56
+ - Wire format (§3.2): EAT/JWT and CBOR-COSE envelopes; profile URI `tag:agentrust.io,2026:trace-v0.1`
57
+ - Signing and key management (§3.2.1): ES256/ES384/EdDSA; four-layer key hierarchy; hash agility; revocation
58
+ - Verification protocol (§3.3): five-step offline verification, no issuer callback
59
+ - Standards composition (§4): RATS/EAT, SLSA, SPIFFE, SCITT, EAR, MCP, A2A, AIBOM, C2PA
60
+ - Hardware roots (§4.2): NVIDIA H100/Blackwell, Intel TDX, AMD SEV-SNP, Azure MAA, GCP Confidential Space, AWS Nitro
61
+ - Reference implementation (§5): cMCP Phase 1–3 roadmap
62
+
63
+ ### Schema
64
+
65
+ - `schema/trace-claim.json`: JSON Schema (draft/2020-12) for Trust Record validation
66
+
67
+ ### Examples
68
+
69
+ - `examples/amd-sev-snp.json`: AMD SEV-SNP Trust Record
70
+ - `examples/intel-tdx.json`: Intel TDX Trust Record
71
+ - `examples/nvidia-h100.json`: NVIDIA H100 Confidential Computing Trust Record
72
+
73
+ ### Open questions
74
+
75
+ Seven open questions requiring community input before v0.2 are documented in §7 of the spec.
76
+
77
+ ---
78
+
79
+ ## [0.2.0] — TBD
80
+
81
+ ### Specification
82
+
83
+ - Extend `subject` field to accept DID URIs (any `did:` method) in addition to SPIFFE SVIDs.
84
+ Previously `^spiffe://` only; now `^(spiffe://|did:)`. Additive, backward-compatible.
85
+ DID-native runtimes (e.g. AGT `did:mesh:` identities) no longer require a parallel SPIFFE identity.
86
+ Closes: microsoft/agent-governance-toolkit ADR-0032, agentrust-io/trace-spec#35.
87
+
88
+ ### Schema
89
+
90
+ - `schema/trace-claim.json`: `subject` pattern updated to `^(spiffe://|did:)`, description updated.
91
+
92
+ ### Reference Implementation
93
+
94
+ - `TrustRecord.subject` pattern updated to `r"^(spiffe://|did:)"`.
95
+
96
+ ---
97
+
98
+ ## Upcoming
99
+
100
+ See [ROADMAP.md](ROADMAP.md) for planned changes in v0.2 and v1.0.
@@ -16,7 +16,7 @@ This adds `Signed-off-by: Your Name <you@example.com>`. PRs without DCO sign-off
16
16
 
17
17
  ### Spec changes (normative text)
18
18
 
19
- Changes to `spec/trace-v0.1.md` that affect what implementations must do.
19
+ Changes to `spec/trace-v0.2.md` that affect what implementations must do.
20
20
 
21
21
  1. Open a GitHub issue using the **Spec change proposal** template. Describe the problem, the proposed change, and the spec section affected.
22
22
  2. Allow 5 business days for comment. Changes touching wire format, cryptographic algorithms, or Trust Record required fields require 14 days.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentrust-trace
3
- Version: 0.3.0
3
+ Version: 0.5.0
4
4
  Summary: TRACE v0.1 — hardware-attested governance records for AI agents
5
5
  Project-URL: Homepage, https://github.com/agentrust-io/trace-spec
6
6
  Project-URL: Repository, https://github.com/agentrust-io/trace-spec
@@ -45,7 +45,7 @@ Description-Content-Type: text/markdown
45
45
  </p>
46
46
 
47
47
  <p align="center">
48
- <a href="spec/trace-v0.1.md">Specification</a> &nbsp;|&nbsp;
48
+ <a href="spec/trace-v0.2.md">Specification</a> &nbsp;|&nbsp;
49
49
  <a href="schema/trace-claim.json">Schema</a> &nbsp;|&nbsp;
50
50
  <a href="examples/">Examples</a> &nbsp;|&nbsp;
51
51
  <a href="https://github.com/agentrust-io/trace-registry">Registry</a> &nbsp;|&nbsp;
@@ -54,7 +54,7 @@ Description-Content-Type: text/markdown
54
54
  </p>
55
55
 
56
56
  [![License: CC BY 4.0](https://img.shields.io/badge/License-CC_BY_4.0-lightgrey.svg)](LICENSE)
57
- [![Spec](https://img.shields.io/badge/Spec-v0.1-0ea5e9)](spec/trace-v0.1.md)
57
+ [![Spec](https://img.shields.io/badge/Spec-v0.1-0ea5e9)](spec/trace-v0.2.md)
58
58
  [![PyPI](https://img.shields.io/pypi/v/agentrust-trace)](https://pypi.org/project/agentrust-trace/)
59
59
  [![CI](https://github.com/agentrust-io/trace-spec/actions/workflows/ci.yml/badge.svg)](https://github.com/agentrust-io/trace-spec/actions/workflows/ci.yml)
60
60
  [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white&style=flat)](https://discord.gg/grgzFEHgkj)
@@ -88,7 +88,7 @@ signed = sign_record(record, key=signing_key)
88
88
  | | |
89
89
  |---|---|
90
90
  | 📖 Full documentation | [trace.agentrust-io.com](https://trace.agentrust-io.com) |
91
- | 📄 Specification | [spec/trace-v0.1.md](spec/trace-v0.1.md) |
91
+ | 📄 Specification | [spec/trace-v0.2.md](spec/trace-v0.2.md) |
92
92
  | 🔍 Schema | [schema/trace-claim.json](schema/trace-claim.json) |
93
93
  | 📦 PyPI | [agentrust-trace](https://pypi.org/project/agentrust-trace/) |
94
94
  | 🧪 Test suite | [trace-tests](https://github.com/agentrust-io/trace-tests) |
@@ -101,6 +101,89 @@ signed = sign_record(record, key=signing_key)
101
101
 
102
102
  Targeting the [Agentic AI Foundation (AAIF)](https://agenticai.foundation) at the Linux Foundation. Active standardization track in [CoSAI WS4](https://github.com/oasis-open-projects/coalition-for-secure-ai). Builds on [RFC 9711 (EAT)](https://www.rfc-editor.org/rfc/rfc9711), [RFC 9334 (RATS)](https://www.rfc-editor.org/rfc/rfc9334), and SCITT draft-22.
103
103
 
104
+ ## Frequently asked questions
105
+
106
+ ### What is TRACE?
107
+
108
+ TRACE (Trust Runtime Attestation and Compliance Evidence) is an open specification for hardware-attested AI agent governance records. It defines the record format, the anchoring protocol, and the verification rules for cryptographic evidence that an AI agent ran under a specific policy, in a verified hardware environment, on a given data class, invoking identified tools.
109
+
110
+ ### What does a TRACE Trust Record prove?
111
+
112
+ A single signed Trust Record answers, in a form any third party can verify without trusting the operator: what model ran, where it ran, under which policy, what data class it touched, which tools were called, and whether the record is independently anchored to a SCITT transparency ledger.
113
+
114
+ ### What standards is TRACE built on?
115
+
116
+ TRACE builds on open IETF and IRTF standards: RFC 9711 (CBOR Web Token / EAT) for the claim envelope, RFC 9334 (RATS) for the attester, verifier, and relying-party roles, and the SCITT draft for transparency-ledger anchoring. It is designed for CoSAI WS4 interoperability.
117
+
118
+ ### How do I create and verify a Trust Record?
119
+
120
+ Install the Python library with `pip install agentrust-trace`, sign a record with `TrustRecord.sign(claims, signing_key)`, anchor it to a SCITT ledger with `record.anchor()`, and check it with `record.verify(verifying_key)`.
121
+
122
+ ### How does TRACE relate to AGT and cMCP?
123
+
124
+ TRACE is the evidence format. AGT and cMCP produce and consume Trust Records, so you can connect them into an end-to-end agent governance pipeline. See the integration guides for details.
125
+
126
+ ### What is the current status of TRACE?
127
+
128
+ The current specification is TRACE v0.2, published with a conformance test suite. See the Limitations page for scope boundaries before relying on it in production.
129
+
130
+ <script type="application/ld+json">
131
+ {
132
+ "@context": "https://schema.org",
133
+ "@type": "FAQPage",
134
+ "mainEntity": [
135
+ {
136
+ "@type": "Question",
137
+ "name": "What is TRACE?",
138
+ "acceptedAnswer": {
139
+ "@type": "Answer",
140
+ "text": "TRACE (Trust Runtime Attestation and Compliance Evidence) is an open specification for hardware-attested AI agent governance records. It defines the record format, the anchoring protocol, and the verification rules for cryptographic evidence that an AI agent ran under a specific policy, in a verified hardware environment, on a given data class, invoking identified tools."
141
+ }
142
+ },
143
+ {
144
+ "@type": "Question",
145
+ "name": "What does a TRACE Trust Record prove?",
146
+ "acceptedAnswer": {
147
+ "@type": "Answer",
148
+ "text": "A single signed Trust Record answers, in a form any third party can verify without trusting the operator: what model ran, where it ran, under which policy, what data class it touched, which tools were called, and whether the record is independently anchored to a SCITT transparency ledger."
149
+ }
150
+ },
151
+ {
152
+ "@type": "Question",
153
+ "name": "What standards is TRACE built on?",
154
+ "acceptedAnswer": {
155
+ "@type": "Answer",
156
+ "text": "TRACE builds on open IETF and IRTF standards: RFC 9711 (CBOR Web Token / EAT) for the claim envelope, RFC 9334 (RATS) for the attester, verifier, and relying-party roles, and the SCITT draft for transparency-ledger anchoring. It is designed for CoSAI WS4 interoperability."
157
+ }
158
+ },
159
+ {
160
+ "@type": "Question",
161
+ "name": "How do I create and verify a Trust Record?",
162
+ "acceptedAnswer": {
163
+ "@type": "Answer",
164
+ "text": "Install the Python library with pip install agentrust-trace, sign a record with TrustRecord.sign(claims, signing_key), anchor it to a SCITT ledger with record.anchor(), and check it with record.verify(verifying_key)."
165
+ }
166
+ },
167
+ {
168
+ "@type": "Question",
169
+ "name": "How does TRACE relate to AGT and cMCP?",
170
+ "acceptedAnswer": {
171
+ "@type": "Answer",
172
+ "text": "TRACE is the evidence format. AGT and cMCP produce and consume Trust Records, so you can connect them into an end-to-end agent governance pipeline. See the integration guides for details."
173
+ }
174
+ },
175
+ {
176
+ "@type": "Question",
177
+ "name": "What is the current status of TRACE?",
178
+ "acceptedAnswer": {
179
+ "@type": "Answer",
180
+ "text": "The current specification is TRACE v0.2, published with a conformance test suite. See the Limitations page for scope boundaries before relying on it in production."
181
+ }
182
+ }
183
+ ]
184
+ }
185
+ </script>
186
+
104
187
  ## Contributing
105
188
 
106
189
  See [CONTRIBUTING.md](CONTRIBUTING.md) and [GOVERNANCE.md](GOVERNANCE.md). All contributors must agree to the [ANTITRUST.md](ANTITRUST.md) policy.
@@ -0,0 +1,9 @@
1
+ # Privacy
2
+
3
+ agentrust-trace (the TRACE SDK) collects and transmits no personal data.
4
+
5
+ It runs locally as a Python library. It processes only the inputs you give it, entirely on your machine, and sends no telemetry, analytics, or usage data to agentrust-io, OPAQUE, or any third party. There is no account, login, or tracking, and no cookies or background network calls.
6
+
7
+ Any network activity is user-initiated: anchoring a record to a SCITT transparency service happens only when you explicitly call it, to the endpoint you configure.
8
+
9
+ Uninstalling removes it completely. Questions or corrections: https://github.com/agentrust-io/trace-spec/issues