chore: initial commit
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# ADR 0001: LCD Expression and Presentation Ownership
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
||||
## Context
|
||||
|
||||
LCD behavior now needs multiple reusable expressions that can be triggered by
|
||||
different runtime conditions. The system must keep semantic expression ownership
|
||||
separate from low-level LCD playback so future expressions can be added without
|
||||
copying cross-layer contracts or coupling orchestration code to asset paths.
|
||||
|
||||
## Decision
|
||||
|
||||
- `domain` owns LCD expression semantics and declares `domain_expression_*` in
|
||||
`components/domain/include/domain.h`.
|
||||
- `control_plane` owns trigger policy: it decides when a runtime condition
|
||||
requests a semantic expression.
|
||||
- `platform` owns LCD presentation playback primitives and declares
|
||||
`platform_lcd_presentation_*` in `components/platform/include/platform.h`.
|
||||
- Domain runtime adapters map semantic expressions to platform presentation
|
||||
requests.
|
||||
- Platform LCD internals serialize presentation requests and perform all LVGL
|
||||
object mutation inside the LCD render task.
|
||||
|
||||
## Consequences
|
||||
|
||||
- Adding a new expression requires a domain expression ID and catalog mapping,
|
||||
plus an optional control-plane trigger rule.
|
||||
- Public upper-layer facades must not expose platform playback types.
|
||||
- Platform public APIs must not expose domain semantic expression IDs.
|
||||
- High-priority expressions can interrupt lower-priority presentations without
|
||||
leaking policy logic into the LCD driver.
|
||||
Reference in New Issue
Block a user