Skip to content

Commit fbe032f

Browse files
committed
sage-agenttrust: record the real 2026-09-15 run and correct the C-2 conformance note
The manifest's tested_against block recorded a run that never happened: PR #61 bumped agentrust-trace 0.2.0 -> 0.5.0 mechanically across the repo, and this bridge was actually last exercised against agentrust-trace 0.2.0 / cmcp-runtime 0.2.1 in June. The bridge has since been re-run against current releases and updated (l33tdawg/sage-agenttrust@3441b3a8), so this records what was actually run: - tested_against: agentrust-trace 0.10.0, cmcp-runtime 0.5.0, plus agentrust-trace-tests 0.5.1, a key the block was missing. - The C-2 note is inverted. agentrust-trace-tests 0.5.1 loads a standalone TRACE record as fmt="trace"; 0.1.0 raised LoadError on it. The bare C-2 record is therefore graded for the first time and passes Level 0, so the "carries no conformance level" comment is no longer true. Level 1 remains unclaimed: software-only has no hardware root. - vendor: the schema defines this as "company or community project behind the integration" and every other entry uses an org slug. This one named the integration instead. Now SAGE. - README: current package versions and the v11.19.22 image digest, the corrected conformance sentence, an additional reproduction bullet for the C-2 Level 0 / Level 1 pair, and the canonicalization note corrected to RFC 8785 (the library moved to rfc8785.dumps in 0.10.0; the bridge verifies with the same recipe). marketplace/catalog.json regenerated per CONTRIBUTING (one field: vendor). scripts/validate_integrations.py: 37 integrations, 0 failures. pytest tests/test_validate_integrations.py tests/test_integration_schema.py tests/test_generate_marketplace_catalog.py tests/test_validate_compatibility.py: 19 passed.
1 parent f28dc91 commit fbe032f

3 files changed

Lines changed: 25 additions & 20 deletions

File tree

integrations/sage-agenttrust/README.md

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,39 @@ Two paths:
2929
**no** per-write binding and the agent controls the gateway key, so C-1 is provenance that an
3030
agent ran behind an attested gateway — **not** per-write authorization.
3131

32-
**What it does not claim:** the bridge does **not** verify any hardware root of trust with the
33-
published AgenTrust stack — `cmcp_verify`'s per-platform verifiers check the measurement
34-
format/parse but **defer the silicon root** (TPM EK chains / AMD VCEK / Intel DCAP quote
35-
signatures go to *unverified_fields*, "out of scope for Phase 1"), and a C-2 record's
36-
`runtime.platform` is self-asserted. So it **never** reports
32+
**What it does not claim:** the bridge does **not** verify any hardware root of trust, because it
33+
pins none. `cmcp_verify` 0.5.0 does carry real silicon-root checks now (TPM AK/EK chains to a
34+
pinned manufacturer CA, AMD VCEK/VLEK, Intel DCAP quotes), but they only run when the caller pins
35+
a trusted root. So it **never** reports
3736
`hardware_backed`; `verification` is always `edge-only` and a claimed TEE platform is surfaced
3837
only as `platform_claimed` (unverified). Attestation here authenticates the *author and policy*
3938
of a write — **not** the truth of the content (SAGE's content hash and confidence stay
4039
client-asserted). Verification is at the edge (the digest is not re-checked in SAGE consensus —
4140
proposed upstream, not shipped); the badge reflects edge-verification at submit (`proposed`)
42-
time, not consensus commit. `agentrust-trace-tests` **rejects** a self-signed bare TRACE record
43-
(`LoadError`: a `signature` field without `cmcp_version`) and never grades it, so we make **no**
44-
conformance-level claim for the C-2 path; the cMCP-envelope form passes `agentrust-trace-tests`
45-
**0.1.0** Level 0. The `ReplayCache` (byte-identical de-dup) only blocks naive third-party
41+
time, not consensus commit. **Both paths are graded, and both pass Level 0:** the cMCP-envelope
42+
form as before, and the self-signed bare TRACE record since `agentrust-trace-tests` 0.5.1 began
43+
loading it as `fmt="trace"` (0.1.0 raised `LoadError` on it, so the C-2 path previously carried no
44+
conformance claim at all). Level 1 is correctly **not** claimed — software-only has no hardware
45+
root. The `ReplayCache` (byte-identical de-dup) only blocks naive third-party
4646
replay, not the minting agent, is **process-local** (a multi-instance deployment needs a shared
4747
store) and effective single-instance only. The `GET /v1/attestation/{memory_id}` badge endpoint
4848
is **unauthenticated** read-only — no secrets, but it discloses the attestation digest, `cnf`
49-
thumbprint, and SPIFFE subject for a known `memory_id`. Canonicalization follows
50-
`agentrust_trace`'s recipe (sorted-keys JSON), which equals RFC 8785 / JCS only for ASCII string
51-
+ integer-number content.
49+
thumbprint, and SPIFFE subject for a known `memory_id`. Canonicalization is RFC 8785 (JCS):
50+
`agentrust_trace` 0.10.0 signs with `rfc8785.dumps` and the bridge verifies with the same recipe,
51+
so the bytes it accepts are the bytes a spec-conformant third-party verifier computes.
5252

