Requirement 034 inverts the isolation model of the other agent roles: the boundary is the whole machine rather than a kernel boundary inside it. Adding this role to a device switches the agent from isolated to embodied. The agent then runs privileged with exactly the devices from ROBOT_DEVICE_ALLOWLIST bound into its container, and the kernel-isolating runtime is dropped, because a microVM between the agent and the hardware it is meant to drive defeats the purpose. The allowlist lives in group_vars so the agent templates can read it; a role variable is not visible across roles. The admission checks run inside the agent role before it deploys rather than in this role afterwards. The agent is declared shared, so the service loader brings it up during the constructor stage while svc-ai roles only run at the following step; a check placed here would sit behind the deployment it exists to prevent. The dedicated-device check now compares against something group_names actually carries: any other web-app role on the host. The previous list held Docker node labels, which are a different namespace from Ansible inventory groups, so that intersection could never match and the failure message always blamed a multi-node swarm. Which agent embodies the device follows from the topology: both agent flags take the dynamic in-group_names form, Hermes Agent wins when both are present, and the matrix pins one per round so neither path rots. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
803 B
TODO
-
Never deployed:
lifecycle: pre-alpha. The admission checks and the device binding are covered by static analysis and a compose-mode matrix round, but no run has attached real hardware, so the passthrough is proven only against a placeholder device. -
Swarm: the device grant renders in compose mode only, matching the cadvisor precedent, because
docker stack deploydropsdevices. An embodied device is single-node by definition, so this is consistent rather than a gap, but the swarm path of the agent roles is never exercised with the robot role present. -
Self-exploration (requirement 034 decision 4) now has its prerequisite: the agent reaches the listed devices. Whether an agent turn can usefully drive them is untested and needs a model backend plus a real sensor or actuator.