---
id: modes
class: b2
sourced: 2026-07-12
source: "b2b-ux-patterns ch.5"
license: open
---
# Pass: user modes

**Inputs:** per role × dataset — `mode` (monitoring | triage | procedural | exception | approval | investigation | exploration | authoring | reconciliation | comparison | batch-mutation | configuration | collaboration | reporting | learning | supervision), `sameDataMultipleModes`.
**Owns:** `archetypes`, `requiredMechanics`.
**Output artifact:** the mode inventory per dataset — which directly selects the page archetype (conformed to the pinned seven-archetype roster: browse, queue, grid, record-detail, dashboard, creation-flow, settings) and the feature requirements per surface.

## The rule

A mode is a behaviorally distinct way of using the product; it earns a place only if it demands different UI — different layout, affordances, success metric. **Modes are not persona traits:** the same user on the same data switches modes hour to hour (monitoring at 9:00, triage at 9:15, procedural until lunch, an exception at 2:00, approvals at 4:00). Never map persona → mode and design one surface per persona; inventory which modes each role enters per dataset and let one dataset serve several modes — a leads list must support monitoring (stat glance), triage (route verbs, bulk bar), and batch mutation (grid selection) without becoming three pages.

**Mode selects archetype — not the object.** When a screen feels wrong despite showing the right object, the usual cause is a mode mismatch: an index built for browsing handed to a team that triages, or a settings *page* given to what is actually a configuration *mode* needing preview and rollback. Distinctions the table encodes: investigation has a fixed question (timeline, trail, drill); exploration has none yet (pivot, segment — the question is the output). Triage routes without resolving; procedural resolves and takes the next. Approval judges someone else's finished output; supervision (the fastest-growing mode of 2025–26) steers an autonomous worker mid-flight — pause, redirect, resume — and is neither monitoring (no intervention), approval (finished artifact), nor exception handling (single-user improvisation after the playbook fails). Exception handling is exactly where UX quality matters most, because the designed flows have run out.

Richer surface forms noted in `page-archetype` (conversational inbox, split-pane console, canvas builder, report builder, wizard, log explorer, merge/diff views) are realizations of these roster mappings, not extra archetypes.

```json decision-table
{"pass": "modes", "rows": [
  {"when": {"mode": "monitoring"}, "then": {"archetypes": {"mustInclude": ["dashboard"]}, "requiredMechanics": {"mustInclude": ["glanceable-status", "declared-thresholds-config"]}}, "reason": "nothing-on-fire-glance"},
  {"when": {"mode": "triage"}, "then": {"archetypes": {"mustInclude": ["queue"], "mustNotInclude": ["browse"]}, "requiredMechanics": {"mustInclude": ["route-verbs-on-rows", "bulk-triage-bar", "keyboard-velocity", "unread-new-markers"]}}, "reason": "route-not-resolve"},
  {"when": {"mode": "procedural"}, "then": {"archetypes": {"mustInclude": ["queue", "record-detail"]}, "requiredMechanics": {"mustInclude": ["take-next-auto-advance", "transition-required-fields"]}}, "reason": "assembly-line-to-done"},
  {"when": {"mode": "exception"}, "then": {"archetypes": {"mustInclude": ["record-detail"]}, "requiredMechanics": {"mustInclude": ["reason-capture-required", "logged-history-class", "escalation-path"]}}, "reason": "break-glass-audited"},
  {"when": {"mode": "approval"}, "then": {"archetypes": {"mustInclude": ["queue", "record-detail"]}, "requiredMechanics": {"mustInclude": ["judgment-diff-summary", "approve-reject-rationale"]}}, "reason": "verdict-is-the-work-product"},
  {"when": {"mode": "investigation"}, "then": {"archetypes": {"mustInclude": ["record-detail", "browse"]}, "requiredMechanics": {"mustInclude": ["event-timeline", "drill-through", "cheap-back-navigation"]}}, "reason": "fixed-question-trail"},
  {"when": {"mode": "exploration"}, "then": {"archetypes": {"mustInclude": ["dashboard"]}, "requiredMechanics": {"mustInclude": ["pivot-group-segment", "save-analysis"]}}, "reason": "question-is-the-output"},
  {"when": {"mode": "authoring"}, "then": {"archetypes": {"mustInclude": ["creation-flow"]}, "requiredMechanics": {"mustInclude": ["full-screen-focus", "autosave-indicator", "draft-persistence"]}}, "reason": "chrome-recedes"},
  {"when": {"mode": "reconciliation"}, "then": {"archetypes": {"mustInclude": ["record-detail"]}, "requiredMechanics": {"mustInclude": ["side-by-side-diff", "per-delta-resolve", "field-by-field-picker"]}}, "reason": "difference-oriented"},
  {"when": {"mode": "comparison"}, "then": {"requiredMechanics": {"mustInclude": ["parallel-columns", "period-over-period"]}}, "reason": "choose-a-winner"},
  {"when": {"mode": "batch-mutation"}, "then": {"archetypes": {"mustInclude": ["grid"]}, "requiredMechanics": {"mustInclude": ["multi-select", "bulk-action-bar", "bulk-preview-before-commit", "per-row-partial-failure-report"]}}, "reason": "blast-radius-defines-the-mode"},
  {"when": {"mode": "configuration"}, "then": {"archetypes": {"mustInclude": ["settings"]}, "requiredMechanics": {"mustInclude": ["draft-publish-lifecycle", "impact-preview", "blast-radius-header"]}}, "reason": "rare-consequential-preview-hungry"},
  {"when": {"mode": "collaboration"}, "then": {"archetypes": {"mustInclude": ["record-detail"]}, "requiredMechanics": {"mustInclude": ["activity-composer", "mentions-assignment", "unread-new-markers"]}}, "reason": "conversation-attached-to-data"},
  {"when": {"mode": "reporting"}, "then": {"archetypes": {"mustInclude": ["dashboard"]}, "requiredMechanics": {"mustInclude": ["view-aware-export", "scheduled-delivery", "as-of-timestamp"]}}, "reason": "goal-lives-outside-the-product"},
  {"when": {"mode": "learning"}, "then": {"requiredMechanics": {"mustInclude": ["empty-state-teaching", "sample-data-path", "setup-checklist"]}}, "reason": "scaffolding-experts-never-see"},
  {"when": {"mode": "supervision"}, "then": {"archetypes": {"mustInclude": ["queue", "record-detail"]}, "requiredMechanics": {"mustInclude": ["run-timeline-pause-redirect-resume", "live-plan-visibility", "escalation-to-approval"]}}, "reason": "steering-not-disposal"},
  {"when": {"sameDataMultipleModes": true}, "then": {"requiredMechanics": {"mustInclude": ["multi-mode-single-surface"], "mustNotInclude": ["one-page-per-persona"]}}, "reason": "modes-switch-hourly"}
]}
```
