Skip to content

feat: add industrial embodied AI governance example - #16

Merged
imran-siddique merged 2 commits into
agentrust-io:mainfrom
carloshvp:industrial-embodied-ai-example
Jun 11, 2026
Merged

feat: add industrial embodied AI governance example#16
imran-siddique merged 2 commits into
agentrust-io:mainfrom
carloshvp:industrial-embodied-ai-example

Conversation

@carloshvp

Copy link
Copy Markdown
Member

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:

  • cMCP authorizes a declared workflow and the mock controller completes the motion
  • cMCP denies an undeclared workflow before the controller is invoked
  • cMCP authorizes the request but the independent controller rejects motion after the physical state changes

It also includes:

  • a signed Agent Manifest binding the prompt, policy and tool declarations
  • explicit workflow-scoped Cedar permits with default deny
  • a mock robot-cell MCP server with fresh, authenticated and single-use state tokens
  • a runtime-issued TRACE Trust Record and signed audit bundle captured from a real run
  • local artifact, signature and audit verification
  • controller regression tests for stale, modified and replayed state, speed limits and approved zones

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.txt pins the cMCP and TRACE commits used for the end-to-end rehearsal, plus cedarpy, until the summit release stack is available from PyPI.

Validation

  • clean virtual environment install from requirements.txt
  • pip check
  • python validate_artifacts.py
  • python -m unittest discover -s tests -v (7 passed)
  • ruff check industrial-embodied-ai
  • JSON and YAML parsing
  • two consecutive end-to-end runs through cMCP
  • cmcp verify with pinned policy/catalog hashes and the signed audit bundle

The committed TRACE fixture is intentionally software-only; it validates signatures, hashes and audit integrity without claiming hardware provenance. The agent supports --require-hardware for rehearsal on a supported TEE host.

Signed-off-by: Carlos Hernandez <carloshvp@gmail.com>
@carloshvp
carloshvp marked this pull request as ready for review June 11, 2026 22:51
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 imran-siddique left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants