9.7 KiB
T-724 validation evidence
Editorial note (2026-10-10): obsolete state terminology is summarized by purpose below; cited IDs, commits and validation results still describe the original investigation, not new executions.
Scope: T-724, authoritative item 00001M4D5ZN6P:4, resume instruction thread
sequence 7. Baseline: c79506b60f1abcb3d8698d01491f2b6e644170d0 (clean detached
checkout). Source branch: work/T-724-workspace-drive. T-717/T-722 are integrated;
T-723 Tools/WIP and T-714 implementation are not modified.
Requirements → observable proof
| Requirement | Implementation / proof |
|---|---|
| Shared Workspace asset, no Repository/Git prerequisite | Workspace sidebar Drive; optional-node route; real /api/workspaces repositoryless bootstrap, zero repository records/config, folder/Markdown/PNG/empty-file and Worker artifact roundtrip. |
| DB hierarchy, stable string node URL | driveHref, strict decimal/ref/metadata parsers; root/list/parent-chain APIs only; rename/move/delete/recreate lifecycle in real adapter and production browser. No blob path or second persisted tree. |
| Paged folder list, metadata and mutations | Service cursors, bounded pages, breadcrumb, search, creation, native binary download, replace, relocate, empty-folder delete; real and fixture roundtrips. |
| CAS and draft retention | Per-Workspace/node draft with observed node state at read time; 2-account real concurrent CAS (one success/one conflict), 2-tab browser drafts, explicit refresh vs discard; component regression proves open rename form does not silently rebase on refresh. |
| Identity/content-condition fences | Controller selection/write/page epochs; saved tuple, scoped receipts and separate cancel generation; delayed old read/save/status/workspace browser gates; keyed image decode events and URL revocation component regression. |
| Safe Markdown/raster/binary | Existing raw-HTML-rejecting renderer; same-Workspace explicit resource navigation and credential-free external HTTP(S), no automatic inline image requests; real node-content-bound PNG transfer, 256 KiB raster bound, HTML/SVG download-only, failed image/truncated/empty browser states. |
| Upload publication / errors / OutcomeUnknown | Raw Blob ≤16 MiB + SHA-256; transfer receipt vs DB-published acknowledgment; cancellation/loss preserve request ID and query current-authorized result, no unconditional reupload; typed name/CAS/limit/denied/storage failures. |
| Backend current permission and Worker grants | Existing authoritative Worker catalog; owner setting flag; explicit read_only/read_write, separate Profile enablement, complete paged grants, revoke; real signed read-only Worker denial/revoke and exact Web grant-adapter owner/member HTTP boundaries; component and browser grant interactions. |
| Latest only / no added workflow | Explicit replacement/history warning; no versions, approval/publication workflow, public share links or recursive folder delete. |
Real API/DB/LocalFileSystem evidence (not fixture responses)
crates/workspace-server/src/server/tests/drive_web_roundtrip_tests.rs creates a
fresh temporary SQLite/FeatureStorage/LocalFileSystem Workspace over real loopback
HTTP. It starts no live dogfood Server or Runtime; the Runtime Worker-spawn process
boundary is fake, while Workspace/Worker registry/grants/nodes/bytes/receipts and
request authentication are production authorities.
The explicit Deno child imports the production content and grant adapters. Fresh credentials arrive via stdin; origin/auth resolution is loopback-bound and responses are never mocked. This proves authenticated HTTP adapters, not a Passkey/cookie browser login or complete live Runtime process E2E.
- Ordinary real HTTP test: 1 passed / 1 explicitly ignored process test.
- Explicit process test (
--ignored): 1 passed, including owner grant read_only/read_write create/list/revoke/re-read and non-owner administration rejection after parent integration. - Full changed Server crate, replayed by the parent before commit: 693 library +
11 binary passed, 1 explicitly ignored; doc-tests passed
(
target/t724-server-final.log). - Parent real adapter replay:
target/t724-real-adapter-final.log(1 passed). Ordinary HTTP coverage is also part of the full Server crate run.
Reproduce using web/workspace/test/drive-real-api/README.md or
deno task test:drive:real-api from web/workspace.
Compile, generated contracts and Web semantic validation
- Workspace root
cargo check: pass (target/t724-root-check-final.log). cargo test -p server-api --features typescript: 91 passed, doc-tests pass.- Canonical OpenAPI
export_openapi -- --check openapi/server-api.json: current. - Regenerated Drive TypeScript, Deno-formatted to the checked-in style: byte equal
to
web/workspace/src/lib/generated/drive-api.ts; no generated contract edits. generate_repository_openapi_types,generate_runtime_api_types,generate_ticket_api_types,generate_companion_api_types,generate_worker_launch_api_typeswith--check: all current.cargo fmt --all -- --check, Deno format/lint of new typed boundaries, andgit diff --check HEAD: pass.- Web
deno task check: 0 errors / 0 warnings. - Web
deno task test: 566 passed, including 36 content/controller boundary tests and 2 preview/link-policy tests. - Web
deno task test:component: 302 passed / 32 files, including actual Markdown rendering/alt labels, late decode fences, pinned observed form condition, grant administration, and dependent existing Worker/Console/Markdown surfaces. - Separate fixture-client compatibility tests: 4 passed. These prove mock wire compatibility, not real storage or authorization.
Web logs: .svelte-kit/t724-{web-check-final,unit-final,components-final}.log,
plus narrow .svelte-kit/t724-{drive-state,ui-fence,markdown-tests}.log.
Production browser and visual review
Production rebuild and implementer-owned visual acceptance completed on 2026-10-09 before the implementation commit:
deno task build: pass (.svelte-kit/t724/final-build.log).- Production browser scenarios: 9 passed (
.svelte-kit/t724/browser-final.log). - Responsive/keyboard/raster audit: 1 passed, all 1440/768/390/320 widths in
both themes (
.svelte-kit/t724/responsive-final.{log,json}). - Official after bundles:
.svelte-kit/t724/visual/t724-after-{light,dark}-committed-candidate/, 108 captures per theme. The same baseline Home/Workers personas and widths are compared, with additional Drive/grant states. - Parent opened before and after screenshot overview sheets through
ViewImage(target/t724-final-visual/{before,after}-{light,dark}-*.png), plus original 320px grant and 390px denied-write captures. Reviewed grouping, separators, spacing, focus, wrapping, page vs table scroll, and permission/recovery copy. Home/Workers composition is preserved except the intended shared Drive entry, grant section and contained Worker-table scrolling. New states remain distinct and narrow layouts retain accessible controls without document overflow. - Parent inspected official
review-context.json: HTTP document status 200, accessibility snapshots and screenshot hashes present; diagnostic dispositions retain intentional 403/503 fixtures and superseded metadata aborts. Bothdiagnostic-disposition.jsonfiles have no unexpected diagnostics. The runner correctly reportscompleted-with-errorsfor injected failures; visual acceptance is the implementer's review, not that exit/status label. - Visual result: pass, no unresolved new visual regression. Artifacts use baseline source commit plus dirty context; production source is frozen by the subsequent commit (only test formatting/documentation changed afterward).
A final grant regression also proves catalog readiness toggles cannot abandon an already transmitted mutation. Readiness gates new actions but is not Worker identity. All 22 grant component tests pass; pending/unknown operations remain fenced until their result is reconciled. Worst-case 64 KiB NUL text additionally proves the separate 512 KiB JSON response bound without relaxing the raster bound. These changes are included in the final Web check/test/build/captures above.
The production static Web shell is exercised against synthetic loopback APIs;
this is separate from the real authority tests above. The fixture has a single
Worker catalog reused by REST/subscription projections, not a second UI registry.
See web/workspace/test/drive-browser/README.md for reproducible scenarios, gates,
owned-process cleanup and the browser/visual commands.
Before sources are preserved under .svelte-kit/t724/before-build/; baseline JS
has no Drive/grant controls. Official before bundles use
.svelte-kit/t724/visual/t724-before-{light,dark}-representative/. The current
implementation was never overwritten to produce the final static before build.
Intermediate visual review found and fixed:
- Narrow Worker table widening the page grid and clipping grant controls: contain horizontal table scrolling and constrain the page grid; full identities remain available in a disclosure.
- Markdown image placeholders losing alternate text: use the renderer library's
actual
textprop; retain no automatic image loading. Component and production browser regressions protect this. - Parent semantic review additionally fixed late image-decode event identity and open rename/replacement observed-condition pinning, with focused component tests.
Injected permission/storage/list errors and superseded aborted breadcrumb reads remain in official context with explicit dispositions. A successful capture exit or HTTP200 alone is not visual acceptance. No screenshots, credential state or real response secrets are committed.