feat(observatory): ship modular AI inference labs
This commit is contained in:
@@ -1,11 +1,191 @@
|
||||
# Observatory: модульные Docker-композиции → записанные LAB → CUDA-борт
|
||||
|
||||
## ЕДИНСТВЕННЫЙ ТЕКУЩИЙ МАРШРУТ — 2026-09-03, модульное решение
|
||||
|
||||
Этот раздел заменяет прежний маршрут ниже. Исторические `CURRENT`, «следующий
|
||||
шаг», номера этапов и требования «один профиль = один полный Docker» в архивной
|
||||
части не являются актуальными заданиями. Замеры и выполненная работа сохранены.
|
||||
Решение владельца: [ADR 0051](adr/0051-modular-observatory-profiles.md).
|
||||
Фактическая сверка и очистка:
|
||||
[handoff report](../experiments/perception/OBSERVATORY_MODULAR_HANDOFF_2026-09-03.md).
|
||||
|
||||
### Цель и термины
|
||||
|
||||
Запись K1 → настройка AI-слоя по функциональным группам → расчёт выбранной
|
||||
композиции → неизменяемая LAB и кэш на Core → повторный просмотр без Worker.
|
||||
Один модуль используется разными композициями, одна композиция — разными
|
||||
совместимыми записями. Удачная композиция позднее переносится на CUDA-борт.
|
||||
|
||||
- **Модуль:** отдельный версионированный Docker-образ модели или связанной
|
||||
функции, например DDRNet, EoMT, RF-DETR, LiDAR/TGS geometry. Не отдельный
|
||||
микросервис для каждого арифметического шага.
|
||||
- **Профиль:** проверенная immutable композиция модулей, параметров, связей и
|
||||
политики исполнения. Новая комбинация не требует сборки монолитного образа.
|
||||
- **LAB:** применение точной композиции к точному снимку записи, с доказательствами,
|
||||
границами покрытия и измерениями. Сохранённый результат не меняется задним числом.
|
||||
- **Борт:** будущий совместимый CUDA-компьютер, не Mac Mini. Конкретные CPU/GPU,
|
||||
драйверы и архитектура контейнеров квалифицируются после выбора оборудования.
|
||||
|
||||
Работа recorded-first. Расчёт медленнее записи допустим; достижение remote
|
||||
realtime через Wi-Fi/LTE не блокирует лаборатории. Runtime всё равно сохраняет
|
||||
потоковые контракты и оптимизированную подготовку данных. FPS проигрывания кэша
|
||||
и скорость сборки из кэшированных узлов не выдаются за вычислительный FPS борта.
|
||||
|
||||
### CURRENT: установленное и доказанное
|
||||
|
||||
- Ветка `codex/m5-1-observatory`, HEAD `eff60e4`, поверх него есть незакоммиченные
|
||||
изменения предыдущих инкрементов. Не сбрасывать и не считать всё новым diff
|
||||
этой архитектурной правки. Полный список даёт `git status`.
|
||||
- Core на8000: admission, очередь/claim v3, exact-cache/idempotency, publication
|
||||
outbox/recovery, metadata pagination, отделение portable LAB от Legacy,
|
||||
общий сохранённый viewer. На Worker установлен source CAS двух агентов и
|
||||
bounded heartbeat retry. Это основа миграции, не повод написать всё заново.
|
||||
- M4.9T5: CPU TGS, отдельный специализированный агент. Job
|
||||
`observatory-run-b230216709dc4c59bc56c98c7e329bf1` ×004TREE опубликована:
|
||||
6830 camera anchors,6811 LiDAR,19 UNOBSERVED; цикл1416.763s. Расписание
|
||||
39.215–757.160s внутри808.779s записи: не заявлять полное покрытие всей записи
|
||||
или полный AI-граф. Сохранённую публикацию и рабочий release сохранить.
|
||||
- LAB V1: установлен фиксированный стек prepare → EoMT → DDRNet → assemble.
|
||||
Это старый сравнительный состав, не новый выбор одного segmenter. Последняя
|
||||
job `observatory-run-67a6bf3e4d644e4a8ee3c03b915f8f01` завершена failed после
|
||||
lease loss на EoMT; нового опубликованного LAB V1 нет. Исправления heartbeat
|
||||
установлены, но успешный полный повтор ещё не доказан.
|
||||
- Есть прототип DDRNet/RF-DETR/geometry/distance/motion/TGS/costmap/policy-shadow.
|
||||
Переиспользовать алгоритмы, не называть прототип принятым автономным профилем.
|
||||
- Реестр пользовательских композиций, per-node result-cache, групповые настройки
|
||||
и независимо упакованные модули нового формата **ещё не реализованы**.
|
||||
- Реальная полная visual/memory-lifecycle приёмка saved replay открыта. Прежние
|
||||
749 frontend/166 backend checks — проверки предыдущего инкремента, не новой
|
||||
модульной архитектуры. Исторические тесты не заменяют новые приёмочные сценарии.
|
||||
- Audit:24 контейнера →11 после удаления13 проверенных остановленных
|
||||
предшественников/debug.80 образов и9 volumes оставлены. Сохранены два текущих
|
||||
агента, последняя rollback-пара, рабочие результаты и зависимости. Активные
|
||||
Gaussian/Triton/perception требуют отдельной проверки потребителей.
|
||||
- EoMT floor250GiB + working set изменён в source и узких тестах; установленный
|
||||
образ пока350GiB. Нужен новый sealed release, не правка digest существующего.
|
||||
|
||||
### Продуктовые правила нового AI-конфигуратора
|
||||
|
||||
В существующей Обсерватории у выбранной записи — «Настройка AI-слоя» и компактное
|
||||
окно с функциональными группами. Использовать существующие `Window`, `FieldFrame`,
|
||||
`Select`, `WindowFooterActions` и канонические кнопки; не создавать новый workspace
|
||||
или локальную дизайн-систему. Обычная checkbox-матрица Docker не подходит.
|
||||
|
||||
Группа сегментации: один выбор DDRNet / EoMT / «Не использовать», если частичный
|
||||
состав допустим. Два segmenter в одной новой LAB запрещены сервером, не только UI.
|
||||
Другие кандидаты групп: детекция, LiDAR/TGS/costmap, связь объектов с расстоянием,
|
||||
motion, policy-shadow. Их окончательные границы определяются кодом/контрактами.
|
||||
Один модуль с несколькими capabilities не запускается несколько раз.
|
||||
|
||||
Сервер проверяет зависимости: object-distance требует детекцию, облако и
|
||||
калибровку; геометрические препятствия могут вычисляться без семантического
|
||||
детектора. Не требовать необязательный модуль для независимого результата.
|
||||
Для недоступного сочетания — понятная причина, не молчаливое включение другой ML.
|
||||
|
||||
Точная конфигурация уже опубликована → открыть существующую LAB, «Рассчитать» нет.
|
||||
Нет результата → «Рассчитать», при активной job — существующий реальный progress
|
||||
без дубликата. Нет кнопки/плашки «Расчёт завершён». Поставщики остаются в dropdown:
|
||||
рассчитанность относится ко всей композиции, а не к отдельной модели. Это заменяет
|
||||
старое правило удаления готового полного профиля из единственной выпадашки.
|
||||
|
||||
### Четыре этапа — действуют только эти
|
||||
|
||||
#### 1. Контракты композиции и безопасная граница миграции
|
||||
|
||||
- Сверка Desktop/кода/installed runtime, retention inventory и первая очистка
|
||||
остановленных экземпляров выполнены в этом handoff. Спецификация ADR принята.
|
||||
- Следующее: реализовать версионированные Module/Composition contracts поверх
|
||||
installed-package boundary; определить producer/consumer схемы и capability
|
||||
группы по фактическим алгоритмам. Не считать описательный ADR готовым API.
|
||||
- Зафиксировать content identity: source, image/code/weights, параметры,
|
||||
preprocessing/calibration, cadence/precision, temporal state и graph edges.
|
||||
Порядок щелчков в UI не меняет identity; любые значимые входы — меняют.
|
||||
- Retention manifest должен охватить pinned packages, текущий M49, старый V1,
|
||||
прототип полного графа, модельные assets и один rollback. Затем отдельно
|
||||
согласованно вывести активные устаревшие сервисы; только после проверки
|
||||
зависимостей удалять недостижимые images/build caches/temp directories.
|
||||
|
||||
Приёмка: контрактные тесты несовместимости и exact identity; доказанный список
|
||||
сохраняемых артефактов; никакой утраты записей/Legacy/публикаций. Этап целиком открыт.
|
||||
|
||||
#### 2. Переиспользуемые Docker-модули и общий Worker runtime
|
||||
|
||||
- Упаковать DDRNet и EoMT отдельно с закреплёнными зависимостями/весами;
|
||||
LiDAR/TGS и остальные функции выделять по согласованным границам. Сохранить
|
||||
общие базовые слои/проверенные assets без копирования всего набора в каждый image.
|
||||
Веса входят в переносимый дистрибутив как image layers либо явные immutable
|
||||
model assets с проверкой digest; случайный host checkout/conda environment
|
||||
не является допустимой скрытой зависимостью модуля.
|
||||
- Расширить generic launcher, не создавать агент под каждую модель. Одна аренда
|
||||
на композицию Worker006, тяжёлые GPU шаги последовательно. Несколько активных
|
||||
CPU/служебных контейнеров не означают разрешённый параллельный ML inference.
|
||||
- Один source/preparation path, локальные межмодульные данные на Worker; не
|
||||
отправлять промежуточные кадры/облака через Core туда-обратно. Сохранить bounded
|
||||
потоковый I/O; целиковый cold input barrier не превращать в вечную архитектуру.
|
||||
- Добавить exact per-node cache и зависимое invalidation, stateful history binding,
|
||||
прогресс computed/reused/failed. Worker source CAS сам по себе это не реализует.
|
||||
- Результат публикуется и просматривается с Core. Повтор publication не запускает
|
||||
inference заново. Окончание/cancel освобождают временные процессы/RAM/VRAM,
|
||||
не удаляют постоянные результаты. Ресурсную политику250GiB активировать новым release.
|
||||
|
||||
Приёмка: standalone cold start без developer checkout и необъявленных mount;
|
||||
последовательные реальные прогоны двух допустимых композиций; exact cache hit,
|
||||
частичный reuse, смена зависимости и безопасный failure/recovery.
|
||||
|
||||
#### 3. Конфигуратор, сохранённый просмотр и продуктовая приёмка
|
||||
|
||||
- Реализовать групповые Select и server admission в существующей Обсерватории.
|
||||
Legacy не переносить назад; старый dual-segmentation V1 только совместимость/история.
|
||||
- Доказать source × composition: новая совместимая запись без LAB, расчёт,
|
||||
открытие сохранённой LAB, новая конфигурация, отсутствие дубликата точного повтора.
|
||||
Минимум две совместимые записи и две допустимые композиции, последовательно.
|
||||
- Проверить общую временную/пространственную привязку camera/segmentation/objects/
|
||||
range/TGS по фактически выбранным outputs, full configured coverage и явные gaps.
|
||||
- Завершить реальную normal/expanded/Escape/close/reopen приёмку и освобождение
|
||||
viewer RAM/GPU после закрытия; не ограничиваться контрактными тестами.
|
||||
- Проверить большие каталоги, рестарты Core/Worker, publication retry, отмену,
|
||||
полную наблюдаемость результата без работающих моделей.
|
||||
|
||||
Приёмка: оператор выполняет весь цикл без инженерных команд; просмотр берётся
|
||||
с Core, рабочий Worker не нужен. Этапы2–3 могут иметь согласованные инкременты,
|
||||
но непройденный сквозной сценарий не считается закрытым.
|
||||
|
||||
#### 4. Перенос принятой композиции на CUDA-борт — позже
|
||||
|
||||
Те же логические модули и версии; аппаратно-совместимая упаковка, локальный
|
||||
транспорт, долгоживущие процессы/модели вместо старта Docker на каждый кадр.
|
||||
Квалифицировать полный граф и совместное потребление памяти, не сумму независимых
|
||||
FPS и не cached replay. Горячие узлы можно позднее объединять по измерениям без
|
||||
потери логической модульности. Mac Mini не является целевым бортом.
|
||||
Моторы, автономное движение, ArduRover и safety acceptance — отдельная будущая
|
||||
работа, сейчас observation-only/policy-shadow.
|
||||
|
||||
### Инструкция следующему чату
|
||||
|
||||
Прочитать актуальную верхушку Desktop `_MISSING_CORE_…FINAL_STATUS…md`, ADR0051,
|
||||
этот раздел и handoff report. Проверить `git status`, Core8000 и точные installed
|
||||
identities read-only; начать с незакрытых контрактов этапа1. Старые installer
|
||||
scripts с зашитыми predecessor IDs не запускать повторно. Не начинать с новой
|
||||
полной сборки старого dual-segment LAB V1 или глобального Docker prune.
|
||||
Не менять Synology/деплой21, Little Snitch, чужие сервисы, Docker Desktop limits.
|
||||
Не коммитить существующий общий dirty diff как собственную новую работу.
|
||||
|
||||
---
|
||||
|
||||
## АРХИВ ПРЕЖНЕГО МАРШРУТА — до модульного решения 2026-09-03
|
||||
|
||||
Весь следующий текст — история. Слова «актуальный», CURRENT и следующие шаги
|
||||
внутри него описывают состояние своего инкремента, не текущий план.
|
||||
|
||||
# Observatory: четыре этапа — записанные лаборатории → переносимые профили → борт
|
||||
|
||||
## Актуальный маршрут — 2026-09-03
|
||||
|
||||
Сверено с кодом `bee8552`, установкой `54c8d82`, исправлением reindex `bd947b4`
|
||||
и последними решениями владельца. M4.9T5 ×004TREE рассчитан через UI, опубликован
|
||||
и повторно открыт как документ из кэша после перезапуска. Визуальный replay ещё
|
||||
не реализован для этого portable-результата. Разделы до журнала инкрементов — текущий
|
||||
и последними решениями владельца. Проверки и сборка текущего инкремента поверх
|
||||
`eff60e4` завершены; возврат к основному маршруту зафиксирован ниже. M4.9T5 ×004TREE рассчитан через UI, опубликован
|
||||
и повторно открыт из кэша после перезапуска. Общий camera/TGS replay реализован;
|
||||
подробная визуальная и memory-lifecycle приёмка ещё открыта. Разделы до журнала инкрементов — текущий
|
||||
маршрут; исторические «следующий шаг» и «этап открыт/закрыт» ниже не команды.
|
||||
|
||||
### Цель и результат
|
||||
@@ -29,9 +209,11 @@ PASS через Wi-Fi/LTE не является условием готовно
|
||||
рассчитаны → выбор пуст, «Рассчитать» нет, «Обновить» остаётся. Плашек завершения
|
||||
нет; во время работы общий индикатор показывает настоящую фазу и доступные счётчики.
|
||||
Внутри первичного decode/передачи архива детальные счётчики ещё отсутствуют.
|
||||
Лимит первых 6 карточек снят,
|
||||
но пагинация сотен записей ещё не доказана.
|
||||
- **Последняя приёмка:** 726 frontend tests, 128 focused progress/queue/API/
|
||||
Обсерватория теперь показывает только identity-bound portable результаты;
|
||||
исторические LAB остаются в Legacy. Каталог дочитывает cursor pages по100
|
||||
metadata entries (до256 страниц на scope с явным partial flag), поиск видит
|
||||
все загруженные источники. Fixture500 sources и real20-page proof PASS.
|
||||
- **Предыдущая функциональная приёмка:** 726 frontend tests, 128 focused progress/queue/API/
|
||||
transport tests, отдельно40 runtime/wiring и3 installer tests, typecheck/build,
|
||||
Ruff/mypy и browser QA. Для найденного при рестарте cache-дефекта — ещё89
|
||||
session/publication и72 admission/cache/queue/API tests. Эти проходы пересекаются,
|
||||
@@ -47,12 +229,49 @@ PASS через Wi-Fi/LTE не является условием готовно
|
||||
- **Текущие составы:** M4.9T5 — CPU TGS; LAB V1 — последовательные EoMT и DDRNet.
|
||||
Ни один не равен полному будущему AI-профилю рига. Архивные overlays в одном
|
||||
viewer не доказывают, что один Docker вычислил все слои.
|
||||
- **Последний viewer-инкремент:** primitive-only owner v2 и передача Escape/pointer
|
||||
из iframe для существующих внешних controls. 740 frontend/64 focused backend
|
||||
tests, полный typecheck/build PASS, новая сборка обслуживается на8000.
|
||||
Разделитель native viewer снова передаёт координаты внешним панелям; проверено
|
||||
контрактным тестом, реальная visual acceptance этой версии ещё не выполнена.
|
||||
- **Входы Worker, новый инкремент2A:** общий source CAS двух агентов установлен;
|
||||
другая job/generation/конфигурация переиспользует exact cached bytes, частичная
|
||||
camera-cache требует только отсутствующие members. M49 проверяет готовый
|
||||
LiDAR pack до raw decode; прежний producer/identity сохранён.111 focused tests,
|
||||
Ruff/mypy и реальный cross-agent synthetic proof PASS, моделей не запускали.
|
||||
Это не кэш viewer (он остаётся на Core) и не устранение cold whole-input barrier.
|
||||
- **Последний продуктовый инкремент2D:** Legacy separation и pagination активны
|
||||
на8000 (`app-9nK8VtbK.js`).747 frontend/41 backend tests, typecheck/build,
|
||||
Ruff/mypy PASS. Browser catalog/search/normal/expanded/Refresh/dropdown Escape
|
||||
принят; тяжёлый replay не открывался. Legacy API до/после побайтно неизменён.
|
||||
- **Освобождение памяти:** найден остаток записанного viewer после закрытия.
|
||||
Добавлены disposable upstream realm, размыкающий ссылки facade и backend
|
||||
release/TTL. Предыдущий browser proof подтвердил освобождение GPU, но прежний
|
||||
facade оставил829 MB renderer после закрытия (112 MB до). Для v2 реальный
|
||||
open/close ещё не проверен: browser auto-review отклонил тяжёлое открытие при
|
||||
pressure2; запрошено отдельное разрешение. Это не блокирует код/контракты
|
||||
оставшихся частей этапа2 и не считается доказанным исправлением memory issue.
|
||||
Активные данные/качество не урезаются, дисковый cache не удаляется.
|
||||
- **Крупный проход saved review/recovery:** общий viewer подключён к сохранённым
|
||||
EoMT/DDRNet masks LAB V1 через новый строгий adapter; M49 cache identity сохранена.
|
||||
Outbox больше не застревает за префиксом exhausted/backoff rows. Краткие
|
||||
heartbeat transport failures повторяются в пределах аренды с тем же sequence;
|
||||
новый control layer установлен в оба агента.749 frontend/166 backend tests,
|
||||
typecheck/build/Ruff/mypy PASS; Core `app-w6onjKPq.js` healthy на8000.
|
||||
- **Реальный LAB V1 ×004TREE пока FAIL:** новая job
|
||||
`observatory-run-67a6bf3e4d644e4a8ee3c03b915f8f01` потеряла lease на шаге EoMT.
|
||||
После независимой проверки освобождения ресурсов штатно reconciled→failed;
|
||||
история сохранена, очередь11 failed/2 succeeded,0 live leases. Новый LAB не
|
||||
опубликован. Отдельно подтверждён устаревший EoMT disk floor350GiB сверх
|
||||
рабочего набора: при текущих397.47GB free admission не пройдёт. Перед повтором
|
||||
нужна новая sealed resource policy, не очистка данных/не покупка памяти.
|
||||
[Полный отчёт и точные границы доказательств](../experiments/perception/OBSERVATORY_SAVED_REVIEW_RECOVERY_2026-09-03.md).
|
||||
- **Есть инженерный прототип полного графа:** DDRNet/RF-DETR/geometry/distance/
|
||||
motion/TGS/costmap/policy-shadow и короткие потоковые proofs. Не пишем заново.
|
||||
Самостоятельный продуктовый образ и полный recorded-run этого состава не приняты.
|
||||
- **Не закрыто:** полный recorded-analysis текущими
|
||||
профилями, синхронный сохранённый visual replay, матрица двух профилей/записей, полный поиск/
|
||||
пагинация каталога, standalone и фактический перенос на борт.
|
||||
профилями, синхронный сохранённый visual replay, матрица двух профилей/записей,
|
||||
оставшиеся recovery cases, standalone и фактический перенос на борт.
|
||||
|
||||
Источники: [ADR 0050](adr/0050-recorded-observatory-first.md),
|
||||
[cache/UI evidence](../experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md),
|
||||
@@ -62,6 +281,8 @@ Desktop final-status — операторская сводка и история
|
||||
сохранение выполненной работы, не неподтверждённые сведения о runtime.
|
||||
Текущее исполнение и точные declarations:
|
||||
[progress / первый запуск](../experiments/perception/OBSERVATORY_RECORDED_PROGRESS_2026-09-03.md).
|
||||
Последняя сверка и проверки:
|
||||
[возврат к основному сценарию](../experiments/perception/OBSERVATORY_MAINLINE_RECONCILIATION_2026-09-03.md).
|
||||
|
||||
## Границы исполнения
|
||||
|
||||
@@ -106,8 +327,12 @@ normal/expanded UI; последний код `e436fb5` и отчёты выше
|
||||
|
||||
**Частично выполнено:** bounded attempt-scoped progress реализован и активирован.
|
||||
Новый M49-run использовал прежний профиль и полностью выполнил его расписание.
|
||||
Это не закрывает 2A: целиковый input barrier и `_capture_arrays()` до replay-cache
|
||||
lookup ещё сохранены. Progress observation не является новым режимом исполнения.
|
||||
Это не закрывает2A: целиковый input barrier ещё сохранён. Новый preparation adapter
|
||||
проверяет exact LiDAR-cache до вызова прежнего producer, общий source CAS уже
|
||||
установлен в оба агента. На warm input не повторяются raw decode и передача
|
||||
готовых members, но cold materialization по-прежнему ждёт весь вход. Progress
|
||||
observation и warm reuse не являются новым режимом исполнения.
|
||||
Evidence: [source reuse](../experiments/perception/OBSERVATORY_SOURCE_REUSE_2026-09-03.md).
|
||||
|
||||
- Сохранить source timestamps и causal ordering. Медленный Worker притормаживает
|
||||
подачу, а не выбрасывает обязательные кадры ради 1×. Учитывается каждый вход/
|
||||
@@ -133,32 +358,45 @@ timeline. Это приёмка CPU TGS, не полного detector/segmentati
|
||||
точный cache hit, исчезновение M49 из выбора и открытие документа после рестарта.
|
||||
Найден и исправлен no-op reindex: служебная переиндексация больше не меняет
|
||||
source identity; реальное изменение по-прежнему требует нового расчёта.
|
||||
**Осталось в2B:** portable review сейчас JSON, не проигрыватель. Подключить
|
||||
typed result/frame reader и общий `CanonicalRecordedLabReplay`, ленивое чтение
|
||||
сохранённых TGS/costmap и точную камеру/временную привязку. Проверить coverage,
|
||||
seek/play/pause, normal/expanded/restore/Escape и повторное открытие без job.
|
||||
Сначала использовать уже sealed пакет; не считать заново и не подмешивать
|
||||
архивные E47/M49 semantics. Название «полный маршрут и воспроизведение» само
|
||||
по себе не доказывает доступность replay или полноту всей исходной сессии.
|
||||
Общий `CanonicalRecordedLabReplay` уже получает сохранённый camera/source/TGS
|
||||
RRD с Core; JSON не является единственным review. **Осталось в2B:** сохранение
|
||||
ручного ракурса при blueprint activation, подробная визуальная оценка и
|
||||
подтверждённое освобождение памяти закрытого viewer. Использовать уже sealed
|
||||
пакет, не считать заново и не подмешивать архивные E47/M49 semantics. Название
|
||||
«полный маршрут» не доказывает покрытия всех исходных timestamps.
|
||||
|
||||
**2C. LAB V1 и другая запись.** Выполнить LAB V1 × 004TREE, затем оба профиля
|
||||
× RAVNOVES00, строго последовательно. Медленная EoMT не возвращает нас к гонке
|
||||
за сетевым FPS. Не менять незаметно состав, cadence или разрешение ради PASS.
|
||||
RAVNOVES01 — отрицательный случай до подтверждённой аттестации.
|
||||
|
||||
**Попытка2026-09-03:** LAB V1 ×004TREE запущен штатно, но после transfer и prepare
|
||||
не завершил EoMT: lease expired, результата нет. Heartbeat retry исправлен и
|
||||
установлен, exact-job resources освобождены, failed receipt сохранён. Перед
|
||||
следующим расчётом изменить350GiB disk floor через новую sealed версию с
|
||||
проверяемым бюджетом рабочего набора; предусмотреть дешёвый preflight до долгих
|
||||
asset checks и bounded diagnostics до cleanup. Не считать этот canary успешным.
|
||||
|
||||
**2D. Повторное использование, сбои и большой каталог.**
|
||||
|
||||
- Refresh, повторный вход и перезапуск открывают тот же результат без новой job.
|
||||
Все текущие профили рассчитаны → выбор пуст, «Рассчитать» нет; новая версия → новый расчёт,
|
||||
старая остаётся ниже. Проверить transient disconnect, compute failure,
|
||||
publication retry, missing/corrupt artifacts и отсутствие дубликатов.
|
||||
- Исторические результаты получают допуск к review только при достаточном
|
||||
evidence, без подделки provenance. Если binding отсутствует — исправить
|
||||
проверяемую проекцию либо выполнить новый расчёт, не объявлять legacy новым.
|
||||
- Довести постраничный поиск записей и результатов. Нельзя спрятать профиль
|
||||
- **Реализовано:** Обсерватория не показывает Legacy/canonical архивные LAB;
|
||||
они остаются в существующем архиве без миграции/удаления. Portable результаты
|
||||
прошлых версий сохраняются при точном binding, независимо от имён и даты.
|
||||
- **Реализовано и проверено:** постраничный каталог и поиск по загруженным
|
||||
источникам. Нельзя спрятать профиль
|
||||
из-за cache hit, соответствующий результат которого нельзя найти/открыть
|
||||
из-за окна каталога. Сотни metadata entries проверяются функциональными
|
||||
fixtures, не нагрузкой на Mac и не загрузкой всех видео в RAM.
|
||||
[Evidence и границы traversal](../experiments/perception/OBSERVATORY_CATALOG_BOUNDARY_2026-09-03.md).
|
||||
- **Новый recovery proof:** keyset outbox проходит мимо exhausted/backoff rows;
|
||||
interruption до publish/после publish до ACK восстанавливает тот же результат
|
||||
без compute. Transient heartbeat/lost ACK повторяет тот же sequence, истёкшая
|
||||
аренда/чужая identity/HTTP401/403/409 не принимаются. Это contract tests и
|
||||
установленный control layer, не реальная long-outage qualification.
|
||||
|
||||
**Приёмка:** матрица 2 профиля × 2 совместимые записи, полные обязательные выходы,
|
||||
честный прогресс, published package, сохранённый просмотр без compute после
|
||||
@@ -218,12 +456,16 @@ watchdog, stop/slow при пропаже данных, моторы и авто
|
||||
- [x] 2026-09-03 — этап 1: queue/cache/identity/selector реализованы и локально проверены.
|
||||
- [x] 2026-09-03 — история сохранена, completed-status UI удалён.
|
||||
- [x] Этап 2A, часть progress — реальные bounded Worker → backend → UI snapshots.
|
||||
- [x] Этап 2A, warm source reuse — shared CAS и LiDAR early lookup установлены на Worker;111 tests и cross-agent synthetic proof.
|
||||
- [ ] Этап 2A, остаток — versioned recorded-analysis и устранение полного input barrier.
|
||||
- [x] Этап 2B, compute/publish/cache — M4.9 ×004TREE завершён; документ повторно открыт после рестарта.
|
||||
- [x] Найденный reindex-дефект exact cache исправлен; исходная связь восстановлена по точному SHA proof.
|
||||
- [x] Этап 2B, saved replay — camera/source cloud/TGS в одном native Rerun, выдача с Core после рестарта без compute.
|
||||
- [ ] Этап 2B, visual acceptance — сохранение ручного ракурса и подробная визуальная оценка; не подменять работающим проигрывателем.
|
||||
- [ ] Этап 2C–2D — LAB V1/вторая запись, cache/recovery/каталог.
|
||||
- [x] Primitive-only owner v2 и мост native input:16 focused/740 frontend/64 backend tests, typecheck/build; сборка на8000.
|
||||
- [ ] Этап 2B/2D, memory lifecycle — GPU/server cleanup проверены в предыдущих циклах; прежний renderer удерживается нестабильно. Browser acceptance v2 отдельно не разрешена auto-review; остальные части этапа2 продолжаются.
|
||||
- [x] Этап 2D, каталог — Legacy separation, cursor pagination, fixture500 и real20-page proof; UI на8000 проверен.
|
||||
- [ ] Этап 2C–2D — LAB V1/вторая запись и оставшиеся cache/recovery cases.
|
||||
- [ ] Этап 3 — самостоятельный полный профиль и сравнение конфигураций.
|
||||
- [ ] Этап 4 — кандидат, затем фактическая бортовая квалификация.
|
||||
- [x] 2026-09-03 — план и Desktop-сводка синхронизируются с фактическим исполнением.
|
||||
@@ -236,12 +478,40 @@ Core хранит/выдаёт 193,622,178-byte replay; Worker не нужен
|
||||
blueprint clone activation. Не объявлять stable source ID сохранением eye;
|
||||
выбирать только поддержанный native-механизм либо отдельно согласованный upgrade,
|
||||
не патчить WASM и не создавать второй renderer. Подробная визуальная приёмка открыта.
|
||||
Первым действием после нормализации памяти Mac повторить browser first-open для
|
||||
последней правки initial cursor +1мкс; до этого не писать PASS начальной сцены.
|
||||
Автотесты/build проходят; последняя визуальная проверка остановлена resource gate.
|
||||
Отдельно закрыть остаток2A версионированным incremental input;
|
||||
не объявлять прежний whole-recording materializer потоковым.
|
||||
Не начинать снова с claim/v3, memory repair, селектора или сетевого canary.
|
||||
Начальный cursor +1мкс показал camera/TGS в промежуточной проверке, но в финальном
|
||||
expanded first-frame камера была пустой до playback; устойчивость не принята.
|
||||
Прежний facade функционально работает, GPU715→375 MB освобождается,
|
||||
но renderer112→829 MB после закрытия. Follow-up с `vmmap`: один цикл834→215 MB
|
||||
за35с с исчезновением крупных VM областей, повторный812→824 MB за91с.
|
||||
Это не принято как стабильное исправление memory issue; retained root не доказан.
|
||||
В коде введён primitive-only owner v2: SDK handles/Promise/errors остаются в iframe,
|
||||
parent получает JSON-строки, late start и все каналы завершаются независимо.
|
||||
После решения владельца вернуться к основной работе завершены последовательно
|
||||
полный typecheck,740 frontend tests,64 focused backend tests и build. Дополнительно
|
||||
устранена потеря pointer/Escape при iframe boundary для существующих controls;
|
||||
16 focused tests включают перевод координат native divider и cleanup listeners.
|
||||
На8000 `app-DHVEqf5x.js`, backend89747 не перезапускался. Build15.14с,
|
||||
max RSS1994817536 bytes; OOM нет. Swap за интервал финальной сборки вырос
|
||||
1934.69→2173.69MiB: это не доказательство отсутствия resource pressure.
|
||||
Browser auto-review отдельно отклонил тяжёлый M49 viewer при pressure2; запрос
|
||||
владельцу отправлен, обхода не было, проверочная вкладка закрыта. Этот конкретный
|
||||
visual gate открыт, но он не останавливает работу над input/catalog/contracts.
|
||||
Подробности: [memory lifecycle](../experiments/perception/OBSERVATORY_MEMORY_LIFECYCLE_2026-09-03.md).
|
||||
|
||||
**Непосредственно дальше — основной этап2:** перед повтором LAB V1 исправить
|
||||
ресурсную политику диска новой sealed версией и сохранение диагностики отказа;
|
||||
не повторять известный350GiB admission FAIL. Затем закончить2C. Также открыты
|
||||
versioned recorded-analysis и
|
||||
incremental input2A, завершение saved-viewer2B, затем последовательная матрица
|
||||
LAB V1/вторая запись2C и recovery/постраничный каталог2D. Подготовку2A и metadata
|
||||
fixtures2D можно продолжать независимо от разрешения на тяжёлую browser-проверку.
|
||||
Прежний `_capture_arrays()` остаётся только в cold producer path нового adapter;
|
||||
early warm lookup и общий Worker source CAS проверены и установлены. Не называть
|
||||
их новым incremental execution. Producer SHA pack неизменен; новый input path
|
||||
должен сохранять старые exact-cache результаты. Memory lifecycle остаётся
|
||||
критерием завершения операции, не отдельной
|
||||
бесконечной оптимизацией или условием переписать план. Не повторять claim/v3,
|
||||
ремонт селектора, Docker VM или сетевой canary. Лабы в целом ещё не закрыты.
|
||||
|
||||
## Карта продолжения, проверка и восстановление
|
||||
|
||||
@@ -268,6 +538,9 @@ visual entities требуют отдельного решения. Провер
|
||||
- 2026-09-02, владелец: recorded-first вместо сетевого realtime-first; старые
|
||||
FAIL сохраняются, лаборатории не зависят от LTE/борта.
|
||||
- 2026-09-03, владелец: результат внизу вместо completion button/status — реализовано.
|
||||
- 2026-09-03, владелец: активной операции разрешён необходимый расход памяти;
|
||||
завершённая обязана освободить временные ресурсы. Не заменять cleanup снижением
|
||||
качества/новыми жёсткими RAM caps. Little Snitch не трогать; файлы результатов сохранить.
|
||||
- 2026-09-03, актуализация: этап 1 — реализованная основа, сквозной proof явно
|
||||
в этапе 2. Это уточнение границы приёмки, не приписывание успешного end-to-end run.
|
||||
- Desktop17/20, утверждение об отсутствии online prototype и безусловный1×
|
||||
|
||||
Reference in New Issue
Block a user