Phase 1 · HTML Everything · Output 02

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.

Phase 1Active · Inventory in ProgressOutput 02 of 06
State rule. Not every state applies everywhere. Each relevant state must ultimately be marked Required, Not applicable, or Not yet decided. A state must never remain silently assumed.

A · Truth-State Vocabulary

Check every relevant surface
Normal

Normal + Success

  • representative populated state
  • selected / active state
  • completed/success state when visually material
No Data

Empty + No Results

  • first-use empty state
  • search/filter zero-results
  • helpful recovery/next action
Waiting

Loading + Stale + Partial

  • loading / pending
  • stale / last-known data
  • partial / delayed availability
Failure

Error + Unavailable

  • recoverable failure
  • external-service outage
  • retry / alternate path
Access

Restricted + Locked

  • permission denied
  • locked / read-only
  • never disguise forbidden as empty
Danger

Destructive / Irreversible

  • confirmation
  • consequence text
  • cancel path
  • archive vs delete where applicable

B · Control & Interaction States

Only when the control is actually used
Controls

Interactive 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
Data Interaction

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
Layers

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
Navigation

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
SurfaceState reviewStatus
Application Family Front / Tile PageNormal, authenticated context, app available/unavailable when used, phoneNot yet decided
Household Ledger app entryEntry context, default landing, restricted/locked if applicableNot yet decided
Grocery app entryEntry context, Home landing, restricted/locked if applicableNot yet decided
Cross-app return / switchingCurrent app, return, target selection, unavailable target if applicableNot yet decided

D · Household Ledger Application Envelope

Independent from destination coverage
Surface familyImportant states to resolveStatus
Desktop / Phone ShellActive destination, utility-open, mobile nav closed/open, restricted destination if applicable, app switchingNot yet decided
Household AdministrationPopulated, empty/first setup, edit, validation, restricted/locked, destructiveNot yet decided
Integrations / ConnectionsConnected, disconnected, setup, pending, sync/processing, error, unavailable, reconnect, disconnect confirmationNot yet decided
Import / Export / MigrationIdle, source selected, validation, processing, success, failure, partial/conflict, destructive confirmationNot yet decided
Operations / Status / Logs / QueuesHealthy, processing, queued, delayed/stale, failed, retrying, retry available, empty/no activityNot yet decided
Identity / Security / PermissionsNormal access, restricted, locked/read-only, permission denied, security confirmationNot yet decided
Global UtilitiesSearch open/results/no-results, Quick Add closed/open/blocked, notifications none/unread/open, profile/account closed/open/edit/sign-outNot yet decided
Settings / Help / OnboardingDefault, dirty/changed, saved, validation/error, first-use, in-progress, completed/dismissedNot yet decided

E · Household Ledger Destinations

Baseline review before exact applicability is ruled

Overview

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 coverage
Hard rule: Grocery must be checked independently against the whole state inventory. “Household Ledger has it” does not prove Grocery has the states its own shell, settings, integrations, workflows, and controls require.

Home

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.