Tree walker collects I/O nodes (frag, query, action, current-user, htmx-request?), dispatches them via asyncio.gather(), substitutes results, and renders to HTML. Failed I/O degrades gracefully to empty string. 27 new tests (199 total), all mocked at execute_io boundary — no infrastructure dependencies needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>