Scrum4Me/docs/INDEX.md
Janpeter Visser d587be2fb3
feat(PBI-79): Product Backlog sprint-membership via vinkjes (#190)
* feat(PBI-79/ST-1333): active-sprint null-contract + clearActiveSprintAction

- lib/user-settings.ts: activeSprints values nullable in Zod-schema.
  Key-aanwezigheid heeft nu betekenis (key+null = bewust geen sprint;
  key ontbreekt = fallback-cascade).
- lib/active-sprint.ts: nieuwe readStoredActiveSprintState helper +
  resolveActiveSprint respecteert expliciet 'cleared' state zonder fallback.
  clearActiveSprintInSettings schrijft null i.p.v. de key te verwijderen.
- actions/active-sprint.ts: nieuwe clearActiveSprintAction met auth +
  membership-check.
- components/shared/sprint-switcher.tsx: '— Geen actieve sprint —'-optie
  in dropdown, disabled wanneer er geen actieve sprint is.
- Tests: nieuwe active-sprint.test.ts (resolver-paden + clear),
  active-sprint-action.test.ts (action-laag), uitbreiding user-settings.test.ts.

Plan: docs/plans/PBI-79-backlog-sprint-workflow.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1334): user-settings pendingSprintDraft-slot

- lib/user-settings.ts: nieuw workflow.pendingSprintDraft veld met
  compacte intent-shape (pbiIntent + per-PBI storyOverrides).
- actions/sprint-draft.ts: setPendingSprintDraftAction +
  clearPendingSprintDraftAction met product-membership-check + Zod-validatie.
- stores/user-settings/store.ts: setPendingSprintDraft / clearPendingSprintDraft
  optimistic acties + fine-grained mutators upsertPbiIntent / upsertStoryOverride.
  Sprint-draft actions worden dynamisch geïmporteerd zodat jsdom-tests
  zonder DATABASE_URL niet falen.
- Tests: nieuwe sprint-draft.test.ts (action-laag), uitbreiding
  user-settings store-tests (5 nieuwe cases) en schema-tests (4 cases).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1343): sprint-conflicts helper-library

- lib/sprint-conflicts.ts: drie pure/server-side helpers voor eligibility
  + cross-sprint detectie.
  - isEligibleForSprint(story): sprint_id IS NULL en status != DONE
  - partitionByEligibility(prisma, storyIds, excludeSprintId): split in
    eligible / notEligible / crossSprint met reden per story
  - getBlockingSprintMap(prisma, productId, storyIds, excludeSprintId):
    map storyId → { sprintId, sprintName } voor stories in andere OPEN sprint
- Tests: __tests__/lib/sprint-conflicts.test.ts (16 cases) — alle eligibility
  paden + cross-sprint scoping + CLOSED-sprint filtering.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1335): sprint-membership-summary + cross-sprint-blocks endpoints

Twee nieuwe GET-route handlers, beide verplicht gescoped op pbiIds (geen
product-brede aanroepen).

- app/api/products/[id]/sprint-membership-summary/route.ts
  Response: { [pbiId]: { total, inSprint } } via twee prisma.groupBy calls
  (totaal + binnen actieve sprint). Voor state-B tri-state.

- app/api/products/[id]/cross-sprint-blocks/route.ts
  Response: { [storyId]: { sprintId, sprintName } } voor stories in andere
  OPEN sprints. UX-hint voor disabled-vinkjes; commit-acties blijven
  autoritatief.

Tests: 13 cases dekken happy path, 400 zonder pbiIds, 400 zonder sprintId,
404 zonder product-access, auth-fail, en NOT-clause voor excludeSprintId.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1336): product-workspace sprint-membership slice + selectors

Datalaag voor de vinkje-UI van state A′ en state B.

types.ts:
- PbiSummaryEntry, CrossSprintBlock, SprintMembershipSlice toegevoegd.

store.ts:
- Nieuwe slice `sprintMembership` met pbiSummary, crossSprintBlocks,
  pending: { adds[], removes[] }, loadedSummaryForSprintId.
