docs(perception): record clock route A/B/A and continuous LAN canary

This commit is contained in:
DCCONSTRUCTIONS
2026-09-02 22:14:58 +03:00
parent 59a74a3677
commit 75a5320756
3 changed files with 154 additions and 3 deletions
+11 -3
View File
@@ -1,6 +1,10 @@
# Observatory: четыре этапа создания полного real-time Perception-профиля
Дата: 2026-09-01; обновлено 2026-09-02 21:12 МСК. **Этап1 закрыт; этап2 продолжается. Инкремент16: двусторонний старт принят, непрерывный real-time canary FAIL.** Код `48835a0`: обе стороны прогревают часы до source anchor; явное подтверждение Worker и data grant обязательны до старта1×. Потерянный ACK не меняет уже предложенный/принятый anchor.241 local/198 Worker tests PASS,2 Worker-only skip локально;129 измеренных source hashes совпадают.
Дата: 2026-09-01; обновлено 2026-09-02 22:06 МСК. **Этап1 закрыт; этап2 продолжается. Инкремент17: непрерывность короткого LAN-прогона32/32 PASS; latency FAIL.** Код `59a74a3` добавляет только bounded clock-only диагностику. CPU A/B/A без моделей и scene: SSH/Tailscale48/96 ready → проверенный LAN94/96, непрерывно после warmup → Tailscale53/96. Все288 обменов независимо пересчитаны; ~100ms хвосты RPC остаются и без scene. Это не доказательство DERP relay, универсального ускорения LAN или конкретной причины transport tails.
Один полный32-кадровый1× LAN-canary:32/32 byte-exact/reference-exact результата, без WAIT, drops, sync skips и reconnect. Все50 обменов часов пересчитаны; после двух начальных warmup48 ready, uncertainty публикаций3.645–4.771ms при прежнем пределе5ms. p95/p99 source→consumer-ready205.864/213.751ms при бюджете125ms — FAIL. Полностью свежих scene12, доступных sensor pairs17;30 результатов до EOF. PeakVRAM2357MiB, не предел24GiB. Модели/effective config и129 прежних runtime/test source files не менялись; маршрут выбран только для этого запуска, не зашит в Docker и не назначен продуктовым default.245 local/202 Worker tests PASS,2 Worker-only skip локально,131 source hashes совпадают. [Отчёт](../experiments/perception/PERCEPTION_STREAM_STAGE2_LAN_ROUTE_2026-09-02.md),67 artifacts, manifest `2645a0faacb89b5af5d3756feea05550a12cc64820be926d32f2103b5f225caf`.
Предыдущий инкремент16: двусторонний старт принят, непрерывный real-time canary FAIL. Код `48835a0`: обе стороны прогревают часы до source anchor; явное подтверждение Worker и data grant обязательны до старта1×. Потерянный ACK не меняет уже предложенный/принятый anchor.241 local/198 Worker tests PASS,2 Worker-only skip локально;129 измеренных source hashes совпадают.
Один32-кадровый canary теперь принял начало0–5 и после WAIT/resync3031:8 результатов,1 compute discard,9 source WAIT и14 sync skips, без неучтённых кадров. p95/p99 до consumer-ready215.767ms,5 полных свежих scene,6 результатов до EOF. Все55 raw t1–t6 обменов независимо пересчитаны;41 ready. На работающем источнике uncertainty5.0315.667ms превысила неизменные5ms; RPC errors0, Worker telemetry33/33 PASS, lease1/PIDs сохранены. PeakVRAM2363MiB, не предел24GiB. [Отчёт](../experiments/perception/PERCEPTION_STREAM_STAGE2_JOINT_START_2026-09-02.md),53 artifacts, manifest `9cb369fe7ae185d1a92f6050bc1018a878483f5eec169267f100843245428691`.
@@ -18,7 +22,7 @@ CPU-only Mac↔Worker006 proof:72/72 timestamp-наблюдения незави
Граница доказательства: два контейнера одного Worker с проверенным общим Linux monotonic clock, временные штатные частоты2610/10251MHz; **не Mac↔Worker full-graph, не radio/live и не standalone**. История зависимых слоёв после gap закономерно отличается от uninterrupted reference. Все230 опубликованных scene/масок проверены на стороне приёмника и повторно сверены. [Подробный отчёт](../experiments/perception/PERCEPTION_STREAM_STAGE2_NETWORK_2026-09-02.md). Evidence236 artifacts: `.runtime/perception-stage2-network-graph-20260902T1541Z/manifest.json`, SHA-256 `d1bc7e26850a2d9050ee1d8f8a5ece2e6b8c53e2e7dba381cbd4445d68a5ec17`.
Следующий проверяемый результат этапа2: CPU-only attribution/A/B задержек clock/control loop при передаче/приёме scene; отделить application scheduling от транспортного участка, затем оптимизировать подтверждённую причину. Стартовый барьер реализован; сам по себе он не сделал clock readiness стабильным. Увеличение числа samples в прежних2s не устраняет наблюдённый WAIT даже offline. Пороги5ms/125ms и source1× не ослаблять, source clock после старта не переносить, backlog не догонять. После стабильного короткого full-graph canary — controlled cross-host gap/slow-consumer, длинный поток и standalone без developer/model mounts. Новая длительная GPU-нагрузка на проваленном baseline не запускалась. Этапы34/registry/UI cutover не открыты. Временные контейнеры/lease/collector/tunnel18561/key/bootstrap удалены, сервисы и GPU auto mode восстановлены; Ollama/Frigate exited/restart=no. Mac8000/Worker telemetry работают.
Следующий проверяемый результат этапа2: per-frame границы source packing/write → Worker ingress/decode/queue/publication → result read/parse и пересечение с control requests. Начать с bounded CPU transport checks, отделить очереди/сериализацию от оставшихся ~100ms хвостов завершения RPC, затем оптимизировать измеренную причину и выполнить один короткий full-graph recheck. CPU A/B/A уже показал, что общая обработка scene не является необходимой причиной clock WAIT; точный слой задержки пока не установлен. Пороги5ms/125ms и source1× не ослаблять, source clock после старта не переносить, backlog не догонять; не заменять модели ради неподтверждённой транспортной причины. Далее внутри этапа2 — controlled cross-host gap/slow-consumer, длинный поток и standalone без developer/model mounts. Измерительный latency FAIL не превращается в PASS, но сам по себе не запрещает разработку упаковки/общего runtime согласно принятому экспериментальному scope. Этапы34/registry/UI cutover не открыты. Временные контейнеры/lease/collector/tunnel18561/key/bootstrap удалены, сервисы и GPU auto mode восстановлены; Ollama/Frigate exited/restart=no. Mac8000/Worker telemetry работают.
Предыдущий инкремент12 (`0310592`, `1916122`): CPU-only gRPC/TLS proof Mac↔Worker,16/16 payload/reply; синтетический source clock и CPU sentinel, моделей0. Same-Mac RTT14.360/23.919/120.815ms min/median/max — не one-way age/FPS.105 local и20 Worker tests PASS, проверены bounded slow-reader/quarantine. Evidence `.runtime/perception-stage2-grpc-20260902T1500Z/manifest.json`, SHA-256 `adf5eaf092feaed6721f66e2adaceded0cdbf55754e1f9953f54623bfb52d331`.
@@ -249,6 +253,8 @@ EoMT — семейство ViT-моделей сегментации изобр
## Progress
- 2026-09-02 22:06 МСК: `59a74a3`, инкремент17. Bounded clock-only probe +10ms scheduling witness, без lease/grant/source/model authority. CPU A/B/A ready48/96 →94/96 →53/96; LAN после warmup непрерывен, ~100ms RPC tails сохраняются. Один полный LAN-canary32/32 exact без WAIT/drop/reconnect,30 результатов до EOF,12 полностью fresh из17 доступных sensor pairs. p95/p99 205.864/213.751ms —125ms FAIL; четыре resident PID/lease1 сохранены. Все338 raw clock exchanges (288 CPU +50 full) независимо пересчитаны.245 local/202 Worker tests PASS,2 Worker-only skip локально;131 source hashes, прежние129 без изменений.67 artifacts/manifest `2645a0faacb89b5af5d3756feea05550a12cc64820be926d32f2103b5f225caf`. Результат не standalone и не изменение постоянного маршрута. Ресурсы освобождены, сервисы/auto clocks восстановлены.
- 2026-09-02 21:12 МСК: `48835a0`, инкремент16. Joint startup PASS; 1× source начинается с0, anchor принят обеими сторонами. Full canary8/32 FAIL: compute discard6, source WAIT715, sync1629, результаты05/3031. Raw receipt exact8/8; до EOF6, полностью fresh5. Clock exchanges55/55 пересчитаны, readiness41/55; running uncertainty5.0315.667ms, host telemetry33/33 без ошибок. Lease1/4PID пережили WAIT, после End всё освобождено.241 local/198 Worker PASS;129 source hashes.53 artifacts/manifest `9cb369fe7ae185d1a92f6050bc1018a878483f5eec169267f100843245428691`. Следующий gate — CPU-only control/data scheduling attribution, не ещё один слепой GPU retry.
- 2026-09-02 20:37 МСК: `35b6cd9`, инкремент15. Full Mac↔Worker graph использует acknowledged clock bounds, uncertainty для слоёв/ячеек, WAIT и immutable source anchor. Исправлены EOF ordering, repeated clock read и ранний disconnect до OPEN;297 local/173 Worker/12 repeated reconnect PASS. Финальный canary2/32,13 source WAIT+17 sync skips, оба результата после EOF,143.881/155.743ms; real-time FAIL, пороги не ослаблены. Следующий пункт — совместный pre-start clock readiness обеих сторон, затем короткий повтор. Все попытки сохранены;198 artifacts, manifest `7b435cac111b3e0e789aa137ba064651e6d344a5f8fb8fa35b0abbd0e7cb1d74`. Temporary resources удалены, leases released, stock-clock lock снят, четыре сервиса восстановлены,8000/telemetry работают. Этап2 остаётся открытым, stages3–4 не начаты.
@@ -302,6 +308,8 @@ EoMT — семейство ViT-моделей сегментации изобр
## Surprises / открытые вопросы
- Инкремент17: clock readiness срывается в A/A2 даже при0 моделях/scene, поэтому общий scene event loop не является единственным достаточным объяснением. LAN улучшил короткий интервал ready, но не все RPC tails: Poll p95 A/B/A2 88.838/92.403/89.950ms, LAN ACK p95 98.266ms. Tailscale preflight показал direct LAN endpoint, а не доказанный DERP. Выбор маршрута относится к connection configuration, не к весам/профилю.32/32 выходов не равны32 свежим scene; локальные Worker accounting gates остаются unknown/false для внешнего источника, отдельный joined verifier доказывает отсутствие потерь. Нельзя складывать/вычитать p95 разных timing boundaries как стоимости независимых стадий.
- Инкремент16: согласованный старт и отсутствие RPC errors не означают непрерывную готовность часов. Running bounds вышли за5ms без GPU/owner failure; это условная uncertainty при500ppm budget, не измеренный физический drift. Offline добавление всех probes в прежних2s всё ещё даёт FAIL на тех же девяти samples. Для следующего изменения нужен timing trace scheduling/control/data, а не автоматическое расширение history или бюджета.
- 2026-09-02 13:55 → 14:22 МСК: два старых range_m расхождения 1.3877787807814457e-17 m воспроизведены и исправлены. Quaternion начинался на byte 24 общего pose buffer; адрес 8 mod 16 менял norm на один ULP в текущем NumPy runtime. Offsets 0/16/32/48 возвращают reference, 8/24/40/56 точно воспроизводят оба отклонения. Теперь quaternion — отдельная immutable 32-byte копия с проверенным 16-byte alignment; формулы и comparator прежние. Полный граф подтвердил 128/128 exact дважды. Это квалификация numeric layout текущего pinned runtime, не универсальное обещание bitwise равенства на любом CPU/NumPy.
@@ -360,6 +368,6 @@ EoMT — семейство ViT-моделей сегментации изобр
## Outcomes / retrospective
Этап1 завершён; этап2 продолжается. Инкремент16 закрыл двусторонний pre-start handshake и сохранил начало записи в настоящем full-graph запуске. Непрерывный real-time пока не принят:8/32, один input-gap discard,9 WAIT+14 sync skips, p95/p99 215.767ms.55 полных clock exchanges пересчитаны независимо: WAIT вызван превышением условной5ms uncertainty, не GPU telemetry/owner loss. Нужна CPU-only диагностика scheduling/transport и оптимизация подтверждённой причины, затем короткая полная перепроверка.241 local/198 Worker tests PASS;129 source hashes,53 artifacts. Одна GPU-проба без повторов. Исторические same-Worker128/128 не заменяют cross-host qualification; standalone/native-host inventory/radio/live не квалифицированы. Batch/registry/UI и этапы34 не начаты, actuation=false. Mac8000/telemetry работают,8765/temporary18561 закрыты, Ollama/Frigate exited/restart=no. Временные ресурсы удалены, lease released, четыре точных service IDs и GPU auto mode восстановлены; прежние service defects не объявлены исправленными.
Этап1 завершён; этап2 продолжается. Инкремент17 подтвердил короткую непрерывную Mac↔Worker обработку полного профиля через проверенный LAN-маршрут:32/32 byte-exact/reference-exact, без WAIT/потерь/reconnect. Это не real-time qualification: p95/p99 205.864/213.751ms выше125ms, полностью fresh только12 scene, два результата после EOF. CPU-only A/B/A отделил clock readiness от наличия моделей/scene;338 raw clock exchanges пересчитаны, конкретная причина оставшихся ~100ms RPC tails пока не установлена. Следующий участок — инструментирование упаковки/очередей/сериализации/входа-выхода и оптимизация подтверждённой задержки, без расширения бюджетов.245 local/202 Worker tests PASS;131 source hashes,67 artifacts. Одна GPU-проба без повторов; профиль/веса/config и129 прежних source files неизменны, постоянный маршрут не менялся. Standalone/native-host inventory/radio/live не квалифицированы. Batch/registry/UI и этапы34 не начаты, actuation=false. Mac8000/telemetry работают,8765/temporary18561 закрыты, Ollama/Frigate exited/restart=no. Временные ресурсы удалены, lease released, четыре точных service IDs и GPU auto mode восстановлены; прежние service defects не объявлены исправленными.
После этапа 4 здесь будут перечислены digest самостоятельного полного образа, измеренные статусы и ошибки по recordings, реально проверенные source/hardware/config комбинации, состояние сохранённого EoMT-варианта и оставшиеся physical-live/quality/vehicle-integration ограничения. Готовый Docker и готовая автономия не отождествляются.