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.
97 lines
5.5 KiB
Markdown
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.
|