Source: two consecutive review rounds on #32, 2026-09-10, where the fix was right and the rule it belonged to was the defect.
Reached by: add a row type to a screen that has a per-row rule. The new type will not carry the rule, and nothing will fail.
Two rules on Home were written at each render site rather than in one place, and each reached most of its sites and missed one. In both cases the miss was the row type added last:
- The selection rule. Concern and agent rows read the focus flag; change rows, added by the recap work, did not. A selected change stayed highlighted while the reader was on a meter tile and Enter acted on the tile.
- The Timeline target. A row was identified by its cursor time, and every change detected in one sample carries that sample's time — so opening the second of three simultaneous changes always landed on the first.
Both are fixed and both are now single expressions. The pattern is what remains.
This is not forgetfulness. A rule spread across call sites has no single place to be wrong, so a new site that skips it produces no failure — and the test named for the rule usually exercises whichever site was written first. The focus test used a concern row alone, which is why it passed throughout.
The design pass (#38) adds row types to Home. The next one to arrive will meet the same shape.
Done when
- The screens under
src/ui/ are swept for per-site rules of this shape — a predicate or an identity computed at each render site rather than once — and each is reduced to one expression the sites read.
- Each rule found has one test that walks every row type the screen draws, asserting up front that the fixture really carries them all, so it cannot quietly narrow when a fixture changes.
Context
Source: two consecutive review rounds on #32, 2026-09-10, where the fix was right and the rule it belonged to was the defect.
Reached by: add a row type to a screen that has a per-row rule. The new type will not carry the rule, and nothing will fail.
Two rules on Home were written at each render site rather than in one place, and each reached most of its sites and missed one. In both cases the miss was the row type added last:
Both are fixed and both are now single expressions. The pattern is what remains.
This is not forgetfulness. A rule spread across call sites has no single place to be wrong, so a new site that skips it produces no failure — and the test named for the rule usually exercises whichever site was written first. The focus test used a concern row alone, which is why it passed throughout.
The design pass (#38) adds row types to Home. The next one to arrive will meet the same shape.
Done when
src/ui/are swept for per-site rules of this shape — a predicate or an identity computed at each render site rather than once — and each is reduced to one expression the sites read.Context
src/ui/home.tsx,src/ui/timeline-screen.tsx,src/ui/agents.tsx,src/ui/storage-screen.tsx.