Skip to content

Commit 416dbd2

Browse files
committed
docs: clarify industrial evidence continuity
Signed-off-by: Carlos Hernandez <carloshvp@gmail.com>
1 parent 5cbfd09 commit 416dbd2

2 files changed

Lines changed: 70 additions & 27 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ End-to-end integration examples showing cMCP, Agent Manifest, and TRACE working
1212
|---|---|---|---|
1313
| `financial-services/` | Payment agent with Cedar policy: blocks PII in tool call parameters | SEV-SNP / TDX | EU AI Act Art. 9/12, DORA Art. 9 |
1414
| `healthcare/` | Clinical decision agent with HITL approvals and EU AI Act Art. 14 compliance records | SEV-SNP / TDX | EU AI Act Art. 14, HIPAA |
15-
| `industrial-embodied-ai/` | Material-movement agent with cMCP authorization and an independent safety-controller boundary | TEE / software-only development mode | OT security and industrial robot safety references |
15+
| `industrial-embodied-ai/` | Material-movement agent with cMCP authorization, an independent safety-controller boundary and offline-verifiable closed-session evidence | TEE / software-only development mode | OT security and industrial robot safety references |
1616
| `multi-tenant-saas/` | SaaS platform with per-tenant policy isolation | TDX | Customer contract SLA |
1717
| `startup-tpm/` | 15-minute quickstart on any cloud VM with Trusted Launch | TPM 2.0 | Development / staging |
1818

industrial-embodied-ai/README.md

Lines changed: 69 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,18 @@ End-to-end example of an AI agent requesting motion from an industrial robot
44
cell through cMCP, with Agent Manifest declarations and a runtime-issued TRACE
55
Trust Record.
66

7+
The example also demonstrates evidence continuity: after the governed session
8+
closes, its saved TRACE Trust Record and audit bundle remain verifiable after
9+
the agent, cMCP Runtime and mock controller stop. This is continuity of
10+
evidence, not continuity of agent memory, reputation or process identity.
11+
712
The scenario is synthetic. It uses no robot hardware, vendor SDK, production
813
endpoint, or proprietary industrial data.
914

1015
## What the example demonstrates
1116

12-
The agent runs three paths through a live cMCP Runtime:
17+
The agent runs three paths through a live cMCP Runtime, then closes the session
18+
to produce durable evidence:
1319

1420
1. **Allowed and completed:** cMCP authorizes the declared workflow, then the
1521
independent controller accepts and completes the simulated motion.
@@ -18,6 +24,9 @@ The agent runs three paths through a live cMCP Runtime:
1824
3. **Safety rejected:** cMCP authorizes the declared workflow, but the
1925
controller rejects motion after its current state reports a person in the
2026
safeguarded area.
27+
4. **Closed-session evidence:** cMCP signs a TRACE Trust Record and audit
28+
bundle that can be verified from the saved files without a running agent,
29+
runtime or controller.
2130

2231
The third path is the central boundary:
2332

@@ -28,19 +37,19 @@ The third path is the central boundary:
2837
## Architecture
2938

3039
```text
31-
Material-movement agent
32-
|
33-
| MCP tools/call
34-
v
35-
+--------------------------+ Agent Manifest declares:
36-
| cMCP Runtime | <--- agent, prompt, policy and tool hashes
37-
| - attested tool catalog |
38-
| - Cedar authorization |
39-
| - hash-chained audit |
40-
+------------+-------------+
41-
|
42-
| authorized request
43-
v
40+
Signed Agent Manifest Material-movement agent
41+
- agent identity declaration |
42+
- prompt, policy and tool hashes | MCP tools/call
43+
| v
44+
| offline validator +--------------------------+
45+
+-- compares hashes ------> | cMCP Runtime |
46+
| - loads policy + catalog |
47+
| - Cedar authorization |
48+
| - hash-chained audit |
49+
+------------+-------------+
50+
|
51+
| authorized request
52+
v
4453
+-------------------------------+
4554
| Independent mock controller |
4655
| - validates fresh state token |
@@ -53,8 +62,26 @@ The third path is the central boundary:
5362
Simulated robot execution
5463
5564
Session close -> signed TRACE Trust Record + signed audit bundle
65+
Saved files remain verifiable after all three processes stop
5666
```
5767

