Visual State Inventory
The explicit list of visually meaningful conditions the product must support. Output 01 tells us which surfaces exist. Output 02 tells us what those surfaces must look like when they are empty, open, filtered, locked, failing, loading, restricted, destructive, or otherwise materially different.
A · Truth-State Vocabulary
Check every relevant surfaceNormal + Success
- representative populated state
- selected / active state
- completed/success state when visually material
Empty + No Results
- first-use empty state
- search/filter zero-results
- helpful recovery/next action
Loading + Stale + Partial
- loading / pending
- stale / last-known data
- partial / delayed availability
Error + Unavailable
- recoverable failure
- external-service outage
- retry / alternate path
Restricted + Locked
- permission denied
- locked / read-only
- never disguise forbidden as empty
Destructive / Irreversible
- confirmation
- consequence text
- cancel path
- archive vs delete where applicable
B · Control & Interaction States
Only when the control is actually usedInteractive controls
- Buttons: primary, secondary, destructive, disabled
- Tabs: selected / unselected
- Dropdowns: closed / open / selected / disabled
- Accordions: collapsed / expanded
- Toggles: on / off / locked
- Date/time controls: closed / open / selected / invalid when meaningful
Search, filters, forms & lists
- Search: idle, typing/results, no-results
- Filters/chips: default, applied, cleared, zero-results
- Forms: blank/create, populated/edit, validation/error, locked/read-only
- Tables/lists: populated, empty, filtered, selected, phone treatment
- Upload/import: idle, selecting, processing, success, failure/conflict
Above-page layers
- Drawer: closed / open
- Modal: closed / open / confirmation / validation
- Popover/overflow: closed / open
- Command palette: closed / open / results / no-results
- Transient feedback where part of the visual language
Shell & context states
- active/current destination
- mobile navigation closed/open
- app switch / return
- selected household/workspace/person when used
- restricted destination where applicable
C · Platform / Application Family
State review is still required outside app destinations| Surface | State review | Status |
|---|---|---|
| Application Family Front / Tile Page | Normal, authenticated context, app available/unavailable when used, phone | Not yet decided |
| Household Ledger app entry | Entry context, default landing, restricted/locked if applicable | Not yet decided |
| Grocery app entry | Entry context, Home landing, restricted/locked if applicable | Not yet decided |
| Cross-app return / switching | Current app, return, target selection, unavailable target if applicable | Not yet decided |
D · Household Ledger Application Envelope
Independent from destination coverage| Surface family | Important states to resolve | Status |
|---|---|---|
| Desktop / Phone Shell | Active destination, utility-open, mobile nav closed/open, restricted destination if applicable, app switching | Not yet decided |
| Household Administration | Populated, empty/first setup, edit, validation, restricted/locked, destructive | Not yet decided |
| Integrations / Connections | Connected, disconnected, setup, pending, sync/processing, error, unavailable, reconnect, disconnect confirmation | Not yet decided |
| Import / Export / Migration | Idle, source selected, validation, processing, success, failure, partial/conflict, destructive confirmation | Not yet decided |
| Operations / Status / Logs / Queues | Healthy, processing, queued, delayed/stale, failed, retrying, retry available, empty/no activity | Not yet decided |
| Identity / Security / Permissions | Normal access, restricted, locked/read-only, permission denied, security confirmation | Not yet decided |
| Global Utilities | Search open/results/no-results, Quick Add closed/open/blocked, notifications none/unread/open, profile/account closed/open/edit/sign-out | Not yet decided |
| Settings / Help / Onboarding | Default, dirty/changed, saved, validation/error, first-use, in-progress, completed/dismissed | Not yet decided |
E · Household Ledger Destinations
Baseline review before exact applicability is ruledOverview
Normal · empty/first-use · loading/stale/partial if aggregated · error/unavailable if applicable · phone
Daily Command
Normal · nothing-needs-attention · filtered/selected if used · stale/partial · error/unavailable · restricted · phone
Communications
Normal · empty · filter/search/no-results · detail/open · loading/error · restricted · phone
Vision
Normal · empty/first-use · edit/configure · restricted/locked · archive/destructive if used · phone
Records
Populated · empty · search/results/no-results · filter · detail · create/edit · validation · restricted/locked · archive/delete · phone
Cash Flow
Normal · empty · time/filter state · loading/stale/partial · error/unavailable · restricted · phone
Matters
List · empty · search/filter/no-results · detail · create/edit · status changes · restricted/locked · close/archive · phone
Assets
List · empty · search/filter · detail · create/edit · validation · archive/delete · restricted · phone
Accounts
List · empty · detail · configure/edit · connected/disconnected where applicable · stale/error · restricted · destructive close/disconnect · phone
Binder
Populated · empty · search/filter/no-results · evidence detail · upload/processing · failure · restricted/locked · archive/delete · phone
F · Grocery — Independent State Review
Platform coverage does not prove bounded-app coverageHome
Needs-doing · nothing-needs-attention · partial/stale if applicable · phone
Inventory
Populated · empty · search/results/no-results · filter · item detail · create/edit · validation · staple states · House Check states · destructive · phone
Shop
Empty/populated list · quantities · selected/check-off · Shopping Mode active · undo · closeout · reconciliation · interruption/failure · phone
Meals
Planned week · empty/unplanned · past/current/future days · leftovers present/none · edit · handoff states where material · phone
Recipes
Library populated/empty · search/filter/no-results · detail · create/intake/edit · validation · Cookbooks · Cook Mode · missing/unavailable content · phone
Grocery App Envelope
Desktop/phone shell · Settings · app switching · integrations if owned · search/quick actions if used · sync/processing/error/retry if visible
Output 02 Close Gate
No state may remain merely implied- Every relevant route and application-level surface checked against the truth-state vocabulary.
- Every control actually used has its meaningful states established.
- Every drawer, modal, popover, command/search layer and other overlay used has relevant alternate states established.
- Empty never disguises restricted or unauthorized.
- Loading, stale/partial, failure, outage and retry states represented wherever they materially occur.
- Destructive actions show consequence and cancel paths.
- Household Ledger and Grocery checked independently.
- Every required state points to accepted HTML authority before Phase 1 closes.
- Omitted states are explicitly Not applicable rather than silently ignored.
- Owner accepts the completed Visual State Inventory.