Pin lint + add the verify gate (throwaway-local, no CI) - #2
Merged
Conversation
Closes the same "named but unpinned" gap for lint that we closed for the test runner, and gives the build-verify loop one deterministic command. - AGENTS.md Stack notes: pin ESLint + typescript-eslint + eslint-plugin-react-hooks on `npm run lint`. - AGENTS.md How we work: `npm run verify` (typecheck + lint + test) is the single gate command, run at every task gate; document that the demo uses no CI or git hook because the build is a throwaway local project, so verify-at-gate is the enforcement. - specs/tasks.md Verify commands: add the verify aggregate, reflect the pinned lint, and fix the stale src/generated/services/* path to match the SDK-agnostic wording already in schema §9. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the repo’s build/quality “harness” documentation to make a single, deterministic local gate command (npm run verify) the enforcement mechanism (explicitly replacing CI/git hooks for the throwaway demo build) and to document pinned lint tooling.
Changes:
- Document
npm run verifyas the single gate command (typecheck + lint + test) in bothAGENTS.mdandspecs/tasks.md. - Clarify lint expectations to include ESLint + TypeScript ESLint + React Hooks rules.
- Update verify-gate guidance to reflect the “no CI / no git hook” throwaway-local demo constraint.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
specs/tasks.md |
Documents the new “verify” gate command and updates the lint/test gate descriptions. |
AGENTS.md |
Updates “How we work” gates to use npm run verify and adds stack-note guidance for lint pinning. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+32
to
+35
| - **Verify (the gate):** `npm run verify` chains typecheck + lint + test. This is the one command run | ||
| at each task gate, so the check is mechanical rather than remembered. There is no CI or git hook: | ||
| the demo build is a throwaway local project (no GitHub repo on the day), so `verify` at each gate is | ||
| the enforcement. |
Comment on lines
+37
to
+38
| - **Lint:** `npm run lint` returns clean (ESLint + typescript-eslint + react-hooks, AGENTS.md Stack | ||
| notes). |
Comment on lines
+70
to
+73
| - **The gate is one command.** `npm run verify` chains typecheck + lint + test so the check is | ||
| mechanical, not remembered. Run it at every task gate; `npm run build` runs once before deploy. | ||
| There is no CI or git hook: the demo build is a throwaway local project (no GitHub repo on the day), | ||
| so `verify` at each gate is the enforcement. |
Comment on lines
+87
to
+89
| - Lint is a named gate, but the template's ESLint setup is minimal or absent. Pin **ESLint + | ||
| typescript-eslint + eslint-plugin-react-hooks** on `npm run lint`; the react-hooks rule catches a | ||
| class of bug a fast model will produce. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows the Google whitepapers' "deterministic gate, enforced by the harness, not the agent's goodwill" principle (Day 1 build-verify loop; Day 5 quality gates), adapted to a throwaway local demo with no GitHub repo on the day.
What changed (all spec-level, no app scaffolding)
AGENTS.mdStack notes — pin ESLint + typescript-eslint + eslint-plugin-react-hooks onnpm run lint. Lint was already a named gate but nothing pinned the linter, the same gap we just closed for the test runner.AGENTS.mdHow we work —npm run verify(typecheck + lint + test) is now the single gate command, run at every task gate. Documents that the demo intentionally uses no CI and no git hook because the build is a throwaway local project, so verify-at-gate is the enforcement.specs/tasks.mdVerify commands — add theverifyaggregate, reflect the pinned lint, and fix a stalesrc/generated/services/*path to match the SDK-agnostic wording already in schema §9.Decisions captured here
verifyat each gate gives the same mechanical check without the risk.Out of scope by design (Q&A backup, not gaps): observability/traces/cost metering and LLM-as-judge evaluation, both of which exist for generated, non-deterministic agent output. This app has no generative component, so tests are sufficient (the tests-vs-evals split from Day 5).
🤖 Generated with Claude Code