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>
8.3 KiB
RD-18 — Strip the WP-/RB- ticket references from apps/ and libs/
Status: done Source: PLAN.md Phase 2, item 4
Why
204 WP-NN/RB-NN references sit in comments across 104 files in apps/ and libs/. They
record which ticket introduced a line. git blame already records that, and it stays correct
when the code moves. The comment does not: it names a closed ticket, and the reader who chases
it learns nothing the surrounding sentence did not already say.
The sweep removes the reference and keeps the sentence. It changes no behaviour.
Read first
libs/shared/docs/a11y.mdxlines 14, 20, 28 and 68 — three references to strip and one to keep, in one file. It is the clearest example of the rule in decision 2.libs/shared/src/ui/task-list/task-list.stories.ts:17— an exempt reference, and why.scripts/gen-behaviour-spec.mjs:183— the generated document's header text.- The README's rule: "No ticket leaves a check disabled without an inline reason and a reference to the ticket that removes it."
Decisions (pre-made, don't relitigate)
-
Strip
WP-NNandRB-NN. Keep everyADR-000x. ADR references point at documents that exist and that the reader must read. There are 50 of them in scope; the count must not move.CD-does not appear anywhere in this repo — do not go looking for it. -
Eleven references are exempt, in six files. A reference survives when it names an obligation that is not yet discharged, rather than recording history:
File Refs Why exempt registratie/ui/aanvraag-block/aanvraag-block.stories.ts2 justifies a11y: { disable: true }registratie/ui/dashboard/wat-moet-ik-regelen.section.stories.ts2 justifies a11y: { disable: true }libs/shared/src/ui/choice-link/choice-link.stories.ts2 justifies a11y: { disable: true }libs/shared/src/ui/choice-list/choice-list.stories.ts2 justifies a11y: { disable: true }libs/shared/src/ui/task-list/task-list.stories.ts2 justifies a11y: { disable: true }libs/shared/docs/a11y.mdxline 68 only1 points at WP-13's marker convention The five story files each disable an accessibility check. The README forbids leaving a check disabled without naming the ticket that removes it, so stripping WP-11 there would break a rule this arc enforces. Do not edit those five files at all.
a11y.mdxis edited: lines 14, 20 and 28 are provenance and go; line 68 stays. -
Thirteen references live in
describe/ittitles. Strip them there too. A spec title is documentation the generator publishes, so the reference reacheslibs/shared/docs/behaviour-spec.mdxand shows up in the rendered behaviour spec. -
Never hand-edit
behaviour-spec.mdx. It is generated. Fix the spec titles, then runnpm run gen:behaviour-spec. Its 14 references disappear on their own — except one. -
The exception in decision 4 is the generated file's header.
behaviour-spec.mdx:4says "the compile-time guarantees WP-70 bought". That sentence comes fromscripts/gen-behaviour-spec.mjs:183, not from a spec. Edit the generator. Fix the duplicate of the same sentence in that file's own header comment at line 4 while you are there. This is the one file outsideapps/+libs/that this ticket touches. -
Two sentences need a rewrite, not a deletion. Deleting the reference alone leaves them meaningless:
subject.interceptor.spec.ts:45— the title ends "(WP-33-style stickiness)". The reference is the adjective. Rewrite the parenthetical as "(sticky per tab)".apps/ssp/src/index.html:14— "(WP-25 inlines this same file)". The subject is the backend renderer. Rewrite as "(the backend inlines this same file)".
-
Keep the sentence readable, not merely shorter.
passage-picker.component.ts:13-14reads "Superseded bybesluit-panel(WP-27's guided drafting)" and "no consumer left … (WP-28 audit)". Strip to "Superseded bybesluit-panel's guided drafting" and "no consumer left … outside its own story". A stripped line must not leave an empty(), a stranded "see", or a doubled space.
Files
apps/ and libs/, minus the five exempt story files, plus
scripts/gen-behaviour-spec.mjs. About 99 files change.
This is the one ticket type where an acceptance command should address a whole directory
rather than a file list: the sweep's contract is "no reference survives in apps or libs
except the listed eleven". Enumerating 99 files would restate the sweep, not check it.
Steps
- Strip the references outside the six files in decision 2. Work directory by directory so the diff stays reviewable.
- Apply the rewrites in decisions 6 and 7.
- Edit
scripts/gen-behaviour-spec.mjsper decision 5. - Run
npm run gen:behaviour-spec. git add -A, then run the acceptance commands.- Update this ticket's
Status:todoneand the README's RD-18 row todone. - Commit all of it together.
Acceptance criteria
Measured against the tree before handover. git grep -o … | wc -l counts occurrences;
git grep -c would count lines and give a different, wrong number.
git grep -oE "\b(WP|RB)-[0-9]+" -- apps libs | wc -l # is 204 -> MUST be 11
Those eleven are exactly the exempt ones, all inside the six files of decision 2:
git grep -hoE "\b(WP|RB)-[0-9]+" -- \
apps/ssp/src/app/registratie/ui/aanvraag-block/aanvraag-block.stories.ts \
apps/ssp/src/app/registratie/ui/dashboard/wat-moet-ik-regelen.section.stories.ts \
libs/shared/src/ui/choice-link/choice-link.stories.ts \
libs/shared/src/ui/choice-list/choice-list.stories.ts \
libs/shared/src/ui/task-list/task-list.stories.ts \
libs/shared/docs/a11y.mdx | wc -l # is 14 -> MUST be 11
The five story files are untouched, so their disables keep their justification:
git diff --name-only HEAD -- '*.stories.ts' | grep -cE "aanvraag-block|wat-moet-ik-regelen|choice-link|choice-list|task-list" # MUST be 0
The ADR references all survive, and the sweep leaves no damaged prose:
git grep -oE "ADR-[0-9]+" -- apps libs | wc -l # unchanged: 50
git grep -nE "^\s*(//|\*|1\.|\|).*\s\(\)" -- apps libs | wc -l # unchanged: 0
git grep -nE "^\s*(//|\*).*[a-z] [a-z]" -- apps libs | wc -l # unchanged: 0
npm run ci --full # exits 0
Verification
--full is required, although the README's Order table leaves that column blank for this
ticket. The table is wrong here: the sweep edits four .mdx files (a11y.mdx,
cibg-gaps.mdx, layers.mdx, and the generated behaviour-spec.mdx), and the README's own
rule says an .mdx edit needs --full. Fix the column to yes in the same commit.
The behaviour-spec drift check inside npm run ci is what proves step 4 was run. If it fails,
you edited behaviour-spec.mdx by hand or skipped the regeneration.
Out of scope
backend/— 370 references across 86 files. RD-19 owns them.docs/,.claude/,e2e/,scripts/— except the one generator file in decision 5.- The five exempt story files (decision 2). Fixing the markup that makes their a11y disables necessary is WP-11's job, not this ticket's.
- Rewording a comment beyond what removing the reference requires. This ticket is a sweep, not a documentation pass.
Risks
git grep, nevergrep -r.grep -rreaches gitignored build output and inflates every count.- A reference inside a spec title changes a generated document. Strip the title, then
regenerate. Editing the
.mdxdirectly leaves the spec title unchanged, and the next regeneration silently puts the reference back. - The generator's header is not a spec title (decision 5). It is the one reference that
regeneration cannot remove, because it comes from
scripts/. - Do not open the five exempt story files. An edit there is the one way this ticket can break a rule the README enforces.
- 204, not the 181 that PLAN records. The arc's own commits added references since PLAN was measured. Trust the command, not the prose.