feat(perception): add full camera-first shadow
This commit is contained in:
@@ -415,6 +415,13 @@ Dataset expansion is no longer the next gate.
|
||||
- [x] Add a separate diagnostic motion-observation and near-occupied proximity
|
||||
derivative with temporal freshness, source provenance and no persistent-map
|
||||
mutation.
|
||||
- [x] Run the candidate camera detector through the canonical E29 association
|
||||
over all 4,489 RAVNOVES00 frames. Keep camera semantic ownership, publish
|
||||
LiDAR range only from qualified occupied support and retain the detector as
|
||||
a diagnostic shadow pending independent quality review.
|
||||
- [x] Version the vehicle-body/LiDAR-mount contract and bind RAVNOVES00
|
||||
fail-closed as a portable, physically unbound K1 source without invented
|
||||
dimensions or transforms.
|
||||
- [ ] Admit a `recent-collision` state only after vehicle-body and LiDAR-mount
|
||||
geometry are bound; proximity is not collision truth.
|
||||
- [x] Reuse the accepted camera-to-LiDAR projection as an optional semantic
|
||||
|
||||
@@ -176,6 +176,13 @@ real authority.
|
||||
- [x] Verify strict round-trip plus adversarial duplicate ownership, unknown
|
||||
owner, camera-only/conflict range, geometry-only semantics, held/persistent
|
||||
ownership, unavailable source and authority mutation cases.
|
||||
- [x] Reuse the canonical E29 frame association in E53 over all 4,489
|
||||
RAVNOVES00 frames with a second camera candidate. Preserve camera semantic
|
||||
ownership, keep unavailable LiDAR range explicit and reject runtime
|
||||
promotion without independent truth.
|
||||
- [x] Add `missioncore.rig-geometry/v1` with strict unbound/measured/qualified
|
||||
states. Bind the portable RAVNOVES00 K1 as `unbound`; do not infer a vehicle
|
||||
body or LiDAR-to-body mount from the recording.
|
||||
|
||||
The frozen A3 engineering and human generations cover all 486 items and
|
||||
retains the exact A2 materialization/review-pack and 42-sheet evidence
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# ADR 0035: Camera-first shadow and physical rig-geometry boundary
|
||||
|
||||
Date: 2026-07-30
|
||||
Status: accepted and implemented
|
||||
|
||||
## Decision
|
||||
|
||||
Mission Core preserves one perception ownership rule:
|
||||
|
||||
```text
|
||||
camera owns semantic class and object proposal
|
||||
LiDAR owns metric support and range
|
||||
```
|
||||
|
||||
The canonical E29 association is exposed as one reusable frame evaluator and
|
||||
is reused by E29 and full-source candidate shadows. A camera proposal remains
|
||||
an object when LiDAR support is unavailable; its range remains unavailable.
|
||||
Unassociated LiDAR geometry remains geometry without a semantic class.
|
||||
|
||||
E53 runs a candidate camera detector over every RAVNOVES00 frame through that
|
||||
unchanged association. It is a diagnostic shadow and cannot mutate E29,
|
||||
persistent reconstruction or runtime detector selection.
|
||||
|
||||
## Rig geometry
|
||||
|
||||
Vehicle-body and LiDAR mount/extrinsic use
|
||||
`missioncore.rig-geometry/v1`. The contract has three states:
|
||||
|
||||
- `unbound`: no physical body or mount values may be present;
|
||||
- `measured`: body and rigid transform require immutable measurement evidence
|
||||
and uncertainty, but collision remains unavailable;
|
||||
- `qualified`: geometry passed its named qualification method, while
|
||||
collision still requires a separate algorithm and safety gate.
|
||||
|
||||
RAVNOVES00 binds `ravnoves00-portable-k1/unbound-v1`. It is portable K1
|
||||
evidence and supplies no vehicle body or measured LiDAR→body transform.
|
||||
Invented dimensions, sensor height or identity transforms are rejected.
|
||||
|
||||
## Resource correction
|
||||
|
||||
The first E53 full pass exposed repeated decompression of
|
||||
`cloud_points_map` inside the frame loop. That immutable result failed its
|
||||
50 ms p95 gate at 210.7093 ms.
|
||||
|
||||
The accepted implementation materializes compressed source members once
|
||||
before sequential frame processing. The corrected run processed all 4 489
|
||||
frames at 1.7993 ms p95 and 36.8594 MiB peak-RSS growth. No Docker, worker,
|
||||
network service or second Mission Core backend participates in the path.
|
||||
|
||||
## Authority
|
||||
|
||||
E53 proves technical full-source execution, not detector accuracy:
|
||||
|
||||
- E29 overlap is comparison, not ground truth;
|
||||
- adjacent image-space IoU is continuity diagnostics, not tracking truth;
|
||||
- the candidate detector is not operationally promoted;
|
||||
- collision, navigation, safety and commands remain false.
|
||||
Reference in New Issue
Block a user