- Acties: setPbiSummary, setCrossSprintBlocks, toggleStorySprintMembership
  (cancel-out logic), resetSprintMembershipPending, fetchSprintMembershipSummary,
  fetchCrossSprintBlocks.
- hydrateSnapshot reset óók de membership-slice.

selectors.ts:
- selectPbiTriState (aggregate-only zolang stories niet geladen; rekent
  pending mee bij loaded PBI's).
- selectStoryEffectiveInSprint (DB ⊕ pending).
- selectStoryIsBlocked (cross-sprint hint).
- selectIsDirty, selectPendingCount.

Tests: 25 cases in nieuwe sprint-membership.test.ts dekken alle selector-
paden, toggle-cancel-out, fetch-helpers, en pbiId-scoping.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1337): state A′ UI — metadata dialog + sticky banner + PbiList ombouw

UI-laag voor de sprint-definitie-flow (state A′).

Nieuw:
- NewSprintMetadataDialog (stap 1): sprint_goal + optionele dates;
  'Verder' schrijft via useUserSettingsStore.setPendingSprintDraft.
- SprintDefinitionBanner (sticky): toont doel + X PBI's / Y stories teller;
  'Annuleren' → AlertDialog confirm → clearPendingSprintDraft;
  'Sprint aanmaken' nog niet aangesloten (wacht op ST-1339).
- NewSprintTrigger: button in page header die de metadata-dialog opent;
  verbergt zichzelf zolang er al een draft loopt.
- SprintDraftBanner: client-wrapper, rendert banner alleen als draft bestaat.

Wijzigingen:
- lib/user-settings.ts: pendingSprintDraft startAt/endAt → z.string().date().
- PbiList: oude selectionMode + selectedIds + NewSprintDialog vervangen door
  hasDraft-afgeleide A′-mode met tri-state vinkjes; togglen muteert
  upsertPbiIntent('all'|'none') en wist storyOverrides per PBI.
- StoryPanel: in A′-mode toont elke story een cherrypick-checkbox die
  upsertStoryOverride('add'/'remove'/'clear') aanroept; cross-sprint-blocked
  stories krijgen disabled-icoon met sprint-naam tooltip.
- app/(app)/products/[id]/page.tsx: StartSprintButton vervangen door
  NewSprintTrigger; SprintDraftBanner gepositioneerd boven split-pane.

Tests: bestaande tests blijven groen (806 cases) — UI-specifieke component
tests volgen later. ST-1339 sluit createSprintWithSelectionAction aan.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1339): createSprintWithSelectionAction + banner wire-up

actions/sprints.ts:
- Nieuwe createSprintWithSelectionAction(productId, metadata, pbiIntent,
  storyOverrides).
- Server-side intent-resolve:
  1. Voor elke PBI met intent='all': fetch child-story-IDs minus
     storyOverrides[pbi].remove.
  2. Plus storyOverrides[*].add (cross-PBI cherrypick toegestaan).
- Eligibility-filter via partitionByEligibility (sprint_id IS NULL + status
  != DONE; stories in andere OPEN sprint → conflicts.crossSprint).
- Transactie wrapt sprint.create + story.updateMany (status='IN_SPRINT') +
  task.updateMany (sprint_id cascade) — alles atomair.
- setActiveSprintInSettings na success.
- Return: { success, sprintId, affectedStoryIds, affectedPbiIds,
  affectedTaskIds, conflicts: { notEligible, crossSprint } } of error.

components/backlog/sprint-definition-banner.tsx:
- 'Sprint aanmaken'-knop sluit aan op createSprintWithSelectionAction;
  toast bij conflicts, success-toast anders, router.refresh() voor SSR
  cycle. Pending draft wordt door de action zelf nog niet expliciet gewist
  — dat gebeurt via revalidatePath en kan in ST-1340 finetuned worden.