5353
## Run it
5454

55-
Against released packages (`cmcp-runtime` 0.2.1, `agentrust-trace` 0.2.0):
55+
Against released packages (`cmcp-runtime` 0.5.0, `agentrust-trace` 0.10.0,
56+
`agentrust-trace-tests` 0.5.1) and a stock SAGE `v11.19.22` node:
5657

5758
```bash
5859
git clone https://github.com/l33tdawg/sage-agenttrust && cd sage-agenttrust
5960
python -m venv .venv && . .venv/bin/activate && pip install -e ".[dev]"
6061

6162
# stock SAGE node, isolated in Docker (image pinned by digest for reproducibility)
6263
docker run -d --name sage-demo -p 127.0.0.1:18080:8080 -e SAGE_PASSPHRASE=demo-passphrase \
63-
ghcr.io/l33tdawg/sage@sha256:f08ebd392638d28248a06dab5791d975041e635a5c814c7e57e7632c3c10c05d serve
64+
ghcr.io/l33tdawg/sage@sha256:380fcae7b86712d5882a8c3676265d976d7a96a3eeed74559079994cd63f6b0a serve
6465

6566
# the attestation-verifying proxy
6667
SAGE_UPSTREAM=http://127.0.0.1:18080 uvicorn bridge.app:app --port 19090 &
@@ -80,6 +81,8 @@ BRIDGE_URL=http://127.0.0.1:19090 python demo/run_demo.py
8081
when it names a different agent or its policy/catalog hash does not match the approved set.
8182
- The cMCP `RuntimeClaim` **passes `agentrust-trace-tests` Level 0**, and `software-only`
8283
**fails Level 1** (no hardware root) — asserted in `tests/test_conformance.py`.
84+
- The standalone C-2 Trust Record **passes `agentrust-trace-tests` Level 0** and `software-only`
85+
**fails Level 1**, the same pair as the cMCP envelope — asserted in `tests/test_conformance.py`.
8386

8487
`demo/run_demo.py` reproduces the live chain against a stock SAGE container: an attested
8588
submit reaches consensus `committed`, the badge is retrievable, and a tampered or

integrations/sage-agenttrust/integration.yaml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: SAGE AgenTrust Bridge
2-
vendor: SAGE AgenTrust Bridge
2+
vendor: SAGE
33
integrates_with:
44
- cmcp
55
- trace
@@ -18,11 +18,13 @@ marketplace:
1818
category: Security & policy
1919
mark: SG
2020
keywords: [memory, proxy, consensus]
21-
# Level the cMCP-RuntimeClaim (envelope) path passes; the bare C-2 TRACE record is not graded
22-
# by agentrust-trace-tests (LoadError), so it carries no conformance level — see README.
21+
# Both paths pass Level 0: the cMCP-RuntimeClaim (envelope) form, and — since
22+
# agentrust-trace-tests 0.5.1 loads a standalone TRACE record as fmt="trace" — the bare C-2
23+
# record the bridge mints. Level 1 is not claimed: software-only has no hardware root.
2324
trace_conformance_level: 0
2425
trace_roles:
2526
- record-consumer
2627
tested_against:
27-
cmcp-runtime: "0.2.1"
28-
agentrust-trace: "0.5.0"
28+
cmcp-runtime: "0.5.0"
29+
agentrust-trace: "0.10.0"
30+
agentrust-trace-tests: "0.5.1"

marketplace/catalog.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@
543543
{
544544
"name": "SAGE AgenTrust Bridge",
545545
"package_name": "SAGE AgenTrust Bridge",
546-
"vendor": "SAGE AgenTrust Bridge",
546+
"vendor": "SAGE",
547547
"description": "Reverse proxy that edge-verifies a TRACE record (key-equal) or cMCP RuntimeClaim (gateway-asserted) before admitting a memory submit to a stock, unmodified SAGE consensus-memory node.",
548548
"path": "integrations/sage-agenttrust",
549549
"url": "https://github.com/agentrust-io/integrations/tree/main/integrations/sage-agenttrust",

0 commit comments

Comments
 (0)