one-snapshot-per-period-not-many-flows
Installation
SKILL.md
One period, one snapshot
A screen that shows "this span, and how it compares to the last" asks for exactly two things. Make that the shape of the call — a suspend function returning a value, called twice:
// adapted
suspend fun getPeriodStats(startTimestamp: LocalDateTime, endTimestamp: LocalDateTime): PeriodStats
// adapted — a matched pair, never two independently-arriving streams
val (start, end) = rangeFor(range, offset)
val (prevStart, prevEnd) = rangeFor(range, offset + 1)
val current = repository.getPeriodStats(start, end)
val previous = repository.getPeriodStats(prevStart, prevEnd)
state.update { it.copy(stats = Success(current), previous = previous.takeIf { p -> !p.isEmpty }) }