18284efd9f
The observe step now has an inner loop — if the page isn't ready (still loading, wrong URL, expected content missing), the agent loops back to observe again instead of acting on stale state. The ASCII diagram shows the 'not ready' branch looping back to observe. Every observe step in the example now prints page.url() before the snapshot so the agent always knows the current URL. This catches redirects and unexpected navigation between actions.