docs(simulation): accept S1C live worker

This commit is contained in:
DCCONSTRUCTIONS
2026-07-24 20:47:08 +03:00
parent b7ccca3481
commit 1995dfdf68
5 changed files with 217 additions and 16 deletions
+35 -7
View File
@@ -172,11 +172,36 @@ metadata and the virtual-only authority boundary. Live pause/resume/step/reset,
canonical telemetry, PX4 command mapping, watchdog/failsafe evidence and the
top-level Polygon control surface remain gated.
Configure a Mission Core backend that can read the accepted D repository and
open the direct route:
S1C commit `b7ccca3` adds the first registered live-worker vertical without
collapsing that boundary. An unprivileged worker agent owns the existing
application service and providers inside a fresh loopback-only network
namespace. Mission Core reaches it through a mode-`0600` Unix socket; React
reaches only same-origin Polygon API routes. The live browser panel can
start/stop the stock rover, show worker/run/provider status and render a bounded
top-down ENU trajectory from Gazebo dynamic-pose ground truth. That pose is
explicitly `diagnostic`, not accepted PX4/ROS 2 telemetry.
The exact D-only generation passed 21 target tests and a real UI-driven run
`s1c-b7ccca3-20260724t174030z-8e46b3`: both providers reached readiness, the
browser received live `VehicleState`, the run reached `completed` after
52.836 seconds of Gazebo time, and shutdown left no PX4/Gazebo/XRCE process
residue. The run contained zero commands, so this result does not yet prove
rover motion, PX4 command delivery, watchdog/failsafe behavior, navigation or
safety acceptance.
Start the worker from the exact immutable D source generation:
```bash
sudo simulation/s1/worker-agent.sh <exact-40-character-mission-core-commit>
```
Then configure the Mission Core backend and open the direct route:
```bash
export MISSIONCORE_POLYGON_RUNS_ROOT=/mnt/d/NDC_MISSIONCORE/simulation/artifacts/s1/runs
export MISSIONCORE_POLYGON_WORKER_SOCKET=/run/missioncore-sim/worker.sock
export MISSIONCORE_POLYGON_WORKER_CONTROL=internal-virtual-only
export MISSIONCORE_COMMIT=<exact-40-character-mission-core-commit>
uv run uvicorn k1link.web.app:app --host 127.0.0.1 --port 8765
```
@@ -184,15 +209,18 @@ uv run uvicorn k1link.web.app:app --host 127.0.0.1 --port 8765
http://127.0.0.1:8765/?workspace=polygon-run&run=<qualification-run-id>
```
The API provides `GET /api/v1/polygon/runs` and
`GET /api/v1/polygon/runs/{run-id}` only. Missing configuration returns `503`;
invalid/corrupt evidence fails closed. The browser receives no D root, artifact
bytes, command payloads or PX4/process-lifecycle operation.
The archive API remains GET-only. The worker API adds status/live GETs and
explicit start/stop POSTs; POSTs remain `403` unless the backend has the
`internal-virtual-only` gate and an exact commit. Missing configuration,
transport drift and corrupt evidence fail closed. The browser receives no Unix
socket, D root, artifact bytes, PX4 endpoint or direct provider command.
See the [Polygon product/SRS](docs/12_SIMULATION_POLYGON_PRODUCT_AND_SRS.md),
[ADR 0015](docs/adr/0015-simulation-polygon-qualification-boundary.md),
[ADR 0016](docs/adr/0016-distributed-product-edge-and-worker-topology.md) and the
[SIM S0 worker runbook](docs/runbooks/SIM_S0_AI_WORKER.md).
[SIM S0 worker runbook](docs/runbooks/SIM_S0_AI_WORKER.md). The live-worker
launch and acceptance procedure is in
[SIM S1C live-worker runbook](docs/runbooks/SIM_S1C_LIVE_WORKER.md).
Mission Core remains a distributed browser product rather than a
platform-specific desktop executable. React runs in the operator browser;