Phase 1 · HTML Everything · Output 02

Visual State Inventory

Output 01 defines the visible surfaces. Output 02 defines the materially different conditions those surfaces and controls must visibly support before React begins. V2 adds state families that are commonly missed: unsaved work, conflicts, session changes, context switching, optimistic/queued work, mixed results, bulk actions, duplicate handling, pagination, and expired integration credentials.

Phase 1V2 · CurrentActive · Inventory in ProgressOutput 02 of 06
State rule. Not every state applies everywhere. Every relevant state must ultimately be classified Required, Not applicable, or Not yet decided. No visually meaningful condition may remain silently assumed.

A · Complete Truth-State Vocabulary

Check every relevant surface
Working

Normal + Success

  • representative populated state
  • active/selected state
  • successful completion where material
No Data

Empty + No Results

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

Loading + Pending

  • skeleton/progress
  • background pending
  • queued/unconfirmed work
Editing

Dirty + Autosave

  • unchanged → modified
  • saving → saved
  • save failure
  • unsaved-leave warning
Freshness

Stale + Partial

  • last-known data
  • delayed/incomplete data
  • do not pretend stale is current
Mixed Result

Partial Success

  • some actions succeed
  • some fail
  • show exactly what needs attention
Failure

Error + Outage

  • recoverable failure
  • dependency unavailable
  • retry/alternate path
Conflict

Concurrent Change

  • changed elsewhere
  • refresh/review differences
  • resolve/overwrite only where applicable
Access

Restricted + Locked

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

Expired + Reauthentication

  • session expired
  • sensitive action needs reauth
  • signed-out return path
Context

Context Switching

  • household/person/workspace switch
  • switching/loading
  • unavailable/restricted context
Danger

Destructive / Irreversible

  • confirmation
  • consequence
  • cancel path
  • archive vs delete

B · Conditional State Families

Explicitly check where relevant

Selection + Bulk Mode

None selected → one/many selected → bulk-action toolbar → processing → success/partial failure → selection cleared.

Pagination / Load More

Initial page, loading next page, end-of-list, failed next-page load where large datasets use progressive loading.

Duplicate / Merge

Existing match discovered during create/intake/import; review match, merge/use existing, or continue-new treatment where allowed.

Expired / Revoked Credentials

Authorization expired or revoked is distinct from a normal disconnected integration and needs a clear reconnect path.

C · Control & Interaction States

Only when the control is actually used
Forms

Edit lifecycle

  • blank/create
  • populated/edit
  • dirty/changed
  • saving/saved/save failed
  • validation
  • locked/read-only
  • unsaved-leave warning
Lists

Browse + selection

  • populated/empty
  • filtered/no-results
  • selected item
  • bulk mode when used
  • pagination/end-of-list when used
  • phone treatment
Intake

Upload / import

  • idle/selecting
  • validation
  • processing
  • success/partial success
  • failure
  • duplicate/conflict
Layers

Drawers, dialogs, popovers

  • closed/open
  • validation/error
  • enabled/disabled actions
  • destructive confirmation
  • phone presentation

D · Platform + App-Family State Checks

Outside ordinary destination pages
SurfaceStates to resolveStatus
Family Front / Tile PageAuthenticated context, app available/unavailable, session expired, phoneNot yet decided
Application EntryEntry context, initial destination, restricted/locked, reauth if applicableNot yet decided
App SwitchingCurrent app, return, target selection, unavailable target, context continuityNot yet decided
Household / Person / Workspace SelectorClosed/open, current selection, switching/loading, unavailable/restricted optionNot yet decided

E · Household Ledger Application Envelope

Independent whole-app state review
Surface familyBlind-spot-aware state reviewStatus
AdministrationFirst setup, populated, edit, dirty/saving/saved, validation, conflict, restricted/locked, destructiveNot yet decided
IntegrationsConnected, disconnected, setup, pending/syncing, outage/error, expired/revoked credentials, reconnect, disconnect confirmationNot yet decided
Import / Export / MigrationIdle, validation, processing, success, partial success, failure, duplicate/merge, conflictNot yet decided
Operations / QueuesHealthy, processing, queued/unconfirmed, delayed/stale, failed, retrying, retry available, emptyNot yet decided
Identity / SecurityNormal, restricted, locked, session expired, reauth/security confirmationNot yet decided
Settings / ProfileDefault, dirty, saving, saved, save failed, context switch, validation, sign-out/unsaved confirmationNot yet decided

F · Destination Blind-Spot Sweep

Minimum prompts; exact applicability is still ruled per destination

Records / Matters / Assets

Add dirty/saving, concurrent conflict, duplicate/merge where relevant, selection/bulk, pagination if used, session/context changes.

Accounts / Integrations

Add expired credentials, queued sync, partial success, conflict, reauth, destructive disconnect/close.

Binder / Communications

Add bulk selection if used, upload mixed results, duplicate/conflict, pagination/end-of-list, restricted/locked distinctions.

Overview / Cash Flow / Daily Command

Add context switching, stale-vs-current distinction, partial aggregation, session expiry, retry behavior where data loads fail.

Vision

Add dirty/autosave, save failure, conflict, unsaved-leave, archive/destructive state where used.

All Destinations

Explicitly rule Required / Not applicable / Not yet decided for each meaningful family rather than inheriting assumptions.

G · Grocery Independent Sweep

Household Ledger coverage does not prove Grocery coverage

Inventory

Duplicate/merge, dirty/saving, conflict, bulk selection if used, House Check states, destructive/archive, phone.

Shop

Optimistic/queued check-off, offline/interrupted shopping, undo, closeout, reconciliation, partial success/failure.

Meals

Edit/dirty/saving, conflict, planned/unplanned, leftovers, handoff state, phone.

Recipes

Dirty/saving, duplicate/merge on intake, validation, conflict, Cookbooks, Cook Mode, unavailable content.

Grocery Envelope

Session/context changes, Settings save lifecycle, integration credential expiry where applicable, background sync/queue/retry.

Hard Rule

Every bounded app is checked independently against the complete state vocabulary.

Output 02 Close Gate

No meaningful state may remain implied
  • Every relevant surface is checked against the complete truth-state vocabulary.
  • Dirty/saving/unsaved, conflict, session/reauth, context-switching, queued/unconfirmed, and partial-success states are explicitly ruled.
  • Selection/bulk, pagination/end-of-list, duplicate/merge, and expired-credential states are explicitly checked where relevant.
  • Every used control and overlay has its meaningful alternate states.
  • Empty never disguises restricted or unauthorized.
  • Failure/outage/retry and destructive consequence/cancel paths are visible where applicable.
  • Household Ledger and Grocery are checked independently.
  • Every Required state points to accepted HTML authority.
  • Omitted states are marked Not applicable.
  • Owner accepts the completed Visual State Inventory.