68+
The current cMCP preview loads the policy and catalog directly. It does not
69+
ingest the Agent Manifest, so the diagram shows an offline hash comparison
70+
rather than a native runtime binding.
71+
72+
## Trust chain demonstrated
73+
74+
| Boundary | Demonstrated behavior |
75+
|---|---|
76+
| Declared agent configuration | A signed Agent Manifest declares the development agent identity and hashes for its prompt, policy and tools |
77+
| Governed tool access | cMCP intercepts each MCP request and evaluates the active Cedar policy before forwarding |
78+
| Physical authority | The independent controller rechecks current state and remains authoritative for simulated execution |
79+
| Durable session evidence | TRACE and the signed audit bundle bind the cMCP session, policy, catalog and tool-call transcript |
80+
81+
The example composes these boundaries without claiming that the developer
82+
preview already forms one end-to-end identity and outcome proof. The precise
83+
gaps are listed under [Evidence boundaries](#evidence-boundaries).
84+
5885
## Run it
5986

6087
Prerequisites:
@@ -128,6 +155,23 @@ The agent writes fresh evidence to:
128155
These files are ignored by Git. The committed `example-*` files were captured
129156
from a real run and remain available for offline inspection.
130157

158+
## Verify after shutdown
159+
160+
After the agent exits, stop the cMCP Runtime and mock controller. The fresh
161+
files can still be verified locally:
162+
163+
```bash
164+
cmcp verify trace-output/latest-trust-record.json \
165+
--policy-hash sha256:c8358148d201749ebd05651ea03cf92fb3ff8cc9cf05816483c394ebc3e1cac9 \
166+
--catalog-hash sha256:792c86ff8152fa9713d52584c084611eb4929fa5ebf3ec8271dd21f0e0aa7eeb \
167+
--audit-bundle trace-output/latest-audit-bundle.json
168+
```
169+
170+
This command reads the saved evidence and does not contact the stopped
171+
services. The normal attestation-freshness window still applies: offline
172+
verification means that no live runtime is required, not that an old claim
173+
remains current indefinitely.
174+
131175
## Hardware-attested run
132176

133177
On a supported host, do not set `CMCP_DEV_MODE`. Pin the expected artifacts
@@ -166,30 +210,29 @@ The validator checks:
166210
- runtime-issued TRACE schema and signature
167211
- signed audit-bundle integrity and binding to the TRACE record
168212

169-
To verify fresh output using the cMCP CLI:
170-
171-
```bash
172-
cmcp verify trace-output/latest-trust-record.json \
173-
--policy-hash sha256:c8358148d201749ebd05651ea03cf92fb3ff8cc9cf05816483c394ebc3e1cac9 \
174-
--catalog-hash sha256:792c86ff8152fa9713d52584c084611eb4929fa5ebf3ec8271dd21f0e0aa7eeb \
175-
--audit-bundle trace-output/latest-audit-bundle.json
176-
```
177-
178213
## Evidence boundaries
179214

180215
| Evidence | What it establishes | What it does not establish |
181216
|---|---|---|
182-
| Agent Manifest | The signed declaration and hashes of the approved prompt, policy and tools | That the deployed runtime loaded those artifacts |
217+
| Agent Manifest | The signed agent identity declaration and hashes of the approved prompt, policy and tools | That cMCP loaded the manifest or bound its agent identity to the runtime session |
183218
| cMCP decision | The active policy authorized or denied a cataloged tool request | That an authorized physical request was safe |
184-
| TRACE Trust Record | Runtime, policy hash, catalog hash and tool-call transcript integrity | Controller acceptance, physical completion or functional-safety compliance |
185-
| Controller response | The mock controller's decision returned during this run | A hardware-backed or independently retained execution record |
219+
| TRACE Trust Record | cMCP session identity, runtime, policy hash, catalog hash and tool-call transcript integrity | The Agent Manifest identity, controller acceptance, physical completion or functional-safety compliance |
220+
| Saved TRACE and audit files | The closed session can be checked after the processes stop | Continuity of agent memory, reputation or logical identity across a restart or replacement |
221+
| Client-observed controller response | The mock controller's decision returned to the agent during this run | A signed, hardware-backed or independently retained execution record |
186222

187223
The current cMCP audit bundle records request hashes and authorization
188224
decisions, but does not populate a response hash for the controller outcome.
189225
The example therefore does not claim that TRACE proves controller acceptance
190226
or physical completion. Binding independent controller evidence is a
191227
follow-up design question, not something this example silently invents.
192228

229+
The committed TRACE subject identifies the cMCP session, while the Agent
230+
Manifest declares a separate agent identity. The validator confirms that the
231+
static policy and catalog hashes agree, but the current preview does not
232+
cryptographically bind that manifest identity to the runtime session. It also
233+
does not establish that a restarted or replacement process is the same logical
234+
agent.
235+
193236
## AgentTrust artifacts
194237

195238
| File | Purpose |

0 commit comments

Comments
 (0)