refactor: strip WP-/RB- ticket refs from apps and libs (RD-18)

204 WP-NN/RB-NN comments named a closed ticket instead of the code they
sit next to. git blame already records history and stays correct when
code moves; the comment does not. This sweep removes the reference and
keeps the sentence, across 95 files in apps/ and libs/ plus the
behaviour-spec generator's header text.

Eleven references stay: five story files justify an a11y disable per
the README's rule, and one line in a11y.mdx documents that convention.
Two sentences needed a rewrite, not a deletion, so the reference's
meaning survives its removal. behaviour-spec.mdx is regenerated, not
hand-edited.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
eho
2026-09-04 21:23:07 +02:00
co-authored by Claude Sonnet 5
parent 3895588b9a
commit dd11eafe50
102 changed files with 361 additions and 197 deletions
+3 -3
View File
@@ -11,13 +11,13 @@ what the ones below/above it can't.
## The layers
1. **Axe on every story** (WP-01) — `@storybook/addon-a11y` in the panel, plus
1. **Axe on every story** — `@storybook/addon-a11y` in the panel, plus
`@storybook/test-runner` + `axe-playwright` gating CI (`npm run test-storybook:ci`).
Catches structural/contrast/ARIA-shape violations on every component, automatically,
as soon as a story exists. Escape hatch: `parameters: { a11y: { disable: true } }`,
only with an inline justification comment + a cross-reference to the WP that will fix
it (see e.g. `task-list.stories.ts`).
2. **Template a11y lint** (WP-17) — `angular-eslint`'s `templateAccessibility` config
2. **Template a11y lint** — `angular-eslint`'s `templateAccessibility` config
(`alt-text`, `label-has-associated-control`, `click`/`mouse-events-have-key-events`,
`interactive-supports-focus`, `valid-aria`, `no-autofocus`, …) running on every inline
template via `angular.processInlineTemplates` (this repo has no `.html` files — every
@@ -25,7 +25,7 @@ what the ones below/above it can't.
into a virtual file the template rules can lint). Catches missing alt text, unlabelled
controls, and interactive elements that can't be reached by keyboard — at lint time,
before a story even exists.
3. **Play tests** (WP-16) — Storybook stories assert the wiring axe/lint can't see:
3. **Play tests** — Storybook stories assert the wiring axe/lint can't see:
`form-field.stories.ts`'s canonical composition asserts `aria-describedby` joins
`-desc`/`-error` in the right order; `alert.stories.ts` asserts `role="alert"` for
errors vs `role="status"` for info/ok/warning. These run as part of the same
+14 -14
View File
@@ -1,7 +1,7 @@
{/* GENERATED by `npm run gen:behaviour-spec` (scripts/gen-behaviour-spec.mjs) — do not
edit. Every bullet below is a real `it()` title or backend test method name, extracted
verbatim from the suite. The team rejected Cucumber/Gherkin for BDD scenarios (runtime string
matching undoes the compile-time guarantees WP-70 bought, and needs two frameworks for
matching undoes the compile-time guarantees the TypeScript compiler bought, and needs two frameworks for
.NET+TS) — this page is the replacement: business-readable documentation generated FROM test
names, so it can never drift from what the suite actually asserts. A test name changing (or a
test being added/removed) is the only way this page changes; hand-editing it is pointless,
@@ -108,13 +108,13 @@ classes.
### beheer
#### StamdataStore undo/redo (WP-32)
#### StamdataStore undo/redo
- records a cell edit, undoes and redoes it
- records addRow and undoes it
- clears history when switching table
#### StamdataStore.download (RB-28)
#### StamdataStore.download
- does not call the presenter while the two-clause guard blocks (nothing dirty yet)
- does not call the presenter while previewing a date, even with edits
@@ -186,14 +186,14 @@ classes.
- flushes a pending debounced edit immediately and clears the pending flag
- is a no-op when no edit is pending
#### BriefStore.load — 404 tolerance (RB-22)
#### BriefStore.load — 404 tolerance
- a 404 drives exactly one reset(), which populates the store
- a second 404 does not drive a second reset()
#### BriefStore.previewLetter
- opens the composed letter via BLOB_PRESENTER on success (RB-28)
- opens the composed letter via BLOB_PRESENTER on success
- surfaces the error without opening a tab on failure
#### BriefStore.revealBigNummer (PRD-0002 §5c)
@@ -206,7 +206,7 @@ classes.
- sends no X-Role/X-Subject headers outside isDevMode()
- sends X-Role (and X-Subject when known) under isDevMode()
#### OrgTemplateStore.proefbrief (RB-28)
#### OrgTemplateStore.proefbrief
- opens the rendered proefbrief via BLOB_PRESENTER on success
- surfaces the error without opening a tab on failure
@@ -372,7 +372,7 @@ classes.
- low uren requires the scholing question, and punten only once scholing is followed
- buitenland gewerkt requires land and hours abroad before advancing
- gaNaarStap corrects an earlier answer without losing later ones
- raising uren above the threshold after answering scholing drops both fields (WP-69 §6)
- raising uren above the threshold after answering scholing drops both fields
- SetPolicy (server-owned threshold) can turn an already-answered uren into one that now requires scholing
#### intake hasProgress
@@ -419,8 +419,8 @@ classes.
- reaches Submitting ONLY with valid answers
- punten is required only when aanvullende scholing was gevolgd
- low hours requires the scholing answer before submit
- does not require punten for a hidden question (WP-69 §6)
- drops punten when raising uren hides the question (WP-69 §6)
- does not require punten for a hidden question
- drops punten when raising uren hides the question
- resolve maps Submitting to Submitted on a successful submit
- resolve maps Submitting to Failed on a failed submit
@@ -501,7 +501,7 @@ classes.
- resolves ok with the server response on success
- folds a rejected submit into a Result error, never throwing
- recovers from a create conflict by adopting the existing Concept (WP-35)
- recovers from a create conflict by adopting the existing Concept
#### createSubmitChangeRequest
@@ -863,8 +863,8 @@ classes.
- parses a known capability list
- parses an empty list (drafter — no capabilities)
- recognizes the admin org-template capability (WP-23)
- recognizes the behandelportal besluit capability (WP-66)
- recognizes the admin org-template capability
- recognizes the behandelportal besluit capability
- drops unrecognized capability strings instead of rejecting the response
- rejects malformed responses instead of trusting them
@@ -950,7 +950,7 @@ classes.
- falls back to default when nothing is set or the value is invalid
- setScenario persists the chosen scenario
#### stripDevParams (WP-37)
#### stripDevParams
- removes ?scenario and ?role so the stored dev value wins on reload
- keeps unrelated query params and the path/hash
@@ -959,7 +959,7 @@ classes.
#### 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)
- keeps stamping later requests on the same tab after the query param is gone (sticky per tab)
- leaves a non-API request untouched even when a subject is known
- sends no header at all when no subject has ever been seen
+2 -2
View File
@@ -25,7 +25,7 @@ placed above the `@Component` decorator, plus `parameters: { cibgGap: true }` an
| --------------------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `skeleton` | Laadindicatie | No loading-skeleton class in the vendored build. |
| `spinner` | Laadindicatie | No loading-spinner class in the vendored build. |
| `rich-text-editor` | Tekstgebied | No rich-text/WYSIWYG pattern; toolbar buttons still use vendored `.btn-ghost` (WP-10). |
| `rich-text-editor` | Tekstgebied | No rich-text/WYSIWYG pattern; toolbar buttons still use vendored `.btn-ghost`. |
| `wizard-shell` (error summary only) | Foutmelding | No error-summary/Veldvalidatie list class; renders inside a vendored `.feedback-error` alert. |
| `application-link` (non-navigating row) | Aanvragen | The vendored `.dashboard-block.applications li a` chain only styles `<a>`; `.static-row` mirrors it from tokens for the informational (non-link) case. |
| `debug-state` | n/a | Dev-only tool, deliberately off-theme — see the component's own `ponytail:` note. |
@@ -36,7 +36,7 @@ placed above the `@Component` decorator, plus `parameters: { cibgGap: true }` an
Not a gap: `confirmation` renders entirely with vendored `.confirmation*` classes (no `styles:
[...]` block) — its header comment names the pattern, no marker needed. The `upload/` suite
renders entirely with vendored classes (`.file-picker-drop-area`, `.btn-upload`, …) — reworked
onto them rather than marked (see WP-11's correction note). `task-list`, `application-list`, and
onto them rather than marked. `task-list`, `application-list`, and
`choice-list` each wrap a distinct vendored pattern (Keuzelijst / Aanvragen / Keuzelijst) and name
it in their own header comment — no marker needed, they don't hand-roll surface CSS.
+1 -1
View File
@@ -95,7 +95,7 @@ context, so the per-context scoping rule never applies to it in the first place.
`npm run lint` (`eslint.config.mjs`) is a separate gate — mainly the `any`-free rule —
and no longer carries the import-boundary rules above (moved to dependency-cruiser,
WP-38/WP-67, so they don't have to be hand-copied per context).
so they don't have to be hand-copied per context).
## The English/Dutch seam