From 1b89b45d21305242b0d6900b4cd1c9ffdbf56a7b Mon Sep 17 00:00:00 2001 From: Niek Otten Date: Mon, 13 Jul 2026 16:05:16 +0200 Subject: [PATCH] docs(backlog): split S-09 into portal (#10) and approval flow (#75) (refs #10) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The walking skeleton has only INGEDIEND and no approval/status-transition path, so the Openbaar portal (demoable against the existing public-safe BFF endpoint) and the approve→visible flow are separate slices. See #75 for the approval flow. Co-Authored-By: Claude Opus 4.8 (1M context) --- BACKLOG.md | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/BACKLOG.md b/BACKLOG.md index 9f82199..41b1b38 100644 --- a/BACKLOG.md +++ b/BACKLOG.md @@ -162,20 +162,36 @@ The skeleton proves the spine end-to-end: a registration, a workflow, a zaak in **Out of scope (whole of S-08):** document upload, status tracking page. -### S-09 · Openbaar Register portal — public lookup +### S-09 · Openbaar Register portal — public lookup *(#10)* -**Outcome:** The openbaar Angular app shows a search box. Anonymous. Queries the BFF's `/openbaar/register` which reads only the projection's **public-safe** fields. Confirms the walking skeleton end-to-end. +**Outcome:** The openbaar Angular app shows a search box. Anonymous. Queries the BFF's `/openbaar/register` which reads only the projection's **public-safe** fields. Shows the public-visibility half of the walking skeleton. + +_Split from the original S-09 — scoped to the portal only; the approval flow is **S-09b (#75)**._ **Acceptance:** -- E2E test: zorgprofessional registers via self-service (S-08), behandelaar approves via a temporary admin endpoint (no behandel-portal yet), openbaar register shows the entry. -- Public-safe field whitelist enforced and tested. +- E2E test: after a zorgprofessional registers via self-service (S-08), the openbaar register shows the entry (as `INGEDIEND`). +- Public-safe field whitelist enforced and tested (already in the BFF; add a portal component test + a11y check). -**Touches:** `apps/openbaar/`, projection-api hardening, tests. +**Touches:** `apps/openbaar/`, compose serving, e2e, docs. -**Out of scope:** advanced search filters, sorting. +**Out of scope:** approval/status transition (S-09b), advanced search filters, sorting. -**End of walking skeleton.** Demo: submit → process → projection → public visibility. All CI gates green on Gitea Actions. Cut release `vYYYY.MM.0` and publish via Gitea Releases. +### S-09b · Approval flow — temp admin endpoint + status transition to projection *(#75)* + +**Outcome:** A behandelaar approves a submitted registration via a temporary admin endpoint (no behandel-portal yet — S-12). The approval transitions the zaak status through the ACL → NRC → event-subscriber → projection, and the openbaar register then shows the entry as approved. + +**Acceptance:** + +- A new terminal/approved status (e.g. `INGESCHREVEN`) exists and is projected. +- Temporary admin approve endpoint transitions a registration via a real ZGW status set (behind the ACL, §8). +- E2E: register (S-08) → approve → openbaar shows the entry as approved. + +**Touches:** `services/domain`, `services/acl`, `services/event-subscriber`, `services/projection-api`, e2e. + +**Out of scope:** behandel-portal UI (S-12), assessment logic (S-13), escalation (S-15). + +**End of walking skeleton** (S-09 + S-09b). Demo: submit → process → projection → public visibility. All CI gates green on Gitea Actions. Cut release `vYYYY.MM.0` and publish via Gitea Releases. ---