# ADR 0041: Registered map increment and rolling local occupancy Date: 2026-08-05 Status: accepted and implemented for M4.5R/M4.6 ## Context The recorded K1 topic `lixel/application/report/lio_pcl` is post-LIO data in the vendor SLAM map frame. In RAVNOVES00 it behaves as a registered map increment: one message contains points contributed at that moment, not a complete scan of everything currently visible. Therefore a structure can remain physically present while its points are absent from a later message. M4.5 originally applied a `0.75 s` temporal object hold directly to those increments. M4.6 then rendered the current increment as if it were the complete LiDAR scene. At frame `1880` the exact camera frame visibly contains two concrete hemispheres, while the current `lio_pcl` increment has no corresponding points in the corridor. The old result `m4-threat-replay-78a06d...` consequently lost them from 3D. This was a representation error, not evidence that LiDAR had measured free space. ## Decision Mission Core keeps three distinct products: ```text current registered increment ──> exact source context current occupied components ───> temporal identity and motion evidence bounded rolling occupancy ─────> conservative local obstacle presence ``` `RollingLocalObstacleMapProvider` accumulates only qualified current occupied cells in the SLAM map frame. It never interprets missing republication as free space. Retained cells are evicted only by explicit bounds: - voxel size `0.45 m`; - retention `3.0 s`; - local radius `12.0 m` around the recorded pose; - maximum `65,536` active cells, with fail-closed capacity handling; - bounded component size/count and deterministic 26-neighbour connectivity. The provider publishes only cells not present in the current increment as `TemporalState.RETAINED`. Current and retained identities cannot overlap. Retained components have ephemeral identity, carry their last-hit age and never claim current motion. They may assert `threat` when their occupied cells intersect the current virtual corridor; outside the corridor they remain `unknown`, never `not-threat`. The `0.75 s` temporal object state remains separate. It continues to answer whether a current component has enough bounded history for motion reasoning. It is not a map-clearing policy. ## Evidence and acceptance The accepted M4.5R result is `m4-temporal-replay-b8611526dfcd2b9be9049560d751bbd23a9ad54b7dda8e9dc48a17374d46266e`. Its frame ledger SHA-256 is `08a03669d3487ecf7bd62b047ae5b8d1ff586a27e7435e5f235907a4d709dd25`. Across all `4,489` source frames it records: - `848,868` current increment occupied cells; - `69,855` retained component publications and `1,776,145` retained cell publications; - peak `907` active cells and `35` retained components; - `29,620` time evictions, `6,512` radius evictions and zero capacity drops; - maximum retained age exactly `3.0 s` and `587` active cells at replay end. The accepted M4.6 result is `m4-threat-replay-ef521b23eee704dee99856b6e93d5047a9b358e21ffda3ea9cacc2ef768164d9`. All `4,489` frames completed with `27,299` current metric, `69,855` rolling-map, `37,995` stale/held and `10,158` camera-only evidence publications assessed exactly once. Decisions are `6,626 threat`, `10,700 not-threat` and `127,981 unknown`. All `10/10` deterministic fixtures pass with zero critical false-safe outcomes. Frame `1880` is a mandatory engineering visual regression. It binds two separate body-frame regions to two retained components. The near region must assert threat; both regions are present in the accepted result. These anchors encode a reproducible owner-reviewed visual case, not independent object truth. The common LAB viewer exposes `CURRENT INCREMENT` and `ROLLING MAP` as separate layers over the same selected frame. The current point count is not relabelled as a complete scan, and retained occupied cells remain independently hideable. ## Consequences and limitations - Missing points cannot create free-space or navigation authority. - Short-lived obstacle disappearance caused solely by incremental publication is removed from the replay decision path. - A moving object may leave a conservative ghost for up to `3.0 s`; retained occupancy can block but cannot claim motion or clearance. - No ray-level free-space clearing is available in this recording. A future raw scan/ray provider must add explicit observation and clearing semantics rather than weakening this contract. - The two frame-1880 anchors are regression evidence, not independent truth, detector accuracy or physical collision acceptance. - Live K1, measured `T_body_from_sensor`, physical body geometry, navigation, commands and actuation remain outside M4.5R/M4.6 authority.