agentrust-trace-tests 0.1.0__tar.gz → 0.3.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_tests-0.3.0/.github/CODEOWNERS +5 -0
- agentrust_trace_tests-0.3.0/.github/dependabot.yml +19 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/.github/workflows/ci.yml +2 -2
- agentrust_trace_tests-0.3.0/.github/workflows/codeql.yml +43 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/.github/workflows/contributor-check.yml +1 -1
- agentrust_trace_tests-0.3.0/.github/workflows/docs.yml +66 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/.github/workflows/release.yml +1 -1
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/.github/workflows/require-maintainer-approval.yml +1 -1
- agentrust_trace_tests-0.3.0/.github/workflows/scorecard.yml +40 -0
- agentrust_trace_tests-0.3.0/CHANGELOG.md +20 -0
- agentrust_trace_tests-0.3.0/CNAME +1 -0
- agentrust_trace_tests-0.3.0/PKG-INFO +102 -0
- agentrust_trace_tests-0.3.0/PRIVACY.md +9 -0
- agentrust_trace_tests-0.3.0/README.md +65 -0
- agentrust_trace_tests-0.3.0/docs/error-codes.md +57 -0
- agentrust_trace_tests-0.3.0/docs/levels.md +167 -0
- agentrust_trace_tests-0.3.0/docs/modules/tr-anc.md +10 -0
- agentrust_trace_tests-0.3.0/docs/modules/tr-env.md +12 -0
- agentrust_trace_tests-0.3.0/docs/modules/tr-pol.md +10 -0
- agentrust_trace_tests-0.3.0/docs/modules/tr-rte.md +11 -0
- agentrust_trace_tests-0.3.0/docs/modules/tr-sca.md +10 -0
- agentrust_trace_tests-0.3.0/docs/modules/tr-sig.md +12 -0
- agentrust_trace_tests-0.3.0/docs/modules/tr-txn.md +10 -0
- agentrust_trace_tests-0.3.0/docs/modules.md +13 -0
- agentrust_trace_tests-0.3.0/docs/quickstart.md +114 -0
- agentrust_trace_tests-0.3.0/docs/stylesheets/extra.css +247 -0
- agentrust_trace_tests-0.3.0/docs/tutorials/ci-integration.md +209 -0
- agentrust_trace_tests-0.3.0/docs/tutorials/writing-conformance-tests.md +247 -0
- agentrust_trace_tests-0.3.0/mkdocs.yml +144 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/pyproject.toml +1 -1
- agentrust_trace_tests-0.3.0/requirements-docs.txt +6 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/schemas/trace-claim.json +3 -3
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/__init__.py +1 -1
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/loader.py +3 -1
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/tr_env.py +5 -3
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/tr_rte.py +22 -3
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/tr_sca.py +2 -2
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/tr_sig.py +29 -11
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/runner.py +1 -1
- agentrust_trace_tests-0.3.0/tests/conftest.py +185 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/test_level0.py +5 -5
- agentrust_trace_tests-0.3.0/tests/test_level0_negative.py +268 -0
- agentrust_trace_tests-0.3.0/tests/test_level1.py +120 -0
- agentrust_trace_tests-0.3.0/tests/test_level2.py +126 -0
- agentrust_trace_tests-0.3.0/tests/test_software_only_platform.py +87 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_loader.py +4 -1
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_tr_env.py +13 -1
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_tr_rte.py +7 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_tr_sig.py +49 -0
- agentrust_trace_tests-0.1.0/PKG-INFO +0 -94
- agentrust_trace_tests-0.1.0/README.md +0 -57
- agentrust_trace_tests-0.1.0/tests/conftest.py +0 -39
- agentrust_trace_tests-0.1.0/tests/test_level1.py +0 -17
- agentrust_trace_tests-0.1.0/tests/test_level2.py +0 -17
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/.gitignore +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/CODE_OF_CONDUCT.md +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/CONTRIBUTING.md +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/LICENSE +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/SECURITY.md +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/cli.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/__init__.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/tr_anc.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/tr_pol.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/modules/tr_txn.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/src/trace_tests/result.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/__init__.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/test_schema.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/__init__.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_cli.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_runner.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_tr_anc.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/unit/test_tr_pol.py +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/vectors/invalid_missing_runtime.json +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/vectors/invalid_wrong_profile.json +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/vectors/valid_cmcp_runtime.json +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/vectors/valid_level0.json +0 -0
- {agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/tests/vectors/valid_level0_with_transcript.json +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
|
|
@@ -16,8 +16,8 @@ jobs:
|
|
|
16
16
|
matrix:
|
|
17
17
|
python-version: ["3.11", "3.12", "3.13"]
|
|
18
18
|
steps:
|
|
19
|
-
- uses: actions/checkout@
|
|
20
|
-
- uses: actions/setup-python@
|
|
19
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
20
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v5.3.0
|
|
21
21
|
with:
|
|
22
22
|
python-version: ${{ matrix.python-version }}
|
|
23
23
|
- name: Install package and test deps
|
|
@@ -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
|
{agentrust_trace_tests-0.1.0 → agentrust_trace_tests-0.3.0}/.github/workflows/contributor-check.yml
RENAMED
|
@@ -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
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- "mkdocs.yml"
|
|
9
|
+
- "requirements-docs.txt"
|
|
10
|
+
- "README.md"
|
|
11
|
+
- "CHANGELOG.md"
|
|
12
|
+
- "CONTRIBUTING.md"
|
|
13
|
+
- "CNAME"
|
|
14
|
+
workflow_dispatch:
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: write
|
|
18
|
+
|
|
19
|
+
concurrency:
|
|
20
|
+
group: docs-deploy
|
|
21
|
+
cancel-in-progress: false
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
deploy:
|
|
25
|
+
name: Build and deploy docs
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v7
|
|
30
|
+
with:
|
|
31
|
+
fetch-depth: 0
|
|
32
|
+
|
|
33
|
+
- uses: actions/setup-python@v6
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.11"
|
|
36
|
+
cache: pip
|
|
37
|
+
|
|
38
|
+
- name: Install docs dependencies
|
|
39
|
+
run: |
|
|
40
|
+
pip install -r requirements-docs.txt
|
|
41
|
+
pip install -e "."
|
|
42
|
+
|
|
43
|
+
- name: Configure git for gh-deploy
|
|
44
|
+
run: |
|
|
45
|
+
git config user.name "github-actions[bot]"
|
|
46
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
47
|
+
|
|
48
|
+
- name: Assemble docs build directory
|
|
49
|
+
run: |
|
|
50
|
+
BUILD=.docs_build
|
|
51
|
+
mkdir -p $BUILD
|
|
52
|
+
|
|
53
|
+
if [ -d docs ]; then cp -r docs $BUILD/docs; fi
|
|
54
|
+
|
|
55
|
+
for fname in README.md CHANGELOG.md CONTRIBUTING.md CNAME; do
|
|
56
|
+
if [ -f "$fname" ]; then cp "$fname" "$BUILD/$fname"; fi
|
|
57
|
+
done
|
|
58
|
+
|
|
59
|
+
echo "Build dir contains $(find $BUILD -type f | wc -l) files"
|
|
60
|
+
|
|
61
|
+
- name: Generate build config
|
|
62
|
+
run: |
|
|
63
|
+
sed 's|^docs_dir: \.$|docs_dir: .docs_build|' mkdocs.yml > .mkdocs_build.yml
|
|
64
|
+
|
|
65
|
+
- name: Build and deploy to GitHub Pages
|
|
66
|
+
run: mkdocs gh-deploy --force --clean --config-file .mkdocs_build.yml
|
|
@@ -12,7 +12,7 @@ jobs:
|
|
|
12
12
|
build:
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
|
16
16
|
|
|
17
17
|
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
18
18
|
with:
|
|
@@ -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'];
|
|
@@ -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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## v0.3.0 — 2026-07-21
|
|
6
|
+
|
|
7
|
+
- `azure-cvm-sev-snp` platform accepted (`runtime.platform`): Azure confidential VMs run SEV-SNP behind a Hyper-V paravisor (vTPM-rooted). Added to the bundled schema enum and the TR-RTE valid-platform set so Azure TRACE records pass conformance. Matches `agentrust-trace>=0.4`.
|
|
8
|
+
|
|
9
|
+
## v0.2.0 — 2026-06-19
|
|
10
|
+
|
|
11
|
+
- DID subject support: `subject` now accepts `did:` URIs in addition to `spiffe://`.
|
|
12
|
+
- Embedded signature verification: plain TRACE records signed with `agentrust-trace sign_record()` are now cryptographically verified at all levels.
|
|
13
|
+
- SLSA Level 0: `build_provenance.slsa_level: 0` is now valid for software-only / development records.
|
|
14
|
+
- Software-only platform: `runtime.platform: "software-only"` accepted at Level 0.
|
|
15
|
+
- Private key leak detection: TR-SIG now fails records that embed a private key (`d` member) in `cnf.jwk`.
|
|
16
|
+
|
|
17
|
+
## v0.1.0 — 2026-05-01
|
|
18
|
+
|
|
19
|
+
- Initial release with 7 test modules: TR-ENV, TR-SIG, TR-RTE, TR-POL, TR-TXN, TR-ANC, TR-SCA.
|
|
20
|
+
- Conformance levels 0, 1, 2.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tests.agentrust-io.com
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentrust-trace-tests
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: TRACE conformance test suite
|
|
5
|
+
Project-URL: Homepage, https://github.com/agentrust-io/trace-tests
|
|
6
|
+
Project-URL: Repository, https://github.com/agentrust-io/trace-tests
|
|
7
|
+
Project-URL: Documentation, https://github.com/agentrust-io/trace-tests#readme
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/agentrust-io/trace-tests/issues
|
|
9
|
+
Author: agentrust.io
|
|
10
|
+
License: Apache-2.0
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: ai-agents,attestation,conformance,provenance,trace
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Topic :: Security
|
|
21
|
+
Classifier: Topic :: Software Development :: Testing
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Requires-Dist: click>=8.1
|
|
24
|
+
Requires-Dist: cryptography>=42
|
|
25
|
+
Requires-Dist: jsonschema>=4.23
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: bandit; extra == 'dev'
|
|
28
|
+
Requires-Dist: mypy; extra == 'dev'
|
|
29
|
+
Requires-Dist: pip-audit; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
31
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
32
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
33
|
+
Provides-Extra: test
|
|
34
|
+
Requires-Dist: pytest-cov; extra == 'test'
|
|
35
|
+
Requires-Dist: pytest>=8.0; extra == 'test'
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
|
|
38
|
+
<p align="center">
|
|
39
|
+
<img src="docs/assets/icon.svg" width="96" height="96" alt="TRACE Tests"/>
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
# TRACE Conformance Test Suite
|
|
43
|
+
|
|
44
|
+
### Verify your TRACE implementation before shipping
|
|
45
|
+
|
|
46
|
+
<p align="center">
|
|
47
|
+
<a href="https://tests.agentrust-io.com">
|
|
48
|
+
<img src="https://img.shields.io/badge/%F0%9F%93%96_Full_Documentation-tests.agentrust--io.com-C17817?style=for-the-badge&logoColor=white" alt="Full Documentation" height="40">
|
|
49
|
+
</a>
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
<p align="center">
|
|
53
|
+
<a href="docs/quickstart.md">Quick Start</a> |
|
|
54
|
+
<a href="docs/modules.md">Test Modules</a> |
|
|
55
|
+
<a href="docs/levels.md">Conformance Levels</a> |
|
|
56
|
+
<a href="CHANGELOG.md">Changelog</a>
|
|
57
|
+
</p>
|
|
58
|
+
|
|
59
|
+
[](LICENSE)
|
|
60
|
+
[](https://github.com/agentrust-io/trace-spec)
|
|
61
|
+
[]()
|
|
62
|
+
[](https://github.com/agentrust-io/trace-tests/actions/workflows/ci.yml)
|
|
63
|
+
[](https://discord.gg/9JWNpH7E)
|
|
64
|
+
|
|
65
|
+
> **Test suite v0.2.** Tracks [TRACE Spec v0.2](https://github.com/agentrust-io/trace-spec).
|
|
66
|
+
|
|
67
|
+
Conformance tests for TRACE — Trust Runtime Attestation and Compliance Evidence. Run this suite against your implementation to verify it meets the spec before claiming TRACE compliance.
|
|
68
|
+
|
|
69
|
+
Seven test modules covering the full specification: envelope structure, signature algorithms, TEE runtime claims, policy binding, tool-call transcripts, SCITT transparency anchoring, and supply chain provenance.
|
|
70
|
+
|
|
71
|
+
## Quick start
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install trace-tests
|
|
75
|
+
trace-tests verify --record path/to/trust-record.jwt --level 1
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Test modules
|
|
79
|
+
|
|
80
|
+
| Module | ID | Tests |
|
|
81
|
+
|---|---|---|
|
|
82
|
+
| Envelope | `TR-ENV` | EAT structure, required fields, `iat` validity |
|
|
83
|
+
| Signature | `TR-SIG` | ES256/ES384/EdDSA, key binding, chain |
|
|
84
|
+
| Runtime | `TR-RTE` | TEE platform, measurement format, RIM URI |
|
|
85
|
+
| Policy | `TR-POL` | Bundle hash, enforcement mode, TEE binding |
|
|
86
|
+
| Transcript | `TR-TXN` | Tool-call transcript hash binding (Phase 2+) |
|
|
87
|
+
| Transparency | `TR-ANC` | SCITT receipt URI, inclusion proof |
|
|
88
|
+
| Provenance | `TR-SCA` | SLSA level, builder URI, digest format |
|
|
89
|
+
|
|
90
|
+
## Resources
|
|
91
|
+
|
|
92
|
+
| | |
|
|
93
|
+
|---|---|
|
|
94
|
+
| 📖 Full documentation | [tests.agentrust-io.com](https://tests.agentrust-io.com) |
|
|
95
|
+
| 📄 TRACE Specification | [trace-spec](https://github.com/agentrust-io/trace-spec) |
|
|
96
|
+
| 🗂 Test schemas | [schemas/](schemas/) |
|
|
97
|
+
| 💬 Discussions | [GitHub Discussions](https://github.com/orgs/agentrust-io/discussions) |
|
|
98
|
+
| 📋 Changelog | [CHANGELOG.md](CHANGELOG.md) |
|
|
99
|
+
|
|
100
|
+
## Contributing
|
|
101
|
+
|
|
102
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md). New test cases must include a normative spec reference, a positive case, and a negative case with a structured error code (`TR-<MODULE>-<NNN>`).
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Privacy
|
|
2
|
+
|
|
3
|
+
agentrust-trace-tests (the TRACE conformance suite) collects and transmits no personal data.
|
|
4
|
+
|
|
5
|
+
It runs locally as a command-line tool. 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
|
+
It reads only the record file you pass on the command line and makes no outbound calls.
|
|
8
|
+
|
|
9
|
+
Uninstalling removes it completely. Questions or corrections: https://github.com/agentrust-io/trace-tests/issues
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/icon.svg" width="96" height="96" alt="TRACE Tests"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# TRACE Conformance Test Suite
|
|
6
|
+
|
|
7
|
+
### Verify your TRACE implementation before shipping
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://tests.agentrust-io.com">
|
|
11
|
+
<img src="https://img.shields.io/badge/%F0%9F%93%96_Full_Documentation-tests.agentrust--io.com-C17817?style=for-the-badge&logoColor=white" alt="Full Documentation" height="40">
|
|
12
|
+
</a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<a href="docs/quickstart.md">Quick Start</a> |
|
|
17
|
+
<a href="docs/modules.md">Test Modules</a> |
|
|
18
|
+
<a href="docs/levels.md">Conformance Levels</a> |
|
|
19
|
+
<a href="CHANGELOG.md">Changelog</a>
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
[](LICENSE)
|
|
23
|
+
[](https://github.com/agentrust-io/trace-spec)
|
|
24
|
+
[]()
|
|
25
|
+
[](https://github.com/agentrust-io/trace-tests/actions/workflows/ci.yml)
|
|
26
|
+
[](https://discord.gg/9JWNpH7E)
|
|
27
|
+
|
|
28
|
+
> **Test suite v0.2.** Tracks [TRACE Spec v0.2](https://github.com/agentrust-io/trace-spec).
|
|
29
|
+
|
|
30
|
+
Conformance tests for TRACE — Trust Runtime Attestation and Compliance Evidence. Run this suite against your implementation to verify it meets the spec before claiming TRACE compliance.
|
|
31
|
+
|
|
32
|
+
Seven test modules covering the full specification: envelope structure, signature algorithms, TEE runtime claims, policy binding, tool-call transcripts, SCITT transparency anchoring, and supply chain provenance.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pip install trace-tests
|
|
38
|
+
trace-tests verify --record path/to/trust-record.jwt --level 1
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Test modules
|
|
42
|
+
|
|
43
|
+
| Module | ID | Tests |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| Envelope | `TR-ENV` | EAT structure, required fields, `iat` validity |
|
|
46
|
+
| Signature | `TR-SIG` | ES256/ES384/EdDSA, key binding, chain |
|
|
47
|
+
| Runtime | `TR-RTE` | TEE platform, measurement format, RIM URI |
|
|
48
|
+
| Policy | `TR-POL` | Bundle hash, enforcement mode, TEE binding |
|
|
49
|
+
| Transcript | `TR-TXN` | Tool-call transcript hash binding (Phase 2+) |
|
|
50
|
+
| Transparency | `TR-ANC` | SCITT receipt URI, inclusion proof |
|
|
51
|
+
| Provenance | `TR-SCA` | SLSA level, builder URI, digest format |
|
|
52
|
+
|
|
53
|
+
## Resources
|
|
54
|
+
|
|
55
|
+
| | |
|
|
56
|
+
|---|---|
|
|
57
|
+
| 📖 Full documentation | [tests.agentrust-io.com](https://tests.agentrust-io.com) |
|
|
58
|
+
| 📄 TRACE Specification | [trace-spec](https://github.com/agentrust-io/trace-spec) |
|
|
59
|
+
| 🗂 Test schemas | [schemas/](schemas/) |
|
|
60
|
+
| 💬 Discussions | [GitHub Discussions](https://github.com/orgs/agentrust-io/discussions) |
|
|
61
|
+
| 📋 Changelog | [CHANGELOG.md](CHANGELOG.md) |
|
|
62
|
+
|
|
63
|
+
## Contributing
|
|
64
|
+
|
|
65
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md). New test cases must include a normative spec reference, a positive case, and a negative case with a structured error code (`TR-<MODULE>-<NNN>`).
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Error Codes
|
|
2
|
+
|
|
3
|
+
All TRACE test failures emit a structured error code of the form `TR-<MODULE>-<NNN>`.
|
|
4
|
+
|
|
5
|
+
## TR-ENV — Envelope
|
|
6
|
+
|
|
7
|
+
| Code | Description | How to fix |
|
|
8
|
+
|------|-------------|------------|
|
|
9
|
+
| TR-ENV-001 | Missing or invalid `eat_profile` URI | Set `eat_profile` to `"tag:agentrust.io,2026:trace-v0.1"` |
|
|
10
|
+
| TR-ENV-002 | `iat` is missing, not an integer, or out of range | Set `iat` to a Unix timestamp integer (e.g. `int(time.time())`) |
|
|
11
|
+
| TR-ENV-003 | `subject` does not match SPIFFE URI or DID pattern | Use `spiffe://<trust-domain>/<path>` or a `did:` URI |
|
|
12
|
+
| TR-ENV-004 | One or more required fields are absent | Add the missing field(s); check the [Schema Reference](https://trace.agentrust-io.com/schema) for the full required set |
|
|
13
|
+
|
|
14
|
+
## TR-SIG — Signature
|
|
15
|
+
|
|
16
|
+
| Code | Description | How to fix |
|
|
17
|
+
|------|-------------|------------|
|
|
18
|
+
| TR-SIG-001 | Signature algorithm is not Ed25519 | Generate an Ed25519 key (`generate_key()`) and re-sign; ES256 and RS256 are not accepted |
|
|
19
|
+
| TR-SIG-002 | `cnf.jwk` missing or malformed | Populate `cnf.jwk` with the OKP public key `{"kty":"OKP","crv":"Ed25519","x":"..."}` — `sign_record()` does this automatically |
|
|
20
|
+
| TR-SIG-003 | Signature verification failed | Re-sign the record with `sign_record(record, key)`; the record fields must not have changed after signing |
|
|
21
|
+
| TR-SIG-004 | Private key material (`d` member) found in `cnf.jwk` | Remove the `d` field before embedding the JWK; `key_to_jwk()` returns the public-only form |
|
|
22
|
+
|
|
23
|
+
## TR-RTE — Runtime
|
|
24
|
+
|
|
25
|
+
| Code | Description | How to fix |
|
|
26
|
+
|------|-------------|------------|
|
|
27
|
+
| TR-RTE-001 | `runtime.platform` is not a recognised TEE enum value | Use one of: `software-only`, `tpm2`, `sev-snp`, `tdx`, `opaque` |
|
|
28
|
+
| TR-RTE-002 | `runtime.measurement` is not a valid `sha256:` digest | Provide a 64-character hex digest prefixed with `sha256:`; for Level 0 all-zeros is conventional |
|
|
29
|
+
| TR-RTE-003 | RIM URI present but does not resolve to a valid reference image | Remove `runtime.rim_uri` if not using a RIM, or ensure the URI returns a valid reference manifest over HTTPS |
|
|
30
|
+
|
|
31
|
+
## TR-POL — Policy
|
|
32
|
+
|
|
33
|
+
| Code | Description | How to fix |
|
|
34
|
+
|------|-------------|------------|
|
|
35
|
+
| TR-POL-001 | `policy.bundle_hash` is not a valid `sha256:` digest | Compute `sha256:` + hex digest of your Cedar policy bundle bytes |
|
|
36
|
+
| TR-POL-002 | `policy.enforcement_mode` is not `enforce`, `advisory`, or `silent` | Replace `"strict"` or `"monitor"` with `"enforce"`, `"advisory"`, or `"silent"` |
|
|
37
|
+
|
|
38
|
+
## TR-TXN — Transcript
|
|
39
|
+
|
|
40
|
+
| Code | Description | How to fix |
|
|
41
|
+
|------|-------------|------------|
|
|
42
|
+
| TR-TXN-001 | `tool_transcript.hash` is not a valid `sha256:` digest | Set `tool_transcript.hash` to `sha256:` + 64 hex chars of the Merkle root of the tool call log |
|
|
43
|
+
| TR-TXN-002 | `tool_transcript.call_count` is negative or not an integer | Set `tool_transcript.call_count` to a non-negative integer (0 is valid for sessions with no tool calls) |
|
|
44
|
+
|
|
45
|
+
## TR-ANC — Transparency
|
|
46
|
+
|
|
47
|
+
| Code | Description | How to fix |
|
|
48
|
+
|------|-------------|------------|
|
|
49
|
+
| TR-ANC-001 | `transparency` field missing or empty | Submit the record to a SCITT transparency log and set `transparency` to the returned receipt URI |
|
|
50
|
+
| TR-ANC-002 | `transparency` URI does not use `https://` scheme | Only `https://` URIs are accepted; update the URI or use the agentrust registry at `https://registry.agentrust.io` |
|
|
51
|
+
|
|
52
|
+
## TR-SCA — Provenance
|
|
53
|
+
|
|
54
|
+
| Code | Description | How to fix |
|
|
55
|
+
|------|-------------|------------|
|
|
56
|
+
| TR-SCA-001 | `build_provenance.slsa_level` is not 0–4 | Set `build_provenance.slsa_level` to an integer 0–4 matching your SLSA build level |
|
|
57
|
+
| TR-SCA-002 | `build_provenance.digest` is not a valid `sha256:` digest | Set `build_provenance.digest` to `sha256:` + 64 hex chars of the container image or artifact digest |
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Conformance Levels
|
|
2
|
+
|
|
3
|
+
TRACE defines three conformance levels. Higher levels require all lower-level modules plus additional ones.
|
|
4
|
+
|
|
5
|
+
| Level | Required Modules | Use Case |
|
|
6
|
+
|-------|-----------------|----------|
|
|
7
|
+
| **0** | TR-ENV, TR-SIG, TR-POL | Software-only development and staging |
|
|
8
|
+
| **1** | Level 0 + TR-RTE, TR-SCA | Production TEE-attested records |
|
|
9
|
+
| **2** | Level 1 + TR-TXN, TR-ANC | Full records with transparency anchoring |
|
|
10
|
+
|
|
11
|
+
## Level 0 — Software-only
|
|
12
|
+
|
|
13
|
+
Level 0 records are signed with a software key. The `runtime.platform` must be `"software-only"`. All-zero measurement is conventional for development use.
|
|
14
|
+
|
|
15
|
+
**Minimum conformant Level 0 record:**
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"eat_profile": "tag:agentrust.io,2026:trace-v0.1",
|
|
20
|
+
"iat": 1750000000,
|
|
21
|
+
"subject": "spiffe://trust.example.org/agent/my-agent",
|
|
22
|
+
"model": {
|
|
23
|
+
"provider": "anthropic",
|
|
24
|
+
"model_id": "claude-sonnet-4-6",
|
|
25
|
+
"version": "20251001"
|
|
26
|
+
},
|
|
27
|
+
"runtime": {
|
|
28
|
+
"platform": "software-only",
|
|
29
|
+
"measurement": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
|
30
|
+
},
|
|
31
|
+
"policy": {
|
|
32
|
+
"bundle_hash": "sha256:b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3",
|
|
33
|
+
"enforcement_mode": "enforce"
|
|
34
|
+
},
|
|
35
|
+
"data_class": "internal",
|
|
36
|
+
"build_provenance": {
|
|
37
|
+
"slsa_level": 1,
|
|
38
|
+
"digest": "sha256:e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6"
|
|
39
|
+
},
|
|
40
|
+
"appraisal": {
|
|
41
|
+
"status": "none",
|
|
42
|
+
"verifier": "https://verifier.example.org"
|
|
43
|
+
},
|
|
44
|
+
"transparency": "https://registry.agentrust.io/claim/placeholder",
|
|
45
|
+
"cnf": {
|
|
46
|
+
"jwk": {
|
|
47
|
+
"kty": "OKP",
|
|
48
|
+
"crv": "Ed25519",
|
|
49
|
+
"x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"signature": "eyJhbGciOiJFZERTQSJ9..."
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Modules tested:** TR-ENV, TR-SIG, TR-POL
|
|
57
|
+
|
|
58
|
+
**What causes a Level 0 failure:**
|
|
59
|
+
|
|
60
|
+
- `eat_profile` missing or wrong value — TR-ENV-001
|
|
61
|
+
- `runtime.platform` is a TEE value (e.g. `sev-snp`) but Level 0 is requested — TR-RTE-001 does not apply, but TR-ENV still checks the envelope
|
|
62
|
+
- `policy.enforcement_mode` is `"strict"` or `"monitor"` — TR-POL-002
|
|
63
|
+
- `cnf.jwk` missing or contains private key material (`d` field) — TR-SIG-002, TR-SIG-004
|
|
64
|
+
- Signature does not verify against `cnf.jwk` — TR-SIG-003
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Level 1 — TEE Attestation
|
|
69
|
+
|
|
70
|
+
Level 1 adds hardware attestation. `runtime.platform` must be one of: `tpm2`, `sev-snp`, `tdx`, `opaque`. The measurement must be non-zero. `appraisal.status` must be `"affirming"`.
|
|
71
|
+
|
|
72
|
+
**Minimum conformant Level 1 record** (changes from Level 0 in bold context):
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"eat_profile": "tag:agentrust.io,2026:trace-v0.1",
|
|
77
|
+
"iat": 1750000000,
|
|
78
|
+
"subject": "spiffe://trust.example.org/agent/my-agent",
|
|
79
|
+
"model": {
|
|
80
|
+
"provider": "anthropic",
|
|
81
|
+
"model_id": "claude-sonnet-4-6",
|
|
82
|
+
"version": "20251001"
|
|
83
|
+
},
|
|
84
|
+
"runtime": {
|
|
85
|
+
"platform": "sev-snp",
|
|
86
|
+
"measurement": "sha256:a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2"
|
|
87
|
+
},
|
|
88
|
+
"policy": {
|
|
89
|
+
"bundle_hash": "sha256:b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3",
|
|
90
|
+
"enforcement_mode": "enforce"
|
|
91
|
+
},
|
|
92
|
+
"data_class": "confidential",
|
|
93
|
+
"build_provenance": {
|
|
94
|
+
"slsa_level": 2,
|
|
95
|
+
"digest": "sha256:e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6"
|
|
96
|
+
},
|
|
97
|
+
"appraisal": {
|
|
98
|
+
"status": "affirming",
|
|
99
|
+
"verifier": "https://verifier.agentrust.io"
|
|
100
|
+
},
|
|
101
|
+
"transparency": "https://registry.agentrust.io/claim/placeholder",
|
|
102
|
+
"cnf": {
|
|
103
|
+
"jwk": {
|
|
104
|
+
"kty": "OKP",
|
|
105
|
+
"crv": "Ed25519",
|
|
106
|
+
"x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo"
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"signature": "eyJhbGciOiJFZERTQSJ9..."
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Modules tested:** TR-ENV, TR-SIG, TR-POL, TR-RTE, TR-SCA
|
|
114
|
+
|
|
115
|
+
**What causes a Level 1 failure over Level 0:**
|
|
116
|
+
|
|
117
|
+
- `runtime.platform` is `"software-only"` — TR-RTE-001
|
|
118
|
+
- `runtime.measurement` is all zeros — TR-RTE-002 (all-zero is invalid at Level 1)
|
|
119
|
+
- `build_provenance` missing entirely — TR-SCA-001, TR-SCA-002
|
|
120
|
+
- `appraisal.status` is `"none"` — while not a hard schema violation, a conformant Level 1 record should carry `"affirming"`
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Level 2 — Transparency Anchoring
|
|
125
|
+
|
|
126
|
+
Level 2 adds tool transcript and transparency anchor requirements. The `transparency` field must be a resolvable HTTPS URI pointing to a SCITT receipt, not the placeholder value.
|
|
127
|
+
|
|
128
|
+
**Minimum conformant Level 2 record** (additional fields over Level 1):
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"tool_transcript": {
|
|
133
|
+
"hash": "sha256:c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4",
|
|
134
|
+
"call_count": 4
|
|
135
|
+
},
|
|
136
|
+
"transparency": "https://registry.agentrust.io/claim/01J3XKWP4NQZ8R5HT6YD7VMBCE",
|
|
137
|
+
"anchor": {
|
|
138
|
+
"log_id": "https://registry.agentrust.io",
|
|
139
|
+
"leaf_hash": "sha256:f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Modules tested:** TR-ENV, TR-SIG, TR-POL, TR-RTE, TR-SCA, TR-TXN, TR-ANC
|
|
145
|
+
|
|
146
|
+
**What causes a Level 2 failure over Level 1:**
|
|
147
|
+
|
|
148
|
+
- `tool_transcript.hash` missing or not a valid `sha256:` digest — TR-TXN-001
|
|
149
|
+
- `tool_transcript.call_count` negative or not an integer — TR-TXN-002
|
|
150
|
+
- `transparency` is the placeholder URI, missing, or not HTTPS — TR-ANC-001
|
|
151
|
+
- `anchor.leaf_hash` missing or not a valid `sha256:` digest — TR-ANC-002
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Choosing a level
|
|
156
|
+
|
|
157
|
+
- Use **Level 0** during development. Records can use `runtime.platform: "software-only"` and `build_provenance.slsa_level: 0`.
|
|
158
|
+
- Use **Level 1** for production deployments in a TEE (AMD SEV-SNP, Intel TDX, NVIDIA H100).
|
|
159
|
+
- Use **Level 2** when you need an auditable, tamper-evident log with a SCITT transparency service.
|
|
160
|
+
|
|
161
|
+
The certification program (launching 2027) will require Level 1 at minimum.
|
|
162
|
+
|
|
163
|
+
## Related
|
|
164
|
+
|
|
165
|
+
- [Error Codes](error-codes.md) — every TR-* error with description and fix
|
|
166
|
+
- [Test Modules](modules/index.md) — per-module test lists with positive and negative cases
|
|
167
|
+
- [TRACE Trust Levels](https://trace.agentrust-io.com/trust-levels) — full specification of what each level proves
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# TR-ANC — Transparency
|
|
2
|
+
|
|
3
|
+
Tests transparency anchoring via SCITT.
|
|
4
|
+
|
|
5
|
+
## Required at Level 2+
|
|
6
|
+
|
|
7
|
+
| Test ID | Description | Positive Case | Negative Case |
|
|
8
|
+
|---------|-------------|---------------|---------------|
|
|
9
|
+
| TR-ANC-001 | `transparency` is a non-empty URI | `https://transparency.example/entries/abc123` | missing field, empty string |
|
|
10
|
+
| TR-ANC-002 | URI scheme is `https://` | `https://` prefix | `http://`, bare path, `ipfs://` |
|