diff --git a/docs/13_LIDAR_WORKER_PRODUCT_AND_ROADMAP.md b/docs/13_LIDAR_WORKER_PRODUCT_AND_ROADMAP.md index af06a60..7609ff7 100644 --- a/docs/13_LIDAR_WORKER_PRODUCT_AND_ROADMAP.md +++ b/docs/13_LIDAR_WORKER_PRODUCT_AND_ROADMAP.md @@ -618,6 +618,38 @@ is the detailed interpretation and reproduction contract are in `experiments/perception/LAB_E29_REPORT_2026-07-26.md`. +#### Accepted research cycle after E29 + +The next objective is not to make the K1 cloud look more like a conventional +rotating-LiDAR dataset. It is to decide whether the existing passive K1 +`lio_pcl + lio_pose` stream can reliably confirm metric occupied geometry for +camera-first observations at recorded source pace. The persistent +reconstruction remains an independent derivative and is never overwritten by +perception filtering. + +The cycle uses the existing immutable `RAVNOVES00` recording first. A connected +K1, firmware changes, new application commands and a newly collected training +dataset are not prerequisites. Every row below is a separate immutable LAB run +with a complete `missioncore.laboratory-method/v1` manifest. + +| LAB | Question and admitted input | Required evidence and measures | Exit decision | +| --- | --- | --- | --- | +| **E30 — disagreement audit** | Why did E29 produce 38 conflicts, 13,246 camera-only observations and 21,321 unassociated occupied components? Input is the immutable E29 result plus its exact RAVNOVES00 camera/LiDAR/pose evidence. | Review all conflict episodes and a stratified sample of agree, camera-only, unknown and geometry-only cases. Each reviewed item keeps synchronized camera, point cloud, source time and classification into evidenced causes such as FOV, occlusion, time binding, projection/calibration, sparse return, local-surface error, association error or self/rig geometry. | Freeze a cause distribution and the minimum correction set. Do not tune thresholds before this audit. | +| **E31 — time, transform and self-mask qualification** | Are camera↔LiDAR binding, factory calibration identity, pose age and rig footprint sufficient for E29? | Pin the read-only calibration/profile identities; measure timestamp/pose-age distributions, projection residuals where corresponding evidence exists, offset sensitivity and the effect of a source-defined vehicle/self mask. No hard-coded handheld sensor height and no inferred raw firing time. | Accept one evidenced binding/profile or fail closed and retain diagnostic-only E29. | +| **E32 — camera-first geometry v2** | Does the accepted E31 profile improve consistency without erasing occupied evidence? | Re-run the full 4,489-frame source with the exact E31 profile. Compare E29 and E32 by class, distance, scene interval and cause bucket: agree, camera-only, conflict, unknown, geometry-only, occupied support and excluded samples. Show before/after evidence for every changed conflict episode. | Accept the profile only if conflict/staleness improves without converting unknown or unsupported space to free and without hidden source loss. | +| **E33 — recorded-source-paced fusion shadow** | Can the complete camera-first + geometry pipeline keep up with the recorded source stream on the worker? | Replay E32 at original host pace through bounded latest-wins queues. Record sensor-to-result p50/p95/max, deadline misses, queue depth, replacements, drops, stale results, recovery, CPU, RSS, GPU/VRAM, runtime/container and exact model-weight identities. Commands remain impossible. | Admit a replay-shadow candidate only when accounting is closed, resource bounds are declared and every late/missing result becomes explicit health state. | +| **E34 — temporal occupied layer** | Can occupied geometry remain stable enough for a local world model without polluting the persistent reconstruction? | Build a separate short-TTL layer over accepted E32/E33 evidence. Measure component continuity, re-association, ghost lifetime, stale expiry, map-frame jumps and geometry-only persistence. Visualize track history and expiration; retain raw/map evidence unchanged. | Accept only bounded occupied/unknown telemetry. Dynamic class, free space and planner authority remain unavailable unless independently proved. | +| **E35 — deterministic degradation and recovery** | Does the accepted pipeline fail safely when one source degrades? | Derive immutable replay variants for camera loss, LiDAR loss, pose staleness, delayed frames, bounded drops and timing offset. Preserve the original source and record every injected transformation. Measure status transitions, recovery time, queue accounting and false confidence. | Pass only if missing evidence becomes camera-only, geometry-only, stale or unknown; never guessed class, false free space or hidden success. | +| **E36 — second-source transfer gate** | Does the result survive another real capture rather than only RAVNOVES00? | First audit the source catalog for a second recording with the required camera, LiDAR, pose, time and calibration identities. Run the accepted E32–E35 profile unchanged when such evidence exists. Public GOOSE/RELLIS data may qualify an algorithm but cannot substitute for this K1 transfer gate. | Compare the frozen profile without retuning. If no eligible source exists, publish a blocked LAB record naming the missing modalities; do not fabricate a result or collect new data by default. | + +Execution is strictly sequential through E33: E30 determines what E31 is +allowed to change; E31 determines the E32 profile; E32 determines the E33 +runtime input. E34 and E35 may proceed only after E33 closes exact accounting. +E36 is the first generalization gate. A separate product decision follows: +either keep the result as operator/shadow evidence, or start L5 occupied-space +integration. No LAB in this cycle can enable navigation, commands or safety +authority. + ### L5 — local occupancy and Nav2 - [ ] Qualify conservative hit-based occupied/unknown output from the existing diff --git a/docs/15_LABORATORY_RUN_CANON.md b/docs/15_LABORATORY_RUN_CANON.md index f59a127..c569365 100644 --- a/docs/15_LABORATORY_RUN_CANON.md +++ b/docs/15_LABORATORY_RUN_CANON.md @@ -157,6 +157,29 @@ A LAB run may be shown as diagnostic evidence with `legacy-partial` method metadata. It may be called reproducible or promoted only when the method is `complete` and its experiment-specific acceptance gates pass. +## Planning discipline + +A planned LAB number is not a placeholder page. Before execution it must name: + +1. one decision question or falsifiable hypothesis; +2. the exact immutable source and admitted derivative inputs; +3. the method identities and the one configuration allowed to vary; +4. the required visual evidence; +5. measurements, exclusions and predeclared thresholds; +6. the exit decision and the authority that remains forbidden. + +After execution, the planned definition is retained in the immutable result. +Changing the source, algorithm, model weights, preprocessing, thresholds or +runtime creates a new LAB run. A failed or blocked experiment remains useful +only when its missing evidence and failure reason are explicit; an empty +viewer or invented metric is never a laboratory result. + +The accepted E30–E36 camera-first/K1 research sequence is maintained in +`docs/13_LIDAR_WORKER_PRODUCT_AND_ROADMAP.md`. It deliberately starts with the +E29 disagreement audit and recorded evidence already available in Mission +Core. It does not require a connected K1 or new data collection before the +existing recording has exhausted its admitted questions. + ## Storage and Git Raw captures, model weights, generated RRD, videos and large derived arrays stay