Skip to main content

Hardware-in-the-Loop Evaluation

Validate the HiL scheduling and policy boundary without physical motion. The implemented ur10e-no-command adapter uses deterministic six-axis observations and contains no robot command transport.

Prerequisites

RequirementPurpose
Ubuntu K3s edge planeRuns OSMO workflows
Online HiL OSMO backendSelects the edge pool
Completed CPU smokeProves CPU scheduling before HiL
Connection receiptBinds backend, pool, local node, K3s target, and OSMO profile

Complete Ubuntu HiL OSMO Backend through the CPU gate first.

Safety Contract

BoundaryImplemented behavior
Adapterapply_action() always raises NO_COMMAND_TRANSPORT
Applied actionsMust remain zero
Robot endpointNot accepted by configuration
Host devicesNone
Host mountsNone
Host networkDisabled
Privileged containersDisabled
Physical modeNo CLI option or implementation exists

The deterministic policy proposes a small zero-seeking action for each fixture observation. The proposal exercises the same boundary a real policy would use without importing any command-capable robot library.

Run CPU Scheduling Proof

Preview and run the CPU-only workflow:

data-pipeline/setup/hil/03-run-cpu-smoke.sh \
--connection-file <connection-receipt> \
--config-preview

data-pipeline/setup/hil/03-run-cpu-smoke.sh \
--connection-file <connection-receipt>

The stage creates a unique workflow, requests zero GPUs, validates the result identity, and verifies the matching completed Pod ran on the owned local K3s node.

Run No-Command Proof

Preview and run the independently non-commanding workload:

data-pipeline/setup/hil/04-run-no-command-check.sh \
--connection-file <connection-receipt> \
--config-preview

data-pipeline/setup/hil/04-run-no-command-check.sh \
--connection-file <connection-receipt>

Expected remote result:

{
"status": "passed",
"proposed_actions": 10,
"applied_actions": 0,
"negative_command_probe": "passed",
"command_transport": "none",
"rejection_code": "NO_COMMAND_TRANSPORT"
}

Payload Assets

The public stage packages these tracked assets for the OSMO workflow:

ArtifactContent
evaluation/hil/no_command_runner.pyFocused standalone no-command runtime
evaluation/hil/config/ur10e-no-command.jsonSafety and fixture contract
evaluation/hil/config/ur10e-observations.jsonlDeterministic observations
evaluation/hil/workflows/osmo/hil-evaluation.yamlCPU-only remote workflow

The stage also verifies the matching completed Pod ran on the owned local node. Stop when either proof fails. No physical-motion path follows this validation.

Result Durability

The no-command workflow declares a unique output URI below the configured OSMO workflow-data endpoint and writes artifacts to OSMO's {{output}} directory. The local Arc K3s runtime controller uses the existing OSMO user-assigned managed identity through the osmo-workflow ServiceAccount.

The check requires a completed task upload timestamp, retrieves the declared URI through osmo data download, verifies the exact five-file result set and manifest integrity, confirms the no-command summary, and rejects credential-shaped content.

Static validation covers the workflow template, publisher/consumer contracts, and output verifier. Live Arc federation, managed-identity upload, and OSMO retrieval remain required environment validation. Do not add a SAS, storage key, direct uploader, or alternate output path.

🤖 Crafted with precision by ✨Copilot following brilliant human instruction, then carefully refined by our team of discerning human reviewers.