docs(lab): record sealed playback data plane

This commit is contained in:
DCCONSTRUCTIONS
2026-08-27 15:25:54 +03:00
parent 7aeea4ed81
commit c8593207d3
2 changed files with 111 additions and 0 deletions
@@ -355,6 +355,17 @@ and the CPU-only TGS stage measured `1.735/2.14019 ms` at p95/p99 with a
Integrated runtime capacity is accepted; visual traversability, physical free
space, navigation, actuation and production remain unaccepted.
The canonical LAB playback data plane was then replaced on `2026-08-27` without
changing the sealed TGS or reference-graph results. Dense M4 points and complete
TGS numeric products are now loaded once as immutable digest-verified binary
tracks; bounded JSON windows retain metadata only, and the existing Three.js
scene updates persistent GPU buffers instead of remounting per frame. The exact
products, loopback delivery measurements, seek/play browser acceptance and
authority boundary are recorded in
[`experiments/perception/M49_LAB_PLAYBACK_DATA_PLANE_ACCEPTANCE_2026-08-27.md`](../experiments/perception/M49_LAB_PLAYBACK_DATA_PLANE_ACCEPTANCE_2026-08-27.md).
This is a playback and evidence-delivery acceptance, not a new perception or
navigation-quality gate.
### T4 — Candidate C occupancy/ESDF probe
- Run nvblox separately with RF-DETR disabled for the isolated probe.
@@ -0,0 +1,100 @@
# M4.9 LAB sealed playback data plane — 2026-08-27
Status: **accepted for local recorded-evidence playback on the canonical Mission
Core service**. This acceptance covers playback delivery, timeline interaction
and renderer lifecycle. It does not change TGS visual-quality, navigation,
actuation or production authority.
## Decision
The LAB no longer transports source point arrays or the full TGS costmap as
per-frame JSON. The canonical playback data plane now downloads sealed numeric
tracks once, verifies their declared SHA-256 identities, retains them in the
browser and derives the current frame from immutable offsets. JSON remains only
for bounded frame metadata that is not a dense numeric point track.
The renderer keeps one Three.js scene mounted. Point `BufferGeometry`,
classified-cell `InstancedMesh` objects and semantic-mask presentation are
updated in place. A qualified previous semantic mask may remain visible while
the exact next mask is loading; it is marked stale and is never presented as
the new exact frame. Rapid seeks cancel obsolete metadata windows.
This removes the observed frame-by-frame JSON parsing and scene-remount path.
It also disables dynamic gzip for local numeric tracks and compact frame
metadata. During diagnosis, on-the-fly compression of the M4 point product took
approximately `14.4 s` and placed the backend in zlib work. The accepted
delivery uses `Content-Encoding: identity`, immutable cache headers and the
sealed digest instead.
## Sealed playback products
| Product | Shape / count | Bytes | Delivery |
| --- | ---: | ---: | --- |
| M4 map points | `9,207,270 × 3`, float32 | `110,487,240` | one raw binary track + `4,490` immutable offsets |
| M49 cell centers | `2,244 × 2`, float32 NPY | `18,080` | one immutable track |
| M49 states | `4,489 × 2,244`, uint8 NPY | `10,073,444` | one immutable track |
| M49 z-bounds | `4,489 × 2,244 × 2`, float32 NPY | `80,586,656` | one immutable track |
| M49 frame ledger | `4,489` NDJSON records | `1,178,262` | one immutable track |
| M49 total | four tracks | `91,856,442` | preloaded once |
M4 points remain in the exact registered-map point index space. A lightweight
M4 metadata window declares body transforms, camera proposals, obstacles and
point accounting without duplicating point arrays. The browser hydrates a
qualified current increment from the retained binary track. M49 states and
z-bounds are addressed directly by `source_sequence`; all `2,244` cells remain
explicit for every one of the `4,489` frames.
## Measured local delivery
One hot local-loopback measurement on the canonical `127.0.0.1:8000` service:
| Request | Bytes | Wall time |
| --- | ---: | ---: |
| M4 point track | `110,487,240` | `0.162 s` |
| M49 centers | `18,080` | `0.009 s` |
| M49 states | `10,073,444` | `0.046 s` |
| M49 z-bounds | `80,586,656` | `0.256 s` |
| M49 frame ledger | `1,178,262` | `0.007 s` |
| M4 lightweight metadata, frames `11041127` | `891,543` | `0.160 s` |
These loopback values describe delivery only; they are not a network SLA. The
UI separately exposes exact download percentage and MiB progress while tracks
are transferred and verified.
## Browser acceptance
Production assets were opened through the canonical service. An arbitrary seek
from the beginning to `110.330 s` produced exact frame `1105`, its E47 semantic
mask, qualified source cloud, bounded local SLAM surface and the same-frame TGS
costmap. The qualified scene was visible within the `1.2 s` observation wait.
Playback then advanced through frame `1141` across multiple 24-frame metadata
windows. The final DOM and visual evidence agreed on frame `1141`; the semantic
mask was frame `1141`; `map-gravity-local · all eligible points accounted` was
visible; no spatial buffering state or missing-linked-cloud warning remained.
The browser console contained zero errors.
Frames without a qualified body frame still render honestly as TGS cell-only.
They do not reuse a source cloud from another frame and do not invent geometry.
## Runtime and validation
- Canonical service: exactly one listener on `127.0.0.1:8000`; no listener on
`8765`.
- Backend: Ruff passed; `11` focused M49/M4 tests passed.
- Frontend: `28` focused playback, semantic and architecture tests passed;
TypeScript typecheck and production build passed.
- Delivery commits: `bf76304` (`sealed spatial playback tracks`) and `7aeea4e`
(`retained spatial scenes during replay`).
- GAUSS and PlayCanvas changes were excluded from both commits and from this
acceptance.
## Authority boundary
Accepted: local recorded-evidence delivery, exact sealed identity, bounded
metadata windows, fast seek behavior, retained renderer state and synchronized
camera/semantic/spatial presentation.
Not accepted: visual traversability quality, physical free space, a vehicle
envelope, collision clearance, navigation, actuation, live-stream transport or
production soak. Those gates remain separate from the LAB playback data plane.