Architecture Decision Records¶
ADRs capture decisions that shape the design system and are expected to outlive a single implementation change.
Accepted Decisions¶
- ADR 0001: Theming Model: extend Material 3 with immutable semantic tokens and
CompositionLocals. - ADR 0002: Module Boundaries: keep pure Kotlin helpers, tokens, theme contracts, icons, utilities, components, testing, catalog, and sample modules separate.
- ADR 0003: Testing Strategy: combine JVM/domain tests, Compose UI tests, and Roborazzi screenshot coverage.
- ADR 0004: Localization and A11y String Contract: all user-visible and accessibility strings are caller-supplied; the library ships no string resources and uses no English defaults.
- ADR 0005: Material 3 Expressive Adoption Strategy: track M3 Expressive APIs in catalog/sample until stable, then extend
AppTheme.shapesand add new expressive components additively. - ADR 0006: Adaptive Layout Breakpoint System: defer exposing a breakpoint abstraction until the five-tier adaptive system is stable; use lambda slot pattern in components in the interim.
- ADR 0007: Secure Storage Module: ship a standalone Tink + Android Keystore
:secure-storagemodule with an interface surface and anInMemorySecureStoragetest double.
Writing New ADRs¶
Add new records for decisions that affect public APIs, module boundaries, publishing, test strategy, or long-term compatibility. Use the next sequential number and keep each record focused on one decision.