Learn / Who changes state

Semantic state is not runtime work

RemoteData says what the Model knows — Initial, Loading, Ready, Refreshing, Failed, NotFound. It is application state: it is in the Model, it replays, and a view renders from it.

Whether a fiber happens to be running is not. Runtime activity is real, and devtools may want it, but it is not a second input to a view: a render that depends on it is no longer reproducible from the Model, which is the property every other rule here exists to protect.

This is also why there is no action() here. Foldkit already scopes an optimistic write, its effect, and its reconciliation: update applies the optimistic change and returns the Command, the Command does the work, and the Message it returns reconciles. That is the same three phases, written in the architecture that was already there.