feat: guarded Worker Restore from shared Web actions (T-701)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# T-701 validation ledger
|
||||
|
||||
This records concrete intermediate failures rather than treating later passes as erasing them. Final source and review evidence are on the repository Merge Request.
|
||||
|
||||
## Validation approach
|
||||
|
||||
Start with Restore/parser/UI/serialization boundary filters, then the eight changed crates and the normal root `cargo check` compile closure. Cargo jobs are bounded to three; full crate test concurrency is bounded to four. No all-workspace test, `--all-targets`, Nix/Docker build, deployment, process restart or live Worker repair is part of this validation.
|
||||
|
||||
The Web production bundle, `svelte-check`, normal Deno tests and actual rendered component suites have passed. Those results alone do not prove Backend admission, replay or preparation recovery. Full Rust suites exercise callers, schema migration and dependent inventories that narrow guard filters cannot prove.
|
||||
|
||||
## Intermediate failures and disposition
|
||||
|
||||
1. Early root checks failed because the Runtime request/preparation DTO integration was not yet present. This was an incomplete implementation, not a baseline defect. A subsequent root check passed after the integration.
|
||||
2. Early Server API full tests reported three stale generated artifacts after the OpenAPI contract changed. Regenerating the affected closure artifacts resolved them; the full default suite passed 70 tests. TypeScript-feature tests were also executed after regeneration.
|
||||
3. Adding full catalog GETs exposed existing browser fixtures that returned Workdir-only shapes to every endpoint. The fixtures now return the exact `/workers` contract, and the Workdir-error fixture fails only its intended endpoint. Catalog and transport/Workdir failures have separate alert identities.
|
||||
4. Parent full `cargo test -p yoi-workspace-server -- --test-threads=4` produced **614 passed / 4 failed** (618 library tests):
|
||||
- `hosts::tests::embedded_runtime_registers_routes_input_without_internal_leaks`: a broad forbidden-word assertion rejected the newly public observation field's word `token`. The private credential/token non-leak contract must be preserved while allowing the explicitly public observation token.
|
||||
- `server::tests::embedded_runtime_api_routes_by_runtime_and_worker_ids_without_leaking_internals`: an old `{}` Restore fixture received 422 because guarded Restore now requires the observed token and request ID. Update the real route fixture, do not restore an unguarded compatibility path.
|
||||
- `workspace_deletion::tests::explicit_purge_inventory_covers_every_workspace_scoped_table`: the new internal Restore intent journal was absent from the explicit purge inventory. Integrate its Workspace deletion lifecycle; do not weaken the exhaustive inventory check.
|
||||
- `server::tests::ticket_checker_suppresses_stale_and_clean_results_and_diagnoses_invalid_output`: the inherited stale-checker `execution.take_inputs().is_empty()` assertion failed. Earlier T-702 evidence reproduced this named instability on an isolated original baseline; see [T-702 validation report](2026-10-06-t702-stale-checker-validation.md). T-701 has not fixed that checker, and this failure is not conflated with the three new integration regressions.
|
||||
|
||||
## Follow-up disposition and final pre-publication results
|
||||
|
||||
The projection fixtures now permit only the explicit `restore_observation_token` key and validate its UUIDv7 value; private token/credential fields remain forbidden. The HTTP fixture sends the real observed token and request ID. The internal intent table is in the exhaustive Workspace deletion inventory.
|
||||
|
||||
The final restart recovery test exposed one obsolete Runtime expectation: an unowned startup/legacy pending operation must be explicitly recoverable, not permanently conflict. Public recovery now binds a receipt to the exact existing lifecycle operation ID, without candidate preparation or a replacement execution. Tests assert a competing request conflicts, recovery preserves the ID, and terminal replay after Stop never launches again. A Tool recovery fixture also used path-shaped IDs rejected by the existing authority-ID validator; it now uses valid authority IDs and proves the two explicit calls send an identical request body.
|
||||
|
||||
After those fixes, a full Server run reported **618 passed / 1 failed**, solely the inherited stale-checker assertion above. Its isolated test subsequently passed. An additional whole-crate run with the same four-thread configuration and **no skips** passed **619 library + 11 binary tests**. This does not erase the earlier failure or claim to fix the checker race.
|
||||
|
||||
| Executed command | Final pre-publication evidence |
|
||||
| --- | --- |
|
||||
| root `cargo check` | Passed normal default-member compile closure, including TUI and Server |
|
||||
| `cargo test -p worker-runtime -- --test-threads=4` | 332 library + 34 binary tests passed |
|
||||
| `cargo test -p yoi-workspace-server -- --test-threads=4` | 619 library + 11 binary tests passed in the additional no-skip run; previous flaky failure retained above |
|
||||
| `cargo test -p worker -- --test-threads=4` | 804 library + 109 integration tests passed |
|
||||
| `cargo test -p runtime-api` | 9 tests passed |
|
||||
| `cargo test -p server-api` / `--features typescript` | 70 / 77 tests passed, including generated artifact freshness |
|
||||
| `cargo test -p protocol` / `--features typescript` | 78 / 83 tests passed |
|
||||
| `cargo test -p client` | 52 library + 2 integration tests passed |
|
||||
| `cargo test -p tui` | 331 tests passed |
|
||||
| Web `deno task check` | 0 errors, 0 warnings |
|
||||
| Web `deno task test` | 504 tests passed |
|
||||
| Web `deno task test:component` | 249 tests in 25 files passed, including the real paired sidebar/page/store suite |
|
||||
| Web `deno task build` | Production build passed; existing chunk-size warning remains |
|
||||
| `cargo fmt --all -- --check`, `git diff --check HEAD` | Passed |
|
||||
|
||||
Additional exploratory Runtime feature checks did **not** pass: `--no-default-features` test/check cannot resolve existing unconditional `workspace_request` / `reqwest` imports; the test target additionally references disabled `fs_store`. HTTP-only check also lacks the existing retention and futures dependencies. Inspection of original HEAD confirms those imports/gates already exist; no isolated baseline build was performed for these configurations. These are recorded as failed exploratory checks, not semantic passes or newly supported configurations. The default Runtime configuration, which contains fs-store and ws-server, is exercised in full above. This Ticket does not redesign unrelated Runtime feature gating.
|
||||
|
||||
Raw session validation logs are retained under ignored `target/t701-validation/`, not shipped as product source. Immutable published source, independent verdict and any subsequent fix/review evidence belong to the explicit repository Merge Request.
|
||||
Reference in New Issue
Block a user