diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-11 02:13:15 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-11 02:13:15 -0500 |
| commit | 06ca6c7c0a825fa9fed66cf17f94be8c0ed4d3da (patch) | |
| tree | 1f6f35a0822eecf722d9f786cd256f02c09a737f | |
| parent | 8ddd3d3d57a9c83a4905414e919d2f05a23bf9cd (diff) | |
| download | rulesets-06ca6c7c0a825fa9fed66cf17f94be8c0ed4d3da.tar.gz rulesets-06ca6c7c0a825fa9fed66cf17f94be8c0ed4d3da.zip | |
docs(todo-format): warn against double-counting rarity in the bug matrix
Grading a bug's severity by how rare it is to enter the failure state double-counts the frequency axis, which already carries that rarity. It buries the compounding bugs, the ones where a rare trigger produces unbounded harm. Three rules added to the severity × frequency section: grade severity by the rate of harm once the failure state is entered, record the band, row, and arithmetic in the task body so a misgrade can be re-checked against the source, and disagree with a grade by fixing an input rather than overriding the letter.
A chime watchdog bug graded [#D] moved to [#C] an hour later, once the read was written down and re-checked.
| -rw-r--r-- | claude-rules/todo-format.md | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/claude-rules/todo-format.md b/claude-rules/todo-format.md index 5e9ca32..2cdc76c 100644 --- a/claude-rules/todo-format.md +++ b/claude-rules/todo-format.md @@ -110,6 +110,29 @@ the letter mapping are fixed. and safety issues are graded on severity alone — one occurrence with the right consequences is a showstopper no matter how rarely it would be hit. +**Don't double-count rarity.** Grade severity by the rate of harm once the +failure state is entered, not by how rare it is to enter. Frequency already +carries the rarity; letting it discount severity too grades the same fact twice, +and that buries exactly the bugs that compound — the ones where a rare trigger +produces unbounded harm. A leak that repeats every timeout period until the +process restarts is Major even when reaching that state is a rare edge case +("accumulates slowly" describes a bounded trickle, not a fixed-rate leak with no +workaround). Grade the *being-in-it*, and let the frequency row carry the +*getting-into-it*. + +**Record the grading in the task body.** State the severity band, the frequency +row, and the arithmetic (e.g. "Major severity × rare edge case = P3 = [#C]"). A +bare priority cookie can't be argued with; a stated read can be re-checked +against the source and corrected. This is what lets a misgrade move — a chime +watchdog bug went [#D] → [#C] an hour after grading precisely because the read +was written down and re-checked. + +**Disagreeing with a grade means fixing an input.** If a letter looks wrong, +don't override the letter — re-read the severity band and the frequency row +against the source and correct whichever input is wrong. Overriding the cookie +directly turns the matrix into a formality and puts you back to grading by +instinct, which is the thing it exists to replace. + ## The Rule A todo entry has two parts: |
