Prevent the wrong policy version from reaching a ROS 2 robot.
Model names, tags, and deployment filenames are convenient references, but they are not stable release identities. The dispatch path needs a cryptographic binding to the exact reviewed bytes and configuration.
Request a Shadow AuditProblem: mutable names cross the release boundary
Suppose a launch file requests policy `navigation-latest`. If a registry tag or file changes after review, the same request can resolve to different bytes. A dashboard may still show an approval for the name even though the robot receives a different artifact.
Workflow
- Create a canonical release manifest containing policy digest, runtime requirements, and controller-configuration digest.
- Hash the canonical manifest and make that hash the approval subject.
- Request a permit bound to release hash, action, device, and controller.
- At the local ROS 2 gateway, recompute or retrieve the trusted digests and compare every binding.
- Consume the permit once, then record the decision and whether dispatch occurred.
Example boundary
A planner can publish an intended action, but it cannot directly call the hardware controller. The gateway first checks the release and configuration bindings. A mismatch produces denied evidence and no controller signal.
Limitations
Content identity prevents version confusion; it does not establish that the policy is behaviorally correct. Keep simulation, staged hardware validation, safety-rated controls, and operational supervision separate.
Continue the architecture review
Ready to map the release path? Request a Shadow Audit.