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
@@ -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.