Search

Search components, tokens, patterns, architecture

Patterns

Actionable Assumptions

When the engine fills a gap (no sleep logged → assume 6h), it says so in a red-tinted block — and every assumption ships with the button that fixes it. The sheet closes, and the right log screen opens 320ms later.

Assumed today

No sleep logged — assumed 6h. Wearable not connected.

The honesty surface: what was assumed, and the buttons that fix it

Rules

  1. 01Only actionable assumptions are listed (sleep, symptoms, workout, wearable) — “cycle date estimated” is not a button.
  2. 02Each action names its fix: “Log Sleep”, never “Fix”.
  3. 03Handoff: sheet dismisses → 320ms pause → log screen slides in.
  4. 04Assumptions never penalise — missing sleep assumes 6h and does not add crash risk.

Examples

DailyFocus drawer

“Assumed today: No sleep logged (assumed 6h) · No symptoms logged” + [Log Sleep] [Log Symptoms].

Cycle Overview drawer

Assumption actions restricted to its domain: Log Period / Sync wearable.

Anti-patterns

What breaks this pattern

  • Listing assumptions without actions — that's a confession, not a pattern.
  • Opening the log screen on top of the open sheet.

Do

  • ·Cap the list at what matters (max 3 missing inputs)
  • ·Scope actions to the card's domain

Don't

  • ·Guilt-frame the gaps
  • ·Penalise scores for missing data