docs: describe hardware approval gateway
This commit is contained in:
+14
-6
@@ -59,9 +59,17 @@ The workstation service must use the same `.env.auth` as the public container;
|
||||
the SSH key must be restricted to that single reverse-listen port and must not
|
||||
be allowed to run remote commands.
|
||||
|
||||
The physical bench is a process-wide single-flight resource. A hardware action
|
||||
owns the bench from intent planning through final physical feedback. Concurrent
|
||||
hardware actions and passive physical-state reads receive HTTP `409`
|
||||
(`hardware_busy`) with `Retry-After`; they never enter the CAN path or wait to run
|
||||
later against stale position state. Dry-run and simulated-hardware requests are
|
||||
not serialized by this gate.
|
||||
Public physical execution uses a local-approval lease. A browser first submits
|
||||
an access request, and the bench operator chooses one terminal at
|
||||
`http://127.0.0.1:8000/hardware-control`. The decision API is restricted to
|
||||
unproxied loopback traffic, so it cannot be used through the public domain or
|
||||
the SSH tunnel. The approved terminal may run multiple tests; its lease is
|
||||
revoked after 180 seconds without a physical test, on voluntary release, or by
|
||||
the local operator. A process restart clears all leases and pending requests.
|
||||
|
||||
Inside the approved lease, the physical bench remains a process-wide
|
||||
single-flight resource. A hardware action owns the bench from intent planning
|
||||
through final physical feedback. Concurrent actions and passive physical-state
|
||||
reads receive HTTP `409` (`hardware_busy`) with `Retry-After`; they never enter
|
||||
the CAN path or wait to run later against stale position state. Dry-run and
|
||||
simulated-hardware requests are not serialized by this action-level gate.
|
||||
|
||||
Reference in New Issue
Block a user