Files
lucky-cat/docs/adr/0001-lcd-expression-presentation-ownership.md
T

35 lines
1.4 KiB
Markdown

# 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 panel
drawing 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.