feat(perception): publish immutable lab session instances

This commit is contained in:
DCCONSTRUCTIONS
2026-07-23 20:13:40 +03:00
parent f1f8e21b78
commit 10019a454a
16 changed files with 1970 additions and 30 deletions
+32
View File
@@ -102,6 +102,38 @@ the obsolete browser poll; it does not cancel the process-owned conversion.
A queued job may legitimately wait behind another export and therefore uses the
overall preparation deadline rather than the active-export heartbeat timeout.
## Immutable LAB instances
An accepted experiment is published as a new saved-session identity instead of
changing the AI result selected for its source recording. A LAB instance binds:
- a stable `LAB E…` marker and opaque session id;
- the immutable source observation session;
- the exact result, source-result and configuration SHA-256 identities;
- run and publication timestamps plus JSON provenance;
- a content-addressed compute job, LiDAR pack and integrated visual result.
The source evidence remains the only raw sensor master. A LAB replay cache and
unchanged camera inputs use hard links on the same filesystem; no second copy of
the source RRD, video or native K1 capture is created. Derived arrays are stored
only when the run did not already persist a viewer-ready form. Deleting a LAB
catalog entry cannot delete the referenced source session, and a source session
with published LAB instances fails closed on deletion.
The visual result is resolved by the LAB session id, so `LAB E19` and `LAB E21`
can coexist over `RAVNOVES00` without “latest accepted result” replacing an
earlier experiment. The operator can open either row in **Сохранённые сессии**
and use the same **Объекты 2D / Сегментация / Кубы 3D** controls. First
publication must also warm the result-specific Rerun overlay; later opens reuse
that verified cache and do not rerun AI inference.
E21 is a bounded special case: its worker persisted 121 semantic mask hashes,
not duplicate mask pixels. Its visual publication materializes a mask only
after an exact SHA-256 match against the immutable accepted E19 semantic
reference. The seven detector frames replaced by the bounded latest-wins queue
remain explicit empty frames. This preserves the measured near-real-time
behavior rather than presenting a fabricated gap-free run.
The first preparation of a long capture can take time because every decodable
point/pose message and every valid K1 `ModelingReport` is projected into RRD.
Later openings reuse a verified, digest-bound cache. Derived RRD cache v9 is