What I was told
A promo banner stopped rendering after a state-management rewrite. My agent worked the problem for many turns and reported:
The promo banner stopped rendering after the store rewrite. Not in the HTML, and my debug probes never fire.
It listed what it had ruled out: hydration errors, stale build chunks, export mismatch, provider nesting, an effect dependency loop, and an empty preloadedState wiping the tree. It proposed either reverting the work or diffing the built layout chunk against a known-good build.
What was actually true
I took a screenshot of the browser console. The probes were firing:
[PROBE] Banner render, banner= null Banner.tsx:88
[PROBE] Banner render, banner= null Banner.tsx:88
[PROBE] Banner render, banner= null Banner.tsx:88
[PROBE] Banner render, banner= null Banner.tsx:88
Four times. The component was mounting. It was rendering. It simply had nothing to display, because the selector returned null.
Why this mattered more than it looks
Read the ruled-out list again. Hydration errors, stale chunks, export mismatch, provider nesting, effect loops, every one of those is a hypothesis about why a component fails to mount. The agent had built an entire search space around a premise that one glance at the console disproved. Diffing the layout chunk would have been another hour inside the same wrong space.
This is worse than a wrong answer. A wrong answer gets corrected. A wrong premise generates an unlimited supply of plausible next steps, each of which feels like progress.
What actually caused it
A data problem, not a render problem. The banner slice rehydrated without its queue, so the selector returned null, the same root cause as the persistence bug that crashed the chat modal.
The lesson
When a debugging effort has ruled out five things and is proposing a sixth, stop and check the premise. And check it with an instrument the model doesn't control: a screenshot, a devtools panel, a real browser. The agent's belief that its probes weren't firing was sincere, and it was contradicted by the terminal output on my own screen.