Files
NODEDC_MISSION_CORE/docs/audits/2026-09-21-rerun-planning-customizations.md
T
DCCONSTRUCTIONS e515ab1b8c feat(planning): consolidate recorded-route localization and spatial scene
Preserve the completed teach-and-repeat laboratory stage: reference preparation, cascaded acquisition, local tracking and recovery, recording lifecycle, replay qualification, and persistent Rerun scene controls. Document the open grid-picking regression and Rerun upgrade contract. No autonomous driving or loop-closure optimization is claimed.
2026-09-21 08:47:19 +03:00

97 lines
5.5 KiB
Markdown

# Rerun customization register: planning profile addendum
Date: 2026-09-21. Documentation-only inventory of the implementation completed
on 2026-09-20, plus the owner's subsequent grid-picking regression report.
This does not implement a fix or update the Rerun dependency.
## Scope and version
The existing complete baseline remains
`2026-09-05-rerun-customization-inventory.md` and Ops MISSIONCOR #74.
Web Viewer and Python SDK remain pinned to 0.36.3. This planning work changes
Mission Core adapters, not the vendor SDK/WASM. The September 5 package/hash
audit is historical evidence; package provenance was not re-audited here.
The planning viewer is a separate profile from recorded Sessions and canonical
LAB replay. Do not assume their camera-journal, FOLLOW or blueprint-lease
mechanisms are interchangeable.
## Runtime and geometry transport
- `components/missions/PlanningLiveScene.tsx` owns one isolated Rerun host and
one channel per run/retry. Layers, clipping, point size and tool-window state
are not dependencies of its mounting effect.
- `core/missions/planningSceneStream.ts` admits latest-only deltas with one
in-flight request. The last admitted cursor survives stale replies and
transport errors. `needsBase` repairs geometry independently of camera intent.
- `missions/live_scene_delta.py` records camera intent as `[mode, reset]`.
Only initial admission or an explicit mode/reset change sends `log_view`.
`log_base` refreshes reference, trajectory and grid entities without writing
the operator's eye. A display epoch or alignment change is not a camera reset.
- The query transform, bounded cloud chunks, current temporal cloud head and
accepted-match display are separate entities. `Clear`, static component
replacement and `Transform3D` inheritance are upgrade-sensitive semantics.
- HTTP reset generation is explicitly carried by `web/planning_live_api.py`.
A transport cursor is not localization evidence. Expired live replies remain
rejected; renderer recovery must not restore green localization authority.
- Browser presentation telemetry measures channel admission and two bounded
animation-frame opportunities, not actual GPU paint or physical accuracy.
## Operator controls and camera ownership
- `PlanningSceneToolWindow.tsx` uses the Design Guideline `WorkspaceWindow`:
modeless, draggable, resizable and scene-bounded, with maximize/restore and
Escape. Layers and Display share it and retain its position when switching.
- `PlanningSpatialWorkspace.tsx` and `workspaces/spatial/SpatialWorkspace.tsx`
supply the window through the shared scene tools slot. The duplicate
Planning and Engine toolbar actions are absent in this spatial profile.
The optional source action remains available to other consumers.
- Height clipping uses canonical vertical `RangeControl`, right-side shaft,
left-side endpoints, no perimeter outline, and a displayed upper bound of
80 m. The full-scale position sends no extra height cut. Presentation
extraction and numerical localization extraction are independent; this is
not evidence of sensor range, terrain height or vehicle clearance.
- Native camera navigation is retained by not sending a replacement blueprint.
This planning path does not reconstruct eye from a pointer-input journal.
Explicit reset and top/3D presets may intentionally change the eye.
## Known open regression: selectable grid
To avoid a grid toggle reactivating a camera blueprint, the native
`LineGrid3D` is disabled and `world/grid` is logged as `LineStrips3D` in
`missions/live_scene.py`. Its XY extent follows reference bounds with 80 m
padding and adaptive spacing. It is a visual guide, not inferred ground.
The owner screenshot on September 21 shows a hover tooltip for
`/world/grid[20]` and a highlighted line. Ordinary data geometry participates
in native picking; the previous acceptance missed this behavioral regression.
It remains **unfixed** in this checkpoint. A future fix must make the guide
non-interactive without disabling useful point/trajectory picking or
reintroducing camera resets. Prefer a supported viewer/blueprint mechanism;
do not silently patch WASM or intercept all pointer input.
## Upgrade acceptance extension
- [ ] Preserve iframe, native recording/channel and eye through clipping,
layer toggles, point-size/grid changes, stale replies and geometry repair.
- [ ] Confirm explicit reset and top/3D presets still work.
- [ ] Confirm static replacement, child transforms, current cloud head and
historical/live separation with the new SDK and Web Viewer together.
- [ ] Drag/resize/maximize tools while orbiting/zooming; test Escape, full screen
and focus without blocking scene interaction or remounting the viewer.
- [ ] Verify full-scale 80 m display, partial glyph contrast and no focus/drag
perimeter. UI clipping must not alter recording or registration inputs.
- [ ] Resolve and verify grid picking independently; retain useful picking on
actual scene data. Do not mark this item complete from the older screenshot QA.
- [ ] Repeat scene stream, scene tools, fast-display/API tests and browser QA;
retain the separate recorded Sessions/FOLLOW upgrade checks from the baseline.
## Evidence limits
September 20 acceptance: 875 frontend tests, typecheck/build, 8 focused backend
tests and browser interaction QA, recorded in
`2026-09-20-planning-scene-camera-and-tools.md`. These results predate the grid
report and do not prove that grid picking was correct. No new physical scan,
SLAM closure algorithm, registration threshold change or device command is
part of this documentation update.