Secret Scan / scan (push) Successful in 5s
Build App (Preview) / compute-version (pull_request) Successful in 5s
Secret Scan / scan (pull_request) Successful in 6s
Build App (Preview) / create-release (pull_request) Successful in 1s
Build App (Preview) / build-macos (pull_request) Successful in 2m48s
Build App (Preview) / test (pull_request) Successful in 4m41s
Build App (Preview) / build-linux (pull_request) Successful in 5m2s
Build App (Preview) / build-windows (pull_request) Successful in 5m9s
Build App (Preview) / prune-previews (pull_request) Successful in 5s
The preview workflow is the PR check, but until now it only built: neither test suite ran anywhere but a developer's machine. That matters most for the app-command ACL census from #60. An ungranted command compiles fine and only fails at runtime, so `cargo test` and vitest's capabilities.test.ts are the guards that catch it before merge. The new `test` job runs `npm ci`, `npm run build` (tsc, plus the dist/ that generate_context! needs), `npx vitest run` and `cargo test --locked`. It has no `needs`, so it runs alongside the three platform builds instead of delaying them. Verified in a fresh clone: 975 vitest and 675+3 cargo tests pass, and the tree stays clean. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>