docs: close WP-72..75, regenerate behaviour spec
CI / changes (push) Successful in 8s
CI / lint (push) Successful in 1m9s
CI / frontend (push) Successful in 2m27s
CI / backend (push) Successful in 1m56s
CI / e2e (push) Successful in 3m16s
CI / semgrep (push) Successful in 1m7s
CI / api-client-drift (push) Successful in 1m50s
CI / storybook-a11y (push) Successful in 11m4s

Four close-outs and their README rows. The behaviour spec is regenerated
once here rather than per-track — it derives from every test name in the
repo, so any track running it would have conflicted with the other three.

Records two findings the arc surfaced but did not cause: the /brief/preview
staleness for non-DemoOwner identities (blocking per-spec identity isolation
in brief-v2.spec.ts), and that WP-72/73 had to share a commit because both
edit Program.cs — separate execution waves prevented build collisions but
did not produce separable diffs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
eho
2026-08-19 16:34:54 +02:00
co-authored by Claude Sonnet 5
parent 6fa27d1c53
commit ae7781efef
6 changed files with 317 additions and 10 deletions
+16 -10
View File
@@ -20,8 +20,8 @@ tested where._
Every bullet below is a real test name from the suite — an `it()` title (frontend) or a test
method name (backend), read as a sentence. Nothing here is hand-written prose: this page
**is** the suite, reshaped for a business reader. 404 frontend behaviours across
8 contexts; 219 backend behaviours across 35 test
**is** the suite, reshaped for a business reader. 406 frontend behaviours across
8 contexts; 217 backend behaviours across 36 test
classes.
## Frontend (by context)
@@ -541,11 +541,9 @@ classes.
#### registration.policy
- only an active registration within the window is eligible
- struck-off / suspended registrations are never eligible
- statusLabel echoes the tag
- statusColor is total over the union
- a well-formed status is always consistent
- a Geregistreerd status without its herregistratieDatum is inconsistent
- herregistratieDeadline is only set for an active registration
#### submit
@@ -768,6 +766,13 @@ classes.
- keeps unrelated query params and the path/hash
- is a no-op when neither param is present
#### subjectInterceptor
- stamps X-Subject on an /api/v1/ request once ?subject= has been seen
- keeps stamping later requests on the same tab after the query param is gone (WP-33-style stickiness)
- leaves a non-API request untouched even when a subject is known
- sends no header at all when no subject has ever been seen
#### upload lifecycle messages
- queued → progress → complete
@@ -922,8 +927,6 @@ classes.
- IntakePolicy returns scholing threshold
- Registration with duo diploma succeeds
- Registration with manual diploma is rejected with problem details
- Zero hours submission is rejected
- Worked hours submission succeeds
- Change request with valid phone succeeds
- Change request with bad phone is rejected
- Health endpoint is ok
@@ -952,7 +955,6 @@ classes.
- Not eligible before window
- Eligible on window boundary
- Suspended is not eligible
- Status consistency invariant
### IdempotencyTests
@@ -977,7 +979,6 @@ classes.
- Punten without gevolgd is rejected
- Herregistratie is unaffected by the intake only gate
- Zero uren is still afgewezen not a 400
- Legacy intakes endpoint enforces it too
### LetterHtmlTests
@@ -1040,6 +1041,11 @@ classes.
- Rejects a margin outside the allowed range
- Accepts margins on the boundary
### PhoneFormatContractTests
- A leading plus31 is accepted like the frontends normalised form
- Parentheses around the area code are accepted like the frontend
### PreviewEndpointTests
- Preview of an unsent brief renders live with a watermark