Parent epic: #43
Problem
VRDex has a useful baseline verification loop now, but the current gates are still mostly lint/typecheck/build/backend checks. As the product adds real public UI and submission flows, we need a single tracking issue for the next layer of quality gates: visual confidence, formatting consistency, dead-code checks, coverage, complexity reporting, and secret-scanning posture.
Current baseline
Already wired:
- web lint via
pnpm lint:web
- web typecheck via
pnpm typecheck:web
- web build via
pnpm build:web
- backend typecheck via
pnpm typecheck:backend
- backend unit tests via
pnpm test:backend
- local Convex verification plus generated API diff check via
pnpm check:backend:generated
- CI workflow in
.github/workflows/baseline-checks.yml
- Husky pre-commit hook running
pnpm lint-staged
- lint-staged ESLint autofix for staged web JS/TS files
Not yet wired:
- screenshot tests
- Playwright e2e/smoke tests
- Prettier/Biome formatting
- complexity checks such as
scc, lizard, or ESLint complexity rules
- coverage reporting
- dead-code / unused dependency checks such as
knip
- repo-local secret-scanning CI workflow
- PR screenshot artifacts or visual review evidence
Scope
Add staged quality and verification tooling without making early UI iteration painful.
Recommended phases:
- Add Playwright smoke coverage and screenshot artifacts for core public routes.
- Add formatting policy, choosing either Prettier or Biome.
- Add dead-code / unused-dependency reporting, likely
knip.
- Add backend helper coverage reporting.
- Add complexity and size metrics as report-only first.
- Add repo-local secret-scanning/checks for PRs.
- Document the verification loop and when each gate should be blocking vs advisory.
Candidate checklist
Playwright and visual confidence
Formatting
Dead code and dependency hygiene
Coverage
Complexity and size metrics
Secret scanning and policy checks
CI and docs
Non-goals
- full visual regression gating for every route immediately
- exhaustive e2e coverage
- strict coverage thresholds before the backend surface stabilizes
- blocking complexity thresholds before enough code exists to calibrate them
- replacing GitHub platform-level secret scanning if it is already enabled
Acceptance criteria
- the repo has a documented verification roadmap covering visual, format, complexity, coverage, dead-code, and secret-scanning checks
- at least the first slice of Playwright/screenshot confidence is implemented or split into a concrete follow-up PR
- new checks are categorized as blocking or advisory
- local commands and CI behavior are documented clearly enough for agents and humans to use consistently
Related context
This came out of reviewing the verification posture after adding the first public submission/profile-page slice in #70.
Parent epic: #43
Problem
VRDex has a useful baseline verification loop now, but the current gates are still mostly lint/typecheck/build/backend checks. As the product adds real public UI and submission flows, we need a single tracking issue for the next layer of quality gates: visual confidence, formatting consistency, dead-code checks, coverage, complexity reporting, and secret-scanning posture.
Current baseline
Already wired:
pnpm lint:webpnpm typecheck:webpnpm build:webpnpm typecheck:backendpnpm test:backendpnpm check:backend:generated.github/workflows/baseline-checks.ymlpnpm lint-stagedNot yet wired:
scc,lizard, or ESLint complexity rulesknipScope
Add staged quality and verification tooling without making early UI iteration painful.
Recommended phases:
knip.Candidate checklist
Playwright and visual confidence
/,/submit,/p/<slug>, and/c/<slug>.Formatting
Dead code and dependency hygiene
knipor equivalent unused-file/export/dependency check.Coverage
Complexity and size metrics
scc, as advisory output.lizard, or another JS/TS-friendly tool.Secret scanning and policy checks
.env*, Convex local state, and generated local files remain ignored/uncommitted.CI and docs
.github/workflows/baseline-checks.ymlor add dedicated workflows for new checks.README.mdwith new local verification commands.docs/planning/architecture.mdor a dedicated verification doc with blocking vs advisory gate policy.Non-goals
Acceptance criteria
Related context
This came out of reviewing the verification posture after adding the first public submission/profile-page slice in #70.