Repository navigation
Redirect the Old News Sitemap to sitemap.xml - #489
Conversation
The old platform served /news-sitemap.xml, and the Wayback Machine holds captures of it answering 200 from 2022 through 2024. Crawlers still poll it daily and get a 404. A slugs.map entry sends it to /sitemap.xml, the contract carries it, and the README counts move with it. OPERATIONS.md also records that a routerless https 404 landing beside 502s is the edge restarting on its schedule, so a pass leaves it alone.
The strict review found the map entry would not survive, since capture/build-redirects.py rewrites slugs.map from the capture and its filter never emits a one-slash key. The redirect is an exact-path class of its own instead, the shape the Blogger feed alias uses, with its own rows in both README tables, its sampler class, and /sitemap.xml among the fixed destinations the sample renders. OPERATIONS.md's restart paragraph opens as the exception to the routing fault the paragraph before it describes, and attributes the restart schedule to the host side's own documentation.
|
A recorded local strict-review pass covers head |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #489 +/- ##
==========================================
Coverage ? 49.70%
==========================================
Files ? 10
Lines ? 3058
Branches ? 0
==========================================
Hits ? 1520
Misses ? 1538
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🟢 Approval recommended
The remaining review comments are minor documentation and ordering nits, with no unresolved issues that block approval.
1 open issue
What changed in this PR
This pull request redirects the legacy /news-sitemap.xml URL to /sitemap.xml and updates the redirect contract, live checks, tests, documentation, and operational guidance.
Changes:
- Adds an exact Caddy 301 redirect for
/news-sitemap.xml. - Extends the URL contract and samples
/sitemap.xmlduring live checks. - Updates redirect classifications, counts, tests, and documentation.
- Documents transient routerless HTTPS 404s during edge restarts.
| File | Description |
|---|---|
OPERATIONS.md |
Documents transient routerless HTTPS 404s during edge restarts. |
deploy/README.md |
Updates redirect counts and documents the new sitemap class. |
deploy/Caddyfile |
Redirects /news-sitemap.xml to /sitemap.xml with a 301. |
checks/tests/test_check_live_urls_sample.py |
Updates the expected redirect-class count. |
checks/redirect-urls.txt |
Adds the legacy sitemap URL to the redirect contract. |
checks/README.md |
Documents the new redirect class and updated contract size. |
checks/check-live-urls.sh |
Classifies the new URL and samples /sitemap.xml. |
Review effort: Lite
|
A recorded local strict-review pass covers head |

Summary
The 2026-10-23 404 pass (log-review handoff #474) found
/news-sitemap.xmlrequested daily onblog.insanegenius.comby GPTBot, Applebot, and a few residential clients, and production answers it 404. Round 1 of the lane had dropped it as noise, but the Wayback Machine holds 200 captures of it from 2022 through 2024, so the old platform served it and the redirect contract missed it.deploy/Caddyfile: a new@news_sitemapexact-path class redirects/news-sitemap.xmlto/sitemap.xml, the same shape as the/atom.xmlalias. Aslugs.mapentry was the first draft, and the strict review pointed out thatcapture/build-redirects.pyrewrites that map and never emits a one-slash key, so a hand edit there would not survive.checks/redirect-urls.txt: adds/news-sitemap.xml, which makes the contract 956 URLs.checks/check-live-urls.sh: classes the path as@news_sitemap, and adds/sitemap.xmlto the fixed destinations the sample renders, since no list names it and the sampled run does not follow redirects.checks/README.mdanddeploy/README.md: a row for the new class in each table, and the stated counts follow the change (955 to 956, 15 to 16redirdirectives, sixteen to seventeen classes).checks/tests/test_check_live_urls_sample.py: the class count the table test asserts moves from 16 to 17.OPERATIONS.md: records that a routerless https 404 landing beside 502s on a served hostname is the edge restarting, nightly or during a daytime host-side push, so a pass leaves it alone unless it does not look like an update blip. Three such windows showed up in the lane's last two passes, and this stops the next pass re-investigating one.Verification
check-live-urls.shpassed 1294 URLs, and/news-sitemap.xmlanswered 301 to/sitemap.xml, which answered 200.python3 -m unittest discover -s checks/testspassed 127 tests.--print-samplelists@news_sitemap 1 /news-sitemap.xmland/sitemap.xmlamong the rendered destinations, with the sample at 30 of 30 non-static paths.prose_lint.py --diff, with and without--check sentence-length, reported nothing. markdownlint, editorconfig-checker, shellcheck, and shfmt ran through the hub's Docker wrapper and reported nothing. ruff check and format pass onchecks/.slugs.maphand edit the generator would drop, fixed in the second commit. The second found the stale@labelordinal, fixed in the third. The third found nothing. After the Copilot round, the fourth found the two sibling sentences in deploy/README.md and OPERATIONS.md, fixed in the fifth commit, and the fifth found nothing.🤖 Generated with Claude Code