Tests: __tests__/actions/create-sprint-with-selection.test.ts (6 cases)
dekken intent-resolve, override-respect, cross-sprint conflict, transactie-
binding van story.status + task.sprint_id, return-shape, en error-pad.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1340): commitSprintMembershipAction + gerichte client-store patches

actions/sprints.ts:
- Nieuwe commitSprintMembershipAction(activeSprintId, adds[], removes[]).
- Eligibility-filter voor adds via partitionByEligibility (sprint_id IS NULL
  en niet DONE; cross-sprint conflicts → notEligible).
- Race-safety voor removes: alleen stories met huidige sprint_id ==
  activeSprintId; rest → conflicts.alreadyRemoved.
- Transactie wrapt twee updateMany-paren (story status mee, task.sprint_id
  cascade). Update-paren overgeslagen wanneer leeg.
- Return: { success, affectedStoryIds, affectedPbiIds, affectedTaskIds,
  conflicts: { notEligible, alreadyRemoved } }.

stores/product-workspace/store.ts:
- applyMembershipCommitResult({ activeSprintId, addedStoryIds,
  removedStoryIds }) patcht entities.storiesById met juiste sprint_id +
  status; ledigt sprintMembership.pending. Geen task-veld omdat
  BacklogTask geen sprint_id-kolom heeft in de store.

Tests: __tests__/actions/commit-sprint-membership.test.ts (8 cases) — happy
path, DONE-conflict, cross-sprint, race-safety voor removes, transactie-
inhoud (status='IN_SPRINT'/'OPEN'), task-cascade, return-shape, auth-fail.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1338): state B vinkjes-UI + 'Sprint opslaan'-knop met teller

State B (actieve sprint geselecteerd, geen draft) hangt nu aan dezelfde
vinkje-UI als state A′, maar muteert de transient pending-buffer in plaats
van de draft.

- PbiList: nieuwe prop activeSprintId. selectionMode = hasDraft ||
  stateBMode. togglePbiInDraft routeert naar upsertPbiIntent (A′) of bulk-
  toggleStorySprintMembership over eligible child-stories (B, skip blocked).
- StoryPanel: idem prop activeSprintId. StoryBlockWithCherrypick muteert
  draft via upsertStoryOverride in A′ of pending buffer via
  toggleStorySprintMembership in B (cross-sprint blocked = disabled).
- SaveSprintButton (nieuw): client component in page header, alleen
  zichtbaar als er een actieve sprint is. Disabled bij clean buffer,
  enabled met teller bij dirty. Klikken calls commitSprintMembershipAction
  → applyMembershipCommitResult gericht in store + toast bij conflicts.
- page.tsx: activeSprintItem.id wordt doorgegeven aan PbiList, StoryPanel
  en SaveSprintButton.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79/ST-1341+ST-1342): SprintEditDialog metadata-edit + multi-OPEN sprints

ST-1341 (T-946):
- actions/sprints.ts: nieuwe updateSprintAction(sprintId, fields) — JSON
  input, accepteert optionele goal/startAt/endAt; auth + product-access
  check, prisma.sprint.update, revalidatePath. Type-safe return.
- components/backlog/sprint-edit-dialog.tsx: Entity-Dialog-pattern voor
  metadata-edit van een sprint. Velden: sprint_goal, start_date, end_date.
  Link 'Sprint afronden… →' naar bestaande /products/[id]/sprint/[sprintId]
  zodat de completion-flow (per-story DONE/OPEN beslissing + PBI-promotie)
  niet wordt geduplicereerd. useDirtyCloseGuard.

ST-1342 (T-947):
- actions/sprints.ts: OPEN-uniqueness check in createSprintAction
  verwijderd. Een product mag nu meerdere OPEN sprints tegelijk hebben;
  cross-sprint-conflicts per story worden afgevangen door
  partitionByEligibility in de membership-commit-flow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* test(PBI-79/ST-1344): updateSprintAction regression coverage

Audits van de geplande non-regressie-tests laten zien dat alle invarianten
uit het ST-1344 plan reeds gedekt zijn door eerder toegevoegde tests:

