Status: Accepted
Date: 2026-02-23
Authors: OSHUN Studio Product Design, OSHUN Web Engineering
Reviewers: Domain Leads (Yemaya, Isis, Hathor, Aja, Bellona), Project
Obsidian Program Design
Context and Problem Statement#
Studio now governs IA, design language, typography, color, spacing, and component primitives. However, advanced workflows still rely on complex interactions: multi-step wizards, command stacks, parallel validation pipelines, drag/reorder operations, and long-running async orchestration.
Without an explicit decision for complex interaction patterns, Studio risks:
- inconsistent async-state behavior across advanced workflows
- brittle user recovery paths in failure and partial-completion states
- accessibility regressions in high-density command surfaces
- drift in interaction semantics across Yemaya, Isis, Hathor, Aja, Bellona, and Project Obsidian
Decision Drivers#
- Interaction determinism: predictable state transitions for advanced flows.
- Recovery ergonomics: robust retry, rollback, and resume behavior.
- Accessibility safety: keyboard, focus, and screen-reader continuity through complex transitions.
- Cross-domain consistency: shared interaction grammar for advanced Studio capabilities.
- Operational governance: auditable release checks for high-risk patterns.
Considered Options#
Option 1: Domain-Specific Interaction Models#
Each domain defines its own advanced interaction patterns and state models.
Pros:
- Local optimization for domain-specific tooling.
Cons:
- High cognitive/context-switching costs.
- Increased regressions and duplicated maintenance.
Option 2: Shared Base Components, Ungoverned Interaction Logic#
Use shared primitives while allowing ad hoc orchestration logic.
Pros:
- Faster short-term implementation velocity.
Cons:
- No enforceable guarantees for state and recovery semantics.
- Harder incident triage across workflows.
Option 3: Unified Complex Interaction Pattern System with Governed State Orchestration (Chosen)#
Adopt a shared complex-interaction model with explicit state machines, recovery contracts, and auditable promotion gates.
Pros:
- Deterministic user experience in high-risk workflows.
- Stronger resilience under async failure conditions.
- Better cross-domain maintainability and observability.
Cons:
- Added design/engineering governance overhead.
Decision Outcome#
Chosen option: Option 3.
Complex-interaction requirements:
- Canonical orchestration states:
idle -> pending -> success | errorwith optional resumable checkpoints. - Recovery contract: every advanced flow defines retry, rollback, and degraded-mode behavior.
- Concurrency contract: parallel task groups have deterministic completion and cancellation semantics.
- Accessibility contract: complex transitions preserve focus context and interaction reachability.
- Release governance: draft -> validate -> approve -> publish with full telemetry/audit evidence.
Normative Rules#
State-Orchestration Contract#
- Advanced Studio flows must declare explicit transition states and terminal outcomes.
- Partial completion states must include deterministic user guidance.
Recovery Contract#
- Every complex flow must support retry and reset actions.
- High-impact failures must include rollback references or safe degraded mode.
Concurrency Contract#
- Parallel tasks must expose aggregate status and per-task diagnostics.
- Cancellation and timeout behavior must be deterministic and auditable.
Accessibility Contract#
- Focus management must remain stable throughout async transitions.
- Complex controls must be keyboard-operable and semantically announced.
Release Validity Contract#
A complex interaction release is valid only when all are true:
- state-transition validations pass
- recovery and timeout paths pass
- accessibility checks pass
- role-authorized approval exists
- telemetry/audit records are complete
- rollback or degraded-mode strategy is documented
Architecture Implications#
libs/oshun/uiandapps/oshun/web/src/design-systemremain shared interaction implementation layers.- Studio complex-interaction governance flows are implemented under
apps/oshun/webStudio routes. - Observability contracts remain centralized in
libs/oshun/analytics.
Acceptance Criteria (OST-00049)#
OST-00049 is complete only when:
- ADR exists at
docs/adr/ADR-0025-oshun-studio-complex-interaction-patterns-and-state-orchestration.md. - ADR defines options, trade-offs, and selected strategy.
- ADR defines state-orchestration, recovery, concurrency, accessibility, and release-validity contracts.
- ADR aligns with
ADR-0007throughADR-0018. - ADR aligns with
docs/releases/v1/design/ux-principles.md,docs/releases/v1/design/ergonomics-requirements.md, andlibs/oshun/ui. - ADR explicitly covers Yemaya, Isis, Hathor, Aja, Bellona, and Project Obsidian.
Consequences#
Positive#
- Predictable advanced workflow behavior across domains.
- Lower incident severity through stronger recovery semantics.
- Better operator trust in Studio orchestration controls.
Negative#
- Increased governance and validation effort.
- Higher up-front design rigor for interaction-state modeling.
Related Decisions#
docs/adr/ADR-0013-oshun-shell-architecture-and-domain-adapters.mddocs/adr/ADR-0014-oshun-web-and-pwa-strategy.mddocs/adr/ADR-0015-deep-linking-and-cross-domain-routing.mddocs/adr/ADR-0016-shared-identity-and-cross-domain-session-model.mddocs/adr/ADR-0017-offline-caching-and-sync-strategy.mddocs/adr/ADR-0018-analytics-taxonomy-and-event-naming.mddocs/adr/ADR-0019-oshun-studio-information-architecture.mddocs/adr/ADR-0020-oshun-studio-design-language-and-visual-identity.mddocs/adr/ADR-0021-oshun-studio-typography-system.mddocs/adr/ADR-0022-oshun-studio-color-system-and-token-governance.mddocs/adr/ADR-0023-oshun-studio-spacing-and-layout-grid.mddocs/adr/ADR-0024-oshun-studio-component-primitives-and-composition-contracts.md
References#
docs/releases/v1/design/ux-principles.mddocs/releases/v1/design/ergonomics-requirements.mddocs/domains/yemaya/features.mddocs/domains/isis/features.mddocs/domains/hathor/features.mddocs/domains/aja/features.mddocs/domains/bellona/features.mdlibs/oshun/uiapps/oshun/web/src/design-system/tokens.ts