docs: archive the finished backlogs (RD-30)

Two backlog trees are complete: `docs/project/backlog/` (75 files, every
WP done) and `docs/project/refactor-backlog-setup/` (the arc before it).
Move both under `docs/project/archive/` with `git mv`, so history stays
intact through `git log --follow`. `SHOWCASE-ROADMAP.md` moves with them,
because it points at the now-archived backlog README.

Add `docs/project/archive/README.md`. It states that these trees are
historical and names the two directories that are still live.

Repoint every inbound reference named in RD-30's Files table: CLAUDE.md,
the root README, both backend READMEs, `LetterHtml.cs`, `a11y.mdx`, the
`document-feature` and `new-ssp` skills, and the readable-codebase PLAN,
README, and RD-19 ticket. Fix two upward-relative links inside the moved
WP files (WP-68, WP-69) that gained a directory level and would otherwise
break. Repoint `.prettierignore`'s two agent-prompt exclusions to their
new path, so prettier keeps leaving those files' exact wording alone.

Mark RD-30 done and check off its acceptance criteria; flip its README
row to done.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
eho
2026-09-08 23:00:38 +02:00
co-authored by Claude Opus 5
parent 097e8468e0
commit 12f17d9d73
161 changed files with 154 additions and 24 deletions
+3 -3
View File
@@ -20,11 +20,11 @@ The repo splits docs by kind (`docs/README.md`). Pick one — don't write all th
_decision/pattern_ (a tradeoff, a "we chose X over Y"). One format, no drift: _decision/pattern_ (a tradeoff, a "we chose X over Y"). One format, no drift:
`# ADR-NNNN — Title`, then `Status: Accepted · Date: YYYY-MM-DD`, then `# ADR-NNNN — Title`, then `Status: Accepted · Date: YYYY-MM-DD`, then
Problem / Options / Decision / Consequences. Problem / Options / Decision / Consequences.
- **WP** — `docs/project/backlog/WP-NN-<slug>.md`. Tracked work; use the template at the - **WP** — `docs/project/archive/backlog/WP-NN-<slug>.md`. Tracked work; use the template at the
bottom of `docs/project/backlog/README.md`. bottom of `docs/project/archive/backlog/README.md`.
Then **add the index row**: `docs/README.md` table for a reference doc/ADR, Then **add the index row**: `docs/README.md` table for a reference doc/ADR,
`docs/project/backlog/README.md` for a WP. A doc with no index row is invisible. `docs/project/archive/backlog/README.md` for a WP. A doc with no index row is invisible.
## Adjusted feature → update what already describes it ## Adjusted feature → update what already describes it
+2 -2
View File
@@ -85,8 +85,8 @@ Work through that checklist, keeping the GREEN gate below passing at every step.
placeholder path and creates an empty `public/<name>-huisstijl/` — it cannot generate a placeholder path and creates an empty `public/<name>-huisstijl/` — it cannot generate a
real house style. Vendor your CSS there, then re-point the `--rhc-*` bridge in real house style. Vendor your CSS there, then re-point the `--rhc-*` bridge in
`src/styles.scss` (ADR-0003 pattern: bridge, don't rewrite tokens), then `npm run check:tokens`. `src/styles.scss` (ADR-0003 pattern: bridge, don't rewrite tokens), then `npm run check:tokens`.
- `docs/project/backlog/` WPs, PRDs, and memory-specific docs — new portal, new backlog - `docs/project/archive/backlog/` WPs, PRDs, and memory-specific docs — new portal, new backlog
(keep `docs/project/backlog/README.md`'s WP process/template if you like the workflow). (keep `docs/project/archive/backlog/README.md`'s WP process/template if you like the workflow).
`docs/reference/scaffolding.md` also names `BigRegister.Api` in prose — update by hand. `docs/reference/scaffolding.md` also names `BigRegister.Api` in prose — update by hand.
- `e2e/*.spec.ts` (`smoke.spec.ts`, `brief-v2.spec.ts`, `error-state.spec.ts`): full - `e2e/*.spec.ts` (`smoke.spec.ts`, `brief-v2.spec.ts`, `error-state.spec.ts`): full
BIG-register user-flow tests (BSN login → registration wizard → submission assertions). BIG-register user-flow tests (BSN login → registration wizard → submission assertions).
+2 -2
View File
@@ -28,5 +28,5 @@ plop-templates/
backend/ backend/
# Agent prompts — their exact wording is the input, reflowing markdown edits the prompt # Agent prompts — their exact wording is the input, reflowing markdown edits the prompt
docs/project/refactor-backlog-setup/agents/ docs/project/archive/refactor-backlog-setup/agents/
docs/project/refactor-backlog-setup/refactor-backlog/final-prompts/ docs/project/archive/refactor-backlog-setup/refactor-backlog/final-prompts/
+2 -2
View File
@@ -12,7 +12,7 @@ signals. Auth is faked; **data and business rules are served by a minimal ASP.NE
Core backend** (`backend/`, see its README) and consumed through an NSwag-generated Core backend** (`backend/`, see its README) and consumed through an NSwag-generated
typed client. The FE renders the backend's decisions. Reference data mimicking typed client. The FE renders the backend's decisions. Reference data mimicking
BRP/DUO (`Data/SeedData.cs`) is in-memory; applications, documents and the brief BRP/DUO (`Data/SeedData.cs`) is in-memory; applications, documents and the brief
persist to a SQLite file via EF Core (WP-22) — `docs/project/backlog/WP-22-durable-persistence.md`. persist to a SQLite file via EF Core (WP-22) — `docs/project/archive/backlog/WP-22-durable-persistence.md`.
**Monorepo (WP-67):** two Angular projects share one backend + one shared library — **Monorepo (WP-67):** two Angular projects share one backend + one shared library —
`apps/ssp` (Zorgverlener self-service, this doc's main subject) and `apps/behandelportal` `apps/ssp` (Zorgverlener self-service, this doc's main subject) and `apps/behandelportal`
@@ -72,7 +72,7 @@ so this doesn't depend on a human remembering to run `/model` at the right momen
`git status`/`grep`, verifying a file exists. No Edit/Write access. `git status`/`grep`, verifying a file exists. No Edit/Write access.
Delegate to the matching agent only when the _current_ session isn't already on that Delegate to the matching agent only when the _current_ session isn't already on that
model — don't add indirection for its own sake. `docs/project/backlog/README.md`'s model — don't add indirection for its own sake. `docs/project/archive/backlog/README.md`'s
session protocol is the worked example of this in practice. session protocol is the worked example of this in practice.
## The decisions (non-negotiable working agreements) ## The decisions (non-negotiable working agreements)
+1 -1
View File
@@ -66,7 +66,7 @@ Admin pages (`/beheer/*`, `/brief/huisstijl`) need the `admin` role — see
| know _why_ a decision was made | [the ADRs](docs/reference/architecture/) — BFF-lite, contexts, huisstijl, stamdata, ZGW, test data | | know _why_ a decision was made | [the ADRs](docs/reference/architecture/) — BFF-lite, contexts, huisstijl, stamdata, ZGW, test data |
| work on the backend / BFF | [backend/README.md](backend/README.md) | | work on the backend / BFF | [backend/README.md](backend/README.md) |
| run OpenZaak locally | [backend/openzaak/README.md](backend/openzaak/README.md) | | run OpenZaak locally | [backend/openzaak/README.md](backend/openzaak/README.md) |
| see what shipped, or pick up work | [docs/project/backlog/README.md](docs/project/backlog/README.md) | | see what shipped, or pick up work | [docs/project/archive/backlog/README.md](docs/project/archive/backlog/README.md) |
| build a feature the house way | [`.claude/skills/`](.claude/skills/) — invocable recipes (`new-feature`, `form-machine`, …) | | build a feature the house way | [`.claude/skills/`](.claude/skills/) — invocable recipes (`new-feature`, `form-machine`, …) |
| know the import rules | [dependencies.md](docs/reference/architecture/dependencies.md) — enforced by `dep:check` | | know the import rules | [dependencies.md](docs/reference/architecture/dependencies.md) — enforced by `dep:check` |
| work on this repo as an AI agent | [CLAUDE.md](CLAUDE.md) | | work on this repo as an AI agent | [CLAUDE.md](CLAUDE.md) |
+1 -1
View File
@@ -15,7 +15,7 @@ status codes and error envelope are production-shaped.
covers it, see `docker-compose.yml`) does **not** lose data. Delete the file to covers it, see `docker-compose.yml`) does **not** lose data. Delete the file to
reset demo data back to empty, the same state a fresh clone starts from. This is reset demo data back to empty, the same state a fresh clone starts from. This is
a deliberate, right-sized choice for a POC (SQLite, no external DB service) — see a deliberate, right-sized choice for a POC (SQLite, no external DB service) — see
`docs/project/backlog/WP-22-durable-persistence.md`. `docs/project/archive/backlog/WP-22-durable-persistence.md`.
## Run ## Run
@@ -152,7 +152,7 @@ public static class LetterHtml
// Walks up from the running assembly's own directory (NOT the process cwd, which // Walks up from the running assembly's own directory (NOT the process cwd, which
// varies by how `dotnet run`/docker/tests invoke it — see // varies by how `dotnet run`/docker/tests invoke it — see
// docs/project/backlog/WP-25-letter-preview-html.md) until it finds `public/letter.css`. docker-compose.yml bind-mounts `./public` under the // docs/project/archive/backlog/WP-25-letter-preview-html.md) until it finds `public/letter.css`. docker-compose.yml bind-mounts `./public` under the
// api container's `/src` for exactly this walk to resolve there too. // api container's `/src` for exactly this walk to resolve there too.
private static string FindLetterCss() private static string FindLetterCss()
{ {
+11
View File
@@ -0,0 +1,11 @@
# Archive — finished backlogs
The trees in this directory are historical. Every ticket in `backlog/` and
`refactor-backlog-setup/` carries `Status: done`. `SHOWCASE-ROADMAP.md` was superseded before
either arc started.
Git holds the rest — `git log --follow` on any file here shows its full history, including the
work that produced it.
The live plan is `docs/project/readable-codebase/`. Product reference material is
`docs/project/prd/`.
@@ -1,6 +1,6 @@
# Showcase roadmap — superseded # Showcase roadmap — superseded
**This roadmap is superseded by [`docs/project/backlog/`](backlog/README.md)** (2026-07-02). **This roadmap is superseded by [`docs/project/archive/backlog/`](backlog/README.md)** (2026-07-02).
The backlog absorbs and corrects this document: its Storybook-as-curriculum track became The backlog absorbs and corrects this document: its Storybook-as-curriculum track became
WP-14/15 (+ per-invariant MDX pages in WP-05/07/08/13/17), its enforcement track became WP-14/15 (+ per-invariant MDX pages in WP-05/07/08/13/17), its enforcement track became
@@ -59,7 +59,7 @@ The review's remaining findings are listed under "Follow-ups" and are **not** th
## Read first ## Read first
- `CLAUDE.md` §"The decisions" #3 (make illegal states unrepresentable) and #4 (BFF-lite) - `CLAUDE.md` §"The decisions" #3 (make illegal states unrepresentable) and #4 (BFF-lite)
- [ADR-0001 — BFF-lite + decision DTOs](../../reference/architecture/0001-bff-lite-decision-dtos.md) - [ADR-0001 — BFF-lite + decision DTOs](../../../reference/architecture/0001-bff-lite-decision-dtos.md)
- `backend/src/BigRegister.Api/Data/ApplicationStore.cs` (the `Aanvraag` entity, the store's - `backend/src/BigRegister.Api/Data/ApplicationStore.cs` (the `Aanvraag` entity, the store's
lock discipline, `AanvraagStatusTag`, `RecordBesluit`) lock discipline, `AanvraagStatusTag`, `RecordBesluit`)
- `backend/src/BigRegister.Api/Contracts/Mappers.cs` (`ToStatusDto` — the logic to move) - `backend/src/BigRegister.Api/Contracts/Mappers.cs` (`ToStatusDto` — the logic to move)
@@ -39,7 +39,7 @@ re-validates as authority) is unenforced for the one rule it was written to illu
- `backend/src/BigRegister.Api/Domain/Intake/IntakePolicy.cs` (the corrected doc-comment, - `backend/src/BigRegister.Api/Domain/Intake/IntakePolicy.cs` (the corrected doc-comment,
WP-68) WP-68)
- [ADR-0001 — BFF-lite + decision DTOs](../../reference/architecture/0001-bff-lite-decision-dtos.md) - [ADR-0001 — BFF-lite + decision DTOs](../../../reference/architecture/0001-bff-lite-decision-dtos.md)
§"config value" §"config value"
- `apps/ssp/src/app/herregistratie/domain/intake.machine.ts` (`lageUren`, `scholingGevolgd`, - `apps/ssp/src/app/herregistratie/domain/intake.machine.ts` (`lageUren`, `scholingGevolgd`,
`punten` — the wizard's existing FE-side rule and its answers) `punten` — the wizard's existing FE-side rule and its answers)

Some files were not shown because too many files have changed in this diff Show More