From c8593207d399f5b49b46854b048a5f8bb2aadc99 Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Thu, 27 Aug 2026 15:25:54 +0300 Subject: [PATCH] docs(lab): record sealed playback data plane --- ...LITY_AND_STATIC_OBSTACLE_STACK_DECISION.md | 11 ++ ...AYBACK_DATA_PLANE_ACCEPTANCE_2026-08-27.md | 100 ++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 experiments/perception/M49_LAB_PLAYBACK_DATA_PLANE_ACCEPTANCE_2026-08-27.md diff --git a/docs/23_TRAVERSABILITY_AND_STATIC_OBSTACLE_STACK_DECISION.md b/docs/23_TRAVERSABILITY_AND_STATIC_OBSTACLE_STACK_DECISION.md index 1f19599..564133c 100644 --- a/docs/23_TRAVERSABILITY_AND_STATIC_OBSTACLE_STACK_DECISION.md +++ b/docs/23_TRAVERSABILITY_AND_STATIC_OBSTACLE_STACK_DECISION.md @@ -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. diff --git a/experiments/perception/M49_LAB_PLAYBACK_DATA_PLANE_ACCEPTANCE_2026-08-27.md b/experiments/perception/M49_LAB_PLAYBACK_DATA_PLANE_ACCEPTANCE_2026-08-27.md new file mode 100644 index 0000000..8025404 --- /dev/null +++ b/experiments/perception/M49_LAB_PLAYBACK_DATA_PLANE_ACCEPTANCE_2026-08-27.md @@ -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.