docs(lab): record sealed playback data plane
This commit is contained in:
@@ -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 `1104–1127` | `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.
|
||||
Reference in New Issue
Block a user