RendererEffect
Something the renderer must act on that applying a message did not, and could not, do itself.
Two of the six agent-to-renderer messages do not change surface state at all — they ask the renderer to run a function, or hand back the result of one the renderer asked for. Folding them into state would lose them; dropping them would lose the response the specification says the renderer MUST send. So the fold returns them alongside the new state.
The state-changing messages report an effect too, so that a UI layer can tell what moved without diffing two whole RendererStates.
Inheritors
Types
The agent answered a callAgentFunction the renderer had sent.
Components were added to or replaced in a surface.
A surface's data model changed at path.
The agent asked the renderer to run call.
A surface was created. It is not renderable until its root component arrives.
A surface was deleted along with its components and data.