82 lines
4.9 KiB
Markdown
82 lines
4.9 KiB
Markdown
# K1 onboard live presentation R12
|
|
|
|
## Owner request and composition decision
|
|
|
|
The operator starts the enrolled K1 from Fleet and observes the live point cloud
|
|
and camera from its paired onboard computer. The owner explicitly selected the
|
|
established direct K1 live-acquisition template for this detail view: shared
|
|
engine/layer/display tools, accumulation, floating resizable camera, source
|
|
visibility, metrics and expansion. An independent simplified onboard viewer was
|
|
rejected because it had already drifted in layout, controls and status meaning.
|
|
This is reuse within the admitted Fleet sensor-detail surface, not a new product
|
|
root, navigation change or Design Guideline primitive. The existing manual
|
|
START/STOP authority remains in the device control card above the shared scene.
|
|
|
|
Primitives remain Design Guideline Button/IconButton, SettingsCard, StatusBadge,
|
|
Inspector, Window and WorkspaceWindow. Shared domain composition is extracted to
|
|
`packages/spatial-ui`: both the direct host and onboard plugin consume the same
|
|
controls, timeline, media frame, source picker and styles. Direct live, recorded
|
|
and LAB source/transport/profile owners remain separate. No recorded blueprint,
|
|
archive format, physical command or reconnect supervisor policy changes here.
|
|
|
|
## Evidence and fault
|
|
|
|
Owner's sequence after installing R11: Bluetooth/Wi-Fi enrollment, manual START
|
|
and reopening Mission Core succeeded. The viewer repeatedly showed upstream
|
|
welcome/loading chrome, eventually displayed points, had no camera and could
|
|
present old points after a source pause. This confirms those user-observed
|
|
behaviors only; it does not establish full live-preview acceptance.
|
|
|
|
The native Rerun binary sink returns `None` when there are no new bytes.
|
|
`RrdSubscriber.run` called `len(payload)` unconditionally, swallowed TypeError
|
|
and closed the subscription. NodeMediaPeers then closed the whole media peer,
|
|
including camera delivery. Browser retry constructed another native runtime.
|
|
A local native SDK reproduction and an actual loopback WebRTC regression now
|
|
cover idle reads, idle media channels and subsequent new point/camera data.
|
|
|
|
A second presentation defect treated existence of the blueprint's stream_time
|
|
range as proof of lidar data. Preview protocol v2 adds bounded sequence/age/point
|
|
metadata after native RRD bytes. Only fresh source frames admit the scene.
|
|
Repeated metadata cannot renew freshness. Old decoded frames are discarded
|
|
before encoding; a newly opened subscriber does not replay expired cached data.
|
|
No operator/board wall-clock synchronization is required for the age gate.
|
|
|
|
## Implementation boundaries
|
|
|
|
- Native runtime lifetime is the mounted scene, separate from its disposable
|
|
WebRTC media connection. Recovery opens a new recording channel inside the
|
|
existing runtime. No automatic START, STOP, Wi-Fi or BLE action is added.
|
|
- Native Following remains owned by the live blueprint. Polling no longer
|
|
repeatedly pauses and positions its cursor.
|
|
- Both upstream loading/welcome content and native header/view tabs are masked
|
|
using the same presentation gate and crop as the established direct viewer.
|
|
- The heading is “Пространственная модель”; “Статус” is left aligned and its
|
|
message is centered. Physical action loaders remain inside their button.
|
|
- Display edits are serialized live-acquisition settings operations. Closing a
|
|
modeless tool flushes changes and closes unconditionally; failures use the
|
|
host's existing error channel. LAB and recorded settings are unchanged.
|
|
- Camera visibility is local presentation, with its decoder kept mounted when
|
|
hidden. Acquisition and the durable camera producer remain onboard-owned.
|
|
|
|
## Validation and acceptance
|
|
|
|
Completed at draft time: both TypeScript projects; architecture/focused frontend
|
|
checks except the deliberately obsolete old viewer-class assertion (updated to
|
|
assert shared template and masked initial presentation); 12 Python checks across
|
|
native subscriber and media, including one bounded loopback WebRTC peer with two
|
|
channels and idle/resume. No real BLE/MQTT commands were issued for these checks.
|
|
Full Control Station regression: 802/802 passed. Control Station production
|
|
build passed. Node package build and physical acceptance remain pending.
|
|
|
|
R12 packages target Node 0.8.9 and optional K1 0.1.9. Immutable source/artifact
|
|
identity, installation and acceptance are recorded after packaging.
|
|
|
|
Required physical acceptance remains: owner clears Chrome cache before each
|
|
UI run; enrolled K1 START; both actual points and camera; settings/accumulation;
|
|
normal/expanded windows and Escape; STOP; pause/recovery; browser reopen without
|
|
stale live data. The agent's CUA session exposes the in-app browser, not Chrome
|
|
cache reset. Do not describe that as a completed clean-cache hardware test.
|
|
|
|
No Ops publication or Git push is attempted here: prior specific automatic
|
|
approval rejections remain unresolved. Private raw artifacts remain outside Git.
|