- clearActiveSprintAction null-not-delete → __tests__/lib/active-sprint.test.ts
  + __tests__/actions/active-sprint-action.test.ts
- Endpoints rejecten zonder pbiIds (400) → __tests__/api/sprint-membership-summary.test.ts
  + __tests__/api/cross-sprint-blocks.test.ts
- Status-mutaties story.status=IN_SPRINT/OPEN met task.sprint_id cascade
  in dezelfde transactie → __tests__/actions/create-sprint-with-selection.test.ts
  + __tests__/actions/commit-sprint-membership.test.ts
- Cross-sprint conflicts + DONE-eligibility → __tests__/lib/sprint-conflicts.test.ts

Nieuw: __tests__/actions/update-sprint.test.ts (6 cases) dekt
updateSprintAction die nog geen tests had — goal alleen, dates alleen,
null-clear, 403 zonder access, lege goal weigering, leeg fields-object
weigering.

Handmatige E2E checklist (T-949) blijft staan voor menselijke browser-
validatie tijdens PR-review.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(PBI-79): PBI-rij selecteert weer in A′/B-modus; vinkje is aparte trigger

Voor PBI-79 maakte het hele PBI-kaartje in selectionMode (state A′ én B)
de toggle. Daardoor:
- klik op rij = bulk-toggle stories (teller liep op);
- geen setActivePbi, dus StoryPanel kreeg geen content.

Fix: in selectionMode wordt onClick = onSelect (PBI activeren → stories
laden) en de tri-state-iconen verhuizen naar een eigen <button> in de
actions-slot met stopPropagation. Toggle gedrag (bulk add/remove in B,
upsertPbiIntent in A′) blijft ongewijzigd via die knop.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(PBI-79): cascade-restore alleen als hint-story bij nieuwe PBI hoort

Bug: setActivePbi reset activeStoryId/activeTaskId, maar het cascade-
restore-pad zette daarna een hint-story actief zonder te valideren of die
story bij de nieuw-geselecteerde PBI hoort. Bij PBI-switch bleef daardoor
de task-kolom de taken van de vorige story tonen.

Fix: alleen setActiveStory(hint) als entities.storiesById[hint].pbi_id ===
pbiId. Bij mismatch blijft activeStoryId null en is de task-kolom leeg
totdat de gebruiker een story uit de nieuwe PBI kiest.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79): sprint-switch auto-select PBI/story + user-settings persist

Bij sprint-switch wordt de sprint-content server-side opgevraagd. Wanneer
de sprint precies één PBI (en die PBI exact één story binnen de sprint)
heeft, worden PBI en story automatisch geselecteerd. Alle drie keuzes
(sprint, pbi, story) worden atomair in user-settings opgeslagen zodat ze
cross-device blijven hangen.

- lib/user-settings.ts: layout krijgt nullable activePbis +
  activeStories per product.
- lib/active-sprint.ts: setActiveSelectionInSettings schrijft de drie
  keys atomair + notify pg_notify.
- actions/active-sprint.ts: switchActiveSprintAction(productId, sprintId)
  doet de server-side auto-select-resolutie (single PBI → single story)
  en returnt { sprintId, pbiId, storyId }.
- components/shared/sprint-switcher.tsx: handleSwitchSprint roept de
  nieuwe action aan en synchroniseert de workspace-store gelijk zodat
  de UI geen flash krijgt voor de SSR-refresh.
- components/backlog/active-selection-hydrator.tsx (nieuw): client-side
  effect dat user-settings.activePbis/activeStories naar workspace-store
  spiegelt; wint van de localStorage hint-restore.
- app/(app)/products/[id]/page.tsx: ActiveSelectionHydrator gemount
  binnen BacklogHydrationWrapper.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(PBI-79): plan-update met implementatie-stand + scope-aanpassing

Documenteert wat er sinds de eerste implementatie-pass is gebeurd:
- Tabel van 14 commits met hun rol.
- Twee bugs die tijdens testen boven kwamen (PBI-rij-klik, cascade-restore).
- Nieuwe feature sprint-switch auto-select (server resolveert single-PBI/
  single-story; user-settings persist).

