chore: initial commit
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# ADR 0002: Daily Fortune Contract Ownership
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
||||
## Context
|
||||
|
||||
The device needs to receive a user birth profile over its LAN configuration
|
||||
page, persist it, fetch a daily fortune after wall-clock
|
||||
synchronization, and apply the returned wealth direction. This workflow crosses
|
||||
transport, storage, domain data, and orchestration boundaries.
|
||||
|
||||
## Decision
|
||||
|
||||
- `platform` owns opaque persistent blob storage, SNTP time synchronization,
|
||||
and bounded raw LAN HTTP transport primitives.
|
||||
- `domain` owns the typed birth-profile and daily-fortune result contracts,
|
||||
persistence adapters, direction-name aliases, and user configuration routes.
|
||||
- `control_plane` owns HTTP fetch, retry, local-midnight scheduling, result
|
||||
refresh policy, configuration-server connectivity lifecycle, and the
|
||||
wealth-direction apply sequence.
|
||||
- `app_composition` continues to start the existing control-plane runtime worker
|
||||
set and does not gain fortune policy logic.
|
||||
- The favorable-color element is persisted and logged. LCD color presentation
|
||||
is deferred because it requires a separate semantic expression contract and
|
||||
assets.
|
||||
|
||||
## Consequences
|
||||
|
||||
- The stateless server can be called every day because the device retains the
|
||||
birth profile in NVS through an opaque platform storage API.
|
||||
- Upper layers do not include platform types or call platform LCD primitives.
|
||||
- Cardinal server values such as `正北` are normalized by the domain direction
|
||||
catalog rather than by orchestration code.
|
||||
- Any future favorable-color animation requires a new ADR or an explicit update
|
||||
to the existing LCD expression ownership decision.
|
||||
Reference in New Issue
Block a user