The PR check (build-app-preview.yml) only built the app. Neither test suite ran in CI.
This adds a test job that runs:
npm ci
npm run build, which type-checks and produces the dist/ that cargo test needs to compile
npx vitest run
cargo test --locked
The job has no needs, so it runs alongside the three platform builds instead of delaying them. A red test fails the PR check, but the preview still publishes.
This matters most for the per-window command lockdown from #60. A command that isn't granted compiles fine and only fails at runtime, so these tests are the guard before merge.
Verified: the same steps pass in a fresh clone (vitest 975/975; cargo test 675 + 3).
This PR checks itself: it changes the workflow file, so it runs the new job.
Docs: CLAUDE.md (Testing) and the lockdown spec are updated to say CI now runs both suites.
The PR check (`build-app-preview.yml`) only built the app. Neither test suite ran in CI.
This adds a `test` job that runs:
1. `npm ci`
2. `npm run build`, which type-checks and produces the `dist/` that `cargo test` needs to compile
3. `npx vitest run`
4. `cargo test --locked`
The job has no `needs`, so it runs alongside the three platform builds instead of delaying them. A red test fails the PR check, but the preview still publishes.
This matters most for the per-window command lockdown from #60. A command that isn't granted compiles fine and only fails at runtime, so these tests are the guard before merge.
- **Verified:** the same steps pass in a fresh clone (vitest 975/975; cargo test 675 + 3).
- **This PR checks itself:** it changes the workflow file, so it runs the new job.
- **Docs:** CLAUDE.md (Testing) and the lockdown spec are updated to say CI now runs both suites.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
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>
jknapp
merged commit 85901d8a80 into main2026-09-23 17:17:15 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The PR check (
build-app-preview.yml) only built the app. Neither test suite ran in CI.This adds a
testjob that runs:npm cinpm run build, which type-checks and produces thedist/thatcargo testneeds to compilenpx vitest runcargo test --lockedThe job has no
needs, so it runs alongside the three platform builds instead of delaying them. A red test fails the PR check, but the preview still publishes.This matters most for the per-window command lockdown from #60. A command that isn't granted compiles fine and only fails at runtime, so these tests are the guard before merge.
🤖 Generated with Claude Code