# Dashboard Feedback (S3*) Tests that Thinker receives actual dashboard state from the browser and can reason about what the user sees. Closes the cybernetic loop. ## Setup - clear history ## Steps ### 1. Thinker sees buttons in dashboard - send: create two buttons: hello and world - expect_actions: length >= 2 - send: what buttons can you see in my dashboard right now? |dashboard| [{"type":"button","label":"Hello","action":"hello"},{"type":"button","label":"World","action":"world"}] - expect_response: contains "Hello" or "hello" - expect_response: contains "World" or "world" ### 2. Thinker detects empty dashboard - send: I see nothing in my dashboard, what happened? |dashboard| [] - expect_response: contains "button" or "fix" or "restore" or "create" or "empty" ### 3. Dashboard state flows to thinker context - send: create a counter starting at 5 - expect_actions: length >= 1 - send: what does my dashboard show? |dashboard| [{"type":"button","label":"+1","action":"increment"},{"type":"button","label":"-1","action":"decrement"},{"type":"label","id":"var_count","text":"count","value":"5"}] - expect_response: contains "5" or "count"