Smoke and v0 API test coverage
v0.6.342Production smoke and frontend smoke now cover all external v0 API endpoints with optional keyed checks. The Node smoke runner (scripts/smoke/run_smoke.mjs) runs keyed checks for GET /api/v0/health, /api/v0/coverage, and /api/v0/price when TEST_API_KEY or --api-key is set; V0_PRICE uses the first TCG/set from the coverage response. The prod-smoke CI workflow passes TEST_API_KEY from repository secrets so keyed v0 checks run in CI when configured. The frontend smoke suite (npm run test:smoke) includes v0 health and v0 API integration tests (coverage and price) when INTEGRATION_API_BASE and TEST_API_KEY are set; they are skipped otherwise so Jest reports skipped instead of a false pass. Shared helpers (v0IntegrationHelpers) centralize backend root and auth headers for v0 tests. Docs (contract README, docs/ci/smoke.md) describe the full test stack: unkeyed and keyed checks, frontend smoke patterns, and safe addition of new checks.
Changes:
- Node smoke runner: optional keyed v0 checks (health, coverage, price); TEST_API_KEY or --api-key; V0_PRICE built from coverage
- prod-smoke.yml: pass TEST_API_KEY from secrets so CI runs keyed v0 checks when secret is set
- Frontend smoke: include v0Health and v0Api integration tests in test:smoke; use shared v0IntegrationHelpers
- docs/ci/smoke.md: table of all checks (unkeyed + keyed), auth column, prod usage with TEST_API_KEY
- backend/tests/contract/README.md: frontend smoke and Node smoke v0 coverage when TEST_API_KEY set