UX Decisions — Wireframe Phase
Status: Accepted
Date: 2026-03-03
Sources: design/ux/04-wireframes/audit.md, all 21 wireframe documents
Purpose
This document records UX decisions made during the wireframing phase (Phase 4) and the subsequent audit. These decisions establish conventions for wireframe structure, design token usage, offline specification, and terminology. They complement the architectural decisions in decisions/011-design-system-ux.md.
Decision 1: Wireframe Document Structure
Standard 8-Section Template
All wireframe documents must follow this structure:
- Purpose — What the feature area does, who it serves
- Scope — Table mapping all screen IDs to screen names, personas, offline status, mobile context, and in-document section
- Navigation Context — How the feature appears in the sidebar/tabs for its primary persona
- Screen Wireframes — One
## ID: Screen Namesection per screen, each with Desktop/Mobile wireframes, Interaction Specs, and Design Notes - Empty States Summary — Consolidated empty/zero-data states for all screens
- Accessibility Notes — Feature-specific accessibility considerations
- Design Decisions — Table of key decisions with choice and rationale
- Open Questions — Unresolved questions for future phases
Exceptions
- Navigation shell uses "Shell Variants" instead of "Scope" (it has no screen IDs — it is the frame around all screens)
- Field mode preserves its flow-based organization (Shift Start → Walk List → Door Card → ...) with screen IDs added as HTML comment annotations rather than section headings
- Messaging organizes by UI pattern (split view, compose, briefings) with screen IDs as HTML comment annotations
- Documents where "Navigation Context" is not applicable (navigation-shell, field-mode, alliance) may omit or adapt this section
Rationale
The 12 later-batch documents naturally converged on this structure. Normalizing the 9 early-batch documents to match ensures any document can be read with the same expectations. The structure also maps directly to implementation needs: Scope tables drive route planning, Navigation Context drives sidebar configuration, Design Decisions drive component specs.
Decision 2: Design Token Integration Approach
Annotate only where load-bearing — not globally
Wireframe documents should reference design token names only where the specific value is critical to the design's correctness:
- Touch targets in field mode —
--touch-target-min: 48pxand--touch-target-field: 56pxare safety-critical values. Reference by name. - Spacing that deviates from defaults — When a wireframe intentionally uses non-standard spacing, reference the token to signal intent.
- Color semantics — Where the meaning (success/error/warning) matters more than the appearance, reference
--color-success,--color-error,--color-warning.
Do not globally annotate all 21 wireframe documents with token names for every pixel value and color reference. This would add noise without improving wireframe clarity.
Rationale
Wireframes serve as implementation-ready screen descriptions — they are read by designers and developers. Raw values (16px, 24px) are more immediately understandable in a wireframe context than token names (--space-4, --space-6). Comprehensive token annotation belongs in the visual design phase (high-fidelity mockups) and the component implementation phase. The wireframes already follow the design system's spacing scale and color semantics implicitly.
Decision 3: Offline Behavior Specification
Every screen must declare its offline status
The Scope table in each wireframe document must include an "Offline" column declaring one of:
- Yes — Fully functional offline
- Partial — Some functionality available offline (specific behavior described in wireframe)
- No — Requires connectivity; shows cached data or offline indicator
Even "No" is a decision
Most admin screens are genuinely online-only — they display server-aggregated data (dashboards), perform server-side operations (imports, exports), or configure shared state (settings). Declaring Offline: No is not a gap — it's a correct and intentional specification. Implementers should not have to guess.
Offline-capable screens require explicit detail
Any screen marked Yes or Partial must describe:
- What data is pre-cached
- What actions are available offline
- How offline changes sync when connectivity returns
- What the UI looks like during sync
Field mode (field-mode.md) is the exemplar for offline specification. The offline sync patterns in 02-global-patterns/offline-sync-patterns.md define the framework.
Rationale
The wireframe audit found that early-batch documents did not declare offline status at all, creating ambiguity for implementers. Since offline-first is a core platform principle, every screen needs an explicit declaration — even if the answer is "this screen doesn't work offline."
Decision 4: Terminology Conventions
Canonical Terms
| Term | Definition | Use Context |
|---|---|---|
| Contact | Any person in the CRM database | CRM, data import, segments, any context referring to the data record |
| Supporter | A person who has taken a public action (donated, signed a petition, RSVPed, volunteered) | Supporter portal, public pages, activism, any user-facing context |
| Donor | A supporter who has made a financial contribution | Fundraising reports, compliance, receipts, tax statements |
| Staff | An authenticated user with an organizational role template | Settings, permissions, onboarding, audit trail |
| Volunteer | A staff member with the Volunteer role template | Field mode, shift management, training |
Hierarchy
"Donor" ⊂ "Supporter" ⊂ "Contact"
Use the most specific applicable term. A person who donated is a "donor" in fundraising context, a "supporter" in the portal, and a "contact" in the CRM.
Application
- Fix terminology only in sections actively being modified during structural normalization or when adding new wireframes
- No global search-and-replace across all 21 documents
- Record these canonical terms here as the reference; enforce during visual design and implementation
Rationale
The audit found "supporter," "donor," and "contact" used interchangeably in some wireframe documents. While context usually disambiguates, the terms have distinct meanings in the data model (a Contact may have zero interactions; a Supporter has at least one; a Donor has at least one financial interaction). Establishing canonical definitions now prevents confusion during implementation.
Decision 5: Screen ID Assignment
Every wireframed screen must have a screen ID from screen-inventory.md
Screen IDs follow the format AREA-NNN (e.g., CANV-007, FUND-001, AUTH-003). They are:
- The primary cross-reference between wireframes, screen inventory, URL structure, and implementation
- Stable across document edits — once assigned, a screen ID does not change
- Used as
## ID: Screen Namesection headings in wireframe documents
Exceptions
- Navigation shell variants (desktop expanded, collapsed, mobile, field mode, etc.) are structural frames, not individual screens. They do not receive screen IDs.
- Documents organized by flow (field-mode, messaging) may use HTML comment annotations (
<!-- CANV-007 -->) instead of screen ID headings when the flow-based organization is more natural.
Rationale
The audit found 25 screens with wireframe content but no screen ID headings. Screen IDs are the glue between documents — the cross-reference index in README.md depends on them. Adding IDs to all wireframed screens enables reliable traceability from spec to implementation.