---ci--- project: atelier phase: 7 milestone: v0.1 status: complete phase_role: final milestone_complete: true requirements: covered: [ATELIER-01, ATELIER-02, ATELIER-03, ATELIER-04, ATELIER-05, ATELIER-06, ATELIER-07, ATELIER-08, ATELIER-09, ATELIER-10, ATELIER-11, ATELIER-12, ATELIER-13, ATELIER-14, ATELIER-15, ATELIER-16, ATELIER-17, ATELIER-18, ATELIER-19, ATELIER-20, ATELIER-21, ATELIER-22, ATELIER-23, ATELIER-24, ATELIER-25, ATELIER-26, ATELIER-27, ATELIER-28, ATELIER-29, ATELIER-30, ATELIER-31, ATELIER-32, ATELIER-33, ATELIER-34, ATELIER-35] partial: [] ship: milestone: v0.1 type: NFR tag: v0.0.7 merge: milestone/v0.1-atelier -> main release: https://git.cloudinit.dev/cloudinit-bot/atelier/releases/tag/v0.0.7 ---/ci--- Milestone v0.1 — Initial Framework (NFR, complete). 8 core principles (C1-C8), 11 domains, 110 domain principles, 27 derived docs, 4 good + 3 bad examples, 4 language docs, full matrix, 3 review docs. All 35 requirements covered. 7 patches (v0.0.0 pre-execution through v0.0.7 final). v0.0.7 IS the v0.1.0 milestone release.
5.5 KiB
UI / UX — First Principles
Version: 1.0.0 Status: Foundational Audience: AI agents and humans designing user interfaces, components, pages, and flows.
1. Manifesto
A user interface is a contract between a system and a person. The cost of a bad interface is paid by every user, every time they use it. The highest quality interface is one that a stranger can use correctly without instructions, regardless of their abilities.
2. The Principles
P1. User Primacy
The user's goal is the system's goal. The system never optimizes for itself at the user's expense.
- A loading indicator exists because the user is waiting, not because the system is busy.
- A default exists because the user would choose it, not because it is easiest to implement.
- The system never makes the user do work the system could do.
P2. Accessibility
Every user can use the interface, regardless of ability or context.
- Accessibility is not a feature; it is a property of correct interfaces.
- Failure to be accessible is disqualifying — see
domains/uiux/accessibility.md. - Every interactive element is keyboard-reachable and screen-reader announced.
P3. Clarity
The interface communicates what it does, what it did, and what will happen next.
- Labels are nouns. Actions are verbs. States are adjectives.
- The user should never wonder "what will this do?"
- A confused user is a defect, not a user error.
P4. Feedback
Every user action produces an immediate, visible response.
- The system always acknowledges input, even before it processes it.
- Feedback is for the user, not the developer. A console log is not feedback.
- See
domains/observability/for the system-side complement.
P5. Forgiveness
User actions are reversible. Mistakes are recoverable.
- Destructive actions require confirmation. Irreversible actions require double confirmation.
- Undo is a first-class operation, not an afterthought.
- The system never traps the user in a state they did not choose.
P6. Performance
The interface responds in the time the user expects, not the time the system takes.
- Perceived performance beats measured performance when they diverge.
- A 200ms response with feedback feels faster than a 50ms response without.
- See
domains/performance/frontend.mdfor the technical complement.
P7. Hierarchy
The interface communicates priority through structure, not decoration.
- The most important thing is the most visible.
- Hierarchy is visual: size, weight, position, contrast. Not noise.
- A flat interface hides priority. A cluttered interface invents false priority.
P8. Consistency
The same action has the same result, the same name, and the same location, everywhere.
- Consistency serves predictability: the user learns once, applies everywhere.
- Inconsistency is a tax on the user's attention.
- See
domains/uiux/components.mdfor component-level consistency rules.
P9. Simplicity
The interface shows the user what they need, when they need it, and nothing more.
- Progressive disclosure: show the common path, hide the rare path.
- A simple interface is complete for its purpose. A simpler-than-necessary interface is not.
- Simplicity serves clarity: a cluttered interface is unclear.
P10. Reversibility
The user can always go back, undo, or cancel.
- Navigation is reversible. Data changes are reversible. Sessions are resumable.
- The "back" button always works. The "cancel" button always cancels.
- Reversibility serves forgiveness (P5): the cost of a mistake is bounded.
3. Conflict Resolution
- Accessibility (P2) — never sacrificed.
- Clarity (P3) — never sacrificed.
- User Primacy (P1) — never sacrificed.
- Forgiveness (P5) — sacrificed only when an action is genuinely irreversible by domain.
- Feedback (P4) — sacrificed only for Performance (P6) with perceived-performance evidence.
- Consistency (P8) — sacrificed for Clarity (P3) when a context demands a different pattern.
- Hierarchy (P7) — sacrificed for Simplicity (P9) when an interface is simple enough to need no hierarchy.
- Simplicity (P9) — sacrificed for Clarity (P3) when simplifying would obscure.
- Performance (P6) — sacrificed for Feedback (P4) when the user needs to know the system is working.
- Reversibility (P10) — sacrificed only for genuinely irreversible operations (e.g., account deletion), with explicit confirmation.
Three of ten principles are non-tradeable: Accessibility, Clarity, User Primacy. These derive from core C1 (Correctness) and C2 (Clarity).
4. What Violates These Principles
| Violation | Principle Breached |
|---|---|
| A button that does nothing on click | P4 Feedback |
| An image without alt text | P2 Accessibility |
| A "delete" with no confirmation | P5 Forgiveness |
| A 5-second spinner with no progress | P6 Performance, P4 Feedback |
| Two "save" buttons that do different things | P8 Consistency |
| A settings page with 50 options visible at once | P9 Simplicity |
| A form that cannot be navigated by keyboard | P2 Accessibility |
| An action that cannot be undone or cancelled | P10 Reversibility |
| A label that says "Submit" when it deletes | P3 Clarity |
| A system that optimizes its own load time over the user's wait | P1 User Primacy |
5. Relationship to Core
Subordinate to core/first-principles.md. The three non-tradeable principles (P2, P3, P1) are promoted to C1-equivalent. See matrix/principles-matrix.md for the full derivation. Sibling to domains/uiux/components.md and domains/uiux/accessibility.md.