feat: add Polygon UI-0 run view
This commit is contained in:
@@ -24,7 +24,7 @@ Each gate produces evidence and an explicit GO, PAUSE or BLOCKED result.
|
||||
| Plugin isolation | GO (laboratory control plane) — vendor backend/frontend and optional scene controls are plugin-owned; manifest/runtime descriptor parity, versioned handshake, lifecycle health and transport correlation fail closed while execution remains in-process |
|
||||
| K1 application control | GO (physical staged cycle) — after fixing the PCAP-proven `sint64` time field, one explicit UI launch completed all 14 canonical operations on one control session, reached live `SCANNING + project + init_ready`, displayed real points, then one explicit STOP returned K1 to unbound `READY`. No retry or fallback command was sent. Native-project reuse through LixelGO/USB remains an independent verification |
|
||||
| Stage 8 product storage | PAUSE — retention, replication, encryption, capacity monitoring and long-run browser/WASM stress remain deployment gates |
|
||||
| Simulation Polygon | SIM S0 GO; S1A complete; S1B real-provider lifecycle PASS — exact commit `6cb1495` passed 25 target tests and one D-only loopback stock-Ackermann run. Mission Core admitted world/startup/DDS health, persisted eight events, sent zero commands and stopped both PGIDs with zero residue. UI-0 implementation is now unblocked. Pause/resume/step/reset, PX4 command delivery, canonical telemetry/frames, watchdog/failsafe, navigation/safety acceptance and real actuator authority remain absent; top-level Polygon remains gated |
|
||||
| Simulation Polygon | SIM S0 GO; S1A complete; S1B real-provider lifecycle PASS; UI-0 internal read-only run view PASS — exact commit `6cb1495` passed 25 target tests and one D-only loopback stock-Ackermann run. Mission Core admitted world/startup/DDS health, persisted eight events, sent zero commands and stopped both PGIDs with zero residue. The Control Station now reads that canonical journal through GET-only Polygon API routes and a direct hidden workspace; visual QA opened the real accepted run. Pause/resume/step/reset, PX4 command delivery, canonical telemetry/frames, watchdog/failsafe, navigation/safety acceptance and real actuator authority remain absent; top-level Polygon remains gated |
|
||||
|
||||
USB project copying remains optional ground truth rather than a blocker for the
|
||||
now-verified network path. Owner-operated LixelGO traffic verifies the MQTT
|
||||
@@ -162,6 +162,19 @@ groups stopped without residue. Live world control, PX4 command delivery,
|
||||
heartbeat/watchdog execution and captured failsafe outcomes remain the next S1
|
||||
increments.
|
||||
|
||||
UI-0 now consumes the same append-only run repository through
|
||||
`GET /api/v1/polygon/runs` and
|
||||
`GET /api/v1/polygon/runs/{run-id}`. `QualificationRunStore(read_only=True)`
|
||||
does not create, chmod or mutate the configured repository and rejects every
|
||||
write transition. The Control Station opens the internal
|
||||
`polygon-run-internal` workspace only for the direct
|
||||
`?workspace=polygon-run[&run=<id>]` route; it is filtered out of System
|
||||
navigation and adds no seventh top-level section. Browser QA loaded the accepted
|
||||
real run with eight events, four provider pins, zero commands and the unchanged
|
||||
virtual-only authority boundary. A shared operator-facing deployment still
|
||||
requires a reviewed read-only D mount/source configuration; UI-0 does not use
|
||||
SSH as a product data plane.
|
||||
|
||||
## Stage 0 — repository and host baseline
|
||||
|
||||
Deliverables:
|
||||
|
||||
@@ -9,7 +9,9 @@ Ops source of truth:
|
||||
- [MISSIONCOR-39](https://ops.nodedc.ru/nodedc/browse/MISSIONCOR-39) is the
|
||||
canonical, changeable architecture plan.
|
||||
- [MISSIONCOR-40](https://ops.nodedc.ru/nodedc/browse/MISSIONCOR-40) is the
|
||||
active SIM S0 implementation and qualification gate.
|
||||
completed SIM S0 implementation and qualification gate.
|
||||
- [MISSIONCOR-41](https://ops.nodedc.ru/nodedc/browse/MISSIONCOR-41) is the
|
||||
active S1 lifecycle/authority implementation and qualification gate.
|
||||
|
||||
This document and ADR 0015 are the repository truth. A material change to run
|
||||
kinds, authority, clocks, frames, source-of-record, provider boundaries or phase
|
||||
@@ -66,6 +68,10 @@ Polygon is now a parallel product branch. As of this document:
|
||||
lifecycle in a fresh loopback-only namespace: two provider PGIDs, explicit
|
||||
world/startup/DDS-writer readiness, eight persisted events, zero commands,
|
||||
terminal `completed` and zero process residue;
|
||||
- UI-0 is implemented as a hidden direct read-only Control Station workspace
|
||||
over GET-only Polygon API routes. Browser QA loaded the real accepted S1B
|
||||
journal and displayed its four provider pins, eight events, zero commands and
|
||||
unchanged virtual-only authority boundary;
|
||||
- `actuator_authority=false`;
|
||||
- `navigation_or_safety_accepted=false`.
|
||||
|
||||
@@ -579,8 +585,9 @@ session and PX4 DDS writer, sent zero control commands, and stopped with no
|
||||
registry or `/proc` residue. Evidence is D-only and digest indexed under
|
||||
`/mnt/d/NDC_MISSIONCORE/simulation/artifacts/s1/lifecycle/`.
|
||||
|
||||
This accepts the S1B target start/health/stop boundary and unlocks UI-0. It does
|
||||
not accept restart-safe PID/start-token reconciliation, live
|
||||
This accepts the S1B target start/health/stop boundary. UI-0 now consumes the
|
||||
accepted persisted history without widening authority. It does not accept
|
||||
restart-safe PID/start-token reconciliation, live
|
||||
pause/resume/step/reset, canonical VehicleState, frame conversion, rover command
|
||||
mapping, watchdog/failsafe cases, repeatability or S1 as a whole.
|
||||
|
||||
@@ -624,8 +631,8 @@ Two UI gates are intentionally distinct.
|
||||
|
||||
### UI-0 — early read-only run view
|
||||
|
||||
Target S1B now proves persisted start/health/stop history. A direct internal run
|
||||
view may expose:
|
||||
Target S1B proves persisted start/health/stop history. UI-0 is implemented as a
|
||||
direct internal run view and exposes:
|
||||
|
||||
- run identity, lifecycle and terminal reason;
|
||||
- authoritative clock and current pause/running state;
|
||||
@@ -633,9 +640,26 @@ view may expose:
|
||||
- qualification events and admitted artifact links;
|
||||
- explicit limitations and gate status.
|
||||
|
||||
UI-0 has no PX4 transport, no control commands and no top-level Polygon
|
||||
navigation claim. It is a development/acceptance surface backed only by the
|
||||
server-owned run repository.
|
||||
The backend reads the configured repository from
|
||||
`MISSIONCORE_POLYGON_RUNS_ROOT` using
|
||||
`QualificationRunStore(read_only=True)`. It exposes only:
|
||||
|
||||
```text
|
||||
GET /api/v1/polygon/runs
|
||||
GET /api/v1/polygon/runs/{run-id}
|
||||
```
|
||||
|
||||
Missing/malformed configuration returns `503`; invalid or corrupt evidence
|
||||
fails closed. Responses never contain the configured root, artifact bytes or
|
||||
command payloads. The UI opens only through
|
||||
`?workspace=polygon-run[&run=<run-id>]`; its hidden workspace is filtered from
|
||||
System navigation and no seventh top-level section is added.
|
||||
|
||||
UI-0 has no PX4 transport, no lifecycle/command operations and no top-level
|
||||
Polygon navigation claim. It is a development/acceptance surface backed only
|
||||
by the server-owned run repository. A shared review deployment requires a
|
||||
reviewed read-only D mount or a co-located backend; SSH is not a product data
|
||||
plane.
|
||||
|
||||
### UI-1 — top-level Polygon
|
||||
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
|
||||
## Status
|
||||
|
||||
Accepted for architecture; SIM S0 qualification returned `GO` and the S1B
|
||||
real-provider start/health/stop boundary passed on 2026-07-24. Navigation
|
||||
behavior, safety behavior and real actuator authority are not accepted.
|
||||
Accepted for architecture; SIM S0 qualification returned `GO`, the S1B
|
||||
real-provider start/health/stop boundary passed on 2026-07-24, and the direct
|
||||
read-only UI-0 view is implemented and visually verified against that accepted
|
||||
journal. Navigation behavior, safety behavior and real actuator authority are
|
||||
not accepted.
|
||||
|
||||
## Context
|
||||
|
||||
@@ -51,9 +53,10 @@ reports easy to misuse.
|
||||
backend is C-backed and currently serves unrelated co-tenants.
|
||||
13. S1 uses exact `px4_msgs` directly. The experimental
|
||||
`px4-ros2-interface-lib` is not a mandatory S1 dependency.
|
||||
14. A read-only direct UI-0 run view may follow proven target S1B lifecycle and
|
||||
persisted history. Top-level Polygon UI and control remain gated on accepted
|
||||
S1 target command/lifecycle behavior.
|
||||
14. The read-only direct UI-0 run view consumes proven target S1B persisted
|
||||
history through GET-only server routes. It is hidden from navigation and
|
||||
cannot mutate a run. Top-level Polygon UI and control remain gated on
|
||||
accepted S1 target command/lifecycle behavior.
|
||||
15. Real actuator authority requires a new decision and physical safety gate.
|
||||
16. S0 processes run inside an ephemeral loopback-only Linux network namespace.
|
||||
Micro XRCE-DDS Agent's UDP wildcard bind is acceptable only inside that
|
||||
@@ -113,10 +116,14 @@ PX4 startup and DDS-writer markers existed. No arm, setpoint or other PX4 shell
|
||||
command was sent. Stop produced `completed`, eight events, zero commands and no
|
||||
process residue.
|
||||
|
||||
This decision accepts UI-0 implementation against persisted run history. It
|
||||
does not widen command authority or accept pause/step/reset, canonical
|
||||
telemetry, frame conversion, watchdog/failsafe behavior, navigation or physical
|
||||
control.
|
||||
UI-0 now implements that decision. `QualificationRunStore(read_only=True)`
|
||||
opens an existing repository without creating or chmodding it and rejects every
|
||||
mutating method. The web process exposes only run catalog/detail GET routes,
|
||||
and the hidden Control Station workspace opens only from
|
||||
`?workspace=polygon-run[&run=<id>]`. Browser QA loaded the accepted
|
||||
`s1b-6cb1495-20260724t1535z` journal. This does not widen command authority or
|
||||
accept pause/step/reset, canonical telemetry, frame conversion,
|
||||
watchdog/failsafe behavior, navigation or physical control.
|
||||
|
||||
## S1A implementation
|
||||
|
||||
@@ -159,14 +166,16 @@ the accepted S0 dependency graph. `k1link.simulation.worker` binds that
|
||||
primitive to the exact accepted S0 profile digest and canonical D-only S1 run
|
||||
artifact and process-runtime layouts.
|
||||
|
||||
This is not target-worker acceptance. Provider specifications, loopback network
|
||||
namespace creation, live readiness probes, restart-safe PID/start-token
|
||||
reconciliation and Gazebo world-control/PX4 command adapters remain open. The
|
||||
worker port deliberately fixes ownership semantics without prematurely fixing
|
||||
the eventual transport.
|
||||
The later exact generation `6cb1495` supplied the target provider
|
||||
specifications, loopback namespace and live readiness probes and passed the
|
||||
real-provider start/health/stop boundary described above. Restart-safe
|
||||
PID/start-token reconciliation after orchestrator loss and Gazebo
|
||||
world-control/PX4 command adapters remain open. The worker port deliberately
|
||||
fixes ownership semantics without making SSH or the browser a provider
|
||||
transport.
|
||||
|
||||
Commit `630d1ae` subsequently passed a D-only `MissionCore-Sim` bootstrap:
|
||||
the exact Git archive SHA was verified, both S1 test modules returned
|
||||
`20 passed`, and the test process-residue record was empty. This accepts target
|
||||
executability of the foundation only; it does not change the open real-provider
|
||||
boundaries above.
|
||||
executability of the foundation only; the later `6cb1495` evidence, not that
|
||||
bootstrap, closes the real-provider lifecycle boundary.
|
||||
|
||||
@@ -107,4 +107,19 @@ Open:
|
||||
- Ackermann and Differential command mapping;
|
||||
- TTL/heartbeat/watchdog and provider-loss cases;
|
||||
- repeatability verdict and complete S1 QualificationReport;
|
||||
- UI-0 implementation, S1C/S1D and S2.
|
||||
- S1C/S1D and S2.
|
||||
|
||||
## UI-0 follow-on
|
||||
|
||||
The direct internal read-only UI-0 surface is implemented after this acceptance
|
||||
without changing the accepted S1B evidence. It reads the same
|
||||
`artifacts/s1/runs` journal through GET-only backend routes and a
|
||||
non-navigable Control Station workspace. Visual QA loaded the copied accepted
|
||||
run and showed terminal `completed`, `operator-stop-clean`, four provider pins,
|
||||
eight events, zero commands and the virtual-only authority boundary. The
|
||||
browser received neither the configured D root nor artifact bytes or command
|
||||
payloads.
|
||||
|
||||
This follow-on is interface/read-model acceptance only. It does not promote the
|
||||
S1B run to S1 acceptance and does not close any remaining control, telemetry,
|
||||
frame, failsafe, repeatability, navigation or physical-safety gate.
|
||||
|
||||
Reference in New Issue
Block a user