From 44afadb021acb27c4122aa91055937adf1d0d476 Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Thu, 3 Sep 2026 10:16:12 +0300 Subject: [PATCH] docs(observatory): record selector rules and local UI acceptance --- .../OBSERVATORY_REALTIME_PROFILES_EXECPLAN.md | 26 ++++++- docs/adr/0050-recorded-observatory-first.md | 22 ++++++ .../OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md | 69 ++++++++++++++++++- 3 files changed, 115 insertions(+), 2 deletions(-) diff --git a/docs/OBSERVATORY_REALTIME_PROFILES_EXECPLAN.md b/docs/OBSERVATORY_REALTIME_PROFILES_EXECPLAN.md index 5cfc252..fcdf88c 100644 --- a/docs/OBSERVATORY_REALTIME_PROFILES_EXECPLAN.md +++ b/docs/OBSERVATORY_REALTIME_PROFILES_EXECPLAN.md @@ -16,6 +16,9 @@ Docker-профилей, затем переносим выбранный про версий остаются в «Лабораторных доказательствах». Если рассчитаны все текущие совместимые профили, выбор пуст/недоступен, кнопки «Рассчитать» нет, «Обновить» остаётся. Старое имя LAB не доказывает совпадение версии конфигурации. +Уточнение владельца 2026-09-03: никаких кнопок/плашек «Расчёт завершён», +«Результат опубликован» и аналогичных подтверждений. Готовность видна по +результату с маркером профиля внизу; в выборе остаются только нерассчитанные. ### Этап 1 — Идентичность расчёта и переиспользование результата (в работе) @@ -86,7 +89,7 @@ succeeded/not-required не принят за новый результат. В сохранены. Worker/model jobs не создавались. Browser: каталог, выбор, Refresh, normal/expanded и Escape проверены, console warnings/errors0. -Этап1 пользовательски ещё не закрыт: текущий селектор смешивает архивные entries +На момент активации cache этап1 пользовательски ещё не был закрыт: селектор смешивал архивные entries и portable definitions, а source/setup-only выбор последней job показывает старое «Расчёт завершён» рядом с новым «Рассчитать». Это не текущий cache hit. Следующий шаг на стыке этапов1–2: exact-definition queue/status binding, @@ -95,6 +98,27 @@ normal/expanded и Escape проверены, console warnings/errors0. Подробности/rollback в том же отчёте выше; повторять сборку без изменения кода или снова освобождать память не требуется. +**Четвёртый инкремент, 2026-09-03: правило выбора исправлено.** Селектор получает +только portable definitions, оставляет совместимые без проверенного exact cache +hit; архивные LAB и рассчитанные версии остаются в доказательствах ниже. +Кнопки/плашки завершения и дублирующее «Записанный разбор» убраны. Все загруженные +результаты показаны без прежнего лимита6. «Рассчитать» отсутствует при пустом +выборе и во время уже принятого расчёта; до успешной проверки запуска кнопка +неактивна. Во время работы есть только индикатор ожидания, без вымышленных +процентов. Ошибки и retry публикации сохранены вне строки выбора. +Queue GET фильтрует точную definition SHA до LIMIT; при смене source/setup/SHA +предыдущие jobs/errors не показываются даже до React effects. Публикация +обновляет оба каталога; удаление projection также обновляет выбор. +720 frontend tests,52 focused queue/API tests, architecture4/4, typecheck, +Ruff/mypy и production build PASS. Подробная финальная runtime/UI-проверка — +в [отчёте](../experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md). +Визуальная проверка также выявила сжатие селекторов в узком обычном окне: +существующая адаптивная раскладка теперь зависит от ширины окна Observatory, +а не всего viewport. Старые terminal logs не выдаются за ошибку нового выбора. +Полный новый LAB-run, реальные счётчики прогресса и positive cache/view на +операторских данных остаются следующим acceptance этапа2, а не объявляются +закрытыми этой правкой интерфейса. + - Сверить каталог, очередь, публикацию и просмотр для текущих M4.9T5 и LAB V1. - Связать готовность с точной исходной записью и immutable RunDefinition, включающей image/model/config/adapter/result-contract identities. diff --git a/docs/adr/0050-recorded-observatory-first.md b/docs/adr/0050-recorded-observatory-first.md index 9dd8c0a..3f90f42 100644 --- a/docs/adr/0050-recorded-observatory-first.md +++ b/docs/adr/0050-recorded-observatory-first.md @@ -121,6 +121,28 @@ binding and separating archives from executable choices remain required; the activated backend cache does not prove those UI changes complete. See [verification and activation status](../../experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md). +## Selector contract clarification — 2026-09-03 + +The owner explicitly excludes completion buttons and status badges. A completed +current profile is represented by its reviewable, profile-marked evidence below, +not by a “calculation complete” control. The selector now contains compatible +portable definitions with no verified exact published cache hit. An archived LAB +or old definition never hides a new version. An empty selector has no Calculate. +An in-flight computation has only an activity indicator; failed publication +keeps a separate recovery action and never starts inference again. + +Removed the six-card presentation cap; the existing catalog window limit remains +explicit. Queue reads now filter definition SHA before pagination. Hook snapshots +are fenced by source/setup/definition so previous jobs cannot flash in the next +selection. New synthetic tests exercise none/all/partially cached choices, +unavailable executors, legacy/new-version separation and pre-effect selection +changes. Sequential validation:720 frontend tests,52 queue/API tests, architecture, +typecheck, Ruff/mypy and production build PASS. Full recorded-run/product +acceptance and measured progress counters remain stage2. +Historical terminal logs do not become a new selection's error. The existing +responsive selector layout follows workspace width, including restored narrow +windows, rather than only the browser viewport. + ## Boundaries No Synology deployment, hardware actuation, motor integration, new capture, diff --git a/experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md b/experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md index b9a32bc..8b02779 100644 --- a/experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md +++ b/experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md @@ -137,7 +137,7 @@ Sequential validation under `mission-core-product-ui`: Private snapshots/logs and previous frontend: `.runtime/docker-vm-recovery-z1636o/`. No raw recording content was collected into this diagnostic evidence. -## Remaining product acceptance +## Product acceptance remaining at initial cache activation The cache increment is active, but the complete workflow is not accepted. Browser QA reproduced the next-stage UI mismatch: archived entries and portable @@ -151,3 +151,70 @@ progress, complete recorded calculation and sequential M4.9T5/LAB V1 acceptance. Stage1 user-facing reconciliation and the full stage2 workflow remain open. Do not repeat the memory recovery or claim/v3 repair, or treat the old realtime FAIL as a new gate. No per-LAB UI branch or automatic inference on Refresh. + +## Selector correction and acceptance — 2026-09-03 + +The owner clarified that a finished calculation is represented only by its +profile-marked evidence below, never by a completion button/status. Implemented +in the shared Observatory surface using existing Design Guideline components: + +- Only compatible, uncalculated portable definitions are offered. The verified + catalog cache decision remains authoritative; names, archived definitions, + failed or unpublished jobs cannot hide a current profile. No Calculate when + the selection is empty. During an accepted computation only an activity + indicator appears; no invented percentage. Before admission the button is + disabled. Failed publication retains recovery without new inference. +- Removed completion badges, the duplicate recorded-review badge and the + six-result presentation cap. All results in the loaded catalog are shown. + The existing catalog-window bound remains explicit; this is not complete + pagination for500 recordings. +- Queue reads filter source/setup/definition before LIMIT. UI snapshots are + fenced by the same selection key before React effects, so previous jobs and + request errors cannot flash against a new selection. Historical terminal logs + are not displayed as new operator failures; observed/current failures remain + actionable. +- Publication refreshes both catalogs; projection deletion refreshes selection. + Browser QA found selector compression in a restored narrow window; moved the + existing responsive layout from viewport width to workspace container width. + No new component, per-LAB page, model configuration or Worker deployment. + +Sequential checks: architecture4/4, full typecheck, frontend720/720, +focused queue/API52/52, Ruff and mypy PASS. A synthetic test proves definition +filtering happens before pagination; API accepts a valid digest and rejects a +malformed one with422. Tests cover zero/all/partly cached choices, old versions, +incompatible/archived entries, missing projections and stale first-render data. +Final production build14.56s, peak RSS2108293120bytes; unchanged large-chunk +warnings. Pressure remained1 and swap fell2666.19→2618.19MiB. No concurrent heavy +tests/builds/browser runs; Docker limits/containers and operator apps untouched. + +Active canonical8000: backend PID69976, health200/reconciler ready, frontend +`/assets/index-BHcT8phv.js`, CSS `/assets/index-pPpyKjkx.css`, +index SHA256 `97da43251ef0d0635eb078ee1a102fa820f1716bb9ec5879dffb284aa3628ea6`. +No alternate backend8765/preview4173. The existing LaunchAgent restarted only +the canonical backend for the API change; final frontend-only corrections did +not restart it again. Original frontend backup: +`.runtime/observatory-selector-fQUwPT/frontend-dist-previous`. +For rollback, restore that build and the matching pre-change code on the same +8000 endpoint. Do not replace or truncate the queue DB. + +In-app browser acceptance: + +- 004TREE offers exactly the two current portable profiles, not four mixed + archive/current entries. Both select correctly; Calculate becomes available + after preflight. Completion labels and historical error alerts are absent. +- 01 has an empty disabled selector and no Calculate because its capture + attestation is missing. This is incompatibility, not a fake cache hit. +- 00 renders all14 loaded evidence entries. 004TREE retains both old entries + and its existing admitted LAB V1 review action; no archive projection was + deleted or falsely promoted into a current verified result. +- Refresh, dropdown Escape, normal/expanded windows and readable selector text + verified. Final browser console warnings/errors0; completion labels0, + alerts0. No Calculate, publication retry, delete, rename or replay was invoked. + +All six queue-table row hashes are identical before/after this correction and +browser checks:11 jobs,50000 legacy receipts,1 reconciliation,0 live leases, +v3 grants and preemptions. No inference or publication jobs were created. +Current real data still contains no exact successful/published cache hit; +all-cached/partial-cache behavior is synthetic-test evidence, not a new completed +LAB run. The remaining stage2 work is measured progress, full sequential +M4.9T5/LAB V1 calculation, publication, and cached viewing after restart.