Most of the logic of this controller belongs in a helper, and the next commit reshapes it, so move it over unchanged first to keep that diff about the change itself. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>