Scrum4Me/docs/plans/docs-restructure-ai-lookup.md

23 KiB
Raw Blame History

title status audience language last_updated related
Docs-restructuur — geoptimaliseerd voor AI-lookup proposal maintainer, ai-agent nl 2026-05-02
CLAUDE.md
AGENTS.md
README.md
docs/decisions/agent-instructions-history.md

Plan — Docs-restructuur voor AI-lookup

Doel van dit plan: de huidige documentatie- en instructielaag van Scrum4Me omzetten naar een structuur die een AI-agent (Claude Code, Codex, een MCP-worker) in zo min mogelijk tokens en tool-calls het juiste document laat vinden, lezen en toepassen — zonder dat de mens-leesbaarheid eronder lijdt.

Dit is een proposal, niet een afgerond ontwerp. Lees het, markeer wat je niet wil, en ik werk het uit naar een uitvoerbaar migratieplan met file-per-file diff.


1. Waarom dit plan

Een AI-agent doet voor élke beslissing typisch dit:

  1. Leest CLAUDE.md (of AGENTS.md) volledig in context.
  2. Scant docs/ met ls/grep/glob om relevante bestanden te kiezen.
  3. Leest één of meerdere docs volledig — vaak meer dan nodig, omdat doc-grenzen vaag zijn.
  4. Vindt cross-refs (zie docs/X#Y) en herhaalt stap 3.

Elke stap kost tokens en latency. Als de bestandsboom, naamgeving of inhoud onduidelijk is, leest de agent te veel of het verkeerde — en maakt vervolgens beslissingen op verouderde of irrelevante informatie.

Concrete kosten in deze repo (gemeten 2026-05-02):

Plek Bestanden Regels totaal Grootste bestand
Root (CLAUDE.md, README.md, AGENTS.md, Brainstorm.md) 4 679 CLAUDE.md (340)
docs/ (root, exclusief subdirs) 13 5.873 architecture.md (1.247)
docs/patterns/ 11 1.013 dialog.md (387)
docs/plans/ 8 2.121 M10-qr-pairing-login.md (885)
.Plans/ (parallelle plan-historie) 3 ~600
Totaal 39 ~10.700

Bij elke turn die met CLAUDE.md start, wordt minimaal 340 regels orientation in de context geladen — vóór er één regel code is gelezen. De agent kan vervolgens uit ~9.000 regels documentatie het juiste fragment moeten kiezen op basis van bestandsnamen alleen, want er is geen front-matter en geen index.


2. Wat ik aantrof — review per laag

2.1 Root-niveau orientation

Bestand Wat het doet vandaag Probleem
CLAUDE.md (340 r) Doel, doc-index, twee start-tracks, tech stack, UI-conventies, patroon-index, env vars, conventies, branch/commit-strategie, scrum-terminologie, MCP, deployment, DoD Té breed: oriëntatie + harde regels + referentie-tabellen + procedures. Alles wordt elke turn geladen.
AGENTS.md (38 r) Codex-variant van CLAUDE.md Duplicatie: 80% overlapt met CLAUDE.md (access-control, doc-sync, verificatie). Twee waarheden die uit elkaar kunnen lopen.
README.md (285 r) Portfolio-pitch, stack, setup, routes, dev-flow Mensgericht (recruiters, GitHub-bezoekers). Goed dat het bestaat — niet aanraken.
Brainstorm.md (16 r) Stukjes Prisma-schema, JSON-snippet en HTML-DOM-dump zonder context Dood bestand, weghalen of verplaatsen naar docs/scratch/.

2.2 docs/ root

Bestand Regels Waar het thuishoort
architecture.md 1.247 docs/architecture/ — splitsen (zie §4)
functional.md 650 docs/specs/functional.md
backlog.md 751 docs/backlog/index.md
product-backlog.md 454 docs/backlog/product-historical.md (referentie, zie noot in CLAUDE.md)
personas.md 138 docs/specs/personas.md
styling.md 670 docs/design/styling.md
md3-color-scheme.md 941 docs/design/styling.md (overlapt deels met styling.md — kandidaat voor merge)
test-plan.md 454 docs/qa/api-test-plan.md
pbi-dialog.md 120 docs/specs/dialogs/pbi.md
story-dialog.md 163 docs/specs/dialogs/story.md
task-dialog.md 127 docs/specs/dialogs/task.md
solo-paneel-spec.md 771 docs/specs/solo-panel.md
api.md 520 docs/api/rest-contract.md
decisions/agent-instructions-history.md 173 docs/decisions/agent-instructions.md (ADR-stijl)
erd.svg, icons.html docs/assets/

Patroon dat opvalt: alles met prefix `` — dat prefix is overbodig, je staat al in docs/ van de Scrum4Me-repo. Verwijderen scheelt visuele ruis bij ls.

Inconsistente capitalization: één bestand md3-color-scheme.md (snake + UpperCamel), de rest kebab. Eén bestand api.md (UPPER), de rest lowercase.

2.3 docs/patterns/

11 patronen, elk 25390 regels. Goed als concept, maar:

  • test.md bevat letterlijk het woord "test" — junkfile, weghalen.
  • Geen front-matter; agent moet titel + intro lezen om te weten of het patroon van toepassing is.
  • Naamgeving inconsistent: iron-session.md, qr-login.md, claude-question-channel.md — sommige domeinspecifiek, andere generiek. Geen prefix die laat zien of het een rule (verplicht), recipe (voorbeeldcode) of explainer is.

2.4 docs/plans/

  • 8 plans. Eén heeft een filename met spaties en em-dash: tweede-claude-agent-planning.md — breekt grep/glob/git-workflows op sommige shells, en is moeilijk te linken. Omnoemen naar tweede-claude-agent-planning.md.
  • ST-1109-pbi-status.md verwijst naar ~/.claude/plans/welke-rioriteiten-heeft-een-mighty-shell.md (ook nog typo "rioriteiten") — externe locatie die niet in de repo zit en die de agent niet kan lezen.
  • MEMORY.md wordt op meerdere plaatsen genoemd maar bestaat niet in de repo.

2.5 .Plans/ (root)

3 historische planfiles uit april 2026, parallel aan docs/plans/. Twee waarheden voor "waar staan plannen". Voorstel: archiveren naar docs/plans/archive/ of weghalen.

  • CLAUDE.md verwijst naar docs/architecture.md#demo-user-policy — die anchor bestaat (regel 1068 ## Demo-user policy (ST-1110)), dus dit is OK; maar er bestaat geen lint die garandeert dat dit zo blijft als de header verandert.
  • ST-1109-pbi-status.md verwijst naar ~/.claude/plans/welke-rioriteiten-heeft-een-mighty-shell.md — externe locatie buiten de repo, plus typo "rioriteiten". Een agent kan die niet lezen.
  • README.md verwijst niet naar CLAUDE.md/AGENTS.md (mensbezoekers vinden de agent-instructie laag niet).
  • Geen enkel doc heeft een "Zie ook"-blok aan de onderkant. Cross-navigatie tussen patroon ↔ spec ↔ plan moet de agent zelf reconstrueren.

2.7 Wat er níet is (en zou moeten)

  • Geen index/manifest. Een agent die glob "docs/**/*.md" doet, krijgt 30+ paden zonder context.
  • Geen front-matter. Geen status (draft/active/deprecated), audience, last-updated, related.
  • Geen ADR-laag. Beslissingen zoals "waarom geen Radix maar @base-ui/react", "waarom float sort_order", "waarom one-branch-per-milestone" zitten verstrooid in CLAUDE.md, README en losse plans. Een docs/decisions/-folder met ADR-format zou ze vindbaar maken.
  • Geen glossary. Domeintermen (PBI, Story, Sprint, Solo, Todo, demo-token) zijn alleen impliciet gedefinieerd in de functional spec.
  • Geen "lookup-hints" in de doc-index. CLAUDE.md zegt waarvoor je een doc gebruikt, niet wanneer je het NIET hoeft te lezen.

3. Doelen voor de nieuwe structuur

In volgorde van belangrijkheid:

  1. Eén goedkope orientation-laag. Een agent moet ≤150 regels lezen om te weten waar hij verder moet kijken.
  2. Voorspelbare paden. docs/<topic>/<entity-or-feature>.md zonder uitzonderingen.
  3. Machine-leesbare metadata. YAML-front-matter op élk doc met minimaal status, audience, last_updated, related.
  4. Per-doc lookup-hint. Eén zin "Lees dit als …" bovenaan; één zin "Niet hiervoor lezen: …" om verkeerd ophalen te voorkomen.
  5. Splitsing van regels (verplicht) en uitleg (referentie). Regels in een korte rule-doc; voorbeeldcode en rationale in een aparte recipe/explainer.
  6. Eén bron-van-waarheid per onderwerp. Geen Codex-vs-Claude-duplicatie; AGENTS.md wordt een 10-regelige verwijzing naar CLAUDE.md.

4. Voorgestelde doelstructuur

/                                         (repo-root)
├── README.md                             (mens, portfolio — ongewijzigd)
├── CLAUDE.md                             (agent-orientation, ≤150 regels — zie §5)
├── AGENTS.md                             (10 regels: "alles in CLAUDE.md geldt ook voor jou")
├── docs/
│   ├── INDEX.md                          (NIEUW — manifest met front-matter van alle docs)
│   ├── glossary.md                       (NIEUW — PBI, Story, Sprint, demo-token, …)
│   │
│   ├── architecture/
│   │   ├── overview.md                   (uit huidige architecture.md §1§3)
│   │   ├── data-model.md                 (uit §Datamodel + §Prisma Schema)
│   │   ├── auth-and-sessions.md          (uit §Authenticatieflow)
│   │   ├── qr-pairing.md                 (uit §QR-pairing flow)
│   │   ├── claude-question-channel.md    (uit §Vraag-antwoord-kanaal)
│   │   └── project-structure.md          (uit §Projectstructuur)
│   │
│   ├── specs/
│   │   ├── functional.md                 (huidige functional.md)
│   │   ├── personas.md
│   │   ├── solo-panel.md
│   │   └── dialogs/
│   │       ├── pbi.md
│   │       ├── story.md
│   │       └── task.md
│   │
│   ├── design/
│   │   ├── styling.md                    (samengevoegd uit styling + MD3-color)
│   │   └── color-tokens.md               (alleen het token-overzicht)
│   │
│   ├── api/
│   │   ├── rest-contract.md              (huidige api.md)
│   │   └── error-codes.md                (afgesplitst — vandaag verspreid)
│   │
│   ├── patterns/                         (RULES — kort en bindend)
│   │   ├── 00-conventions.md             (server-action, prisma-client, route-handler — kort)
│   │   ├── dialog.md
│   │   ├── sort-order.md
│   │   ├── zustand-optimistic.md
│   │   ├── iron-session.md
│   │   ├── proxy.md                      (was middleware.md — nieuwe naam)
│   │   ├── qr-pairing.md
│   │   └── claude-question-channel.md
│   │
│   ├── recipes/                          (NIEUW — uitgewerkte voorbeeldcode bij rules)
│   │   └── …                             (één recipe per pattern dat code-snippets had)
│   │
│   ├── runbooks/                         (NIEUW — operationele procedures)
│   │   ├── deploy-vercel.md              (uit CLAUDE.md §Deployment)
│   │   ├── env-vars.md                   (uit CLAUDE.md §Env vars + .env.example)
│   │   └── local-dev.md                  (huidige README §setup, geëxtraheerd)
│   │
│   ├── decisions/                        (NIEUW — ADR-stijl)
│   │   ├── 0001-base-ui-over-radix.md
│   │   ├── 0002-float-sort-order.md
│   │   ├── 0003-one-branch-per-milestone.md
│   │   ├── 0004-status-enum-mapping.md
│   │   └── 0005-agent-instructions.md    (was decisions/agent-instructions-history.md)
│   │
│   ├── backlog/
│   │   ├── index.md                      (huidige backlog.md)
│   │   └── product-historical.md         (huidige product-backlog.md)
│   │
│   ├── plans/
│   │   ├── M9-active-product-backlog.md
│   │   ├── M10-qr-pairing-login.md
│   │   ├── M11-claude-questions.md
│   │   ├── ST-1109-pbi-status.md
│   │   ├── ST-1110-demo-readonly.md
│   │   ├── ST-1111-claude-job-trigger.md
│   │   ├── ST-1114-copilot-reviews.md
│   │   ├── tweede-claude-agent-planning.md   (rename — geen spaties/em-dash)
│   │   └── archive/                          (uit `.Plans/` aan repo-root)
│   │       ├── 2026-04-27-claude-md-workflow-update.md
│   │       ├── 2026-04-27-insert-milestone-tool.md
│   │       └── 2026-04-27-m8-realtime-solo.md
│   │
│   ├── qa/
│   │   └── api-test-plan.md
│   │
│   └── assets/
│       ├── erd.svg
│       └── icons.html
│
└── .Plans/                                (WEG — naar docs/plans/archive/)
└── Brainstorm.md                          (WEG — junk, of naar docs/scratch/)
└── docs/patterns/test.md                  (WEG — junk)

Prefix `` overal weg. Je staat in de Scrum4Me-repo. Alle bestandsnamen kebab-case, lowercase. Geen api.md, geen MD3_….


5. CLAUDE.md herontwerp

CLAUDE.md wordt strikt router + harde regels — geen referentie-tabellen, geen voorbeelden, geen rationale.

Voorgestelde nieuwe inhoud (max ~150 regels):

# CLAUDE.md — Scrum4Me

## 1. Wat is Scrum4Me
(2 zinnen — link naar README voor de pitch)

## 2. Eerst lezen, altijd
- docs/INDEX.md — manifest van alle docs
- docs/glossary.md — bij twijfel over een term

## 3. Hoe je werk vindt
Twee tracks (A: MCP, B: manueel) — verkort tot 10 regels.
Detail: docs/runbooks/sprint-flow.md

## 4. Hardstop-regels (nooit overtreden)
- demo-user heeft geen schrijfrechten (3-laagsdekking)
- @base-ui/react, niet Radix
- nooit bg-blue-500, altijd MD3-tokens
- één commit = één verantwoordelijkheid
- één branch per milestone, push pas na user-approval
- denormalized FKs uit DB-parent, niet uit client-input
(elk punt → 1 regel + link naar pattern/decision)

## 6. Stack op één regel per laag
(geen versie-uitleg, link naar docs/architecture/overview.md)

## 7. Snelreferentie patronen
| Wanneer | Lees |
|---|---|
| Server Action schrijven | docs/patterns/server-action.md |
| Drag-and-drop reorder | docs/patterns/sort-order.md |
| …(max 10 rijen)…|

## 8. Verificatie vóór hand-off
`npm run lint && npm test && npm run build`

Alles wat nu in CLAUDE.md §Conventies, §Branch & PR Strategy, §Commit Strategy, §MCP-integratie, §Deployment staat → verhuist naar:

  • docs/runbooks/branch-and-commit.md (regels + voorbeelden samen)
  • docs/runbooks/deploy-vercel.md
  • docs/runbooks/mcp-integration.md
  • docs/decisions/0003-one-branch-per-milestone.md (waarom)

CLAUDE.md houdt in §4 alleen de éénregelige regel + link.

Effect: elke turn 150 r in plaats van 340 r aan orientation-context. De agent leest aanvullende docs alleen wanneer de huidige taak ze raakt.


6. Front-matter spec

Élk markdown-bestand in docs/ (en CLAUDE.md, AGENTS.md) krijgt bovenaan:

---
title: <korte titel>
status: draft | active | deprecated
audience: ai-agent | maintainer | contributor | external
language: nl | en
last_updated: 2026-05-02
applies_to: [feature-of-module-of-milestone-keys]   # optioneel
related:
  - docs/<andere>.md
  - CLAUDE.md
when_to_read: <één zin>
do_not_read_for: <één zin — voorkomt mis-fetch>
---

Waarom dit voor AI-lookup helpt:

  • status: deprecated → agent slaat het over zonder te lezen.
  • applies_to: [M10, qr-login] → grep op milestone-key → directe hit.
  • when_to_read / do_not_read_for → agent kan beslissen op de eerste 20 regels of dit doc nuttig is, zonder de hele 800-regelige spec in te lezen.
  • related → expliciete graaf in plaats van impliciete cross-refs.

docs/INDEX.md wordt automatisch gegenereerd uit deze front-matter (klein script in scripts/build-docs-index.ts — onderdeel van het migratieplan).


7. AGENTS.md herontwerp

# AGENTS.md

This repo's source of truth for agent instructions is **CLAUDE.md**.
Codex, Cursor, Continue, and any other coding agent: read CLAUDE.md first.
The same product, security, and verification rules apply regardless of which agent runs.

Repo-specific addendum (only if your agent does NOT speak markdown well):
- The "This is NOT the Next.js you know" note also applies to you.
- Run `npm run lint && npm test && npm run build` before handing work back.

Geen duplicatie van access-control of doc-sync — die regels staan exclusief in CLAUDE.md / docs/patterns/ / docs/decisions/.


8. Migratie in fases

Elke fase is een eigen branch + PR. Geen big-bang. Volgorde gekozen zodat agents tijdens de migratie nog steeds werken.

Fase 1 — Junk weg, front-matter erbij (laag risico)

  • docs/patterns/test.md weghalen.
  • Brainstorm.md weghalen of docs/scratch/brainstorm-2026-05.md.
  • .Plans/docs/plans/archive/.
  • Front-matter toevoegen aan élk bestaand bestand (zonder verplaatsen). Status default = active.
  • docs/INDEX.md genereren via script.

Voor commit: alle bestaande paden werken nog. Geen risico voor lopende sessies of CI.

Fase 2 — Naamgeving normaliseren

  • `` prefix overal weg via git mv (1 commit per groep — backlog/specs/personas/styling/dialogs).
  • api.mdapi/rest-contract.md.
  • md3-color-scheme.mddesign/md3-color-scheme.md.
  • tweede-claude-agent-planning.mdplans/tweede-claude-agent-planning.md.
  • middleware.mdproxy.md (volgt Next.js 16 hernoeming).
  • Per git mv: in dezelfde commit zoek-en-vervang alle interne links + CLAUDE.md doc-index.

Fase 3 — Folder-taxonomie

  • Maak docs/architecture/, docs/specs/, docs/design/, docs/api/, docs/runbooks/, docs/decisions/, docs/backlog/, docs/qa/, docs/assets/.
  • Verplaats per groep met git mv. Eén commit per groep.
  • Update CLAUDE.md doc-index per stap.

Fase 4 — Splits monolithische docs

  • architecture.md (1.247 r) opdelen in 6 docs onder docs/architecture/.
  • Originele file wordt 20 regels: titel + "Dit document is opgesplitst — zie:" + lijst met nieuwe paden.
  • Idem voor solo-paneel-spec.md als dat onderdelen heeft die naar specs én patterns kunnen.

Fase 5 — CLAUDE.md verkorten + AGENTS.md verkorten

  • Knip CLAUDE.md naar het skelet uit §5.
  • Verplaats verwijderde secties naar docs/runbooks/ en docs/decisions/.
  • AGENTS.md vervangen door de versie uit §7.

Fase 6 — ADR-backfill

  • Schrijf ADR's voor de impliciete beslissingen (58 stuks):
    1. base-ui-over-radix
    2. float-sort-order
    3. one-branch-per-milestone
    4. status-enum-mapping (db UPPER ↔ api lower)
    5. iron-session-over-nextauth
    6. demo-user-policy (3-laags)
    7. claude-question-channel-design
    8. agent-instructions-policy (was audit)

Fase 7 — Glossary + index-script

  • docs/glossary.md schrijven (PBI, Story, Sprint, Solo, Todo, demo-token, MCP-job, …).
  • scripts/build-docs-index.ts — genereert docs/INDEX.md uit alle front-matters.
  • Husky pre-commit hook: index regenereren bij wijziging van front-matter.
  • Klein script dat alle docs/...md links volgt en rapporteert dode links én anchor-misses.
  • Toevoegen aan npm run lint of npm test.

9. Wat dit oplevert (meetbaar)

Metric Vandaag Doel
Regels die elke agent-turn standaard in context komen (CLAUDE.md) 340 ≤150
Doc-bestanden in docs/ root 13 2 (INDEX.md, glossary.md)
Doc-bestanden zonder front-matter 36 0
Junk-bestanden 3 (test.md, Brainstorm.md, .Plans/) 0
Bestandsnamen met spaties of niet-ASCII 1 0
Filename-prefixen die geen informatie toevoegen (``) 8 0
Documenten >800 regels 4 0 (na splitsing)
Dode interne links onbekend 0 (na lint)

10. Wat dit níet oplevert (eerlijk)

  • Codequaliteit verbetert niet automatisch.
  • Patronen die nu fout zijn worden niet gefixt — alleen vindbaar gemaakt.
  • ADR's invullen kost denkwerk dat ik niet uit jouw hoofd kan halen — fase 6 vereist jouw input.
  • AI-agents die geen front-matter parseren (oudere modellen, sommige codex-flavors) profiteren minder. Voor de docs/INDEX.md is het wel platte tekst — die helpt iedereen.

11. Open beslissingen — status

# Vraag Besluit (2026-05-02)
1 Taal van docs, front-matter, INDEX.md English — alle nieuwe en herschreven docs in het Engels. Code comments blijven Engels (al zo). UI-strings blijven Nederlands.
2 MD3-color + styling samenvoegen Eén docdocs/design/styling.md.
3 solo-paneel-spec.md Samenvoegen — opgaan in docs/specs/functional.md (eigen sectie).
4 .Plans/ archief Bewaren — verplaatsen naar docs/plans/archive/.
5 ADR-template (Nygard vs MADR) In discussie — referentielink gedeeld, ik heb die niet kunnen openen (claude.ai share staat niet op de fetch-allowlist). Default voor fase 6: Nygard, klein en passend bij solo + kleine repo. Vervangbaar zodra besluit valt.
6 Index-generator Node-script in scripts/build-docs-index.ts.

12. Implicaties van besluit 1 — taalwissel

De keuze "alle docs Engels" is groter dan hij lijkt. Drie scope-niveaus:

Niveau A — going-forward only (kleinste scope):

  • Élk nieuw doc en élke nieuw aangemaakte front-matter in het Engels.
  • Dit plan, INDEX.md, glossary.md, runbooks/, decisions/ — allemaal Engels vanaf creatie.
  • Bestaande Nederlandse docs blijven staan tot ze om een andere reden geraakt worden.
  • Risico: mengvormen in docs/ — een agent vindt ene helft Engels, andere helft Nederlands. Grep op een Engels keyword mist Nederlandse hits.

Niveau B — opportunistic (middel):

  • Niveau A + élke doc die we aanraken voor de restructuur (renames, splitsingen, front-matter toevoegen) wordt meteen vertaald.
  • Aan het eind van fase 5 zijn architecture/, specs/, design/, api/, patterns/, runbooks/, decisions/ allemaal Engels.
  • Backlog, plans en QA blijven Nederlands tenzij ze ge-edit worden.

Niveau C — full sweep:

  • Élke .md in de repo vertalen, ongeacht of de restructuur hem aanraakt.
  • Aanzienlijk werk: ~10.700 regels prose. Schatting: 1-2 dagen agent-tijd of een batch-translate-pass met review.

Voorstel: niveau B. Sluit aan bij de migratiefases zonder een aparte translation-sprint te hoeven plannen. Niveau C kan later als één losse PR.

13. ADR-template — voorlopige keuze

Tot besluit valt op vraag 5: ik gebruik Nygard-Light als template voor fase 6. Eén ADR is één bestand met:

---
title: <decision title>
adr_number: 0001
status: proposed | accepted | superseded by 00xx
date: 2026-05-02
---

# 0001. <decision title>

## Context
Why this decision matters now. What forces are in play.

## Decision
The choice we make. One paragraph, declarative.

## Consequences
What becomes easier, what becomes harder, what we accept.

Compact, grep-vriendelijk, en agent-leesbaar binnen ~30 regels. Als MADR de uitkomst wordt, swappen we het template voor fase 6 — alle eerdere fases zijn template-onafhankelijk.

14. Volgende stap

Met deze besluiten kan ik fase 1 omzetten naar een concrete uitvoeringslijst:

  • exacte rm / git mv / mkdir commando's
  • de front-matter-template in het Engels
  • één npm run of bash-snippet die de hele fase in één commit zet
  • bijbehorende update-diff voor CLAUDE.md (alleen de doc-index-tabel)

Zeg het woord en ik produceer dat als docs/plans/docs-restructure-phase-1.md.


Verificatie van dit plan

  • Bestandsnamen en regelaantallen gecheckt tegen find docs -type f + wc -l op disk (2026-05-02).
  • Cross-refs in CLAUDE.md gegrep't en op bestaan getoetst.
  • Geen voorgestelde nieuwe paden conflicteren met bestaande.
  • Open beslissingen (§11) afgehandeld door maintainer (2026-05-02) — vraag 5 voorlopig op default.
  • ADR-template definitief vastgesteld (vraag 5).
  • Migratie fase 1 omgezet naar uitvoerbaar PR-plan (docs/plans/docs-restructure-phase-1.md).