feat(perception): add full camera-first shadow

This commit is contained in:
DCCONSTRUCTIONS
2026-07-30 23:15:06 +03:00
parent dee6d57133
commit dc6f9b66da
12 changed files with 1932 additions and 29 deletions
@@ -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.