.POSIX: .PHONY: help registries test-sync test-scorer lint-app test-app lint-shell \ test-shell smoke acceptance-scorer acceptance-quiz-only \ acceptance-classic-only acceptance-ai-only dev-up dev-down # Thin wrappers around the commands in AGENTS.md — that file is the # authority on what CI runs; this just saves retyping the `cd`s. Pick the # area you touched. There is deliberately no full-repo `test` target: CI's # `changes` job path-filters per area, and one target that runs everything # would undo that discipline locally. help: @echo "Targets (pick the area you touched; AGENTS.md is the authority):" @echo " registries target lists must agree; no Docker" @echo " test-sync sync unit tests" @echo " test-scorer scorer unit tests, vacuous-pass gate, offline acceptance loop" @echo " lint-app app: install + eslint" @echo " test-app app: install + eslint + vitest" @echo " lint-shell shellcheck over scripts/, setup/, entrypoints, deploy/fly, deploy/aws-terraform" @echo " test-shell bats over setup/test/, deploy/fly/test/, deploy/aws-terraform/test/, scripts/test/" @echo " smoke the full poll pipeline, end to end, offline" @echo " acceptance-scorer scorer's offline acceptance loop" @echo " acceptance-quiz-only quiz-only compose bring-up" @echo " acceptance-classic-only classic-only compose bring-up" @echo " acceptance-ai-only ai-only compose bring-up" @echo " dev-up local dev-stack up (throwaway secrets, seeded demo board)" @echo " dev-down local dev-stack down" @echo "" @echo "Not wrapped here: the app's live Lua/upstash suite (needs a real" @echo "redis + srh — see AGENTS.md) and the two real-target scoring gates," @echo "./scripts/acceptance-target.sh and ./scripts/acceptance-patched.sh" @echo "(Docker, pulls upstream images, minutes per row — see AGENTS.md)." registries: node scripts/check-module-registries.mjs test-sync: cd sync && npm ci && npm test test-scorer: (cd scorer && npm ci && npm test) && (cd scorer && node tools/vacuous-sweep.mjs) && ./scripts/acceptance-scorer.sh lint-app: cd apps/web && corepack enable && corepack pnpm install --frozen-lockfile && corepack pnpm lint test-app: cd apps/web && corepack enable && corepack pnpm install --frozen-lockfile && corepack pnpm lint && corepack pnpm test lint-shell: shellcheck scripts/*.sh scripts/lib/*.sh scripts/dev-stack setup/*.sh scorer/entrypoint.sh sync/docker-entrypoint.sh \ deploy/fly/deploy.sh deploy/fly/render-compose.sh deploy/aws-terraform/deploy.sh shellcheck -s sh --exclude=SC2034 scorer/entrypoints/*.sh test-shell: bats setup/test/ && bats deploy/fly/test/ && bats deploy/aws-terraform/test/ && bats scripts/test/ smoke: ./scripts/smoke.sh acceptance-scorer: ./scripts/acceptance-scorer.sh acceptance-quiz-only: ./scripts/acceptance-quiz-only.sh acceptance-classic-only: ./scripts/acceptance-classic-only.sh acceptance-ai-only: ./scripts/acceptance-ai-only.sh dev-up: ./scripts/dev-stack up dev-down: ./scripts/dev-stack down