Final review round plus CodeRabbit.
- The render-time client reset cleared items and the slug cache but left
githubRepoSources, githubSourceErrors and githubSourceFallbacks, so
switching hosts could still show the previous host's repo names and
error banners. All of them reset together now, via a shared
resetGitHubItemsState that also replaces four duplicated copies of the
same five setters.
- The route source tests sliced with an unvalidated end index, and
slice(start, -1) trims one byte instead of failing, so several
assertions could pass with the marker missing (CodeRabbit). They now go
through one extractor that asserts both boundaries.
- Added the missing test for the render gate itself: readiness is only
useful if the renderer consults it, and removing that condition left
the suite green.