docs(observatory): record cache proof and pending activation

This commit is contained in:
DCCONSTRUCTIONS
2026-09-03 09:15:12 +03:00
parent 1e4ddc2cff
commit d777f3198b
3 changed files with 145 additions and 0 deletions
@@ -54,6 +54,26 @@ compute packages/registries сохранены. Старые agents stopped/rest
Следующий шаг: verified published-cache projection. Этап1 по-прежнему открыт;
готовый cache/selector/progress и полный расчёт записей ещё не доказаны.
**Третий инкремент, 2026-09-03: verified cache реализован в коде.** Каталог и
preflight принимают только successful/published job с точным source snapshot,
RunDefinition, Session provenance и целым пакетом артефактов. Фронтенд читает
проверенную привязку вместо прежнего запрета непустых `existing_results`.
Готовый результат доступен без dispatch/подготовки raw source; повреждённый
не скрывает возможность нового расчёта. Повторный submit и гонка с публикацией
защищены внутри queue INSERT transaction; холодная проверка больших файлов
требует Refresh и не выполняется под write lock. История не удаляется.
120 focused backend tests,23 frontend/architecture tests, Ruff, mypy пяти
source files и focused TypeScript check PASS. Полная production build и browser
QA **пока не выполнены**: Mac memory-pressure=2 при swap~7.67.8GiB, чужие постоянные
сервисы не остановлены. Canonical8000/PID57796 оставлен на прежнем согласованном
backend/frontend release, health200; новый cache ещё не активирован. Worker,
модели и живые очереди не изменялись. Полный LAB-run не запускался.
[Проверки и следующий шаг](../experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md).
Этап1 остаётся открытым до сборки/активации согласованного release и проверки
каталога; затем этап2 — селектор, прогресс и полный цикл на записях. Не повторять
уже закрытый ремонт claim/v3 и не возвращаться к сетевым latency canary.
- Сверить каталог, очередь, публикацию и просмотр для текущих M4.9T5 и LAB V1.
- Связать готовность с точной исходной записью и immutable RunDefinition,
включающей image/model/config/adapter/result-contract identities.
@@ -81,6 +81,39 @@ All pre-existing queue row hashes are unchanged. This repairs dispatch polling,
not published-cache verification or full recorded-workflow acceptance.
See the [repair evidence and rollback boundary](../../experiments/perception/OBSERVATORY_RECORDED_CLAIM_REPAIR_2026-09-02.md).
## Third increment: exact published-result cache (2026-09-03)
Implemented in source; activation of the matching backend/frontend release is
pending the local resource gate. This does not claim a completed recorded run.
The portable catalog now joins successful **published** queue receipts to the
current per-source catalog snapshot, immutable definition, Session publication
binding, calculation profile, package contract, central manifest and every
artifact. No matching by LAB name, operator label, or the newest 100-job page.
The queue receives two indexes, with no deletion or rewriting of history.
The existing computation identity remains the only computation key.
An exact usable result projects `existing / open-existing`, its result ID and
path-free source/definition/package identities. It disables new submission but
does not require Worker dispatch or raw-source preparation for cached review.
Missing/corrupt artifacts do not count as coverage; the older evidence remains.
The newest verified exact candidate is returned; other versions are not hidden
from the evidence catalog or mistaken for the current calculation.
Large immutable result objects are hashed in 1 MiB chunks on first use or file
metadata change. A bounded 4096-entry memo rechecks dev/inode/size/mtime/ctime;
normal refresh does not reread unchanged large objects. This is result-integrity
IO, not source upload, source decoding, model inference, or an FPS measurement.
The queue INSERT fence rechecks the published candidate atomically. It never
streams large files while holding the write lock: cold/concurrent/changed
verification returns HTTP409 requesting Refresh. Exact idempotency retries still
return the original job. Verified corruption permits a new request.
The frontend's existing portable decoder now accepts only bound, internally
consistent cached results. No per-LAB page, renderer or selector implementation
was introduced. Full selector/progress/product acceptance remains stage 2.
See [verification and activation status](../../experiments/perception/OBSERVATORY_PUBLISHED_CACHE_2026-09-03.md).
## Boundaries
No Synology deployment, hardware actuation, motor integration, new capture,