docs(perception): record full graph recovery and separate availability latency
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# Observatory: четыре этапа создания полного real-time Perception-профиля
|
||||
|
||||
Дата: 2026-09-01; обновлено 2026-09-02 15:30 МСК. **Этап 1 закрыт; этап 2 в работе. Восьмой инкремент: пауза/восстановление входа отделены от жизни resident-профиля.** По уточнению владельца временный обрыв потока или неизвестная/просроченная GPU-телеметрия не должны убивать процессы. Новый явно включаемый режим сохраняет локальный lease и детей, отбрасывает старый вход/результаты и требует новую input epoch со свежим keyframe/pose/points перед resume. Подтверждённый конфликт владельца, настоящая потеря локального lease, падение child и cancel остаются terminal. Worker CPU-only: три эпохи, обрывы 150 ms / 2.2 s, неизменные PID реального H.264 decoder и CPU sentinel. Это не восстановление полного GPU-графа: его adapter/reset ещё предстоит подключить. Далее full-graph recovery, trusted collector/control plane, network и standalone image; этапы 3–4 не начаты.
|
||||
Дата: 2026-09-01; обновлено 2026-09-02 15:56 МСК. **Этап 1 закрыт; этап 2 в работе. Девятый инкремент: pause/resume подключён к полному GPU-пилоту.** Реальные surface/tracking/motion/rolling stores и DDRNet cache сбрасываются без перезапуска моделей. Два normal/gap сравнения: обычный проход exact raw128/128, после обрывов150ms/2.2s восстановление на seq30/110 с теми же четырьмя PID. Первая свежая сцена через ~1.48/3.86s от начала обрыва: требуется keyframe и согласованные сенсоры. Это Worker-local recording/IPC proof, не внешний network/physical-live. Далее trusted collector/control plane, transport/recovery qualification и standalone packaging; этапы3–4 не начаты.
|
||||
|
||||
Последний код `c31c46c`; 375 focused tests PASS, Ruff/format/mypy PASS. CPU probe декодирует один реальный H.264 fragment трижды с синтетическими текущими timestamps/pose/points; это не полный replay. BGR exact 3/3, peak input 5,275,461 bytes, финально input/children=0, lease released. GPU devices/модели не запускались, сервисы/частоты не менялись. Предыдущие полные binary-прогоны сохраняют 128/128 exact raw parity; p95/p99 85.113/91.219 и 82.425/90.530 ms относятся только к временно фиксированным штатным clocks. Fresh 76/128 и исходные 52 sensor gaps остаются, прежний auto-clock FAIL не отменён. Product batch path не переключён; существующий full PilotController пока не использует ни resumable adapter, ни настоящий continuous GPU collector.
|
||||
Последний код `70927ea`; 383 focused tests PASS, Ruff/format/mypy PASS. Final normal p95/p99 85.775/89.385ms; gap accepted-frame p95/p99 83.163/89.729ms — только при временных штатных clocks2610/10251MHz. В gap-run76 обработанных +52 намеренно не воспроизведённых кадра, unaccounted=0; доступность потока не объявляется полной. После resume нет старых costmap timestamps/track history, первые scenes fresh. CPU normal BGR/sensors exact128/128. Auto clocks и четыре Worker services восстановлены, temporary containers/leases удалены. Прежние52 исходных sensor gaps обычного прохода и auto-clock FAIL сохраняются. Product batch/registry/UI, continuous GPU collector и standalone image ещё не готовы.
|
||||
|
||||
Текущий evidence: [отчёт этапа 1](../experiments/perception/PERCEPTION_STREAM_STAGE1_2026-09-01.md), [ADR 0049](adr/0049-stream-first-perception-profiles.md), [candidate manifest](../config/perception/k1-perception-ddrnet39-rfdetr-tgs-prototype-v1.json). Запрет full-source preload закреплён в новом контракте; старый batch materializer пока не удалён и продуктовый путь не переключён.
|
||||
|
||||
@@ -143,7 +143,7 @@ IPC/сети, копирований и оркестрации. Вычислит
|
||||
|
||||
## Этап 2 — Самостоятельный Docker с полным потоковым вычислением
|
||||
|
||||
**Текущий статус, 15:30 МСК:** в работе. Binary full graph имеет exact raw parity 128/128; локальная задержка ≤125 ms измерена только при фиксированном operating envelope. Common lifecycle/readiness теперь имеют явный recoverable режим: input waiting/synchronizing не равны STOPPING. Lease/controller heartbeat локальны Worker, независимы от связи со станцией/ровером; неизвестная телеметрия блокирует новые вычисления, но не освобождает GPU и не убивает детей. Fresh telemetry сама не возобновляет старую epoch. Проверены common primitives и реальный CPU decoder; полный PilotController/BinaryGraphBridge ещё остаются non-resumable. Следующая незакрытая граница — подключение pause/resume, отбрасывания старых GPU/CPU результатов и настоящего temporal/TGS reset к полному графу, затем trusted collector/control plane, network/standalone. Optional primitive не означает product cutover. GO на этап 3 пока нет.
|
||||
**Текущий статус, 15:56 МСК:** в работе. `--recover-input` подключён к полному PilotController/BinaryGraphBridge/collector. Source clock продолжает1×; новый keyframe и causal sensors открывают новую epoch, реальные temporal stores очищаются, старые callbacks/results отбрасываются. Дважды проверены full normal/faulted graph. Обрывы инъецированы между GPU-вызовами; mid-compute discard проверен focused tests, не новой real-GPU cancellation пробой. До первой свежей сцены1.48/3.86s; это отдельная метрика от accepted-frame latency. Далее trusted collector/control plane, внешний transport/recovery и standalone packaging. GO на этап3 пока нет.
|
||||
|
||||
**Цель:** один самостоятельный контейнер принимает поток и реально рассчитывает DDRNet, детекции, расстояния, motion, TGS/costmap и policy-shadow; ничего не дорисовывается из старых LAB.
|
||||
|
||||
@@ -225,6 +225,7 @@ EoMT — семейство ViT-моделей сегментации изобр
|
||||
|
||||
## Progress
|
||||
|
||||
- 2026-09-02 15:56 МСК: `70927ea`, full-graph recovery. CPU normal128/gap76 и два повторения full normal128/gap76; 383 tests PASS. Четыре PID сохранены, reset stores 92/16/6/291 →0 и507/42/6/358 →0; stale history/cells отсутствуют. Final normal p95/p99 85.775/89.385ms, gap83.163/89.729ms при SM2610/mem10251. First fresh scene после fault1476.169/3857.475ms, seq30/110,52 intentional skips учтены. Первая GPU попытка прервана до моделей: ошибочный новый idle threshold512MiB был ниже известного baseline534MiB, факт530MiB; сохранена, проверка исправлена, пустой owned lease удалён. 330 artifacts,236 Worker hashes,114 current files verified; `.runtime/perception-stage2-resume-worker-20260902T1545MSK/manifest.json`, SHA-256 `a9449fa4c012e30ce8a06025790c0e110eeebab7c1859fdebf56d5e785961ea3`. Clocks/services восстановлены; legacy restart loops не исправлялись, product/vehicle scope не расширен.
|
||||
- 2026-09-02 15:30 МСК: `c31c46c`, resumable lifecycle/input epoch, recoverable readiness, decoder/sensor reset. 375 focused tests PASS, Ruff/format 14 files и mypy 7 modules PASS. Worker CPU-only три input epochs, EOF-паузы 150 ms / 2.2 s, 3/44 synthetic source ticks во время пауз, 54 local renewals; PID decoder/sentinel неизменны, BGR exact 3/3. Peak input 5,275,461 bytes, final input/children=0, released lease; temporary container удалён. Один реальный H.264 fixture + synthetic timestamps/sensors/temporal reset, НЕ полный graph/GPU recovery. 73 code hashes сверены, 85 evidence artifacts; `.runtime/perception-stage2-continuity-worker-20260902T1518MSK/manifest.json`, SHA-256 `fbd327d129c88caa13b7183b1ae2c4767e877a6f5472c0f430875cfd7401ed46`. Сервисы/clocks не менялись; прежние legacy restart loops не исправлялись. Старый terminal-readiness эксперимент ниже сохранён как история; новый TARGET по решению владельца — wait/resync для временной недоступности.
|
||||
- 2026-09-02 14:52 МСК: `92625bf`, readiness/lifecycle increment. 349 focused tests PASS; Worker Linux CPU-only 4/4 scenarios, stop 10.676–63.994 ms, 0 residual bytes, terminal fixture lease generation 4 released. Expired inventory остановил runtime через 1043.960 ms после последнего refresh, несмотря на 13 heartbeat renewals; late refresh/result rejected. Allowed overload сохранил violation после восстановления clocks. 70 measured code files verified, 86 evidence artifacts; `.runtime/perception-stage2-readiness-worker-20260902T1450MSK/manifest.json`, SHA-256 `4588995d763fe82d896b42689e981f1d00feedaf9d6aab29f4579f771d03da3a`. GPU facts synthetic, no model timing or collector qualification. Service IDs/StartedAt/restart counts неизменны до/после; у legacy agents уже были restart counts 21/2/2 — состояние running не объявляется устойчивой готовностью. Clock setters, service mutations, network listeners, registry/UI отсутствуют.
|
||||
- 2026-09-02 14:22 МСК: `380b6ea` / `f39f1ff`. CPU probe (NumPy 1.26.4, Worker x86) воспроизвёл две ошибки range_m через quaternion address 8 mod 16; aligned copy сохраняет bytes и прежние norm/projection результаты. Удалены четыре full-frame copies на связке decoder→parent→DDRNet; binary framing, source clock, TTL, lease checks не менялись. A–B–B–A, 4×128 без drops: контроль p95/p99 84.702/92.961 и 83.930/91.759 ms; кандидат 85.113/91.219 и 82.425/90.530 ms. Кандидат raw parity 128/128 дважды, available/fresh 76/128; global qualification=false. CPU oracle 128/128 BGR/sensors для обоих вариантов, hung decoder cleanup PASS. 279 focused tests PASS. Manifest 305 artifacts, SHA-256 `9c72a93833a1dda51c4787dca13fb9791a1bf2e31c763b7740e1b21406703707`, `.runtime/perception-stage2-ipc-worker-20260902T1410MSK/manifest.json`. Частоты auto и сервисы восстановлены; registry/UI/image не менялись.
|
||||
@@ -315,7 +316,7 @@ EoMT — семейство ViT-моделей сегментации изобр
|
||||
|
||||
## Восстановление и остановки
|
||||
|
||||
Для уже активного профиля временный обрыв входа или задержка/неполнота telemetry означают ожидание/resync с сохранением моделей и lease, а не уничтожение процесса. Неизвестный владелец запрещает admission нового профиля; старый локальный владелец не отдаёт ресурс на основании одного отсутствующего snapshot. Подтверждённая потеря локальной authority/конфликт, model/decoder failure и cancel — отдельные terminal причины. Включение нового поведения требует resumable adapter; текущий полный пилот ещё не переведён. Предыдущие terminal fault probes остаются историческими проверками прежнего режима.
|
||||
Для активного профиля transient input/telemetry loss означает waiting/resync с сохранением моделей/lease. Unknown inventory запрещает новый admission, но не доказывает конфликт текущего владельца. Подтверждённая утрата local lease, конфликт, child/decoder failure и cancel остаются terminal. Новый режим включён и измерен в полном binary pilot; прежние one-shot diagnostics сохраняются. Motion resume — отдельный будущий onboard safety gate, не следствие восстановления inference.
|
||||
|
||||
При неудаче короткого canary остановить только принадлежащий испытанию профиль, сохранить диагностику и проверить освобождение GPU; не убивать посторонние процессы и не продолжать full-session. Неясный владелец GPU или потеря lease требуют fail-closed остановки нового запуска, а не захвата ресурса поверх старого процесса. Переключение на другой профиль — отдельная последовательная операция, не автоматический GPU fallback.
|
||||
|
||||
@@ -325,6 +326,6 @@ EoMT — семейство ViT-моделей сегментации изобр
|
||||
|
||||
## Outcomes / retrospective
|
||||
|
||||
Этап 1 завершён; этап 2 продолжается. Новый common runtime отделяет recoverable input/readiness от resident lease и умеет требовать свежую epoch без старого backlog. Реальный CPU decoder сохранил PID и BGR на трёх эпохах с двумя обрывами; GPU-модели и настоящий temporal/TGS reset этой проверкой не охвачены. Следом — интеграция восстановления в полный профиль и последовательный full-graph fault probe, затем trusted collector/control plane, network/standalone packaging. Это не переключение существующего full PilotController или продукта. Full-GPU timings, source gaps и quality gates прежние; no actuation. Старые batch/registry/UI не переключены, этапы 3–4 не начаты. Mac 8000=200, 8765 закрыт; Worker services/auto clocks не менялись, Ollama/Frigate exited/restart=no.
|
||||
Этап 1 завершён; этап 2 продолжается. Full GPU pause/resume проверен: четыре resident-процесса сохранены, CPU temporal stores сброшены, post-resume history/cells только из новой epoch. No-gap raw parity exact128/128, четыре последовательных GPU-прогона, 383 focused tests. Recovery availability и intentional losses отделены от accepted-frame latency; fixed-clock PASS не отменяет auto-clock FAIL. Следом trusted collector/control plane, внешний transport/recovery и standalone packaging. Batch/registry/UI не переключены, этапы3–4 не начаты, actuation=false. Mac8000=200,8765 закрыт; auto clocks и четыре Worker services восстановлены, Ollama/Frigate exited/restart=no.
|
||||
|
||||
После этапа 4 здесь будут перечислены digest самостоятельного полного образа, измеренные статусы и ошибки по recordings, реально проверенные source/hardware/config комбинации, состояние сохранённого EoMT-варианта и оставшиеся physical-live/quality/vehicle-integration ограничения. Готовый Docker и готовая автономия не отождествляются.
|
||||
|
||||
Reference in New Issue
Block a user