Files
atelier/domains/uiux/first-principles.md
T
Jon Chery 496303471d docs(milestone): complete v0.1 — initial framework
---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.
2026-08-05 00:36:55 +00:00

115 lines
5.5 KiB
Markdown

# 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.md` for 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.md` for 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
1. Accessibility (P2) — never sacrificed.
2. Clarity (P3) — never sacrificed.
3. User Primacy (P1) — never sacrificed.
4. Forgiveness (P5) — sacrificed only when an action is genuinely irreversible by domain.
5. Feedback (P4) — sacrificed only for Performance (P6) with perceived-performance evidence.
6. Consistency (P8) — sacrificed for Clarity (P3) when a context demands a different pattern.
7. Hierarchy (P7) — sacrificed for Simplicity (P9) when an interface is simple enough to need no hierarchy.
8. Simplicity (P9) — sacrificed for Clarity (P3) when simplifying would obscure.
9. Performance (P6) — sacrificed for Feedback (P4) when the user needs to know the system is working.
10. 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`.