diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index ca03c14..12998ad 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -67,7 +67,7 @@ jobs: # host. exclude_docs drops the three that are served from the apex. if [ -d schema ]; then cp -r schema $BUILD/schema; fi - for fname in README.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md ROADMAP.md LIMITATIONS.md PRIVACY.md CNAME robots.txt; do + for fname in index.md CHANGELOG.md CONTRIBUTING.md GOVERNANCE.md CHARTER.md CODE_OF_CONDUCT.md MAINTAINERS.md ROADMAP.md LIMITATIONS.md PRIVACY.md CNAME robots.txt; do if [ -f "$fname" ]; then cp "$fname" "$BUILD/$fname"; fi done diff --git a/README.md b/README.md index 7fb82d4..6adb783 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ [](Governance/COMMUNITY-SPECIFICATION-LICENSE.md) [](LICENSE) -[](spec/trace-v0.2.md) +[](spec/trace-v0.2.md) [](https://pypi.org/project/agentrust-trace/) [](https://github.com/agentrust-io/trace-spec/actions/workflows/ci.yml) [](https://discord.gg/grgzFEHgkj) @@ -29,7 +29,7 @@ TRACE Specification is an LF Project, hosted at the Linux Foundation as its own series, "TRACE Specification, a Series of LF Projects, LLC".
-> **Developer Preview.** Launching at Confidential Computing Summit, June 23 2026. +> **Developer Preview.** Launched at Confidential Computing Summit, 23 June 2026. Spec v0.2 is current. See [LIMITATIONS.md](LIMITATIONS.md) before relying on it in production. 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, all bound into a single signed artifact rooted in silicon attestation. diff --git a/docs/crosswalks/acta-decision-receipts.md b/docs/crosswalks/acta-decision-receipts.md index 3d4f9f5..8f280c0 100644 --- a/docs/crosswalks/acta-decision-receipts.md +++ b/docs/crosswalks/acta-decision-receipts.md @@ -98,7 +98,7 @@ An Acta decision receipt proves that a specific policy decision, over a specific ## Conformance fixtures -Six real fixtures in [`examples/action-receipts/acta/`](../../examples/action-receipts/acta/), generated by an actual Ed25519 signer (generator committed alongside), covering the negative cases raised in [trace-spec#97](https://github.com/agentrust-io/trace-spec/issues/97) and [trace-spec#95](https://github.com/agentrust-io/trace-spec/issues/95): valid accepted, valid denied (negative controller-equivalent outcome), signature/key mismatch (mismatched key committed), broken chain (validly signed, wrong predecessor hash), stale policy digest, and mismatched session binding. Expected outcomes are machine-readable in `expected.json`, and [`tests/test_acta_fixtures.py`](../../tests/test_acta_fixtures.py) re-verifies every fixture in CI against the draft-02 envelope and the declared positive/negative results, using this repository's existing `rfc8785` and `cryptography` dependencies, so fixture or envelope drift fails the build. +Six real fixtures in [`examples/action-receipts/acta/`](../../examples/action-receipts/acta/), generated by an actual Ed25519 signer (generator committed alongside), covering the negative cases raised in [trace-spec#97](https://github.com/agentrust-io/trace-spec/issues/97) and [trace-spec#95](https://github.com/agentrust-io/trace-spec/issues/95): valid accepted, valid denied (negative controller-equivalent outcome), signature/key mismatch (mismatched key committed), broken chain (validly signed, wrong predecessor hash), stale policy digest, and mismatched session binding. Expected outcomes are machine-readable in `expected.json`, and [`tests/test_acta_fixtures.py`](https://github.com/agentrust-io/trace-spec/blob/main/tests/test_acta_fixtures.py) re-verifies every fixture in CI against the draft-02 envelope and the declared positive/negative results, using this repository's existing `rfc8785` and `cryptography` dependencies, so fixture or envelope drift fails the build. ## References diff --git a/index.md b/index.md new file mode 100644 index 0000000..2a90ae6 --- /dev/null +++ b/index.md @@ -0,0 +1,93 @@ +--- +title: Hardware-attested receipts for AI agent actions +description: TRACE is an open specification for hardware-attested AI agent governance records. A Trust Record states what ran, where, under which policy, touching which data, calling which tools, in a form any third party can verify without trusting the operator. +--- + +# TRACE + +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, all bound into a single signed artifact rooted in silicon attestation. + +**A Trust Record answers what ran, where, under which policy, touching which data, and calling which tools, in a form any third party can verify without trusting the operator.** + +!!! tip "TL;DR" + - An audit log is written by the system being audited. A Trust Record is signed inside a TEE and checked against a hardware root, so the operator cannot author it after the fact. + - The current specification is **v0.2**, with a [conformance test suite](https://tests.agentrust-io.com) that scores a record by level. + - Install with `pip install agentrust-trace` and sign your first record in a few minutes. + - TRACE Specification is hosted at the Linux Foundation as its own series, [TRACE Specification, a Series of LF Projects, LLC](https://www.linuxfoundation.org/). + +```bash +pip install agentrust-trace +``` + +```python +from agentrust_trace import TrustRecord, sign_record + +record = TrustRecord( + subject="spiffe://trust.example.org/agent/payments-processor", + model_id="claude-sonnet-4-6", + platform="amd-sev-snp", + policy_hash="sha256:b2c3d4...", +) +signed = sign_record(record, key=signing_key) +``` + +## What a Trust Record proves + +Each question maps to a claim a third party can check without asking you. + +| Question | TRACE claim | +|---|---| +| What model ran? | `model.model_id` + `model.weights_digest` | +| Where did it run? | `runtime.platform` + `runtime.measurement` | +| Under which policy? | `policy.bundle_hash` + `policy.enforcement_mode` | +| What data did it touch? | `data_class` | +| Which tools were called? | `tool_transcript.hash` + `tool_transcript.call_count` | +| Is the record independently anchored? | `anchoring.receipt_uri` (SCITT) | + +## Where to start + +