En kondigt scope-aanpassing aan voor de volgende implementatie-ronde:
- pendingSprintDraft wordt session-only (geen server-persist meer).
- useDirtyCloseGuard wist draft op leave-with-confirm.
- Sprint-switcher krijgt concept-entry zolang er een draft loopt.

De rest van het plan beneden blijft van kracht behalve waar deze sectie
het overruled.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat(PBI-79): pendingSprintDraft session-only + concept-entry + leave-guard

Scope-aanpassing uit plan-revisie: drafts persisten niet meer server-side.

Wijzigingen:
- stores/user-settings/store.ts:
  - hydrate() strip nu workflow.pendingSprintDraft uit serverstate
    (legacy DB-entries blijven harmless aanwezig maar worden niet
    gehydreerd → effectief unreachable voor de UI).
  - setPendingSprintDraft / clearPendingSprintDraft worden lokale-only;
    geen import van sprint-draft-actions, geen server-roundtrip.
  - upsertPbiIntent / upsertStoryOverride blijven via setPendingSprintDraft
    routeren → ook session-only.
- components/shared/sprint-switcher.tsx: leest draft-goal uit user-settings
  store en toont '⚙ Concept — [goal]' als niet-selecteerbare entry
  bovenaan de dropdown zolang er een draft loopt.
- components/backlog/sprint-draft-leave-guard.tsx (nieuw): registreert
  een beforeunload-listener zolang er een draft is. Browser-refresh,
  tab-close en back-navigatie tonen daarmee de standaard confirm. In-app
  route-changes blijven via de banner-Annuleren-knop lopen.
- app/(app)/products/[id]/page.tsx: SprintDraftLeaveGuard gemount naast
  de banner.
- Tests: user-settings store-tests aangepast (geen server-call assert
  meer, hydrate strip-assert toegevoegd; upsert-tests seed nu via
  setPendingSprintDraft i.p.v. legacy hydrate).

setPendingSprintDraftAction + clearPendingSprintDraftAction blijven bestaan
voor eventuele toekomstige opruim-flows, maar worden niet meer aangeroepen
vanuit de UI.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* docs(PBI-79): mark scope-aanpassing afgerond + localStorage overzicht

- Drie open punten uit plan-revisie afgevinkt (commit 2a4ee6a).
- Sectie 'Bewust niet geïmplementeerd': server-persist van manuele
  PBI/story-klikken — op vraag van user nu out-of-scope voor deze PR.
- Tabel localStorage-gebruik in de codebase voor toekomstige referentie.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 18:56:46 +02:00

13 KiB

Documentation Index

Auto-generated on 2026-05-11 from front-matter and headings.

Architecture Decision Records

# Title Status
0000 ADR-0000: Record architecture decisions accepted
0001 ADR-0001: Use @base-ui/react instead of Radix UI accepted
0002 ADR-0002: Use float sort_order for drag-and-drop ordering accepted
0003 ADR-0003: One branch per milestone, push only after user test accepted
0004 ADR-0004: DB enums UPPER_SNAKE, API enums lowercase, mapped exclusively via lib/task-status.ts accepted
0005 ADR-0005: Use iron-session for authentication instead of NextAuth/Clerk/Supabase Auth accepted
0006 ADR-0006: Demo-user write protection enforced in three layers accepted
0007 ADR-0007: Agent ↔ user question channel via persistent table + LISTEN/NOTIFY accepted
0008 ADR-0008: Agent instructions in CLAUDE.md + topical runbooks accepted
0010 ADR-0010: Eén product = één repo; cross-product planning vereist (later) een Initiative-laag accepted

Specifications

Title Status Updated
AnswerModal Profiel active 2026-05-04
BatchEnqueueBlockerDialog Profiel active 2026-05-04
IdeaDialog Profiel active 2026-05-04
PbiDialog Profiel active 2026-05-04
ProductDialog Profiel active 2026-05-04
Sprint Dialogs Profiel active 2026-05-04
StoryDialog Profiel active 2026-05-04
TaskDetailDialog Profiel active 2026-05-04
TaskDialog Profiel active 2026-05-03
Scrum4Me — Functionele Specificatie active 2026-05-08
DevPlanner — User Personas active 2026-05-03

