docs(perception): record full TGS shadow acceptance

This commit is contained in:
DCCONSTRUCTIONS
2026-08-26 23:07:16 +03:00
parent d722b0f82b
commit 46cef8df17
2 changed files with 116 additions and 9 deletions
@@ -332,6 +332,18 @@ in the canonical LAB as
linked to the current M4 v3 recorded timeline. Publication adds no navigation
or actuation authority.
The subsequent complete source-paced TGS-only shadow passed on `2026-08-26`.
It accounted for all `4,489` timeline frames and all `63,646,163` eligible
points, emitted the `561` missing-LiDAR frames as explicit all-cell
`UNOBSERVED`, sustained `10.003945 FPS`, measured TGS `p95/p99` at
`1.694/2.08973 ms`, completion-age `p99` at `41.42845548 ms`, and recorded zero
capacity drops. The immutable result and canonical LAB acceptance are recorded
in
[`experiments/perception/M49_TGS_FULL_SHADOW_ACCEPTANCE_2026-08-26.md`](../experiments/perception/M49_TGS_FULL_SHADOW_ACCEPTANCE_2026-08-26.md).
This accepts the CPU source-paced shadow and retains the candidate. It does not
accept visual traversability quality, integrated graph performance, navigation
or actuation.
### T4 — Candidate C occupancy/ESDF probe
- Run nvblox separately with RF-DETR disabled for the isolated probe.
@@ -349,14 +361,15 @@ or actuation authority.
## Immediate next action
Review the published gravity-aligned TGS evidence pack across all ten anchors
in metric 3D/costmap space. Preserve
Review the published full gravity-aligned TGS timeline in camera, metric 3D and
costmap space. Preserve
`GROUND_SUPPORT`, `NONGROUND_OCCUPIED`, `UNKNOWN_REJECTED` and `UNOBSERVED` as
separate products; do not use AOS or infer free cells from absent
republication. Add diagnostic camera projection only after the metric evidence
is accepted. If occupied evidence carpets the route, soft traversable
vegetation or usable gaps, reject TGS without tuning it against the review
anchors; otherwise advance it to a full recorded-source shadow. Candidate A T2
replay remains blocked by the failed unmodified T1 gate. No LOW-STEP tuning,
new object model, camera resize, fisheye rectification, manual dataset or
parallel heavy Worker job is authorized by this decision.
republication. Attach the unchanged candidate to the realtime world-state graph
in non-authoritative shadow mode and measure complete-graph FPS, latency,
resource use and queue drops. If occupied evidence carpets the route, soft
traversable vegetation or usable gaps, reject TGS without tuning it against the
review evidence. Candidate A T2 replay remains blocked by the failed unmodified
T1 gate. No LOW-STEP tuning, new object model, camera resize, fisheye
rectification, manual dataset or parallel heavy Worker job is authorized by
this decision.
@@ -0,0 +1,94 @@
# M4.9T5 full source-paced TRAVEL TGS shadow — 2026-08-26
Status: **recorded source-paced CPU shadow accepted; candidate retained**.
Visual traversability quality, full-graph performance, navigation and actuation
remain unaccepted.
## Decision
The gravity-aligned TGS-only candidate completed the entire `RAVNOVES00`
recorded timeline on Worker 006. Every source timeline frame and every eligible
LiDAR point is represented. No frame was dropped for capacity, AOS was never
invoked, no GPU was requested and the canonical Triton container remained
healthy with the same identity.
This accepts TGS as a bounded CPU shadow candidate. It does not yet make TGS a
navigation authority or prove that its occupied/ground interpretation is
correct for vegetation, terrain, gaps or the future vehicle envelope.
## Frozen identity
| Item | Identity |
| --- | --- |
| LAB result | `m49-tgs-full-shadow-0faeaaf3aba8dccae974eab51ff9cccf264a13ec285abb1920c1e5a09a7e87bc` |
| Worker run | `Worker 006 / ravnoves00-full-001` |
| Mission Core revision used by Worker | `40c850b167dda366d8aa45d828520168affaf9fd` |
| Deterministic Worker artifact | `5e0ea16c7a5cc760463836718b0cd8b0006ffc4b202e5f706a20a86ef2f912ab` |
| Source pack SHA-256 | `0685d24219d8236caf8b7f1685e93f6d6b59e7fd015a768d88a92bbe8b154944` |
| TGS config SHA-256 | `c2e07010aaee78259d36c057962d6bfb885349251ff7356d867e5813e632881c` |
| Linked visual result | `m4-threat-replay-2a953c5f27f2a5b1dddc5c658c1de2c323d7796084a099c024987a1da03aa324` |
The profile is a `0.45 m`, `12 m` radius, `1 s` causal rolling
`map-gravity-local` costmap. The four states remain separate:
`GROUND_SUPPORT`, `NONGROUND_OCCUPIED`, `UNKNOWN_REJECTED` and `UNOBSERVED`.
## Full-run result
| Measurement | Result |
| --- | ---: |
| Timeline | `4,489 / 4,489` frames |
| LiDAR available / missing | `3,928 / 561` |
| Recorded duration / effective rate | `448.623 s / 10.003945 FPS` |
| Eligible points | `63,646,163` |
| Ground / non-ground / rejected | `16,579,467 / 47,046,815 / 19,881` |
| Unaccounted points | `0` |
| TGS p50 / p95 / p99 / max | `1.190 / 1.694 / 2.08973 / 9.106 ms` |
| Completion age p50 / p95 / p99 / max | `17.920792 / 29.140775 / 41.428455 / 659.980295 ms` |
| Capacity drops | `0` |
| Worker wrapper wall time | `569.401084 s` |
All formal source-paced, point-accounting and capacity gates passed. The
completion-age maximum is retained as an outlier; the accepted gate is the
measured `p99 = 41.43 ms`, not the maximum.
## Fail-closed behavior
The `561` timeline frames without a LiDAR sample are not removed, interpolated
or copied from the preceding frame. Each is emitted as a complete `2,244`-cell
costmap with all states explicitly `UNOBSERVED`, zero occupied cells and zero
source points. This preserves chronology without inventing free space.
## Canonical LAB publication and UI acceptance
The immutable result is published on the canonical Mission Core service at
port `8000`. The LAB reuses the recorded camera timeline and exposes independent
`SOURCE POINTS`, `TGS COSTMAP`, `3D` and `PLAN` controls.
The first implementation fetched one large JSON frame at a time. Browser QA
showed that this was only intermittently exact at `1×`. The published viewer
therefore uses immutable chunks of `24` spatial frames and prefetches the next
chunk. A final `1×` browser acceptance sampled twenty consecutive positions
across chunk boundaries: all twenty displayed the exact TGS frame and none
showed the loading placeholder. A real missing-LiDAR frame was separately
accepted with `0 source points`, `2,244 unobserved`, `0 occupied` and no retained
previous cloud.
## Sealed evidence
| File | Bytes | SHA-256 |
| --- | ---: | --- |
| `costmap-states.npy` | `10,073,444` | `4173f8b6b743755d6d6cbd863c433fe44853974bdd4898002e08574a65783a1a` |
| `costmap-z-bounds-m.npy` | `80,586,656` | `f8d68b5ca09860ef857a22e15e114bbeabde32492d5c821ee59dfa62ae40373a` |
| `frames.ndjson` | `1,178,262` | `878e20806d55cdc1fa16692397e11a0e56af760a83c173c8fc73319a39b0e779` |
| `worker-summary.json` | `1,076` | `487d4be6f3d724bca647aa2e48ba89e7ffd0c78f1bfc5e7e5a01e1db82379dc7` |
## Next gate
Attach this unchanged TGS stage to the realtime world-state graph in shadow
mode alongside the frozen camera semantic-risk provider. Measure complete-graph
FPS, end-to-end latency, CPU/GPU/VRAM and queue drops against the accepted
baseline. Keep navigation authority off. In parallel, review the full camera +
source cloud + TGS timeline for false occupied carpets, missed compact
obstacles, vegetation and usable gaps. Only the combination of acceptable
visual behavior and acceptable integrated-graph regression can promote the
candidate beyond shadow.