- Node
24.18.0(.node-version,engines.node; engine-strict is on) - pnpm
11.17.0via corepack:corepack prepare pnpm@11.17.0 --activate - Foundry/Forge
1.5.1-stable(independent storage-layout cross-check)
Every direct dependency is pinned exactly; save-exact is set. Adding a
range, tag, or floating reference fails pnpm deps:policy and CI.
pnpm install --frozen-lockfile
pnpm --filter @slotscope/web exec playwright install chromiumpnpm format:check # prettier
pnpm lint # eslint
pnpm typecheck # tsc -b project references
pnpm test:unit # vitest unit + property suites (all packages + scripts)
pnpm test:fixtures # fixture ground-truth suite incl. Forge cross-check
pnpm test:e2e # Playwright browser suites (builds + previews first)
pnpm test:a11y # accessibility subset only
pnpm fixtures:verify # golden drift check (CI mode)
pnpm build && pnpm build:check # production build + payload inventory gate
pnpm benchmark:v0.1 # reference benchmark (after pnpm build)
pnpm release:verify # release evidence check- Fixture goldens change only through
node scripts/verify-fixtures.ts --updatein a reviewed commit; the command prints a semantic diff — review the facts, not just hashes. - Correctness and benchmark jobs run with zero retries and are never
continue-on-error. - Every animated state needs a persistent border/icon/text equivalent, and
every interactive surface must pass the keyboard + reduced-motion suites
(see
packages/ui/src/tokens.cssfor the motion contract). - No new dependencies, packages, or abstractions beyond what the public fixture slice demands (plan risk R11).
See docs/architecture.md and the ADRs in docs/adr/.
- Issues live in beads (
bd ready,bd show <id>,bd update <id> --claim,bd close <id>); create an issue before writing code. - One task, one commit: each closed issue maps to a focused commit whose message says what changed and why.
- Every commit must leave every gate green — there are no allowed-failure jobs and no retries for correctness or benchmark assertions.
masteris branch-protected: work happens on a branch, opens a PR, and merges only once every required check (quality,unit-fixtures,build,browser,release-verify) is green. No force-pushes, no direct deletion, linear history only.- Deployment is native: Vercel is connected to
masterand redeploys production automatically on every merge (Build Commandpnpm build, Output Directoryapps/web/dist). A manualvercel deploy --prebuilt --prodis only for verifying a build locally before it lands.
All colors, spacing, type, and motion come from
packages/ui/src/tokens.css; raw hex outside that file is a review defect.
The one aesthetic rule: amber is forbidden on any control — only
measured values glow. See
docs/design/instrument-identity-v0.15.md.