feat: add industrial embodied AI governance example - #16
Conversation
Signed-off-by: Carlos Hernandez <carloshvp@gmail.com>
core.autocrlf=true on Windows rewrites the system prompt to CRLF at checkout, which breaks the system_prompt_hash check in validate_artifacts.py. Mark hash-bound files as binary-equivalent so they check out byte-identical everywhere. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
imran-siddique
left a comment
There was a problem hiding this comment.
Reviewed in depth: security pass over every file (clean -- local-only network surface, no dynamic execution, dependency pins verified against the real agentrust-io repos), validate_artifacts.py and the 7 unit tests pass locally against the current verifier, the Cedar bundle parses and produces exactly the README's claimed decisions for declared/undeclared/missing workflows, and both catalog entries validate against the cmcp schema. The signed TRACE record and audit bundle check out as genuinely captured from a real run, and the noted response-hash gap in the audit bundle is accurate (filed for follow-up on our side).
I pushed one small commit to the branch: a .gitattributes pinning LF for the hash-bound artifacts -- on Windows checkouts with core.autocrlf=true the prompt was rewritten to CRLF and validate_artifacts.py failed on system_prompt_hash. Verified the failure and the fix locally.
One follow-up for later (no action needed now): requirements.txt pins cmcp-runtime to a feature-branch commit; once that branch merges we'll re-pin to a main commit so the SHA stays fetchable.
Excellent contribution -- the software-authorization vs. machine-safety boundary is exactly the right framing, and the example is honest about what a cMCP allow does and does not prove.
Summary
Adds a runnable industrial embodied-AI example in which a material-movement agent sends robot-cell requests through the live cMCP Runtime.
The example demonstrates three distinct outcomes:
It also includes:
Why
Embodied agents need a clear boundary between software authorization and machine safety. A cMCP allow decision can prove that a governed request was authorized under a specific policy, but it must not be interpreted as controller acceptance, physical completion or functional-safety certification.
The example makes that boundary concrete while exposing an honest follow-up gap: the current cMCP audit bundle binds request hashes and policy decisions, but does not populate a response hash for the controller outcome.
Developer-preview dependencies
requirements.txtpins the cMCP and TRACE commits used for the end-to-end rehearsal, pluscedarpy, until the summit release stack is available from PyPI.Validation
requirements.txtpip checkpython validate_artifacts.pypython -m unittest discover -s tests -v(7 passed)ruff check industrial-embodied-aicmcp verifywith pinned policy/catalog hashes and the signed audit bundleThe committed TRACE fixture is intentionally
software-only; it validates signatures, hashes and audit integrity without claiming hardware provenance. The agent supports--require-hardwarefor rehearsal on a supported TEE host.