docs(observatory): record selector rules and local UI acceptance
This commit is contained in:
@@ -16,6 +16,9 @@ Docker-профилей, затем переносим выбранный про
|
|||||||
версий остаются в «Лабораторных доказательствах». Если рассчитаны все текущие
|
версий остаются в «Лабораторных доказательствах». Если рассчитаны все текущие
|
||||||
совместимые профили, выбор пуст/недоступен, кнопки «Рассчитать» нет, «Обновить»
|
совместимые профили, выбор пуст/недоступен, кнопки «Рассчитать» нет, «Обновить»
|
||||||
остаётся. Старое имя LAB не доказывает совпадение версии конфигурации.
|
остаётся. Старое имя LAB не доказывает совпадение версии конфигурации.
|
||||||
|
Уточнение владельца 2026-09-03: никаких кнопок/плашек «Расчёт завершён»,
|
||||||
|
«Результат опубликован» и аналогичных подтверждений. Готовность видна по
|
||||||
|
результату с маркером профиля внизу; в выборе остаются только нерассчитанные.
|
||||||
|
|
||||||
### Этап 1 — Идентичность расчёта и переиспользование результата (в работе)
|
### Этап 1 — Идентичность расчёта и переиспользование результата (в работе)
|
||||||
|
|
||||||
@@ -86,7 +89,7 @@ succeeded/not-required не принят за новый результат. В
|
|||||||
сохранены. Worker/model jobs не создавались. Browser: каталог, выбор, Refresh,
|
сохранены. Worker/model jobs не создавались. Browser: каталог, выбор, Refresh,
|
||||||
normal/expanded и Escape проверены, console warnings/errors0.
|
normal/expanded и Escape проверены, console warnings/errors0.
|
||||||
|
|
||||||
Этап1 пользовательски ещё не закрыт: текущий селектор смешивает архивные entries
|
На момент активации cache этап1 пользовательски ещё не был закрыт: селектор смешивал архивные entries
|
||||||
и portable definitions, а source/setup-only выбор последней job показывает
|
и portable definitions, а source/setup-only выбор последней job показывает
|
||||||
старое «Расчёт завершён» рядом с новым «Рассчитать». Это не текущий cache hit.
|
старое «Расчёт завершён» рядом с новым «Рассчитать». Это не текущий cache hit.
|
||||||
Следующий шаг на стыке этапов1–2: exact-definition queue/status binding,
|
Следующий шаг на стыке этапов1–2: exact-definition queue/status binding,
|
||||||
@@ -95,6 +98,27 @@ normal/expanded и Escape проверены, console warnings/errors0.
|
|||||||
Подробности/rollback в том же отчёте выше; повторять сборку без изменения кода
|
Подробности/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.
|
- Сверить каталог, очередь, публикацию и просмотр для текущих M4.9T5 и LAB V1.
|
||||||
- Связать готовность с точной исходной записью и immutable RunDefinition,
|
- Связать готовность с точной исходной записью и immutable RunDefinition,
|
||||||
включающей image/model/config/adapter/result-contract identities.
|
включающей image/model/config/adapter/result-contract identities.
|
||||||
|
|||||||
@@ -121,6 +121,28 @@ binding and separating archives from executable choices remain required;
|
|||||||
the activated backend cache does not prove those UI changes complete.
|
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).
|
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
|
## Boundaries
|
||||||
|
|
||||||
No Synology deployment, hardware actuation, motor integration, new capture,
|
No Synology deployment, hardware actuation, motor integration, new capture,
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ Sequential validation under `mission-core-product-ui`:
|
|||||||
Private snapshots/logs and previous frontend: `.runtime/docker-vm-recovery-z1636o/`.
|
Private snapshots/logs and previous frontend: `.runtime/docker-vm-recovery-z1636o/`.
|
||||||
No raw recording content was collected into this diagnostic evidence.
|
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.
|
The cache increment is active, but the complete workflow is not accepted.
|
||||||
Browser QA reproduced the next-stage UI mismatch: archived entries and portable
|
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.
|
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
|
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.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user