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 и готовая автономия не отождествляются.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# ADR 0049 — Stream-first full perception profiles
|
||||
|
||||
Date: 2026-09-01; updated 2026-09-02 15:30 MSK. Status: stage-1 engineering
|
||||
baseline complete; stage-2 binary graph, readiness and resumable-input primitives.
|
||||
Full-graph recovery adapter, production inventory collector and product cutover
|
||||
are not implemented by the latest CPU-only continuity proof.
|
||||
Date: 2026-09-01; updated 2026-09-02 15:56 MSK. Status: stage-1 engineering
|
||||
baseline complete; stage-2 full binary GPU pilot now supports input recovery.
|
||||
Production collector, external transport, standalone image and product cutover
|
||||
remain open; local recording/IPC proof is not physical-live acceptance.
|
||||
Execution order remains the four stages in
|
||||
[the ExecPlan](../OBSERVATORY_REALTIME_PROFILES_EXECPLAN.md).
|
||||
|
||||
@@ -102,6 +102,50 @@ explicit byte bound is required. No duplicate new scanner feed is introduced.
|
||||
|
||||
## Time and lifecycle
|
||||
|
||||
Stage-2 full-graph recovery increment, 2026-09-02 15:56 (`70927ea`):
|
||||
`--recover-input` connects lifecycle to PilotController, RecordingSource,
|
||||
BinaryGraphBridge, GPU/CPU calls and result binding. Source clock mapping is
|
||||
fixed before ingress; fault windows never restart/slow it. Bounded diagnostic
|
||||
`--input-gap sequence:milliseconds` is explicit in effective config. Reconnect
|
||||
polls quiescence without queuing old events; complete accounting distinguishes
|
||||
skipped from processed input. Historical one-shot defaults remain available.
|
||||
|
||||
The receiver waits for an independently decodable fragment and fresh causal
|
||||
sensor pair. Decoder-local index resets; original source sequence/timestamps
|
||||
do not. Actual decoder keyframe validation remains. The graph recreates CPU
|
||||
surface/geometry/temporal/motion/rolling/threat providers using the same configs
|
||||
and clears cached segmentation. RF-DETR backend, DDRNet/decoder/TGS children
|
||||
remain. TGS C++ creates an estimator per request; costmap arrays are per-call,
|
||||
so no native temporal reset command or restart is needed. Rolling input window
|
||||
resets independently. GPU/CPU/result gates bind the input epoch, not activation.
|
||||
Obsolete results release their input rather than terminating the profile;
|
||||
review removes a lingering collector tuple reference to prior input too.
|
||||
|
||||
Two normal/faulted full-profile pairs pass on Worker006. Normal raw parity is
|
||||
128/128; final p95/p99 85.775/89.385ms. Faulted runs preserve four PIDs and clear
|
||||
nonempty temporal stores, resuming on seq30/110 after gaps at seq16/72. All
|
||||
post-resume histories and observed costmap timestamps belong to the new epoch;
|
||||
first scenes have fresh six-layer evidence and new DDRNet inference. No result
|
||||
was published during pauses. GPU calls were idle at injection; mid-compute
|
||||
interruption is covered by focused tests, not new real-GPU cancellation proof.
|
||||
|
||||
Recovery availability differs from accepted-frame processing latency: 150ms gap
|
||||
takes1.476s to next complete scene; 2.2s gap takes3.857s, including waiting for
|
||||
keyframe/sensor alignment. Faulted output is76 processed +52 skipped cameras,
|
||||
zero unaccounted; none is replayed. Its p95/p99 83.163/89.729ms describes accepted
|
||||
frames only. Timings use temporary stock clocks2610/10251MHz; whole-route
|
||||
availability, auto-clock and network timing remain unqualified. Real collector,
|
||||
authentication, cross-host clock mapping, standalone and onboard safety are open.
|
||||
|
||||
383 tests pass. Evidence330 artifacts,236 Worker snapshot hashes/114 current
|
||||
files verified; `.runtime/perception-stage2-resume-worker-20260902T1545MSK/manifest.json`,
|
||||
SHA-256 `a9449fa4c012e30ce8a06025790c0e110eeebab7c1859fdebf56d5e785961ea3`.
|
||||
Initial preflight abort (512MiB threshold below known534MiB idle baseline) is
|
||||
preserved; no models/clocks ran in it. Auto clocks/four scoped services restored,
|
||||
empty/retired fixture volumes and containers removed; legacy restart loops not
|
||||
fixed. The earlier CPU-only increment below is historical, not latest status.
|
||||
No full-source transfer, new model, UI or actuator path is introduced.
|
||||
|
||||
Owner clarification and stage-2 continuity increment, 2026-09-02 15:30
|
||||
(`c31c46c`): temporary input/network loss must not unload the resident models.
|
||||
Unknown/stale GPU telemetry is not proof of a competing owner. The desired
|
||||
|
||||
@@ -2032,3 +2032,111 @@ control/network boundary и самостоятельная упаковка. С
|
||||
TARGET предыдущего инкремента уточнён, но его историческое evidence не переписано.
|
||||
GPU latency заново не измерялась: conditional PASS / auto-clock FAIL и source
|
||||
gaps остаются прежними. Этап 2 не закрыт; этапы 3–4 не начаты, actuation=false.
|
||||
|
||||
## 2026-09-02 15:56 МСК — этап 2, инкремент 9: recovery полного GPU-графа
|
||||
|
||||
**Результат:** `70927ea` подключает pause/resume к полному PilotController,
|
||||
RecordingSource, BinaryGraphBridge и collector. Это больше не CPU sentinel:
|
||||
на Worker работали настоящие DDRNet, RF-DETR, geometry/motion и TGS/costmap.
|
||||
Внутри двух faulted запусков все четыре PID (Triton, DDRNet, decoder, TGS)
|
||||
сохранились после обоих обрывов; warmup повторно не выполнялся.
|
||||
|
||||
`--recover-input` и bounded `--input-gap sequence:milliseconds` включены явно
|
||||
и записаны в effective configuration. Входная epoch проходит через bundle,
|
||||
GPU/CPU work, publication и receipt; old work освобождается с `input-gap`, а
|
||||
не останавливает модели. Source clock продолжает исходный 1×: новые timestamps
|
||||
не выдумываются, отставшие события не догоняются. Reconnect неблокирующе ждёт
|
||||
старые callback/receiver/input ownership, открывает новую epoch и init. Decoder
|
||||
не получает predictive fragment, пока нет keyframe и свежей causal пары sensors.
|
||||
Frame index декодера локален epoch, исходные sequence остаются оригинальными.
|
||||
|
||||
`JointGraph.reset_temporal()` действительно заменяет CPU surface, current store,
|
||||
geometry, temporal, motion, rolling и threat instances с прежними config objects.
|
||||
Model backends и дочерние процессы остаются прежними, DDRNet cache очищается.
|
||||
TGS C++ создаёт estimator на каждый запрос, costmap arrays — локальные; его
|
||||
скрытой истории между запросами нет. Sensor window сбрасывается отдельно.
|
||||
На review удалена лишняя локальная ссылка collector на предыдущий input tuple;
|
||||
после этой правки оба полных прогона повторены с immutable review snapshot.
|
||||
|
||||
### Проверки и численные результаты
|
||||
|
||||
Сначала два CPU-only source/decoder прогона без GPU: normal 128/128 exact BGR и
|
||||
sensor bundles к прежнему oracle; gap 76 decoded + 52 skipped, два resume.
|
||||
Затем четыре последовательных full GPU-прогона, ни одного параллельного профиля.
|
||||
Во всех — прежний diagnostic image, model assets, 8 CPU / 8 GiB, input ≤16 MiB,
|
||||
pending ≤2 и временный штатный envelope SM2610/memory10251 MHz.
|
||||
|
||||
| Прогон | Обработано / намеренно пропущено | p95 / p99 accepted-frame latency, ms |
|
||||
| --- | --- | --- |
|
||||
| Normal | 128 / 0 | 84.043 / 88.362 |
|
||||
| Gap | 76 / 52 | 79.318 / 99.380 |
|
||||
| Review normal, финальный код | 128 / 0 | 85.775 / 89.385 |
|
||||
| Review gap, финальный код | 76 / 52 | 83.163 / 89.729 |
|
||||
|
||||
Normal raw parity — exact 128/128 по BGR, segmentation, proposals, observations,
|
||||
tracks, threats, range estimator, material, lineage/sensor binding и raw costmap.
|
||||
Gap BGR/segmentation/proposals exact 76/76 к тем же source frames. Сравнивать его
|
||||
temporal/costmap outputs с непрерывной историей некорректно: история намеренно
|
||||
сброшена. В обоих faulted trials сумма completed/skipped равна 128, unaccounted=0,
|
||||
overload drops=0. Поле legacy-report `source_failed=52` содержит здесь известные
|
||||
input-gap/keyframe-wait omissions, не 52 неучтённые аварии модели.
|
||||
|
||||
| Обрыв | Новый вход принят на кадре | До resume runtime | До первой свежей полной сцены |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| Seq16, 150 ms | 30 | 1432.447 ms | 1476.169 ms |
|
||||
| Seq72, 2200 ms | 110 | 3801.820 ms | 3857.475 ms |
|
||||
|
||||
Это финальный repeat; первый gap trial дал 1474.895 / 3856.521 ms до scene.
|
||||
Разница с длительностью обрыва — ожидание keyframe и подходящих camera/pose/points,
|
||||
а не загрузка моделей или проигрывание backlog. Отдельный recovery-availability
|
||||
budget ещё не квалифицирован; accepted-frame p95 не скрывает эту паузу.
|
||||
|
||||
При reset старые surface-cache/body-history/components/rolling-cells меняются
|
||||
92/16/6/291 → 0/0/0/0 и 507/42/6/358 → 0/0/0/0. Все post-resume costmap timestamps
|
||||
не раньше новой cutoff и не из будущего; track history начинается заново.
|
||||
Первая scene каждой epoch имеет fresh шесть слоёв, новый DDRNet inference,
|
||||
available sensors и motion unknown / без прежней history. Результатов внутри
|
||||
обоих интервалов waiting нет. Lease generation внутри activation неизменна.
|
||||
GPU/CPU calls в момент этих инъекций были idle; они доказывают resident-profile
|
||||
continuity, не отмену работающего CUDA kernel. Mid-compute discard покрыт пока
|
||||
focused tests, actual child/CUDA failure сохраняет прежнюю terminal семантику.
|
||||
|
||||
Peak input 8,761,039 bytes normal / 8,065,853 gap; после каждого прогона input=0,
|
||||
children stopped, lease released. Peak VRAM во всём окне ≤2368 MiB, RAM контейнера
|
||||
≤3361 MiB. Эти значения — данный профиль/окно, не общий capacity guarantee.
|
||||
Обычный проход сохраняет исходные 52 sensor gaps; full-route freshness и прежний
|
||||
auto-clock FAIL не отменены. Ни network, ни standalone/quality/autonomy gate не
|
||||
закрыт условным fixed-clock timing PASS.
|
||||
|
||||
### Прерванный preflight, cleanup и evidence
|
||||
|
||||
Первая GPU попытка остановилась ДО запуска моделей/clock setters: новый
|
||||
проверочный порог 512 MiB был ошибочно ниже уже известного quiesced Windows
|
||||
baseline 534 MiB, фактически было 530 MiB. Все четыре сервиса восстановлены.
|
||||
Неиспользованный owned lease volume затем read-only проверен как пустой и удалён.
|
||||
Повтор проверяет baseline +128 MiB и отдельно отсутствие GPU-capable контейнеров;
|
||||
низкая память не объявляется доказательством эксклюзивного владения. Первый
|
||||
abort и оба набора before/quiesced/after сохранены, не перезаписаны.
|
||||
|
||||
После trials GPU/memory clocks возвращены в auto, power limit 450 W не менялся.
|
||||
Финальный read-only snapshot: 978 MiB, P5, 300/810 MHz. Четыре Mission Core
|
||||
сервиса восстановлены, Triton ready=200; Ollama/Frigate exited/restart=no.
|
||||
Известные legacy-agent restart loops не исправлялись и не объявляются здоровыми.
|
||||
Temporary containers/lease volumes отсутствуют. Удалены только временные
|
||||
экспериментальные объекты; записи, веса, прошлое evidence сохранены.
|
||||
Mac canonical8000=200,8765 закрыт; no model/load/full build на Mac.
|
||||
|
||||
383 focused tests PASS (4.30 s), Ruff/format 10 files PASS, mypy двух common
|
||||
runtime modules PASS; единственное прежнее Starlette/httpx предупреждение.
|
||||
Manifest `.runtime/perception-stage2-resume-worker-20260902T1545MSK/manifest.json`:
|
||||
330 artifacts, SHA-256
|
||||
`a9449fa4c012e30ce8a06025790c0e110eeebab7c1859fdebf56d5e785961ea3`.
|
||||
236 Worker snapshot hashes и 114 текущих source files сверены. Сохранены обе
|
||||
версии кода, CPU/4 GPU reports/scenes, команды, telemetry, состояния/clock reset,
|
||||
analysis и local checks; sealed manifest скопирован на Worker.
|
||||
|
||||
**Далее:** trusted continuous GPU/inventory collector и bounded control-plane
|
||||
adapter, внешний transport/recovery с отдельным availability budget, затем
|
||||
standalone packaging. Gap policy работает в enabled полном пилоте; это ещё не
|
||||
product queue/registry/UI cutover. Этап 2 продолжается, этапы 3–4 не начаты;
|
||||
physically-live scanner, управление ровером и actuation=false остаются за границей.
|
||||
|
||||
Reference in New Issue
Block a user