docs(perception): record stage-two scheduler and cell freshness proof

This commit is contained in:
DCCONSTRUCTIONS
2026-09-02 11:03:26 +03:00
parent 1f8101e4a5
commit d264cbce04
3 changed files with 153 additions and 11 deletions
+10 -5
View File
@@ -1,8 +1,8 @@
# Observatory: четыре этапа создания полного real-time Perception-профиля
Дата: 2026-09-01; обновлено 2026-09-02 10:16 МСК. **Этап 1 закрыт как состав, контракты и технический baseline; GO на инженерную реализацию этапа 2. Real-time qualification НЕ выдана.** Цель прежняя: переносимые полные профили и снижение задержек всей цепочки. Финальный six-layer PyTorch pilot: 128/128 без drops, p95/p99 122.11/141.40 ms в auto clock mode. Полностью свежи 27/128 scenes: 52 source gaps, 49 stale costmaps. Пять сцен истекли между publisher guard и receipt и получили NO_GO. Этапы 2–4 ещё не выполнены; standalone/network/full-session/vehicle proof отсутствуют. Default остаётся PyTorch; TensorRT numeric/material parity не пройдена.
Дата: 2026-09-01; обновлено 2026-09-02 11:00 МСК. **Этап 1 закрыт как engineering baseline; этап 2 начат, выполнен первый инкремент — общие queue/scheduler и per-cell expiry. Real-time qualification НЕ выдана.** Два последовательных PyTorch-пилота: по 128/128 без drops. Per-cell вариант: p95/p99 123.91/136.17 ms, 76 свежих six-layer результатов из 76 доступных sensor pairs; 52 missing pairs остаются NO_GO. Просроченные ячейки отдельно блокируются, а не объявляются свежими. Standalone/network/full-session/vehicle proof отсутствуют; этапы 3–4 не начаты. Default PyTorch, TensorRT numeric/material parity не пройдена.
Последнее изменение: `097e450` вводит общий six-layer freshness ABI, dependency-age propagation, payload validation и повторную оценку у consumer; все 128 модельных/геометрических/motion/TGS/material результатов точны к прежнему PyTorch-reference. Условия Worker закреплены в read-only readiness evaluator и candidate manifest; evaluator не приобретает lease и не управляет частотами. Предыдущий fixed-clock A/B (p99 PyTorch 77.02 ms) остаётся отдельным evidence, не переносится на auto-mode или новую полную квалификацию. Текущий шаг не менял clocks/quotas/weights/thresholds. Следующий шаг — общий lifecycle/data plane, per-cell expiry и standalone package этапа 2; не новая модель и не автономия.
Последние изменения: `bcacb02` — общий bounded scheduler с корректным cancel/release; `1f8101e` — per-cell timestamps/expiry, повторная проверка и хеширование derived consumer view. Сырые model/geometry/motion/TGS/material outputs точны к reference на всех 128 кадрах в обоих runs. Mandatory layer guard не ослаблен. Старый whole-scene контроль дал 25 свежих результатов, новый per-cell — 76; это изменение адресности блокировки, не рост perceptual accuracy. Clock auto менялся самостоятельно: разница задержек не приписывается оптимизации. Следующий шаг этапа 2 — supervisor/StreamStart fencing и authoritative GPU ownership, затем binary ingress и standalone package. Условия Worker проверяет read-only evaluator; он пока не приобретает lease. Clocks/quotas/weights/thresholds не менялись; прежний fixed-clock PASS не переносится на новый runtime.
Текущий 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,6 +143,8 @@ IPC/сети, копирований и оркестрации. Вычислит
## Этап 2 — Самостоятельный Docker с полным потоковым вычислением
**Текущий статус, 11:00 МСК:** в работе. Общие mailbox/serial GPU stage подключены к полному пилоту; per-cell expiry проверен двумя Worker-прогонами. Это первый инкремент, не завершённый supervisor/lease/data plane и не самостоятельный image. GO на этап 3 пока нет.
**Цель:** один самостоятельный контейнер принимает поток и реально рассчитывает DDRNet, детекции, расстояния, motion, TGS/costmap и policy-shadow; ничего не дорисовывается из старых LAB.
**Вход:** контракты и baseline этапа 1.
@@ -249,8 +251,11 @@ EoMT — семейство ViT-моделей сегментации изобр
- 2026-09-02 09:1109:40 МСК: численная диагностика frame 115 связала большую часть mismatch с TF32, а critical policy flip — с sigmoid ties и ничьей двух ground votes. `c6c42c2` переводит tie в unknown/NO_GO; 210 cell×frame значений на 41 кадре изменились только консервативно. 122 focused tests PASS. Masks/detector/geometry/motion outputs не изменились от этой правки.
- 2026-09-02 09:3109:37 МСК: по явному разрешению владельца A/B stock clock lock (requested SM 2610 / memory 10501 MHz; observed CUDA 2610/10251) без изменения 450 W или Docker limits. Auto B: p95/p99 123.14/138.16 ms; locked C/D: 64.08/70.46 и 63.97/67.77 ms; pinned PyTorch E: 71.80/77.02 ms; auto-restored F: 116.71/144.88 ms. Все шесть новых полных проб 128/128, 0 drops; функциональная parity clock A/B 128/128. Это повторяемый bounded latency PASS при указанном envelope, не whole-product qualification. Evidence: `.runtime/perception-parity-pacing-worker-20260902T0911MSK/manifest.json`, SHA-256 `eac303c218ab391ed5dc2cd8d94be6f1eeecec2effc123da7585135a8b63f2dd`.
- 2026-09-02 09:40 МСК: clock resets успешны, GPU снова auto/P8 210/405 MHz, power limit 450 W; pilot containers=0. Четыре Mission Core сервиса восстановлены в прежнюю конфигурацию, Triton healthy/ready=200; прежние сторонние restart-loop дефекты не исправлялись. Ollama/Frigate exited/restart=no, Mac 8000=200, 8765 закрыт. Raw/weights не в Git, push/deployment не выполнялись.
- Этап 1: частично выполнен. Следующие задачи: закрепить воспроизводимый operating envelope Worker и выходной layered-freshness ABI, продолжить общий runtime. Reference PyTorch остаётся допустимой исходной точкой; TensorRT numeric/material parity требуется до его продвижения, но не блокирует reference-ветку. Затем application↔Worker streaming transport и длинные/разные записи. Нельзя расширять короткий latency PASS до сети/автономии или подменять unavailable sensor evidence свежими данными.
- Этапы 2, 3, 4: не начаты. Продуктовый backend/frontend path, active registry, canonical local 8000 и физический источник не переключались. Старый full-source materializer остаётся legacy; новый streaming transport ещё не реализован.
- 2026-09-02 10:16 МСК: этап 1 закрыт как engineering baseline (`097e450`, `adcca7a`), не qualification. Six-layer ABI и Worker envelope закреплены; final auto C: 128/128, 0 drops, p95/p99 122.11/141.40 ms, 27 fresh scenes. Подробности и известный historical baseline test FAIL сохранены в отчёте.
- 2026-09-02 11:00 МСК: этап 2 начат. `bcacb02` переносит queue/GPU scheduler в common perception, ограничивает drop-history и проверяет владение входом при release/cancel. `1f8101e` добавляет адресную свежесть costmap; core tests и полный GPU-пилот используют тот же код. 202 focused tests, Ruff, mypy четырёх изменённых core modules и diff-check PASS.
- Два последовательных Worker runs: whole-scene p95/p99 125.01/130.31 ms, fresh 25/128; per-cell 123.91/136.17 ms, fresh 76/128. В обоих 128/128 без drops; raw functional parity 128/128, missing pairs 52. Per-cell блокирует 2195 cell×frame ground appearances (1994 при publication, ещё 201 при receipt); это не 2195 уникальных физических препятствий. Все 256 derived receipts повторно проверены по payload hashes/ages/policy.
- Продуктовый backend/frontend path и registry не переключены. Этап 2 остаётся незавершённым: общий supervisor/lease fencing, binary live ingress без знания EOF и standalone package ещё не реализованы. Этапы 3–4 не начаты. Следующий bounded шаг — lifecycle/ownership + неизвестная длина входного потока; старый batch materializer не ослаблять.
- Evidence первого инкремента этапа 2: `.runtime/perception-stage2-cells-worker-20260902T1055MSK/manifest.json`, 125 artifacts, SHA-256 `1a951fd9e807099e500fa66f8a40b1076071f96e4c8e0be4ab3094caaa33bf09`. Четыре сервиса восстановлены, Triton ready=200; Ollama/Frigate exited/restart=no, pilots=0, GPU auto P8, Mac 8000=200 и 8765 закрыт. Модели/сырые outputs не попали в Git.
## Surprises / открытые вопросы
@@ -293,6 +298,6 @@ EoMT — семейство ViT-моделей сегментации изобр
## Outcomes / retrospective
Этап 1 завершён как инженерный baseline: полный causal граф, shared six-layer ABI, measured Worker envelope, исходный clock, bounded queues и проверенные conservative freshness/material guards. Условия проверяет чистый evaluator; runtime-controller integration ещё нет. Fixed-clock A/B ранее дал bounded latency PASS, auto C сейчас даёт p99 141.40 ms и только 27 полных свежих scenes. Это честный FAIL квалификации, не запрет на следующий этап экспериментальной платформы. Default PyTorch сохранён, TensorRT parity не принята. Следующий этап 2: общий streaming lifecycle/data plane, lease/clock-condition monitoring, per-cell expiry и самостоятельный image без code/model mounts. Network, несколько/полная запись и standalone proof не получены; NVCR403/image-layer blocker не перепроверялся. В последнем шаге clocks/quotas не менялись, четыре сервиса восстановлены, Ollama/Frigate выключены, Mac 8000 работает. Неисправный исторический test с внешними evidence symlinks учтён отдельно; full suite не объявлен зелёным.
Этап 1 остаётся завершённым engineering baseline. Первый инкремент этапа 2 отделил scheduler от LAB-пилота и устранил whole-scene блокировку из-за одной старой ячейки: 76/76 доступных sensor-paired scenes дали свежий envelope, но expired/unknown cells внутри него остаются NO_GO. 52 source gaps не маскируются. Новый p99 136.17 ms — FAIL 125 ms; разницу auto timings не выдаём за причинное ускорение. Все сырые результаты моделей/геометрии/motion/TGS/material сохранены точно. Полноценный supervisor, cross-process lease/fencing, binary live ingress и standalone image ещё нужны; это не GO на этап 3. Default PyTorch сохранён, TensorRT parity не принята. Clock/quotas не менялись, четыре сервиса восстановлены, Ollama/Frigate выключены, Mac 8000 работает. Full suite не запускался; старый external-evidence-symlink baseline failure не исправлялся. Исторический NVCR403/image-layer blocker не перепроверялся новым build.
После этапа 4 здесь будут перечислены digest самостоятельного полного образа, измеренные статусы и ошибки по recordings, реально проверенные source/hardware/config комбинации, состояние сохранённого EoMT-варианта и оставшиеся physical-live/quality/vehicle-integration ограничения. Готовый Docker и готовая автономия не отождествляются.