* docs(cleanup): archief verouderde plannen, backlog en root-duplicaten
- 6 plans naar docs/old/plans/ (PBI-11/75/78, user-settings-store, Local github setup, lees-de-readme — laatste was verkeerde repo)
- docs/backlog/ naar docs/old/backlog/ (pre-MCP statische registry; live werk loopt via Scrum4Me-MCP)
- 6 root-level duplicaten naar docs/old/ (functional, {pbi,story,task}-dialog, product-backlog, backlog)
- 2 landing plans (niet uitgevoerd) krijgen archived: true frontmatter — blijven op plek maar uit INDEX
- scripts/generate-docs-index.mjs: skip docs/old/** + skip archived: true
- CLAUDE.md: rijen docs/backlog/, docs/plans/<key>-*.md, docs/manual/ weg; Track B-sectie verwijderd
- README.md / CHANGELOG.md / docs/plans/v1-readiness.md: link-fixes naar nieuwe locaties
Verify groen (lint + typecheck + 718 tests). docs/INDEX.md geregenereerd.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs(cleanup): registreer handmatige verplaatsingen en fix referenties
- 4 plans verplaatst naar docs/old/plans/ (M10-qr-pairing-login, auto-pr-deploy-sync, docs-restructure-ai-lookup, v1-readiness)
- 3 archive-plans verplaatst naar docs/old/plans/ (archive-map nu leeg)
- ST-1114-copilot-reviews + 3 research-docs naar nieuwe docs/Ideas/ map
- Duplicaat docs/old/2026-04-27-m8-realtime-solo.md verwijderd (origineel zit in docs/old/plans/)
- Link-fixes naar nieuwe locaties:
- CHANGELOG.md → docs/old/plans/v1-readiness.md
- docs/runbooks/deploy-control.md → docs/old/plans/auto-pr-deploy-sync.md (2x)
- docs/runbooks/worker-idempotency.md → docs/old/plans/auto-pr-deploy-sync.md
- docs/plans/docs-restructure-pbi-spec.md → docs/old/plans/docs-restructure-ai-lookup.md (4x text + 2x href)
- docs/INDEX.md geregenereerd (96 docs, was 100)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.2 KiB
5.2 KiB
| title | status | audience | language | last_updated | applies_to | ||
|---|---|---|---|---|---|---|---|
| Herbruikbaar scripts/insert-milestone.ts | done |
|
nl | 2026-05-03 |
Plan: herbruikbaar scripts/insert-milestone.ts
Doel
Eén commando dat een specifieke milestone (PBI + stories + tasks) uit de backlog leest en idempotent toevoegt aan de DB, zónder bestaande data te raken. Voor M8 nu, en voor M9..M∞ later.
Bron-keuze: backlog ipv plan-bestand
Twee bronnen denkbaar:
.Plans/<datum>-<slug>.md— freeform plan-tekst, niet gestructureerd, niet gecommitdocs/backlog/index.md— al strict gestructureerd, gecommit, single source of truth voor alle bestaande seed-pipelines
Voorstel: het script leest de backlog. Workflow blijft natuurlijk:
- Plan schrijven naar
.Plans/<naam>.md(lokaal, draft) - Milestone-sectie + stories formaliseren in
docs/backlog/index.md(PR) - Na merge:
npm run db:insert-milestone -- M8 [--product SCRUM4ME]
Eén canonical bron, geen ambiguïteit, en de bestaande parser doet 90% van het werk al.
Wijzigingen
1. prisma/seed-data/parse-backlog.ts — tolerant maken
Huidige parser kent alleen M0..M6 in MILESTONE_PRIORITY/_GOAL/_SPRINT_STATUS + asserts ≥8 milestones / ≥60 stories. M7 en M8 worden nu stilletjes overgeslagen.
Concrete edits:
- Voeg
M7enM8toe aan de drie maps (M7: priority 4, sprint COMPLETED, goal "MCP-server voor Claude Code"; M8: priority 4, sprint COMPLETED, goal "Realtime updates voor Solo Paneel") - Voor onbekende sleutels: fallback naar
priority: 4,sprint_status: 'COMPLETED',goal: <header-title>. Dat maakt M9..M∞ vanzelf bruikbaar zonder code-wijziging - Verwijder de strikte filter
KNOWN_KEYS.includes(...)of verleg naar een "alle-M[\d.]+ headers" check - Voeg optionele
loadBacklog(repoRoot, { strict?: boolean })toe.strict: true(default) behoudt de bestaande "≥8 milestones, ≥60 stories" asserts (zodat de seed niet stilletjes anders gedraagt). Insert-milestone roept metstrict: false
2. scripts/insert-milestone.ts (nieuw, ~90 regels)
Usage: tsx scripts/insert-milestone.ts <milestone-key> [--product <code>] [--dry-run]
Default product code: SCRUM4ME
Logica:
- Parse args; valideer dat milestone-key matcht
^M[\d.]+$ loadBacklog(repoRoot, { strict: false })- Zoek milestone op
key; faal helder met "milestone not found in docs/backlog/index.md" als ie er niet in staat - Lookup product via
code(defaultSCRUM4ME); faal als niet gevonden - Upsert PBI:
where: { product_id_code: { product_id, code: milestone.key } }- sort_order =
(max(sort_order) van bestaande PBIs in product) + 1als nieuw, anders ongemoeid
- Voor elke story:
- Upsert Story op
(product_id, code = story.ref) - status =
'DONE'of'OPEN'zoals gemarkeerd in markdown - sort_order, priority en pbi_id correct ingesteld
- Upsert Story op
- Voor elke task: bulk insert alleen als de story op dit moment 0 tasks heeft (idempotent — herhaling dupliceert niets)
- Print samenvatting:
M8: PBI created, 6 stories upserted (1 created, 5 unchanged), 6 tasks created --dry-run: alle DB-calls overslaan, alleen wat het zou doen printen
Edge cases:
- Story-code conflict tussen producten: schema heeft
@@unique([product_id, code])op Story dus dit is per-product safe - Tasks zonder
codeveld in DB (klopt — code wordt afgeleid van story.code + index in get_claude_context) - Demo-product: script accepteert
--product DEMOo.i.d. — niet hardcoded SCRUM4ME
3. package.json script
"db:insert-milestone": "tsx scripts/insert-milestone.ts"
4. Verificatie na implementatie
- Dry-run eerst:
npm run db:insert-milestone -- M8 --dry-run - Daarna echt:
npm run db:insert-milestone -- M8 - In Prisma Studio of via SQL: zie M8 PBI, 6 stories, 6 tasks onder SCRUM4ME-product
- Tweede run:
npm run db:insert-milestone -- M8→ "0 created, 6 unchanged" — geen duplicaten - Niet-bestaande key:
npm run db:insert-milestone -- M99→ "milestone M99 not found" - Bestaande seed-flow blijft werken:
prisma db seedmetstrict: truefaalt nog steeds bij format-drift in de backlog
Branch- en PR-strategie
scripts/insert-milestone.ts is orthogonaal aan ST-801. Twee keuzes:
- A. Eigen mini-branch + PR —
tooling/insert-milestone-script, ~95 regels code, makkelijk reviewbaar, gemerged voordat M8 verder gaat. Daarna gebruiken om M8 in DB te zetten en met de implementatie door. - B. Aan ST-801 plakken — voegt scope toe aan een PR die al code ↔ infra-overschrijdend is (migratie + tools).
Voorgestelde keuze: A. De tool is breder bruikbaar dan M8 alleen.
Volgorde
- Switch naar
main(ST-801 blijft op zijn eigen branch staan) - Branch
tooling/insert-milestone-script - Edit
parse-backlog.ts(M7/M8 maps + tolerant + strict-mode option) - Schrijf
scripts/insert-milestone.ts - Voeg
db:insert-milestonetoe aanpackage.json - Lokaal testen met M8 (dry-run + echt + tweede run)
- Commit, push, PR
- Na merge: tool gebruiken om M8 in DB te krijgen, daarna ST-802 oppakken op feat/ST-801-branch
Geschatte size
- ~10 regels parser-edit
- ~95 regels nieuw script
- ~1 regel package.json
- ~25 regels test/usage doc in script-comment
- 1 commit, 1 PR