feat(perception): add E34 temporal occupied layer
This commit is contained in:
@@ -681,10 +681,23 @@ workloads and are evidence of node visibility, not E33 process consumption.
|
||||
E33 qualifies downstream publication against the immutable E10→E32 chain; it
|
||||
does not rerun or independently requalify upstream inference.
|
||||
|
||||
Execution was strictly sequential through E33: E30 determined what E31 was
|
||||
E34 accepted immutable temporal-layer result
|
||||
`e34-temporal-occupied-8d9abb3f2cc072cfdbb16cc4e55798e05c35a0abe0b8f691096770e091573a73`.
|
||||
It consumes all `2,119,302` accepted E32 point rows, keeps current occupied
|
||||
cells separate from held/expired unknown state and preserves the persistent
|
||||
reconstruction. Peak state is 37 components and 324 cells per component;
|
||||
component continuity is `82.15%`, geometry-only re-association is `81.78%`,
|
||||
logical TTL emission delay is zero and coherent global map-frame jump count is
|
||||
zero. The earlier rejected immutable run exposed and retained a `0.333 s`
|
||||
source gap plus an incoherent nearest-neighbor jump detector; the fixed
|
||||
implementation uses an independent TTL deadline and coherent translation
|
||||
support without changing the frozen profile.
|
||||
|
||||
Execution was strictly sequential through E34: E30 determined what E31 was
|
||||
allowed to change; E31 determined the E32 profile; E32 determined the E33
|
||||
runtime input. Exact accounting is now closed, so E34 and E35 are the active
|
||||
critical path.
|
||||
runtime input; E32/E33 then bound the E34 layer. Exact accounting and the
|
||||
bounded nominal temporal layer are now closed, so E35 is the active critical
|
||||
path.
|
||||
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
|
||||
|
||||
@@ -192,7 +192,17 @@ p95 was `2.668 ms`, process RSS peaked at `92.34 MiB`, both queues remained
|
||||
bounded at depth two and the exact physical worker/container identity is
|
||||
retained. This qualifies the final TrackGeometry publication stage against the
|
||||
immutable upstream E10→E32 chain; it is not a new model-inference benchmark.
|
||||
A8/E34+E35 is now the critical path.
|
||||
A8/E34 is complete in immutable result
|
||||
`e34-temporal-occupied-8d9abb3f2cc072cfdbb16cc4e55798e05c35a0abe0b8f691096770e091573a73`.
|
||||
It consumes all `2,119,302` accepted E32 point rows across all 4,489 frames,
|
||||
keeps hit-only occupied evidence separate from persistent reconstruction,
|
||||
publishes held/expired state as unknown, peaks at 37 active components and 324
|
||||
cells per component, and emits no free cells. Geometry-only re-association is
|
||||
`81.78%`; overall component continuity is `82.15%`. Expiration uses an
|
||||
independent `0.75 s` deadline and records the `0.283 s` worst source-gap
|
||||
materialization delay separately. The first immutable run remains a rejected
|
||||
artifact documenting the frame-clock and incoherent-jump implementation
|
||||
failures. E35 is now the critical path.
|
||||
|
||||
- [x] Reproduce all 4,489 immutable E29 frames with the exact frozen profile
|
||||
before applying E31/E30 changes.
|
||||
@@ -212,7 +222,7 @@ A8/E34+E35 is now the critical path.
|
||||
and publish per-frame health/timing plus resource telemetry.
|
||||
- [x] Bind the accepted result to physical worker `DESKTOP-OPJ8J04` and the
|
||||
pinned container image; independently verify all result artifacts.
|
||||
- [ ] Build E34 as a separate short-TTL occupied/unknown temporal layer over
|
||||
- [x] Build E34 as a separate short-TTL occupied/unknown temporal layer over
|
||||
accepted E32/E33 evidence.
|
||||
- [ ] Run E35 deterministic degradation/recovery variants without changing
|
||||
the immutable source or accepted E32/E33 results.
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# ADR 0027 — E34 short-TTL occupied/unknown temporal layer
|
||||
|
||||
Date: 2026-07-27
|
||||
|
||||
Status: accepted for source-scoped diagnostic/shadow use
|
||||
|
||||
## Context
|
||||
|
||||
E32 published exclusive, source-indexed `PointSlab` ownership over all 4,489
|
||||
immutable RAVNOVES00 frames. E33 proved that the exact E32 publication stream
|
||||
can be delivered at recorded `1.0×` pace through bounded worker channels with
|
||||
closed accounting. Neither result is a local temporal model: geometry-only
|
||||
component keys are frame-local, current support disappears immediately when a
|
||||
source is unavailable, and there is no explicit expiration event.
|
||||
|
||||
The K1 stream is already registered mapped evidence. It does not retain the
|
||||
beam origin and firing time required for honest ray-cleared free-space
|
||||
mapping. The accepted persistent reconstruction must also remain a separate,
|
||||
immutable derivative.
|
||||
|
||||
## Predeclared decision
|
||||
|
||||
1. E34 consumes only the accepted content-addressed E32 result under the
|
||||
accepted E33 timing/accounting envelope. It never rewrites E32, E33, raw
|
||||
evidence, the mapped stream or persistent reconstruction.
|
||||
2. The output is a separate `lidar-local-map/v1` diagnostic derivative in the
|
||||
E32 `map` frame. It publishes only hit-backed `occupied` and conservatively
|
||||
aged `unknown` state. It never publishes `free`.
|
||||
3. Current E32 point owners become `current/occupied` temporal components.
|
||||
Camera track identity is retained only as source provenance. Geometry-only
|
||||
components receive new temporal IDs and may be spatially re-associated
|
||||
without inventing a semantic class.
|
||||
4. A component without current accepted points becomes `held/unknown` for at
|
||||
most `0.75 s`. Its last hit-backed cells remain explicitly stale evidence,
|
||||
not current measurement and not free-space proof.
|
||||
5. After the TTL, the component emits one `expired/unknown` tombstone and is
|
||||
removed from the active occupied layer. Expired cells are never published
|
||||
as occupied.
|
||||
6. Geometry-only re-association is deterministic, one-to-one and bounded to a
|
||||
`0.35 s` gap and `0.9 m` centroid distance. It additionally requires either
|
||||
a `0.05` neighbor-expanded voxel overlap or a centroid distance no greater
|
||||
than one `0.45 m` voxel.
|
||||
7. The layer uses hit-only `0.45 m` voxels, at most `4,096` cells per component
|
||||
and at most `256` active components. Crossing a bound fails closed; cells
|
||||
are not silently truncated and components are not silently evicted.
|
||||
8. A map-frame jump candidate is diagnostic only. It requires at least four
|
||||
adjacent matched components within `0.25 s`, median displacement of at
|
||||
least `1.5 m` and 25th-percentile displacement of at least `0.9 m`.
|
||||
9. Acceptance requires complete 4,489-frame accounting, exact upstream
|
||||
artifact identity, bounded state, no free-space publication, no component
|
||||
held past TTL, expiry no later than one `0.25 s` observation interval after
|
||||
the theoretical deadline and zero global map-frame jump candidates.
|
||||
10. Continuity, re-association, geometry-only persistence and ghost lifetime
|
||||
are measured and reported. They are not converted into detector accuracy
|
||||
or ground truth and are not retuned after inspecting this run.
|
||||
11. Dynamic class, traversability, planner input, commands, navigation and
|
||||
safety authority remain unavailable.
|
||||
|
||||
## Consequences
|
||||
|
||||
- The E34 result can prove a bounded temporal contract without claiming
|
||||
free-space quality or changing persistent mapping.
|
||||
- Camera-only, conflict, unknown and source-unavailable inputs can preserve
|
||||
uncertainty but cannot create new occupied cells without prior accepted
|
||||
hit-backed provenance.
|
||||
- A rejected run remains immutable evidence. Any later profile change requires
|
||||
a new ADR decision, profile identity and LAB result rather than overwriting
|
||||
E34.
|
||||
|
||||
## Execution outcome
|
||||
|
||||
The first immutable implementation result
|
||||
`e34-temporal-occupied-1bab293c1867100e172923b189f8273c47eacca3dd179fd54573200906affd7c`
|
||||
was rejected without changing the profile. It exposed two implementation-level
|
||||
architecture errors:
|
||||
|
||||
- scalar nearest-neighbor displacement was not sufficient to call a jump
|
||||
global; the corrected detector requires one coherent translation within the
|
||||
already fixed voxel residual;
|
||||
- frame-driven expiry could not meet the TTL across a recorded `0.333 s`
|
||||
source gap; expiration now uses an independent logical layer deadline and
|
||||
retains the later replay materialization time separately.
|
||||
|
||||
The accepted result is
|
||||
`e34-temporal-occupied-8d9abb3f2cc072cfdbb16cc4e55798e05c35a0abe0b8f691096770e091573a73`.
|
||||
It processes all 4,489 frames and all 2,119,302 E32 point rows, peaks at 37
|
||||
active components and 324 cells per component, emits zero free cells, meets
|
||||
the `0.75 s` TTL exactly and reports zero coherent global map-frame jump
|
||||
candidates. A8 now continues with E35 deterministic degradation/recovery.
|
||||
Reference in New Issue
Block a user