R2.03.1State-space checklist coveragedesign

Checklists must cover states and edge cases

Aliases: state-space coverage · default-state bias · missed edges · inspection matrix

What it is

A consistency checklist must cover a component’s state space, not the default screenshot cell. Hover, disabled, loading, empty, error, overflow copy, permission denied — each cell may have borrowed another spacing, another tone, another reachability than the default. Watching only the default inspects the region the team already aligned; products fork in the cells someone patched in late.

Coverage is not a longer list. It is the inspection actually stepping into those cells. If the list has no step “open the empty list”, empty-list inconsistency cannot be found by that list.

Why it happens

The default cell is the one that was drawn, demoed, and looked at together, so disagreement is smallest. Other cells are often filled during implementation by habit: error in a different red, empty in a different voice, disabled that still looks clickable. Those cells never enter the demo, so they never enter shared memory. A checklist that retells the demo path samples the agreed cells and misses the improvised ones.

States also stack. Loading over a filled form, error over overflow copy — combination cells outnumber single cells. The list need not enumerate the Cartesian product, but it must name high-harm combinations and guarantee each component at least visits empty, error, disabled, and overflow. Otherwise “we covered states” decays into “we hovered once”.

Where it stops holding

A one-shot terminal page with no empty or error to visit has a thin state space; inventing cells inspects a fiction. When staging cannot fabricate permission-denied, the coverage claim must say “this cell was not walked”, not convert absence into pass. Frames inside a motion are not state cells; the cell that motion lands on is. A personalized home with a cell per user changes the strategy to quantile samples (empty, typical, packed), not a pretense of walking every user.

Applying it

  • Build a default / empty / loading / error / disabled / overflow matrix per component under inspection; write steps per cell, not per page.
  • Give high-harm combinations their own step (error+overflow, loading+filled). Do not hope a single-cell step collides with them.
  • Mark unreachable cells “not walked”. Never fill them with a default-cell pass.
  • How to check: take the last checklist run and count ticked cells. Ticks only in the default column, or empty/error blank while the run is marked pass, is coverage failure. Then pick one component, open only its empty and error, and see whether the list has steps that can even be executed there.

Related

  • Same group: R2.03.2 Automation can only police the numeric layer · R2.03.3 Semantic consistency requires human judgment · R2.03.4 Every checklist item must be answerable yes or no · R2.03.5 Order items by how cheap they are to find · R2.03.6 Grow the list from defect reviews, not from taste
  • Adjacent: R1.03 Component state completeness · R2.05 Edge-case delivery completeness
  • Search terms: state space · edge cases · checklist coverage · empty error disabled

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/R2.03.1