chore: typecheck-script + dependency-cascade-grep in Make-Plan-prompt (#130)
Twee preventieve aanpassingen na de mislukte ST-2wj8mw8q-run, waarbij een
schema-edit (Todo-model verwijderd) groen door lint en vitest kwam maar
op `next build` brak vanwege 16 ongelinkte `prisma.todo`-references in 4
bestanden.
package.json:
- "typecheck": "tsc --noEmit" — losse script voor snelle full-project
type-check, los van eslint en next build.
- "verify": "npm run lint && npm run typecheck && npm test" — umbrella
voor agents/CI om voor de eind-build te valideren.
lib/idea-prompts/make-plan.md:
- Werkwijze-stap 3 toegevoegd: "Bij removal/refactor: doe een
dependency-cascade-grep". Voor de strikte format-sectie staat nu een
verplicht protocol:
- Removal van Prisma-model: grep `prisma.x` in actions/app/components/lib
- Removal van component/utility/type: grep paden + exports
- Hernoemen: per geraakt bestand een edit-taak
- Veld-wijziging in create/update: grep op die call-sites
- Eind-taak: `npm run typecheck` als sanity-check los van
lint/test/build.
- Toelichting waarom: eslint en vitest+esbuild slaan diepe type-check
over; next build is de eerste step die alles type-checkt en zit aan
het eind van de pijp.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
3a61a8ddc1
commit
dc8557308b
2 changed files with 42 additions and 3 deletions
|
|
@ -28,9 +28,46 @@ PBI + stories + taken via `materializeIdeaPlanAction`.
|
||||||
|
|
||||||
1. Lees `idea.grill_md` volledig.
|
1. Lees `idea.grill_md` volledig.
|
||||||
2. Verken de repo voor patronen, bestaande modules, en `docs/`-structuur.
|
2. Verken de repo voor patronen, bestaande modules, en `docs/`-structuur.
|
||||||
3. Bouw het plan op in de **strikte format** hieronder.
|
3. **Bij removal/refactor: doe een dependency-cascade-grep** (zie volgende
|
||||||
4. Roep `mcp__scrum4me__update_idea_plan_md({ idea_id, markdown })`.
|
sectie). Voeg per geraakte file een taak toe vóór de schema/code-edit zelf.
|
||||||
5. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`.
|
4. Bouw het plan op in de **strikte format** hieronder.
|
||||||
|
5. Roep `mcp__scrum4me__update_idea_plan_md({ idea_id, markdown })`.
|
||||||
|
6. Roep `mcp__scrum4me__update_job_status({ job_id, status: 'done', summary })`.
|
||||||
|
|
||||||
|
## Dependency-cascade-grep (verplicht bij removal/refactor)
|
||||||
|
|
||||||
|
Wanneer het idee een **bestaand symbool, model, route of component
|
||||||
|
verwijdert of hernoemt**, MOET je éérst de consumers in kaart brengen voordat
|
||||||
|
je het plan vaststelt. Anders breekt `next build` op type-errors die `lint`
|
||||||
|
en `vitest run` niet pakken (zie hieronder waarom).
|
||||||
|
|
||||||
|
**Concreet:**
|
||||||
|
|
||||||
|
- Verwijder je een Prisma-model `Foo`?
|
||||||
|
```bash
|
||||||
|
grep -rn "prisma\.foo\b\|prisma\.foos\b" actions/ app/ components/ lib/ \
|
||||||
|
--include="*.ts" --include="*.tsx"
|
||||||
|
```
|
||||||
|
Voeg per geraakt bestand één of meer taken toe ("schoon `actions/foos.ts`
|
||||||
|
op", "verwijder `app/(app)/foos/`-route", "haal Foo-tegel uit
|
||||||
|
`app/page.tsx`-feature-grid", etc.) **vóór** de schema-edit-taak.
|
||||||
|
|
||||||
|
- Verwijder je een component / utility / type? Idem: grep op de
|
||||||
|
bestandspaden en exports en plan per consumer een taak.
|
||||||
|
|
||||||
|
- Hernoem je een model/route/component? Plan per geraakt bestand een edit-taak.
|
||||||
|
|
||||||
|
- Wijzig je een `prisma.x.create`-veld (verplicht ↔ optioneel)? Grep op
|
||||||
|
`prisma.x.create` en `prisma.x.update` voor type-mismatches.
|
||||||
|
|
||||||
|
- Voeg óók een **eind-taak** toe: `npm run typecheck` (= `tsc --noEmit`)
|
||||||
|
als sanity-check, los van `lint && test && build`. Type-errors verschijnen
|
||||||
|
daar het eerst en zijn 10× sneller dan een full `next build`.
|
||||||
|
|
||||||
|
**Waarom zo strikt?** `eslint` doet geen diepe type-check. `vitest` met
|
||||||
|
esbuild-transpile slaat type-errors over. `next build` is de eerste step die
|
||||||
|
álles type-checkt — en die zit aan het einde van de pijp. Een gemist
|
||||||
|
consumer-bestand wordt pas zichtbaar bij verify, niet bij implementation.
|
||||||
|
|
||||||
## STEL GEEN VRAGEN
|
## STEL GEEN VRAGEN
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@
|
||||||
"build": "next build",
|
"build": "next build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "eslint",
|
"lint": "eslint",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
|
"verify": "npm run lint && npm run typecheck && npm test",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"prepare": "husky",
|
"prepare": "husky",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue