Usability Foundation
Nielsen Heuristic Assessment
Jakob Nielsen's 10 usability heuristics applied to the Nodus Design System. Each heuristic is mapped to existing patterns and components, with coverage assessed and gaps identified.
Visibility of System Status
The design should always keep users informed about what is going on, through appropriate feedback within a reasonable amount of time.
This is the foundational commitment of the entire design system. Nodus exists to make algorithmic structure visible. Every pattern in the system is, in some way, an answer to this heuristic.
32 patterns + learning infrastructure + graph primitives + temporal honesty section — all exist to make invisible computation visible.
Match Between System and Real World
The design should speak the users' language. Use words, phrases, and concepts familiar to the user, rather than internal jargon. Follow real-world conventions.
The Nodus patterns use physical metaphors — membrane, witness, chorus, ledger, fence — to ground abstract AI concepts in tangible experience. But protocol-level patterns introduce specialist vocabulary that may not serve broader adoption.
Foundation patterns use strong metaphors. Protocol and reasoning patterns expose technical vocabulary (MCP, A2A, provenance chain, epistemic state) without plain-language alternatives.
- —MCP Tool Call and MCP Server Status expose protocol internals — consider plain-language mode for non-technical users
- —A2A Handoff uses 'agent-to-agent' jargon — 'delegation' or 'handoff' alone would be clearer
- —Provenance Chain assumes familiarity with data lineage concepts — needs a simplified view
- —Model Selector uses abstract speed/cost/capability scales — no real-world comparison anchors
User Control and Freedom
Users often perform actions by mistake. They need a clearly marked emergency exit to leave unwanted actions without an extended process. Support undo and redo.
The human-in-the-loop pattern family (21–26) is built entirely around this heuristic. ConsentFlow is revocable. CeremonyGate has an undo period. CorrectionFlow enables override. The system treats human authority as non-negotiable.
6 dedicated human-in-the-loop patterns + FeedbackSignal + EscalationBanner provide comprehensive control mechanisms. CeremonyGate includes explicit undo period.
- —No explicit 'undo last agent action' pattern — CeremonyGate has undo but only for permission grants
- —No 'cancel in-flight operation' control — TaskQueue shows running tasks but no abort mechanism
- —No 'revert to previous state' for agent outputs — CorrectionFlow edits forward, doesn't restore
Consistency and Standards
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform and industry conventions.
The three-layer token architecture (primitive → semantic → component) is the consistency engine. The new status, risk, confidence, opacity, and tracking token families extend this foundation to cover the full pattern vocabulary.
Token system enforced via CLAUDE.md rules + site-styles.ts registry. 72 A2UI templates migrated to shared MONO constant. 26 templates migrated to shared A2UI_LIGHT/A2UI_DARK theme tokens. Zero local color definitions remain. Auto-loading .claude/rules/design-system.md prevents regression.
- ↑Confidence thresholds vary (0.4/0.8 vs 0.5/0.8 vs 0.3/0.7) across patterns — --ds-confidence-low/high tokens exist but some patterns not yet migrated[DAN-134]
Error Prevention
Good error messages are important, but the best designs carefully prevent problems from occurring in the first place. Eliminate error-prone conditions or present confirmation options.
CeremonyGate is the purest expression of error prevention — multi-step confirmation with enforced delays and typed confirmation phrases. GuardrailIndicator shows active safety constraints before errors occur. But the system lacks input-level prevention patterns.
Strong at the permission/delegation level (CeremonyGate, ConsentFlow). Weak at the data-entry and interaction level — no validation patterns, no type-ahead, no constraint visualization.
- —No input validation pattern — Input component has error state but no preventive validation display
- ↑No confirmation dialog primitive for destructive actions beyond CeremonyGate[DAN-131]
- —No constraint visualization — showing what's allowed BEFORE the user acts
- —No type-ahead or auto-suggest pattern to prevent query errors in vault search or tool invocations
Recognition Rather than Recall
Minimize the user's memory load by making elements, actions, and options visible. Users shouldn't have to remember information from one part of the interface to another.
The provenance and citation patterns are explicitly designed to eliminate recall — every claim has an inline source, every datum has a traceable origin, every agent action is logged with full context. The system makes memory external.
CitationCard, ProvenanceChain, DataTag, ModelTag, ContextWindow, ThoughtEntry, and LearnedFromBadge all externalize memory. The user never needs to remember where data came from.
- —No 'recent actions' or 'history' pattern — users can't quickly see what they did before
- —No 'command palette' or 'search' pattern for discovering available actions
Flexibility and Efficiency of Use
Shortcuts — hidden from novice users — may speed up the interaction for the expert user. Allow customization so users can tailor frequent actions.
This is the system's weakest heuristic. The patterns are designed for inspection and transparency — making everything visible — but provide few mechanisms for power users to move faster. The philosophy prioritizes legibility over speed, which creates tension with this heuristic.
ModelSelector allows model choice. PermissionMatrix and ApprovalQueue support batch operations. Active work on ProgressiveDisclosure and KeyboardShortcutsPanel is closing the two most critical gaps.
- ↑No keyboard shortcut system or accelerator key patterns[DAN-132]
- —No 'compact view' or 'expert mode' that reduces ceremony for trusted, repeated operations
- ↑No progressive disclosure pattern — all information is shown at full detail always[DAN-131]
- —No customizable dashboard or layout composition pattern
- —No 'favorite' or 'pin' pattern for frequently used agents or tools
Aesthetic and Minimalist Design
Interfaces should not contain information that is irrelevant or rarely needed. Every extra unit of information competes with relevant units and diminishes their visibility.
The Bauhaus foundation IS this heuristic. Zero border radius, three colors, two typefaces, exposed structure as decoration. The philosophy manifesto articulates this as the core aesthetic commitment. Every element must earn its place.
The entire token system, the zero-decoration philosophy, and the 'structure is the aesthetic' manifesto are direct implementations. The design system is ruthlessly minimal.
- —EvalRadar (SVG with 5-axis polygon, previous scores overlay, explanations) may exceed minimal threshold — does the complexity earn its place?
- —ReasoningTree with nested branches and connector lines is visually dense — consider a collapsed default state
- —LearningLedger shows all entries expanded — a collapsed summary with expand-on-demand would be more minimal
Help Users Recognize, Diagnose, and Recover from Errors
Error messages should be in plain language, precisely indicate the problem, and constructively suggest a solution.
The EscalationBanner is the best expression — the agent recognizes its own limits and tells the user exactly what went wrong and what to do. RetryLedger shows the full error→recovery arc. But lower-level error states show raw technical strings without guidance.
EscalationBanner and RetryLedger are strong at the agent level. MCPToolCall and EmptyState show errors but with technical messages and limited recovery guidance.
- ↑MCPToolCall error state shows raw error strings — no plain-language explanation or recovery action[DAN-131]
- —No 'error recovery wizard' pattern — step-by-step guided resolution for complex failures
- —EmptyState error variant provides a retry button but no diagnostic context
- —No inline error annotation pattern for form fields beyond Input's basic error state
Help and Documentation
It's best if the system doesn't need additional explanation. However, it may be necessary to provide documentation to help users understand how to complete their tasks.
The system is self-documenting in the sense that every datum has provenance, every agent has a card, every action has a timeline entry. But there is no contextual help layer — no tooltips, no onboarding flow, no 'what does this mean' pattern for the patterns themselves.
ThoughtEntry explains AI reasoning. IterationDiff shows what changed between versions. Active work on GlossaryTooltip (DAN-133) and KeyboardShortcutsPanel (DAN-132) addresses the two highest-impact gaps.
- —No tooltip or popover primitive for contextual explanation
- —No onboarding or first-run experience pattern
- ↑No glossary or definition pattern for technical terms (MCP, A2A, provenance)[DAN-133]
- —No 'learn more' expandable section for progressive information depth
- ↑No keyboard shortcut reference or cheat sheet pattern[DAN-132]
↑ Remediation in Progress
Gaps actively being closed by ongoing work
| Heuristic | Gap Being Closed | Ticket | Delivered by |
|---|---|---|---|
| H04Consistency and Standards | Confidence thresholds vary (0.4/0.8 vs 0.5/0.8 vs 0.3/0.7) across patterns — --ds-confidence-low/high tokens exist but some patterns not yet migrated | DAN-134 | ConfidenceMeter token migration |
| H05Error Prevention | No confirmation dialog primitive for destructive actions beyond CeremonyGate | DAN-131 | ConfirmDialog component |
| H05Error Prevention | MCPToolCall error state shows raw error strings with no recovery path | DAN-131 | MCPToolCall error recovery pattern |
| H07Flexibility and Efficiency of Use | No progressive disclosure pattern — all information is shown at full detail always | DAN-131 | ProgressiveDisclosure component |
| H07Flexibility and Efficiency of Use | No keyboard shortcut system or accelerator key patterns | DAN-132 | KeyboardShortcutsPanel component |
| H09Help Users Recognize, Diagnose, and Recover from Errors | MCPToolCall error state shows raw error strings — no plain-language explanation or recovery action | DAN-131 | MCPToolCall error recovery pattern |
| H10Help and Documentation | No glossary or definition pattern for technical terms (MCP, A2A, provenance) | DAN-133 | GlossaryTooltip component |
| H10Help and Documentation | No keyboard shortcut reference or cheat sheet pattern | DAN-132 | KeyboardShortcutsPanel component |
Key Findings
H1 (Visibility), H3 (Control), H6 (Recognition), and H8 (Minimalism) are deeply embedded in the system's DNA. The seven Nodus principles are essentially a domain-specific elaboration of these four heuristics applied to AI interfaces.
H7 (Flexibility/Efficiency) directly conflicts with Principle 02 (Ceremony Over Efficiency). The system deliberately trades speed for deliberation. The question is: at what point does ceremony serve the expert user versus obstruct them? A progressive ceremony model — full ceremony on first use, lighter on repeat — would resolve this tension.
H2 (Real World Match) and H10 (Help/Documentation) are not addressed by any of the seven Nodus principles. The system assumes a technical user who understands terms like MCP, provenance, and epistemic state. For broader adoption, the system needs a plain-language layer and contextual help primitives.
Tooltip/Popover primitive (H10), Progressive Disclosure toggle (H7/H8), Confirmation Dialog (H5), and Inline Validation pattern (H5) would close the most gaps with the least new surface area.