agentrust-trace 0.3.0__tar.gz → 0.4.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.
- agentrust_trace-0.4.0/.github/CODEOWNERS +5 -0
- agentrust_trace-0.4.0/.github/dependabot.yml +19 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/workflows/ci.yml +2 -2
- agentrust_trace-0.4.0/.github/workflows/codeql.yml +43 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/workflows/contributor-check.yml +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/workflows/docs.yml +4 -2
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/workflows/publish.yml +5 -5
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/workflows/require-maintainer-approval.yml +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/workflows/sbom.yml +2 -2
- agentrust_trace-0.4.0/.github/workflows/scorecard.yml +40 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/CHANGELOG.md +88 -76
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/PKG-INFO +84 -1
- agentrust_trace-0.4.0/PRIVACY.md +9 -0
- agentrust_trace-0.4.0/README.md +155 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/ROADMAP.md +48 -48
- agentrust_trace-0.4.0/docs/assets/og.png +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/index.md +7 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/quickstart.md +4 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/schema.md +175 -165
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/trust-levels.md +4 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/verification.md +33 -2
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/examples/README.md +3 -0
- agentrust_trace-0.4.0/examples/action-receipts/README.md +111 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/01-valid-controller-accepted.json +52 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/02-valid-controller-rejected.json +52 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/03-missing-required-receipt.json +35 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/04-signature-key-mismatch.json +54 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/05-action-ref-mismatch.json +54 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/06-stale-receipt.json +54 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/07-receipt-chain-gap.json +54 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/08-same-party-self-report.json +54 -0
- agentrust_trace-0.4.0/examples/action-receipts/conformance/09-unsupported-physical-completion.json +54 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/mkdocs.yml +33 -0
- agentrust_trace-0.4.0/overrides/main.html +68 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/pyproject.toml +1 -1
- agentrust_trace-0.4.0/requirements-docs.txt +7 -0
- agentrust_trace-0.4.0/robots.txt +35 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/schema/trace-claim.json +285 -266
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/spec/trace-v0.1.md +39 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/__init__.py +55 -53
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/models.py +166 -143
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/schema/trace-v0.1.json +285 -266
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/sign.py +2 -2
- agentrust_trace-0.4.0/tests/test_action_receipt_fixtures.py +166 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/tests/test_models.py +187 -146
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/tests/test_sign.py +10 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/tests/test_validate.py +88 -73
- agentrust_trace-0.3.0/README.md +0 -72
- agentrust_trace-0.3.0/requirements-docs.txt +0 -6
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/ISSUE_TEMPLATE/spec_change.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/ADOPTERS.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/ANTITRUST.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/CHARTER.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/CNAME +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/CODE_OF_CONDUCT.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/CONTRIBUTING.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/GOVERNANCE.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/LICENSE +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/LIMITATIONS.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/MAINTAINERS.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/NOTICE +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/SECURITY.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/assets/icon.svg +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/crosswalks/owasp-agentic-top-10.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/glossary.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/integration/agt.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/integration/cmcp.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/platforms/amd-sev-snp.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/platforms/index.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/platforms/intel-tdx.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/platforms/nvidia-h100.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/stylesheets/extra.css +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/tutorials/agt-adapter.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/tutorials/anchoring-to-the-registry.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/tutorials/hardware-attestation-platforms.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/tutorials/integrating-with-cmcp.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/tutorials/signing-your-first-trust-record.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/tutorials/verifying-a-trust-record.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/docs/tutorials/verifying-the-audit-chain.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/examples/amd-sev-snp.json +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/examples/intel-tdx.json +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/examples/nvidia-h100.json +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/examples/tpm2.json +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/adapters/__init__.py +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/adapters/agt.py +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/py.typed +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/src/agentrust_trace/validate.py +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/tests/__init__.py +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/tests/test_agt_adapter.py +0 -0
|
@@ -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
|
|
@@ -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@
|
|
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,7 +32,7 @@ jobs:
|
|
|
30
32
|
runs-on: ubuntu-latest
|
|
31
33
|
|
|
32
34
|
steps:
|
|
33
|
-
- uses: actions/checkout@
|
|
35
|
+
- uses: actions/checkout@v7
|
|
34
36
|
with:
|
|
35
37
|
fetch-depth: 0
|
|
36
38
|
|
|
@@ -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@
|
|
19
|
+
- uses: actions/checkout@v7
|
|
20
20
|
|
|
21
|
-
- uses: actions/setup-python@
|
|
21
|
+
- uses: actions/setup-python@v6
|
|
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@
|
|
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@
|
|
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@
|
|
45
|
+
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
{agentrust_trace-0.3.0 → agentrust_trace-0.4.0}/.github/workflows/require-maintainer-approval.yml
RENAMED
|
@@ -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@
|
|
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@
|
|
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@
|
|
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,88 @@
|
|
|
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
|
-
## [
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
+
## [0.4.0]
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- **`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.
|
|
19
|
+
|
|
20
|
+
- `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.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## [0.3.0] — 2026-06-30
|
|
25
|
+
|
|
26
|
+
### Security
|
|
27
|
+
|
|
28
|
+
- `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.
|
|
29
|
+
- Verification enforces freshness (`iat` / `max_age_seconds`, default 24h) and an optional `expected_nonce`. JWK `kty` / `crv` are validated.
|
|
30
|
+
|
|
31
|
+
### Breaking
|
|
32
|
+
|
|
33
|
+
- **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).
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## [0.1.0] — 2026-06-23
|
|
38
|
+
|
|
39
|
+
Initial public draft. Announced at Confidential Computing Summit, San Francisco.
|
|
40
|
+
|
|
41
|
+
### Specification
|
|
42
|
+
|
|
43
|
+
- Trust Record logical schema (§3.1): `subject`, `model`, `runtime`, `policy`, `data_class`, `tool_transcript`, `build_provenance`, `appraisal`, `transparency`, `cnf`
|
|
44
|
+
- Wire format (§3.2): EAT/JWT and CBOR-COSE envelopes; profile URI `tag:agentrust.io,2026:trace-v0.1`
|
|
45
|
+
- Signing and key management (§3.2.1): ES256/ES384/EdDSA; four-layer key hierarchy; hash agility; revocation
|
|
46
|
+
- Verification protocol (§3.3): five-step offline verification, no issuer callback
|
|
47
|
+
- Standards composition (§4): RATS/EAT, SLSA, SPIFFE, SCITT, EAR, MCP, A2A, AIBOM, C2PA
|
|
48
|
+
- Hardware roots (§4.2): NVIDIA H100/Blackwell, Intel TDX, AMD SEV-SNP, Azure MAA, GCP Confidential Space, AWS Nitro
|
|
49
|
+
- Reference implementation (§5): cMCP Phase 1–3 roadmap
|
|
50
|
+
|
|
51
|
+
### Schema
|
|
52
|
+
|
|
53
|
+
- `schema/trace-claim.json`: JSON Schema (draft/2020-12) for Trust Record validation
|
|
54
|
+
|
|
55
|
+
### Examples
|
|
56
|
+
|
|
57
|
+
- `examples/amd-sev-snp.json`: AMD SEV-SNP Trust Record
|
|
58
|
+
- `examples/intel-tdx.json`: Intel TDX Trust Record
|
|
59
|
+
- `examples/nvidia-h100.json`: NVIDIA H100 Confidential Computing Trust Record
|
|
60
|
+
|
|
61
|
+
### Open questions
|
|
62
|
+
|
|
63
|
+
Seven open questions requiring community input before v0.2 are documented in §7 of the spec.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## [0.2.0] — TBD
|
|
68
|
+
|
|
69
|
+
### Specification
|
|
70
|
+
|
|
71
|
+
- Extend `subject` field to accept DID URIs (any `did:` method) in addition to SPIFFE SVIDs.
|
|
72
|
+
Previously `^spiffe://` only; now `^(spiffe://|did:)`. Additive, backward-compatible.
|
|
73
|
+
DID-native runtimes (e.g. AGT `did:mesh:` identities) no longer require a parallel SPIFFE identity.
|
|
74
|
+
Closes: microsoft/agent-governance-toolkit ADR-0032, agentrust-io/trace-spec#35.
|
|
75
|
+
|
|
76
|
+
### Schema
|
|
77
|
+
|
|
78
|
+
- `schema/trace-claim.json`: `subject` pattern updated to `^(spiffe://|did:)`, description updated.
|
|
79
|
+
|
|
80
|
+
### Reference Implementation
|
|
81
|
+
|
|
82
|
+
- `TrustRecord.subject` pattern updated to `r"^(spiffe://|did:)"`.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Upcoming
|
|
87
|
+
|
|
88
|
+
See [ROADMAP.md](ROADMAP.md) for planned changes in v0.2 and v1.0.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentrust-trace
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.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
|
|
@@ -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.1, 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.1, 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
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/icon.svg" width="96" height="96" alt="TRACE"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# TRACE: Trust Runtime Attestation and Compliance Evidence
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://trace.agentrust-io.com">
|
|
9
|
+
<img src="https://img.shields.io/badge/%F0%9F%93%96_Full_Documentation-trace.agentrust--io.com-8251EE?style=for-the-badge&logoColor=white" alt="Full Documentation" height="40">
|
|
10
|
+
</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="spec/trace-v0.1.md">Specification</a> |
|
|
15
|
+
<a href="schema/trace-claim.json">Schema</a> |
|
|
16
|
+
<a href="examples/">Examples</a> |
|
|
17
|
+
<a href="https://github.com/agentrust-io/trace-registry">Registry</a> |
|
|
18
|
+
<a href="https://github.com/agentrust-io/trace-tests">Test Suite</a> |
|
|
19
|
+
<a href="https://github.com/agentrust-io/cmcp">Reference Impl</a>
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
[](LICENSE)
|
|
23
|
+
[](spec/trace-v0.1.md)
|
|
24
|
+
[](https://pypi.org/project/agentrust-trace/)
|
|
25
|
+
[](https://github.com/agentrust-io/trace-spec/actions/workflows/ci.yml)
|
|
26
|
+
[](https://discord.gg/grgzFEHgkj)
|
|
27
|
+
|
|
28
|
+
> **Developer Preview.** Launching at Confidential Computing Summit, June 23 2026.
|
|
29
|
+
|
|
30
|
+
An open specification for hardware-attested AI agent governance records. TRACE defines the format, anchoring protocol, and verification rules for cryptographically provable evidence that an AI agent ran under a specific policy, in a verified hardware environment, on classified data, invoking identified tools — bound into a single signed artifact rooted in silicon attestation.
|
|
31
|
+
|
|
32
|
+
A TRACE Trust Record answers: _what ran, where, under which policy, touching which data, calling which tools_ — in a form any third party can verify without trusting the operator.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install agentrust-trace
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
from agentrust_trace import TrustRecord, sign_record
|
|
42
|
+
|
|
43
|
+
record = TrustRecord(
|
|
44
|
+
subject="spiffe://trust.example.org/agent/payments-processor",
|
|
45
|
+
model_id="claude-sonnet-4-6",
|
|
46
|
+
platform="amd-sev-snp",
|
|
47
|
+
policy_hash="sha256:b2c3d4...",
|
|
48
|
+
)
|
|
49
|
+
signed = sign_record(record, key=signing_key)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Resources
|
|
53
|
+
|
|
54
|
+
| | |
|
|
55
|
+
|---|---|
|
|
56
|
+
| 📖 Full documentation | [trace.agentrust-io.com](https://trace.agentrust-io.com) |
|
|
57
|
+
| 📄 Specification | [spec/trace-v0.1.md](spec/trace-v0.1.md) |
|
|
58
|
+
| 🔍 Schema | [schema/trace-claim.json](schema/trace-claim.json) |
|
|
59
|
+
| 📦 PyPI | [agentrust-trace](https://pypi.org/project/agentrust-trace/) |
|
|
60
|
+
| 🧪 Test suite | [trace-tests](https://github.com/agentrust-io/trace-tests) |
|
|
61
|
+
| 🗂 Registry | [trace-registry](https://github.com/agentrust-io/trace-registry) |
|
|
62
|
+
| 🔗 Reference implementation | [cmcp](https://github.com/agentrust-io/cmcp) |
|
|
63
|
+
| 💬 Discussions | [GitHub Discussions](https://github.com/orgs/agentrust-io/discussions) |
|
|
64
|
+
| 📋 Changelog | [CHANGELOG.md](CHANGELOG.md) |
|
|
65
|
+
|
|
66
|
+
## Standards alignment
|
|
67
|
+
|
|
68
|
+
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.
|
|
69
|
+
|
|
70
|
+
## Frequently asked questions
|
|
71
|
+
|
|
72
|
+
### What is TRACE?
|
|
73
|
+
|
|
74
|
+
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.
|
|
75
|
+
|
|
76
|
+
### What does a TRACE Trust Record prove?
|
|
77
|
+
|
|
78
|
+
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.
|
|
79
|
+
|
|
80
|
+
### What standards is TRACE built on?
|
|
81
|
+
|
|
82
|
+
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.
|
|
83
|
+
|
|
84
|
+
### How do I create and verify a Trust Record?
|
|
85
|
+
|
|
86
|
+
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)`.
|
|
87
|
+
|
|
88
|
+
### How does TRACE relate to AGT and cMCP?
|
|
89
|
+
|
|
90
|
+
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.
|
|
91
|
+
|
|
92
|
+
### What is the current status of TRACE?
|
|
93
|
+
|
|
94
|
+
The current specification is TRACE v0.1, published with a conformance test suite. See the Limitations page for scope boundaries before relying on it in production.
|
|
95
|
+
|
|
96
|
+
<script type="application/ld+json">
|
|
97
|
+
{
|
|
98
|
+
"@context": "https://schema.org",
|
|
99
|
+
"@type": "FAQPage",
|
|
100
|
+
"mainEntity": [
|
|
101
|
+
{
|
|
102
|
+
"@type": "Question",
|
|
103
|
+
"name": "What is TRACE?",
|
|
104
|
+
"acceptedAnswer": {
|
|
105
|
+
"@type": "Answer",
|
|
106
|
+
"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."
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"@type": "Question",
|
|
111
|
+
"name": "What does a TRACE Trust Record prove?",
|
|
112
|
+
"acceptedAnswer": {
|
|
113
|
+
"@type": "Answer",
|
|
114
|
+
"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."
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"@type": "Question",
|
|
119
|
+
"name": "What standards is TRACE built on?",
|
|
120
|
+
"acceptedAnswer": {
|
|
121
|
+
"@type": "Answer",
|
|
122
|
+
"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."
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"@type": "Question",
|
|
127
|
+
"name": "How do I create and verify a Trust Record?",
|
|
128
|
+
"acceptedAnswer": {
|
|
129
|
+
"@type": "Answer",
|
|
130
|
+
"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)."
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"@type": "Question",
|
|
135
|
+
"name": "How does TRACE relate to AGT and cMCP?",
|
|
136
|
+
"acceptedAnswer": {
|
|
137
|
+
"@type": "Answer",
|
|
138
|
+
"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."
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"@type": "Question",
|
|
143
|
+
"name": "What is the current status of TRACE?",
|
|
144
|
+
"acceptedAnswer": {
|
|
145
|
+
"@type": "Answer",
|
|
146
|
+
"text": "The current specification is TRACE v0.1, published with a conformance test suite. See the Limitations page for scope boundaries before relying on it in production."
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
</script>
|
|
152
|
+
|
|
153
|
+
## Contributing
|
|
154
|
+
|
|
155
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) and [GOVERNANCE.md](GOVERNANCE.md). All contributors must agree to the [ANTITRUST.md](ANTITRUST.md) policy.
|