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.
- agentrust_trace-0.5.0/.github/CODEOWNERS +5 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/PULL_REQUEST_TEMPLATE.md +1 -1
- agentrust_trace-0.5.0/.github/dependabot.yml +19 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/ci.yml +2 -2
- agentrust_trace-0.5.0/.github/workflows/codeql.yml +43 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/contributor-check.yml +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/docs.yml +5 -3
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/publish.yml +5 -5
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/require-maintainer-approval.yml +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/workflows/sbom.yml +2 -2
- agentrust_trace-0.5.0/.github/workflows/scorecard.yml +40 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CHANGELOG.md +100 -76
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CONTRIBUTING.md +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/PKG-INFO +87 -4
- agentrust_trace-0.5.0/PRIVACY.md +9 -0
- agentrust_trace-0.5.0/README.md +155 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/ROADMAP.md +48 -48
- agentrust_trace-0.5.0/docs/assets/og.png +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/crosswalks/owasp-agentic-top-10.md +7 -7
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/glossary.md +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/index.md +9 -2
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/quickstart.md +9 -5
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/schema.md +175 -165
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/trust-levels.md +7 -3
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/agt-adapter.md +4 -4
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/anchoring-to-the-registry.md +2 -2
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/hardware-attestation-platforms.md +1 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/signing-your-first-trust-record.md +2 -2
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/verifying-a-trust-record.md +2 -2
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/verification.md +35 -4
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/README.md +3 -0
- agentrust_trace-0.5.0/examples/action-receipts/README.md +111 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/01-valid-controller-accepted.json +52 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/02-valid-controller-rejected.json +52 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/03-missing-required-receipt.json +35 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/04-signature-key-mismatch.json +54 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/05-action-ref-mismatch.json +54 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/06-stale-receipt.json +54 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/07-receipt-chain-gap.json +54 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/08-same-party-self-report.json +54 -0
- agentrust_trace-0.5.0/examples/action-receipts/conformance/09-unsupported-physical-completion.json +54 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/amd-sev-snp.json +5 -5
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/intel-tdx.json +5 -5
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/nvidia-h100.json +5 -5
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/examples/tpm2.json +7 -7
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/mkdocs.yml +34 -1
- agentrust_trace-0.5.0/overrides/main.html +68 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/pyproject.toml +1 -1
- agentrust_trace-0.5.0/requirements-docs.txt +7 -0
- agentrust_trace-0.5.0/robots.txt +35 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/schema/trace-claim.json +285 -266
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/spec/trace-v0.1.md +41 -1
- agentrust_trace-0.5.0/spec/trace-v0.2.md +486 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/__init__.py +55 -53
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/adapters/agt.py +3 -3
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/models.py +166 -143
- agentrust_trace-0.5.0/src/agentrust_trace/schema/trace-v0.1.json +285 -0
- 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
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/sign.py +3 -3
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/validate.py +1 -1
- agentrust_trace-0.5.0/tests/test_action_receipt_fixtures.py +166 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/test_agt_adapter.py +2 -2
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/test_models.py +206 -165
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/test_sign.py +11 -1
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.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.5.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/.github/ISSUE_TEMPLATE/spec_change.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/ADOPTERS.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/ANTITRUST.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CHARTER.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CNAME +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/CODE_OF_CONDUCT.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/GOVERNANCE.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/LICENSE +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/LIMITATIONS.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/MAINTAINERS.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/NOTICE +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/SECURITY.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/assets/icon.svg +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/integration/agt.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/integration/cmcp.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/amd-sev-snp.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/index.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/intel-tdx.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/platforms/nvidia-h100.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/stylesheets/extra.css +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/integrating-with-cmcp.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/docs/tutorials/verifying-the-audit-chain.md +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/adapters/__init__.py +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/src/agentrust_trace/py.typed +0 -0
- {agentrust_trace-0.3.0 → agentrust_trace-0.5.0}/tests/__init__.py +0 -0
|
@@ -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.
|
|
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? -->
|
|
@@ -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,11 +32,11 @@ 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
|
|
|
37
|
-
- uses: actions/setup-python@
|
|
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@
|
|
19
|
+
- uses: actions/checkout@v7
|
|
20
20
|
|
|
21
|
-
- uses: actions/setup-python@
|
|
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@
|
|
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@ba38be9e461d3875417946c167d0b5f3d385a247 # v1.14.1
|
{agentrust_trace-0.3.0 → agentrust_trace-0.5.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,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
|
-
## [
|
|
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
|
+
### 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.
|
|
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
|
+
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.
|
|
48
|
+
<a href="spec/trace-v0.2.md">Specification</a> |
|
|
49
49
|
<a href="schema/trace-claim.json">Schema</a> |
|
|
50
50
|
<a href="examples/">Examples</a> |
|
|
51
51
|
<a href="https://github.com/agentrust-io/trace-registry">Registry</a> |
|
|
@@ -54,7 +54,7 @@ Description-Content-Type: text/markdown
|
|
|
54
54
|
</p>
|
|
55
55
|
|
|
56
56
|
[](LICENSE)
|
|
57
|
-
[](spec/trace-v0.
|
|
57
|
+
[](spec/trace-v0.2.md)
|
|
58
58
|
[](https://pypi.org/project/agentrust-trace/)
|
|
59
59
|
[](https://github.com/agentrust-io/trace-spec/actions/workflows/ci.yml)
|
|
60
60
|
[](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.
|
|
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
|