App state
The agent reads and operates the board below. State enters context through a ContextSource — budgeted and traced like every other layer, re-read every turn so it can never contradict the screen — and actions are ordinary ToolDefinitions, so they inherit presets, confirm-suspension and deny-last for free. The board is plain React state: drive it by hand, then ask the agent to, and watch the same state change.
todo
doing
done
The agent already knows the board — it is in the context layer, not the conversation.