fix(PBI-100): normaliseer frontmatter voor productDocFrontmatterSchema

Bron-bestanden:
- 5 ADRs (0003/0005/0007/0008/0010): status 'accepted' → 'active'; 4 ervan
  krijgen ontbrekende title.
- 8 architecture/*.md: verwijder 'related:' veld dat als YAML niet
  parseerde (markdown-link-syntax binnen YAML).
- 9 plans: status mapping naar enum-waarden (planned→draft, done→archived,
  proposal→draft, reviewed→active, ready-to-execute→active, in-progress→active);
  2 M8-plans krijgen ontbrekende title/status.

Generator-script:
- Lowercase slug (mixed-case filenames als PBI-100/ST-1109/M8 worden
  lowercase in DB; bron-bestanden blijven leesbaar).
This commit is contained in:
Janpeter Visser 2026-05-16 16:23:31 +02:00
parent 4010e8c296
commit 8557cd1676
25 changed files with 40 additions and 38 deletions

View file

@ -11,13 +11,13 @@ Auto-generated on 2026-05-16 from front-matter and headings.
| 0000 | [ADR-0000: Record architecture decisions](./adr/0000-record-architecture-decisions.md) | active |
| 0001 | [ADR-0001: Use @base-ui/react instead of Radix UI](./adr/0001-base-ui-over-radix.md) | active |
| 0002 | [ADR-0002: Use float sort_order for drag-and-drop ordering](./adr/0002-float-sort-order.md) | active |
| 0003 | [ADR-0003: One branch per milestone, push only after user test](./adr/0003-one-branch-per-milestone.md) | accepted |
| 0003 | [ADR-0003: One branch per milestone, push only after user test](./adr/0003-one-branch-per-milestone.md) | active |
| 0004 | [ADR-0004: DB enums UPPER_SNAKE, API enums lowercase, mapped exclusively via lib/task-status.ts](./adr/0004-status-enum-mapping.md) | active |
| 0005 | [ADR-0005: Use iron-session for authentication instead of NextAuth/Clerk/Supabase Auth](./adr/0005-iron-session-over-nextauth.md) | accepted |
| 0005 | [ADR-0005: Use iron-session for authentication instead of NextAuth/Clerk/Supabase Auth](./adr/0005-iron-session-over-nextauth.md) | active |
| 0006 | [ADR-0006: Demo-user write protection enforced in three layers](./adr/0006-demo-user-three-layer-policy.md) | active |
| 0007 | [ADR-0007: Agent ↔ user question channel via persistent table + LISTEN/NOTIFY](./adr/0007-claude-question-channel-design.md) | accepted |
| 0008 | [ADR-0008: Agent instructions in CLAUDE.md + topical runbooks](./adr/0008-agent-instructions-in-claude-md.md) | accepted |
| 0010 | [ADR-0010: Eén product = één repo; cross-product planning vereist (later) een Initiative-laag](./adr/0010-product-per-repo-cross-product-planning.md) | accepted |
| 0007 | [ADR-0007: Agent ↔ user question channel via persistent table + LISTEN/NOTIFY](./adr/0007-claude-question-channel-design.md) | active |
| 0008 | [ADR-0008: Agent instructions in CLAUDE.md + topical runbooks](./adr/0008-agent-instructions-in-claude-md.md) | active |
| 0010 | [ADR-0010: Eén product = één repo; cross-product planning vereist (later) een Initiative-laag](./adr/0010-product-per-repo-cross-product-planning.md) | active |
| 0011 | [ADR-0011: code is de bindende volgordesleutel voor stories en taken; priority is label](./adr/0011-code-volgordesleutel-stories-taken.md) | active |
## Specifications
@ -41,18 +41,18 @@ Auto-generated on 2026-05-16 from front-matter and headings.
| Title | Status | Updated |
|---|---|---|
| [PBI Bulk-Create Spec — Docs-Restructure for AI-Optimized Lookup](./plans/docs-restructure-pbi-spec.md) | done | 2026-05-03 |
| [PBI Bulk-Create Spec — Docs-Restructure for AI-Optimized Lookup](./plans/docs-restructure-pbi-spec.md) | archived | 2026-05-03 |
| [Plan: model + mode-selectie per ClaudeJob-kind](./plans/job-model-selection.md) | archived | 2026-05-16 |
| [Verbeterplan load/render Product Backlog, Sprint en Solo](./plans/load-render-improvement-plan-2026-05-10.md) | draft | 2026-05-10 |
| [M12 — Idea entity + Grill/Plan Claude jobs](./plans/M12-ideas.md) | planned | — |
| [Bootstrap-wizard voor nieuwe Product-repo](./plans/M8-bootstrap-wizard-upload.md) | | — |
| [Plan v3.5 — Bootstrap-wizard voor nieuwe Product-repo (Scrum4Me feature)](./plans/M8-bootstrap-wizard.md) | reviewed | — |
| [PBI-100 — Seed Scrum4Me-docs naar de DB via Prisma-migratie](./plans/PBI-100-seed-scrum4me-docs.md) | planned | 2026-05-16 |
| [M12 — Idea entity + Grill/Plan Claude jobs](./plans/M12-ideas.md) | draft | — |
| [Bootstrap-wizard voor nieuwe Product-repo](./plans/M8-bootstrap-wizard-upload.md) | draft | — |
| [M8 — Bootstrap-wizard voor nieuwe Product-repo (Scrum4Me feature)](./plans/M8-bootstrap-wizard.md) | active | — |
| [PBI-100 — Seed Scrum4Me-docs naar de DB via Prisma-migratie](./plans/PBI-100-seed-scrum4me-docs.md) | draft | 2026-05-16 |
| [PBI-80 — Demo-gebruiker mag eigen UI-voorkeuren wijzigen](./plans/PBI-80-demo-prefs.md) | archived | 2026-05-16 |
| [PBI-84 — code wordt bindende volgorde voor stories & taken; drag-and-drop eruit](./plans/PBI-84-code-binding-order.md) | archived | 2026-05-16 |
| [PBI-91 — Expliciete schermstaat + draft-zichtbaarheid op de Product Backlog page](./plans/PBI-91-pb-screen-state.md) | archived | 2026-05-16 |
| [Per-product documentatiestructuur (Product Docs)](./plans/PBI-96-product-docs.md) | planned | 2026-05-16 |
| [Dashboard products-tabel (Ideas-stijl) + ProductSubNav-cleanup](./plans/PBI-98-dashboard-products-table.md) | planned | 2026-05-16 |
| [Per-product documentatiestructuur (Product Docs)](./plans/PBI-96-product-docs.md) | draft | 2026-05-16 |
| [Dashboard products-tabel (Ideas-stijl) + ProductSubNav-cleanup](./plans/PBI-98-dashboard-products-table.md) | draft | 2026-05-16 |
| [Queue-loop verplaatsen van Claude naar runner](./plans/queue-loop-extraction.md) | active | 2026-05-16 |
| [Sprint MCP-tools — create_sprint & update_sprint](./plans/sprint-mcp-tools.md) | draft | 2026-05-11 |
| [Advies - SprintRun, PR en worktree lifecycle als state machines](./plans/sprint-pr-worktree-state-machines.md) | draft | 2026-05-06 |
@ -60,9 +60,9 @@ Auto-generated on 2026-05-16 from front-matter and headings.
| [ST-1110 — Demo gebruiker read-only](./plans/ST-1110-demo-readonly.md) | active | 2026-05-03 |
| [ST-1111 — Voer uit-knop met Claude Code job queue](./plans/ST-1111-claude-job-trigger.md) | active | 2026-05-03 |
| [Plan: wekelijkse sync van model_prices (PBI-66 / ST-1296)](./plans/sync-model-prices.md) | archived | 2026-05-16 |
| [Tweede Claude Agent — Planning Agent](./plans/tweede-claude-agent-planning.md) | proposal | 2026-05-03 |
| [Zustand store rearchitecture - active context, realtime en resync](./plans/zustand-store-rearchitecture.md) | ready-to-execute | 2026-05-09 |
| [Zustand workspace-store implementatieplan (PBI-74)](./plans/zustand-workspace-store-implementation.md) | in-progress | 2026-05-10 |
| [Tweede Claude Agent — Planning Agent](./plans/tweede-claude-agent-planning.md) | draft | 2026-05-03 |
| [Zustand store rearchitecture - active context, realtime en resync](./plans/zustand-store-rearchitecture.md) | active | 2026-05-09 |
| [Zustand workspace-store implementatieplan (PBI-74)](./plans/zustand-workspace-store-implementation.md) | active | 2026-05-10 |
## Patterns

View file

@ -1,5 +1,6 @@
---
status: accepted
title: "ADR-0003: One branch per milestone, push only after user test"
status: active
date: 2026-05-03
decision-makers: [janpetervisser]
---

View file

@ -1,5 +1,6 @@
---
status: accepted
title: "ADR-0005: Use iron-session for authentication instead of NextAuth/Clerk/Supabase Auth"
status: active
date: 2026-05-03
decision-makers: [janpetervisser]
---

View file

@ -1,5 +1,6 @@
---
status: accepted
title: "ADR-0007: Agent ↔ user question channel via persistent table + LISTEN/NOTIFY"
status: active
date: 2026-05-03
decision-makers: [janpetervisser]
---

View file

@ -1,6 +1,6 @@
---
title: "ADR-0008: Agent instructions in CLAUDE.md + topical runbooks"
status: accepted
status: active
date: 2026-05-03
---

View file

@ -1,5 +1,6 @@
---
status: accepted
title: "ADR-0010: Eén product = één repo; cross-product planning vereist (later) een Initiative-laag"
status: active
date: 2026-05-03
decision-makers: Janpeter Visser
consulted: Claude (planning agent)

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-03
related: [qr-pairing.md](./qr-pairing.md)
---
## Authenticatieflow

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-03
related: [project-structure.md](./project-structure.md)
---
## Vraag-antwoord-kanaal Claude ↔ user (M11)

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-08
related: [auth-and-sessions.md](./auth-and-sessions.md)
---
## Datamodel

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-08
related: [data-model.md](./data-model.md), [project-structure.md](./project-structure.md)
---
**Versie:** 0.2 — mei 2026

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-14
related: [project-structure.md](./project-structure.md), [sprint-execution-modes.md](./sprint-execution-modes.md)
---
# Product Backlog page — workflow & states (PBI-88)

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-08
related: [data-model.md](./data-model.md)
---
## Projectstructuur

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-03
related: [auth-and-sessions.md](./auth-and-sessions.md)
---
## QR-pairing flow (M10)

View file

@ -4,7 +4,6 @@ status: active
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-07
related: [project-structure.md](./project-structure.md), [data-model.md](./data-model.md)
---
# Sprint execution modes (PBI-50)

View file

@ -1,6 +1,6 @@
---
title: "M12 — Idea entity + Grill/Plan Claude jobs"
status: planned
status: draft
audience: implementation
language: nl
---

View file

@ -1,4 +1,6 @@
---
title: "M8 — Bootstrap-wizard upload spec (Scrum4Me feature)"
status: draft
pbi:
title: "Bootstrap-wizard voor nieuwe Product-repo"
description: |

View file

@ -1,5 +1,6 @@
---
status: reviewed
title: "M8 — Bootstrap-wizard voor nieuwe Product-repo (Scrum4Me feature)"
status: active
author: Claude
version: 6
created_at: 2026-05-14

View file

@ -1,6 +1,6 @@
---
title: "PBI-100 — Seed Scrum4Me-docs naar de DB via Prisma-migratie"
status: planned
status: draft
audience: [ai-agent, contributor]
language: nl
last_updated: 2026-05-16

View file

@ -1,6 +1,6 @@
---
title: "Per-product documentatiestructuur (Product Docs)"
status: planned
status: draft
audience: implementation
language: nl
last_updated: 2026-05-16

View file

@ -1,6 +1,6 @@
---
title: "Dashboard products-tabel (Ideas-stijl) + ProductSubNav-cleanup"
status: planned
status: draft
audience: implementation
language: nl
last_updated: 2026-05-16

View file

@ -1,6 +1,6 @@
---
title: "PBI Bulk-Create Spec — Docs-Restructure for AI-Optimized Lookup"
status: done
status: archived
audience: [ai-agent]
spec_version: 1
spec_type: pbi-bulk-create

View file

@ -1,6 +1,6 @@
---
title: "Tweede Claude Agent — Planning Agent"
status: proposal
status: draft
audience: [maintainer, contributor]
language: nl
last_updated: 2026-05-03

View file

@ -1,6 +1,6 @@
---
title: "Zustand store rearchitecture - active context, realtime en resync"
status: ready-to-execute
status: active
audience: [maintainer, contributor, ai-agent]
language: nl
last_updated: 2026-05-09

View file

@ -1,6 +1,6 @@
---
title: "Zustand workspace-store implementatieplan (PBI-74)"
status: in-progress
status: active
audience: [maintainer, contributor, ai-agent]
language: nl
last_updated: 2026-05-10

View file

@ -79,7 +79,10 @@ async function main() {
for (const file of files) {
const filePath = path.join(dir, file)
const slug = file.replace(/\.md$/, '')
// Lowercase slug — bron-bestanden mogen mixed-case namen hebben
// (PBI-100-..., ST-1109-..., M8-...), maar DB-slug moet lowercase
// per productDocSlugSchema (lib/schemas/product-doc.ts).
const slug = file.replace(/\.md$/, '').toLowerCase()
if (!SLUG_RE.test(slug)) {
errors.push(`${folder}/${file}: ongeldige slug "${slug}"`)