fix(fleet): derive contour status from registered nodes and remove obsolete tabs
This commit is contained in:
@@ -39,6 +39,26 @@ Offline Core reads only its cached fleet inventory, never queries the absent
|
||||
hardware or shows an endless discovery spinner. Cached devices stay visible;
|
||||
their current connection is unconfirmed, and mutations stay disabled.
|
||||
|
||||
Apparatus metadata is an exception to the hardware mutation gate: the name is
|
||||
editable in Apparatus settings while the board is offline. PATCH /fleet/{id}
|
||||
accepts only name and expected_revision through the local-operator boundary.
|
||||
The transaction preserves apparatus/node identity, binding, platform, device
|
||||
assignments and history. It checks revisions to prevent a stale editor from
|
||||
overwriting another change, emits the existing fleet snapshot event, and
|
||||
returns public metadata. Repeating the already-saved name is idempotent.
|
||||
The list, panel name/type title, monitor and observation center use this same
|
||||
registry name. No board request or OS configuration is involved.
|
||||
|
||||
The Park navigation now contains only Contour status and Vehicles. Sensor and
|
||||
composition catalog placeholders are removed. Contour status reads local Core
|
||||
health, the configured compute-contour catalog and its telemetry, plus the
|
||||
fleet registry. Simulation gateway fallback identifiers are not inventory.
|
||||
Node counts are derived from these registries; unavailable/invalid checks are
|
||||
explicitly unknown, not empty or online. Worker availability requires both
|
||||
reachability and identity match, with backend telemetry freshness checks;
|
||||
board status uses the authenticated fleet heartbeat expiry. Polling is bounded,
|
||||
sequential and stopped when the workspace unmounts.
|
||||
|
||||
## Computer replacement boundary
|
||||
|
||||
POST /fleet/{vehicle}/computer consumes a verified Node invitation and an
|
||||
@@ -73,3 +93,13 @@ folding persistence across navigation and a full page reload. The existing
|
||||
LaunchAgent restarted the sole Core process; exact health recovered.
|
||||
The real board is powered off: new pairing/replacement and live device operation
|
||||
require subsequent hardware acceptance; no such action is performed here.
|
||||
|
||||
Later name/status acceptance on the same date: 44 focused identity, pairing
|
||||
and replacement tests passed, as did all 982 Control Station unit tests,
|
||||
TypeScript and the production build. Final presentation refinements passed
|
||||
the architecture/status checks again (8 tests), typecheck and build. Browser
|
||||
QA covered normal/expanded views, empty-name rejection, cancellation, a
|
||||
temporary rename visible in the list/header/observation center, persistence
|
||||
after reload and restoration of the original name. The live status view
|
||||
showed Core reachable, a configured worker without fresh telemetry and the
|
||||
powered-off board without a link. No actuator or device commands were sent.
|
||||
|
||||
Reference in New Issue
Block a user