97 lines
5.3 KiB
Markdown
97 lines
5.3 KiB
Markdown
# Native Rerun navigation · 2026-09-21
|
|
|
|
## Scope
|
|
|
|
The owner accepted the recorded cloud quality and asked to finish navigation.
|
|
No scanner command, recording rewrite, cloud decimation, color change or matching
|
|
algorithm change belongs to this increment. OPS receives the final result only
|
|
after completion, per the owner's explicit instruction.
|
|
|
|
## Cause and implementation
|
|
|
|
Upstream orbital pan translates in the camera's screen plane. Consequently the
|
|
target can move above the ground grid; scrolling then approaches that floating
|
|
target rather than the intended ground location. Upstream also limits orbital
|
|
zoom-out to five scene diagonals. The application previously inferred a camera
|
|
from DOM deltas; that approximation was not the rendered native camera.
|
|
|
|
ADR 0052 admits a bounded patch to the pinned upstream 0.36.3 WebViewer:
|
|
|
|
- Project orbital pan onto the native grid plane and translate the complete rig.
|
|
- Anchor untracked orbital views before rendering; stop interpolation when the
|
|
operator navigates. Ordinary orbit keeps the target fixed.
|
|
- Zoom to that target independently of scene extent, retaining only 0.02 m
|
|
near-plane protection and a finite arithmetic guard.
|
|
- Read the native rendered eye through the existing disposable iframe boundary.
|
|
Remove the approximate DOM camera journal and its viewport/radius plumbing.
|
|
- Preserve first-person navigation and explicit follow/reset/plan actions.
|
|
Display-only updates carry the actual native eye and do not seek/reload data.
|
|
Browser QA caught that omitting eye fields on blueprint activation restored
|
|
the incoming store's startup camera despite the stable view identity. The
|
|
settings boundary now preserves the operator eye explicitly.
|
|
|
|
The existing canonical hint describes LMB orbit, RMB ground-pivot pan and wheel
|
|
zoom. No new product controls, renderer, debug UI or alternative event loop were
|
|
introduced. The product UI skill kept this change inside the shared viewer.
|
|
|
|
## Build and evidence
|
|
|
|
Pinned upstream commit: `6ded109d33c549e98185f7c95fa8009d44e4adef`.
|
|
Portable patch and generated artifacts are under
|
|
`apps/control-station/vendor/rerun-web-viewer-0.36.3`.
|
|
|
|
Worker006 used a temporary 4-CPU / 16-GB build-only container, no GPU, ports or
|
|
scanner data. Native Rust camera tests passed **6/6**, including fixed-pivot
|
|
rotation, ground pan, another grid orientation, top-down pan, zoom from over
|
|
20 km to below 3 cm and invalid-input / first-person regression.
|
|
|
|
The first browser build failed because macOS AppleDouble archive metadata was
|
|
interpreted as a WGSL shader. The versioned packaging/build step now excludes
|
|
and strips that metadata inside the disposable build workspace. No shader or
|
|
upstream dependency was changed to bypass the error.
|
|
|
|
The three source files on Worker006 were SHA-256 identical to the locally
|
|
audited patch result. `navigation-build.json` records source, toolchain and
|
|
paired JS/WASM identities. The installer validates the entire set before writing
|
|
and rejects package drift rather than silently applying a patch to a new SDK.
|
|
|
|
## Acceptance record
|
|
|
|
- Native tests: **6/6** passed. The source patch applies cleanly to the pinned
|
|
pristine upstream archive.
|
|
- Final application architecture: **4/4**; TypeScript: passed; complete frontend
|
|
suite: **895/895**, no skipped tests; production build: passed (14.36 s).
|
|
- Installer ran twice successfully. Generated JS/WASM ABI and all artifact
|
|
hashes passed. Served build uses WASM SHA-256
|
|
`2b661de545ac90bb950eda1a28fc5a7c3ce4ca7f5bb24894789acf7589495185`.
|
|
- Real in-app browser, canonical port 8000, `JA-STROITEL-SUN-RING-002`, paused
|
|
at 60 s: orbit, close/far wheel zoom, point size change to 0.5 px, cloud layer
|
|
off/on, follow on/off, expanded scene and return all exercised. After the
|
|
settings-boundary correction, the manually rotated view survived display and
|
|
layer changes. No browser console errors were reported.
|
|
- Host-focused Escape returned from the expanded scene. The automation did not
|
|
establish Escape delivery with focus inside the native canvas; that gesture
|
|
is not claimed as verified. No keyboard code was changed in this increment.
|
|
- Physical two-finger/right-button dragging is not exposed by the available
|
|
browser automation. Ground-plane pan and fixed-pivot invariants are covered
|
|
by the native tests; the owner's actual trackpad feel remains manual acceptance.
|
|
- The final recorded scene is left paused for owner review. The temporary
|
|
Worker006 build container was removed after artifacts/logs were copied.
|
|
No alternate backend or temporary renderer was left running.
|
|
|
|
The owner subsequently accepted navigation ("устраивает") and authorized OPS
|
|
documentation. Card #74 now records the accepted native patch, build manifest,
|
|
upgrade/rollback procedure and verification boundaries. This does not qualify
|
|
rover operation or alter the navigation test limitations above.
|
|
|
|
## Boundaries
|
|
|
|
The guide grid is a geometric plane, not measured terrain. Explicit following
|
|
may move a target because that is its requested purpose. Mission Core admits one
|
|
active 3D pane per iframe; multiple simultaneous panes would require a view-id
|
|
argument for snapshots. Floating-point/near-plane safeguards are retained;
|
|
"no route-size zoom cap" does not mean infinite numeric coordinates.
|
|
|
|
The accepted full-fidelity RRD and 30-minute accumulation are unchanged. Raw and
|
|
corrected map versions do not need regeneration for this navigation update.
|