Plans

Title Status Updated
Plan — Auto-PR + selectieve deploy-controle + sync-zicht (end-to-end batch flow)
Docs-restructuur — geoptimaliseerd voor AI-lookup proposal 2026-05-02
PBI Bulk-Create Spec — Docs-Restructure for AI-Optimized Lookup done 2026-05-03
Plan: model + mode-selectie per ClaudeJob-kind
Landing v2 — lokaal & veilig + architectuurdiagram active 2026-05-03
Landing v3 — van idee tot pull request active 2026-05-04
Scrum4Me-Research — Zustand rearchitecture (reset + execute)
Verbeterplan load/render Product Backlog, Sprint en Solo draft 2026-05-10
[Advies — Zelf een Git-platform hosten naast of in plaats van GitHub](./plans/Local github setup.md)
M10 — Password-loze inlog via QR-pairing active 2026-05-03
M11 — Claude vraagt, gebruiker antwoordt active 2026-05-03
M12 — Idea entity + Grill/Plan Claude jobs planned
M9 — Actief Product Backlog active 2026-05-03
PBI-11 — Mobile-shell met landscape-lock (settings + backlog + solo)
PBI-75 — Sprint task-edit client-side via workspace-store
PBI-78 — Cost-analyse widget op Insights-pagina
PBI-79: Product Backlog workflow — sprint-membership via vinkjes
Queue-loop verplaatsen van Claude naar runner
Advies - SprintRun, PR en worktree lifecycle als state machines draft 2026-05-06
ST-1109 — PBI krijgt een status (Ready / Blocked / Done) active 2026-05-03
ST-1110 — Demo gebruiker read-only active 2026-05-03
ST-1111 — Voer uit-knop met Claude Code job queue active 2026-05-03
ST-1114 — Copilot reviews op dashboard active 2026-05-03
Plan: wekelijkse sync van model_prices (PBI-66 / ST-1296)
Tweede Claude Agent — Planning Agent proposal 2026-05-03
User-settings store (DB-backed user prefs) draft 2026-05-10
Scrum4Me — v1.0 readiness active 2026-05-04
Zustand store rearchitecture - active context, realtime en resync ready-to-execute 2026-05-09
Zustand workspace-store implementatieplan (PBI-74) in-progress 2026-05-10

Archive

Title Updated
CLAUDE.md workflow-update na M7 + ST-509/511/512/513 2026-05-03
Herbruikbaar scripts/insert-milestone.ts 2026-05-03
Realtime updates voor Solo Paneel (M8) 2026-05-03

Patterns

Title Status Updated
Bidirectionele async-comms MCP-agent ↔ user active 2026-05-03
Debug-id op component-root active 2026-05-09
Debug-labels: BEM data-debug-id patroon active 2026-05-09
Entity Dialog active 2026-05-08
iron-session active 2026-05-03
Prisma Client singleton active 2026-05-03
Proxy (route protection) active 2026-05-08
QR-pairing via unauth-SSE + pre-auth cookie active 2026-05-03
Realtime NOTIFY payload — veldnaam-contract active 2026-05-03
Route Handler (REST API) active 2026-05-08
Server Action active 2026-05-08
Float sort_order (drag-and-drop volgorde) active 2026-05-03
Story met UI-component active 2026-05-03
Web Push active 2026-05-07
Workspace-store + realtime — bounded-context patroon active 2026-05-10
Zustand optimistische update + rollback active 2026-05-10

Other Docs

