From bcac3789d3aa0a5d8a85fefe3d20926a35ea5732 Mon Sep 17 00:00:00 2001 From: Edwin van den Houdt Date: Sat, 5 Sep 2026 00:03:30 +0200 Subject: [PATCH] docs: fix RD-25's decision 4, and name the pattern behind three misses Decision 4 said the parent keeps seven outputs while decision 5, four lines below, said all eleven remain and are re-emitted from children. Seven is how many the parent raises; eleven is how many it declares. The acceptance line copied the wrong one, and satisfying it would have broken `org-template.page.ts`, which binds all eleven. RD-08, RD-23 and RD-25 are the same mistake: a decision describes the design in one vocabulary, and the acceptance line counts something else that shares a word. Name what the command counts before writing the number. Co-Authored-By: Claude Opus 5 --- .../RD-25-org-template-editor.md | 19 +++++++++++++------ docs/project/readable-codebase/README.md | 12 +++++++++++- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/docs/project/readable-codebase/RD-25-org-template-editor.md b/docs/project/readable-codebase/RD-25-org-template-editor.md index b34c5b0..0c187d7 100644 --- a/docs/project/readable-codebase/RD-25-org-template-editor.md +++ b/docs/project/readable-codebase/RD-25-org-template-editor.md @@ -63,12 +63,19 @@ whole. They live beside the parent, in `apps/ssp/src/app/brief/ui/org-template-editor/`. -4. **The parent keeps seven outputs, not the five PLAN estimated.** `selectSubOrg`, - `templateEdit`, `marginEdit`, `requestPublish`, `confirmPublish`, `cancelPublish`, - `proefbrief`. The publish trio stays with the parent because publishing acts on the whole - draft, not on the version list; only `rollback` is history's own verb. PLAN's "→ 5" was an - estimate made before the outputs were mapped to blocks — its line estimate (~222) is the part - that matches this split. +4. **Seven of the eleven outputs are raised by the parent's own markup; four are re-emitted + from a child.** The parent's own: `selectSubOrg`, `templateEdit`, `marginEdit`, + `requestPublish`, `confirmPublish`, `cancelPublish`, `proefbrief`. The publish trio stays + with the parent because publishing acts on the whole draft, not on the version list; only + `rollback` is history's own verb. + + **Corrected while the ticket ran. This decision first read "the parent keeps seven outputs", + and its acceptance line demanded seven `output()` declarations — which contradicts decision + 5 in the same block.** Seven is how many outputs the parent _raises itself_. All eleven are + still _declared_ on the parent, because a child's output is re-emitted, not removed: + `org-template.page.ts` binds all eleven directly, and that file is out of scope. PLAN's + "→ 5" was a pre-measurement estimate of the same classification; its ~222-line estimate is + the part that matches (the split lands at 229). 5. **The parent's public surface does not change.** All 11 outputs still exist on the parent and still fire; two clusters are simply re-emitted from children. `org-template.page.ts` and the diff --git a/docs/project/readable-codebase/README.md b/docs/project/readable-codebase/README.md index 78f2bb7..398aeda 100644 --- a/docs/project/readable-codebase/README.md +++ b/docs/project/readable-codebase/README.md @@ -198,7 +198,17 @@ Three rules when you write a ticket file, because the agent reads its ticket and while its acceptance demanded zero occurrences of `dispatch` in the step files. **Grep the text your own mandated snippet contains, and you have written a check that cannot pass.** Anchor on what you actually forbid: here, `this.dispatch` or `store.dispatch`, not the bare - word. + word. RD-25 made it a third time, and the clearest one: its decision 4 said "the parent + keeps seven outputs" while decision 5, four lines below, said all eleven still exist and + are re-emitted from children. Seven was the count of outputs the parent _raises_; eleven is + the count it _declares_. The acceptance line copied the wrong one, and satisfying it would + have broken `org-template.page.ts`, which binds all eleven. + + **The pattern in all three: a decision describes a design in one vocabulary, and the + acceptance line counts something else that happens to share a word.** Before writing a + number, say out loud what the command counts — declarations, call sites, or matching lines + — and check that the decisions use that same meaning. + - RD-09 grepped `docs/ apps/ libs/ .claude/`, which also matched this backlog's own ticket files (they name the deleted method as the history of `done` work) and 22 gitignored abandoned worktrees. Satisfying it literally would have corrupted completed-ticket