feat(ui): separate live data and lab surfaces

This commit is contained in:
DCCONSTRUCTIONS
2026-07-26 12:50:10 +03:00
parent 677dbdb776
commit 05413e3f5c
19 changed files with 1430 additions and 402 deletions
@@ -0,0 +1,71 @@
# ADR 0022 — Operator surface ownership
Status: accepted, 2026-07-26
## Context
The first simulation and LiDAR qualification slices exposed implementation
results where they were produced. Saved observation sessions lived in the live
spatial workspace, public datasets lived under Polygon, and the local-surface
laboratory result was labelled as device diagnostics. This made the operator
infer backend history instead of following product concepts.
The same ambiguity affected Centre: separate overview, health and activity
pages repeated static capability inventories instead of showing the current
compute and network contour.
## Decision
Mission Core assigns one owner to each operator concept:
| Product area | Owns | Does not own |
| --- | --- | --- |
| **Наблюдение** | Current live sensor scene and live-only spatial controls | Saved-session selection or offline experiments |
| **Данные** | Saved sessions, replay, public datasets, streams, entities and export | Simulation execution or laboratory conclusions |
| **Тестировочный контур** | Versioned laboratory work, test configuration and visual evidence | Source-of-record retention or public dataset storage |
| **Центр → Состояние контура** | Live compute nodes, processes, network reachability and connected devices | Static feature inventory or a separate activity page |
| **Система** | Deeper module, integration, network, audit and configuration administration | Daily operational health summary |
| **Парк** | Devices, sensors and live device operation | Offline algorithm-development reports |
The existing internal root id `polygon` remains stable for compatibility, but
its operator label is **Тестировочный контур** and it is last in the header.
Legacy `?workspace=polygon-datasets` and `?workspace=polygon-run` links resolve
to **Данные → Датасеты**. They do not recreate the previous Polygon dataset
page.
Saved session replay is mounted only in **Данные → Сессии и записи** or from a
LAB entry. Leaving either archive returns **Наблюдение → Пространственная
сцена** to the runtime-published live source. A selected archive cannot leak
into the live observation surface.
Dataset sources use a single-open accordion. Expanding one source mounts its
viewer and analysis inside that source card, pushes later sources down, and
closes the previously expanded source.
The laboratory archive reads immutable LAB instances from the existing
observation-session catalog. The E29 local-surface result remains a read-only
laboratory surface and is no longer presented as live LiDAR diagnostics. A
future device-diagnostics workspace must require an attached device and its own
diagnostic contract.
Contour health reads only live contracts:
- `GET /api/health`;
- `GET /api/v1/device-plugin-runtimes`;
- `GET /api/v1/polygon/worker`;
- current Mission Runtime state for active device and perception metrics.
Unknown or unavailable values remain empty/offline. The UI does not invent
load, latency, activity or connected devices.
## Consequences
- Public datasets and private sensor records are both discoverable under Data,
but remain separate evidence classes.
- Laboratory evidence is inspectable without confusing it with live device
health or closed-loop simulation.
- The current Simulation Worker may be offline while its prior laboratory
evidence remains available.
- The generic Control Station remains device-neutral; device names and
implementation details come from plugin/runtime contracts.
- New operator pages must declare one product owner before implementation.