docs(observatory): prioritize recorded laboratories and cached review before onboard profiles
This commit is contained in:
@@ -1,4 +1,111 @@
|
||||
# Observatory: четыре этапа создания полного real-time Perception-профиля
|
||||
# Observatory: четыре этапа — записанные лаборатории → переносимые профили → борт
|
||||
|
||||
## Актуальное решение владельца — 2026-09-02
|
||||
|
||||
**Этот раздел заменяет прежний порядок и GO-зависимости плана ниже.** Сначала
|
||||
доводим лабораторный продукт на записях, затем экспериментируем с составом
|
||||
Docker-профилей, затем переносим выбранный профиль на подходящий бортовой
|
||||
компьютер. Сетевые 125 ms, Ethernet, LTE и наличие беспилотника больше не
|
||||
являются условиями готовности Observatory. Старый этап 1 и инкременты 1–18
|
||||
сохраняются как выполненная инженерная работа; отрицательные realtime-замеры
|
||||
не переименовываются в PASS.
|
||||
|
||||
Основной путь: **запись → совместимый ещё не рассчитанный профиль → Рассчитать
|
||||
→ фактический прогресс → проверенная публикация → сохранённый просмотр**.
|
||||
Просмотр, Refresh и выбор записи не запускают модели. Готовые результаты всех
|
||||
версий остаются в «Лабораторных доказательствах». Если рассчитаны все текущие
|
||||
совместимые профили, выбор пуст/недоступен, кнопки «Рассчитать» нет, «Обновить»
|
||||
остаётся. Старое имя LAB не доказывает совпадение версии конфигурации.
|
||||
|
||||
### Этап 1 — Идентичность расчёта и переиспользование результата (в работе)
|
||||
|
||||
Первый инкремент: portable submit защищён атомарной проверкой существующей
|
||||
job identity. Другой ключ запроса не создаёт дубликат active/reconciliation
|
||||
или pending/failed-publication job; точный retry идемпотентен, failed compute
|
||||
можно повторить. 88 focused backend/queue/Worker-API/publication tests PASS;
|
||||
Ruff lint и mypy трёх изменённых source files PASS. Полный frontend/GPU-прогон
|
||||
не выполнялся: UI и модели не изменены. Cache projection/селектор/прогресс ещё
|
||||
не реализованы, этап не закрыт. Решение: [ADR 0050](adr/0050-recorded-observatory-first.md).
|
||||
|
||||
Runtime check 23:15 МСК: canonical8000 перезапущен на новом коде, PID55765,
|
||||
health/portable catalog HTTP200,8765 отсутствует. Модельных заданий не создано;
|
||||
durable queue содержит10 failed и1 succeeded/not-required, live leases0.
|
||||
Обнаружен существовавший ДО перезапуска blocker:50000 claim receipts при
|
||||
лимите50000, из них49985 пустых,15 с job. Последний receipt2026-09-01T17:28:39.238Z;
|
||||
новые Worker polls продолжают получать503. Каталог всё ещё рекламирует ready,
|
||||
что не доказывает работоспособность claim-пути. Следующий инкремент этапа1:
|
||||
исправить bounded empty-poll lifecycle и readiness без удаления audit history
|
||||
и нарушения идемпотентности старых claim IDs; затем verified-cache projection.
|
||||
Не повышать бесконечно лимит и не чистить receipts вслепую.
|
||||
|
||||
- Сверить каталог, очередь, публикацию и просмотр для текущих M4.9T5 и LAB V1.
|
||||
- Связать готовность с точной исходной записью и immutable RunDefinition,
|
||||
включающей image/model/config/adapter/result-contract identities.
|
||||
- Подавлять повторную постановку активного идентичного расчёта на backend;
|
||||
опубликованный кэш признавать только при проверенной привязке и доступных
|
||||
артефактах. Failed/partial/unpublished не считать готовым результатом.
|
||||
- Отделить архивные результаты от исполняемых профилей и не прятать новую
|
||||
версию профиля из-за старого результата с похожим названием.
|
||||
|
||||
Выход: контрактные тесты для другой записи/версии, повторного клика, гонки,
|
||||
ошибки публикации и отсутствующих артефактов; актуальные документы. Это ещё
|
||||
не полный пользовательский acceptance.
|
||||
|
||||
### Этап 2 — Полный пользовательский цикл записанной лаборатории
|
||||
|
||||
- Единый селектор только совместимых нерассчитанных профилей; все доступные
|
||||
результаты ниже, без скрытого ограничения первыми шестью карточками.
|
||||
- Очередь, реальные счётчики/этапы прогресса, ошибки, повтор публикации без
|
||||
inference, автоматическое обновление после публикации.
|
||||
- Полный расчёт с сохранением результатов и исходной временной шкалы;
|
||||
скорость расчёта может быть ниже скорости записи. Ограниченные очереди и
|
||||
backpressure вместо накопления всей записи в RAM. Разделить режим полноты
|
||||
записанного анализа и строгий realtime-rehearsal: не отключать freshness
|
||||
и drop-политику live глобально и не терять кадры ради wall-clock темпа
|
||||
в режиме полного анализа.
|
||||
- Последовательно проверить текущие два профиля на совместимых записях:
|
||||
публикация, перезапуск приложения, повторный просмотр без модели/GPU,
|
||||
отсутствие дубликатов. Не объявлять LAB V1 полным detector/distance/TGS
|
||||
профилем: сейчас это последовательные EoMT и DDRNet; M4.9T5 — CPU TGS.
|
||||
|
||||
Выход: настоящий путь через canonical8000 и Worker, полный сохранённый
|
||||
результат и воспроизводимый просмотр. До такого proof этап открыт.
|
||||
|
||||
### Этап 3 — Эксперименты с переносимыми Docker-конфигурациями
|
||||
|
||||
- Переиспользовать наработанный streaming runtime и общий контроль исполнения.
|
||||
В первую очередь новый DDRNet + RF-DETR + LiDAR/distance + motion +
|
||||
TGS/costmap + policy-shadow, без зависимости от чужих архивных overlays.
|
||||
- Один Worker006/4090 — один активный профиль. EoMT сохраняется; альтернативы
|
||||
не выполняются параллельно. Понятные profile/image имена с `ndc-` и digest.
|
||||
- Измерять отдельно подготовку, прогрев, Worker compute/full-graph latency,
|
||||
доставку, публикацию и wall time всего задания. Перегрузка — результат
|
||||
эксперимента, а не повод запретить лабораторный расчёт.
|
||||
- Условный прогноз onboard FPS относится только к измеренным железу, образу,
|
||||
настройкам и составу; не выводится из viewer FPS или времени скачивания.
|
||||
|
||||
Выход: сравнимые результаты конфигураций на нескольких записях, известные
|
||||
ошибки, воспроизводимые образы; не обязательный remote realtime PASS.
|
||||
|
||||
### Этап 4 — Отбор профиля и проверка переноса на борт
|
||||
|
||||
- Выбрать удачный immutable образ/config по лабораторной матрице качества и
|
||||
производительности; исключить checkout и скрытые model caches из зависимостей.
|
||||
- Проверить тот же образ и входной контракт на фактическом бортовом компьютере
|
||||
после его появления. Другая архитектура CPU/GPU может потребовать отдельной
|
||||
сборки и новой квалификации; Docker не обещает NVIDIA→Apple Silicon перенос
|
||||
без изменений.
|
||||
- Physical-live, контроллеры/моторы, аварийная остановка и автономная навигация
|
||||
имеют отдельную приёмку. Пока только observation-only/policy-shadow.
|
||||
|
||||
Выход сейчас: пакет кандидата, матрица evidence и явные ограничения; реальный
|
||||
перенос остаётся pending до появления оборудования, не блокируя этапы 1–3.
|
||||
|
||||
## История прежнего realtime-first плана (не текущие команды и зависимости)
|
||||
|
||||
Ниже сохранены прежние измерения, этапы и решения. Все слова «следующий»,
|
||||
«GO», «не открыты» и старые номера этапов в этой истории относятся к состоянию
|
||||
до решения выше. Приоритет имеют четыре актуальных этапа выше.
|
||||
|
||||
Дата: 2026-09-01; обновлено 2026-09-02 22:35 МСК. **Этап1 закрыт; этап2 продолжается. Инкремент18: существенный транспортный хвост локализован ниже Perception-приложения; full-profile latency не пересчитывалась.** Код `6af4c20`: bounded TLS-record witnesses в CPU-only diagnostic. A/B/A без/с/без свидетелей сохраняет RPC p95 96.093/93.895/95.145ms.424/424 encrypted records и192/192 RPC сопоставлены;288 raw clock exchanges пересчитаны. Из13 post-start tails >50ms восемь приходятся на request transit, пять на response transit; начальный TLS/startup sample не получает выдуманного clock mapping.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user