Pattern
Presenter (MVP)
State → view, nothing more.
Where: src/presenters/.
The rule: observe state, translate into view calls, expose a narrow API for the FSM to drive. Never decide timing. Never mutate state.
MVP vs MVVM: close cousins. slotplate uses presenters because they tend to be thinner than ViewModels — no two-way binding, just observable read and view write.