Files
lucky-cat/docs/adr/0002-daily-fortune-contracts.md
T
2026-06-25 00:34:34 +08:00

1.6 KiB

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.