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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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/
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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
|
||||||
+1
-1
@@ -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)
|
||||||
+1
-1
@@ -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
Reference in New Issue
Block a user