fix(lab): preserve replay view and restore SLAM semantics

This commit is contained in:
DCCONSTRUCTIONS
2026-08-26 23:37:05 +03:00
parent 46cef8df17
commit 296cf610cd
8 changed files with 230 additions and 45 deletions
@@ -20,13 +20,14 @@ correct for vegetation, terrain, gaps or the future vehicle envelope.
| Item | Identity |
| --- | --- |
| LAB result | `m49-tgs-full-shadow-0faeaaf3aba8dccae974eab51ff9cccf264a13ec285abb1920c1e5a09a7e87bc` |
| LAB result | `m49-tgs-full-shadow-ef98de7db7596d48e8c8c0549ce68e6704ee03e87c8c4bcf1e3e748b7ccb032e` |
| Worker run | `Worker 006 / ravnoves00-full-001` |
| Mission Core revision used by Worker | `40c850b167dda366d8aa45d828520168affaf9fd` |
| Deterministic Worker artifact | `5e0ea16c7a5cc760463836718b0cd8b0006ffc4b202e5f706a20a86ef2f912ab` |
| Source pack SHA-256 | `0685d24219d8236caf8b7f1685e93f6d6b59e7fd015a768d88a92bbe8b154944` |
| TGS config SHA-256 | `c2e07010aaee78259d36c057962d6bfb885349251ff7356d867e5813e632881c` |
| Linked visual result | `m4-threat-replay-2a953c5f27f2a5b1dddc5c658c1de2c323d7796084a099c024987a1da03aa324` |
| Linked semantic result | `e47-semantic-slam-f8c53ba12e9719856195890c7dcd2ba6c114434674159f948064368012e6b3bc` |
The profile is a `0.45 m`, `12 m` radius, `1 s` causal rolling
`map-gravity-local` costmap. The four states remain separate:
@@ -62,7 +63,9 @@ source points. This preserves chronology without inventing free space.
The immutable result is published on the canonical Mission Core service at
port `8000`. The LAB reuses the recorded camera timeline and exposes independent
`SOURCE POINTS`, `TGS COSTMAP`, `3D` and `PLAN` controls.
`SOURCE POINTS`, `LOCAL SLAM`, `TGS COSTMAP`, `SEMANTICS`, `3D` and `PLAN`
controls. The semantic mask is the exact E47 full-route archive bound to the
same M4 camera result; it remains diagnostic and does not change TGS states.
The first implementation fetched one large JSON frame at a time. Browser QA
showed that this was only intermittently exact at `1×`. The published viewer
@@ -73,6 +76,14 @@ showed the loading placeholder. A real missing-LiDAR frame was separately
accepted with `0 source points`, `2,244 unobserved`, `0 occupied` and no retained
previous cloud.
A follow-up playback acceptance fixed a UI lifecycle defect that remounted the
Three.js scene while the next TGS frame crossed the React buffer boundary. The
scene now retains the last sealed classified frame until the exact next frame
arrives, so orbit controls and the operator-selected view survive continuous
playback. Twelve consecutive `250 ms` playback samples kept one mounted 3D
canvas, a visible bounded `LOCAL SLAM` surface and the synchronized E47 video
mask. Pausing is no longer required to rotate, pan or zoom the 3D view.
## Sealed evidence
| File | Bytes | SHA-256 |