docs(simulation): accept worker-gated polygon ui

This commit is contained in:
DCCONSTRUCTIONS
2026-07-24 21:29:55 +03:00
parent 60e79160c9
commit 53fd1e3bfc
4 changed files with 107 additions and 71 deletions
+31 -24
View File
@@ -170,21 +170,24 @@ surface backed by the same append-only qualification repository. It exposes
identity, terminal reason, provider pins, events, command count, artifact
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.
accepted command path remain gated.
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.
start/stop the stock rover and show worker/run/provider status. UI-2 commit
`60e7916` adds a worker-gated `Полигон` header root and a browser-native
Three.js Ackermann Rover scene with orbit, zoom, pan, follow and reset. The
deep-link remains for exact-run review; it is no longer the primary operator
entry. Gazebo dynamic-pose ground truth remains 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
The exact D-only UI-2 generation passed 35 target tests and a real UI-driven run
`s1c-60e7916-20260724t182006z-2f164e`: 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
27.74 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.
@@ -195,7 +198,8 @@ Start the worker from the exact immutable D source generation:
sudo simulation/s1/worker-agent.sh <exact-40-character-mission-core-commit>
```
Then configure the Mission Core backend and open the direct route:
Then configure the Mission Core backend. When the worker status is available,
open `Полигон` from the Control Station header:
```bash
export MISSIONCORE_POLYGON_RUNS_ROOT=/mnt/d/NDC_MISSIONCORE/simulation/artifacts/s1/runs
@@ -206,14 +210,16 @@ uv run uvicorn k1link.web.app:app --host 127.0.0.1 --port 8765
```
```text
http://127.0.0.1:8765/?workspace=polygon-run&run=<qualification-run-id>
http://127.0.0.1:8765/
```
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.
The direct `?workspace=polygon-run&run=<qualification-run-id>` URL remains a
compatible evidence deep-link. 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),
@@ -228,14 +234,16 @@ Gateway/API and Control Plane run as long-lived services; Gazebo/PX4/ROS 2/Nav2
run headless on a registered simulation worker; and a future field vehicle runs
a headless onboard Linux Edge Agent with local-first evidence and
store-and-forward synchronization. Native Gazebo GUI is worker-local
diagnostics. Product 3D uses canonical state in browser-native Rerun/WebGL views,
so field execution never depends on streaming a simulator desktop.
diagnostics. The accepted live rover scene uses canonical state in Three.js;
Rerun remains the recorded spatial-evidence path. Field execution never depends
on streaming a simulator desktop.
## Mission Core Control Station and visualization adapters
The browser application is the universal Mission Core Control Station rather than
a K1-specific Foxglove launcher. Its fixed shell contains six architectural
sections — Center, Fleet, Observation, Missions, Data and System — while the K1
a K1-specific Foxglove launcher. Its fixed shell contains Center, Fleet,
Observation, Missions, Data and System; a seventh Polygon section is inserted
only while an admitted Simulation Worker is available. The K1
BLE/Wi-Fi/live workflow remains isolated as the first real device adapter. Its
React provisioning, acquisition/replay and diagnostic blocks live beside the
plugin manifest under `plugins/xgrids-k1/frontend`; the generic application
@@ -329,12 +337,11 @@ standalone release install. The frontend consumes sibling `file:` packages from
revision or content hash. Publishing/vendoring those packages or enforcing an
immutable donor revision remains a packaging and CI prerequisite.
Polygon is planned as a seventh section. The read-only direct UI-0 run view is
implemented inside the current shell but intentionally omitted from all
top-level and System navigation. It opens only through
`?workspace=polygon-run[&run=<id>]` and reads the server-owned qualification
repository. Top-level Polygon navigation and control remain gated on accepted
clock/frame/command/safety behavior.
Polygon is implemented as a capability-gated seventh section. When Mission Core
confirms an admitted Simulation Worker, its header button opens one direct
workspace with live 3D inspection and the server-owned qualification
repository. `?workspace=polygon-run[&run=<id>]` remains a compatibility
deep-link. Command and safety acceptance remain separate gates.
The Observation spatial workspace embeds the open-source Rerun Web Viewer
inside the Mission Core shell. It can open a compatible RRD over same-origin