Title Path Status Updated
Scrum4Me REST API api.md active 2026-05-03
Scrum4Me REST API api/rest-contract.md active 2026-05-03
Scrum4Me — Technische Architectuur (breadcrumb) architecture.md active 2026-05-03
Authentication, Sessions & Demo Policy architecture/auth-and-sessions.md active 2026-05-03
Claude ↔ User Question Channel architecture/claude-question-channel.md active 2026-05-03
Data Model & Prisma Schema architecture/data-model.md active 2026-05-08
Scrum4Me — Architecture Overview architecture/overview.md active 2026-05-08
Project Structure, Stores, Realtime & Job Queue architecture/project-structure.md active 2026-05-08
QR-pairing Login Flow architecture/qr-pairing.md active 2026-05-03
Sprint execution modes — PER_TASK vs SPRINT_BATCH architecture/sprint-execution-modes.md active 2026-05-07
Scrum4Me — Implementatie Backlog backlog.md active 2026-05-03
Scrum4Me — Implementatie Backlog backlog/index.md active 2026-05-03
DevPlanner — Product Backlog backlog/product-historical.md active 2026-05-03
Agent Instruction Audit decisions/agent-instructions-history.md active 2026-05-03
Scrum4Me — Styling & Design System design/styling.md active 2026-05-03
Docker smoke test — task 1 docker-smoke/2-mei-task-1.md done 2026-05-03
Docker smoke test — task 2 docker-smoke/2-mei-task-2.md done 2026-05-03
Scrum4Me — Functionele Specificatie functional.md active 2026-05-03
Scrum4Me — Glossary glossary.md active 2026-05-08
Overview manual/01-overview.md active 2026-05-07
Statuses & Transitions manual/02-statuses-and-transitions.md active 2026-05-07
Git Workflow manual/03-git-workflow.md active 2026-05-07
MCP Integration manual/04-mcp-integration.md active 2026-05-07
Docker manual/05-docker.md active 2026-05-07
Troubleshooting manual/06-troubleshooting.md active 2026-05-07
Scrum4Me Developer Manual manual/index.md active 2026-05-07
Scrum4Me — Styling & Design System md3-color-scheme.md active 2026-05-03
Obsidian as Personal Authoring Layer obsidian-authoring.md active 2026-05-02
PbiDialog Profiel pbi-dialog.md active 2026-05-03
DevPlanner — User Personas personas.md active 2026-05-03
DevPlanner — Product Backlog product-backlog.md active 2026-05-03
Scrum4Me — API Test Plan qa/api-test-plan.md active 2026-05-03
Realtime smoke-checklist — PBI / Story / Task realtime-smoke.md active 2026-05-03
Caveman plan — Beelink naar Ubuntu Scrum4Me server recommendations/beelink-ubuntu-scrum4me-server-caveman-plan.md draft 2026-05-09
Aanbeveling — Claude VM jobflow en gitstrategie recommendations/claude-vm-job-flow-git-strategy.md draft 2026-05-09
Load/render implementatie review recommendations/load-render-implementation-review-2026-05-10.md review 2026-05-10
Agent-flow: open issues & decision log runbooks/agent-flow-pitfalls.md active 2026-05-03
Auto-PR flow: van story-DONE naar gemergde PR runbooks/auto-pr-flow.md active 2026-05-06
Branch, PR & Commit Strategy runbooks/branch-and-commit.md active 2026-05-03
Deploy-controle: triggers, labels, path-filter runbooks/deploy-control.md active 2026-05-07
Vercel Deployment runbooks/deploy-vercel.md active 2026-05-03
Job-model-selectie per ClaudeJob-kind runbooks/job-model-selection.md active 2026-05-09 (idea-kinds + PLAN_CHAT permission_mode → acceptEdits)
MCP Integration — Scrum4Me Tools runbooks/mcp-integration.md active 2026-05-08
v1.0 Smoke Test Checklist runbooks/v1-smoke-test.md active 2026-05-04
Worker idempotency & job-status protocol runbooks/worker-idempotency.md active 2026-05-09
StoryDialog Profiel story-dialog.md active 2026-05-03
TaskDialog Profiel task-dialog.md active 2026-05-03
Scrum4Me — API Test Plan test-plan.md active 2026-05-03