Repository navigation
Session Handoff [log-review]: Periodic 404 Log Review, Monthly From 2026-11-15 #474
Copy link
Copy link
Closed
Labels
handoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Description
Next steps, in priority order
- Run the first monthly 404 pass on or after 2026-11-15. OPERATIONS.md "Logs and Debugging" now carries the whole procedure. Run it from the repository rather than rebuilding it by hand.
- Use the window block in "Reading a 404 list without being fooled by it" with
start='2026-10-15T21:03', where this pass ended. It runschecks/log-review.jqover the joined window. - Cross-check the
403s with "A 403 is CrowdSec's until shown otherwise", and check any crawler403or404by forward-confirmed DNS. - Run "Checking that search engines can index both sites".
viljoen.family/robots.txtand/sitemap.xmlshould now answer200, and a404on either is a regression. So is a404on/tag/review,/viljoen-familyor/20180811_172609507_iosafter 2026-10-15 23:04 UTC. - When a new scanner shape crowds the list, add it to
checks/log-review.jqin the same change that records the pass. - Done for a pass means a comment on this issue with the date range, the count left after filtering, and each finding's disposition.
- Use the window block in "Reading a 404 list without being fooled by it" with
- After that pass, close this lane out if it found nothing new. Otherwise write the next link with the next monthly date.
External blockers
- Production log reads and CrowdSec reads need the maintainer's go-ahead. Ask once per session in a dialog before the first SSH or archive read. A past session's approval does not carry over.
- Search Console is the maintainer's. Google did not fetch the blog's
sitemap.xmlbetween 2026-10-10 and 2026-10-15, while Bing did. Whether the sitemap is submitted in Google Search Console, and the new family sitemap too, is visible only there. - The cleartext redirect is temporary (
302/307) on both sites. That is host-side, filed as ptr727/HomeAutomation-Config#1077. The HomeAutomation-Config session acknowledged it and left it in that backlog. - The home-network CrowdSec allowlist is still ptr727/HomeAutomation-Config#893. Until it lands, keep production probes to a handful per pass.
Internal dependencies
- None. Each pass stands alone.
State
mainis at7f9f172(Promote Slashless Redirects, the Family Sitemap, and 404 Pass Tooling #473), anddevelopis at00d0c4a(Commit the 404 Pass Filter and Document the CrowdSec and Crawler Checks #472). Release 1.0.244 is published.- 1.0.244 is deployed to VPS production by run 38820971701 as release
20261015-230352-38820971701-1. Its sampled live check passed. The local production mirror serves7f9f172and passed all 1,293 URLs. VPS staging was not redeployed. Re-read each site'sX-Blog-Releaserather than trusting this line. - The local staging mirror serves a test build of Redirect Slashless Map Keys and Give the Family Site a Sitemap #471's branch, which matches
develop's redirect content. - No feature branches or worktrees are left. The primary checkout is on
developand clean. - ptr727/HomeAutomation-Config#893, #894 and #1077 are open, and all three belong to the HomeAutomation-Config session.
The parked decision queue
Zero issues carry decision. This round asked five questions as it went, all answered: the production-read go-ahead, the slashless fix, the process-in-git shape, the host-side issue, and the merges and release.
What the last round did
- The catch-up pass covered 2026-10-10 22:39 UTC through 2026-10-15 21:03 UTC and is recorded in a comment on this issue. The 2026-10-11 daily pass had been missed.
- #471 redirects slashless
slugs.map/terms.mapkeys through a second map lookup (@mapped_slash, contract now 955 URLs). It also adds the familyrobots.txtandsitemap.xml. - #472 commits
checks/log-review.jq. It also documents the window join, the CrowdSec cross-check, forward-confirmed crawler DNS, and the indexability checklist in OPERATIONS.md. - #473 promoted both. Released as 1.0.244 and deployed to production and the local production mirror.
- Filed ptr727/HomeAutomation-Config#1077 for the permanent redirect and told that session.
What not to repeat
- Filtering by a broad extension or root word without checking what the sites serve. The first filter dropped
/en/,/index.json,/site.js,/apple-touch-icon.pngand legacy.zipuploads. Run every built file and contract URL through the filter as a synthetic404after changing it. None may be dropped. set -einside a{ }group on the left of a pipe. Bash ignores it there, so a failedfindorzcatstill yields a partial window. Run producers as plain commands inside a( set -euo pipefail ... )subshell, as OPERATIONS.md now does.- Reading an empty
403as anything but CrowdSec before matching it. 389 of 395 blocked clients matched CrowdSec's alerts or decisions. The rest received only403s. - Trusting a crawler user agent. All six crawler-UA
403s came from cloud VMs. Confirm by reverse DNS, then forward. - Everything in Session Handoff [log-review]: Periodic 404 Log Review, Daily Through 2026-10-11 Then Monthly #461's and Session Handoff [log-review]: Periodic 404 Log Review, Daily Through 2026-10-11 Then Monthly #455's "What not to repeat" still applies.
New learnings
- A routerless https
404on a served host can be the edge losing its routes while the Pangolin API restarts. On 2026-10-15 at 09:14 UTC the API answered502for about 18 seconds. Host-side and transient. - The repeatable log-review steps are now in OPERATIONS.md "Logs and Debugging" and
checks/log-review.jq, per the maintainer's direction that repeatable process belongs in git rather than in notes.
Metadata
Metadata
Assignees
Labels
handoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Activity
ptr727 commentedon Oct 23, 2026
404 pass, 2026-10-15 21:03 UTC to 2026-10-23 15:42 UTC
Run early, on the maintainer's call, rather than waiting for the 2026-11-15 monthly date, so the window also covers release 1.0.244's first week in production.
Window: 116,005 edge lines after the join and dedupe, 17 archived days plus the live log.
checks/log-review.jqleft 711 lines.Findings and dispositions:
/news-sitemap.xmlon the blog host, 11404s, from GPTBot at three addresses (one of them daily), Applebot, and three residential iPhone clients. Round 1 dropped it as noise without a Wayback check. The Wayback Machine holds 200 captures of it from 2022-09 through 2024-02, so the old platform served it. Disposition: fixed in #489, a@news_sitemapredirect to/sitemap.xml, contract now 956 URLs.404clusters on served hostnames, 2026-10-17 00:49 to 00:51 UTC (6 lines beside 37502s) and 2026-10-21 09:30 UTC (3 lines beside 4502s). The three addresses in the second cluster all serve normally (two media files and a post). Disposition: none. The maintainer confirmed the edge restarts nightly and during daytime host-side pushes, and OPERATIONS.md "The log is three tiers" now says to leave such a window alone unless it does not look like an update blip./en/on the blog host, 4 requests from 4 clients with no reverse name and exactly 30 other requests each, every one carrying apieter.viljoen.name/en/referer. That domain is a registrar-level redirector forwarding its path to the blog, so the blog receives whatever is probed there. No Wayback capture of/en/on any blog host. Disposition: none, a scripted crawler./2012/06/looks-can-be-deceivingonce, no referer.blogger.mapcarries the.htmlform. No Wayback capture of the extensionless form. Disposition: none./sitemap_index.xml(4),/sitemaps.xml(2),/sitemap.txt(1),/osd.xml(1),/rss.xml(3),/rss(1),/index.rdf(1): sitemap and feed-name guesses, the last three from the same feedparser client as earlier rounds. No Wayback capture of any. Disposition: none./2008/04/feed/,/2012/08/feed/from Google FeedFetcher),viljoen.family/feed/pollers,/viljoen-family/comments/feed,/favicon.pngfrom an okhttp app,/archive/from an AI agent, truncated and quote-mangled links: as cleared in earlier rounds.__vite_rsc_findSourceMapURL, Joomla and Jira paths, and random 20-character slugs.403 cross-check: 512 blocked clients, 495 matched CrowdSec alerts or decisions. The 17-client residue was 8 clients that only ever received
403s, and 9 scanners (cache.php,admin.php,.env, WP-Safe-Scanner) whose community decision expired before the read. Nothing for this repository.Crawlers: 37 crawler-UA clients received a
403or404. 15 forward-confirm as Googlebot, Google, Bingbot, or Applebot, and those received no403at all. Their404s were old WordPress asset URLs,/ads.txt, sitemap guesses, and the two month feeds. The rest were Google Cloud VMs claiming Googlebot, every403among them.Indexability: all six probes pass on both sites.
viljoen.family/robots.txtand/sitemap.xmlanswer 200, and a Googlebot-UA client fetched the blog'ssitemap.xmlonce (200), where the previous window saw no Google fetch.Regression URLs from 1.0.244:
/tag/review,/viljoen-family, and/20180811_172609507_iosall answered 301 after 2026-10-15 23:04 UTC, none 404.Filter change: none. No new scanner shape crowded the list enough to earn a rule.
The extracts were deleted from the scratchpad after this comment was written.
ptr727 commentedon Oct 23, 2026
Continued in #491, round 7 on track
log-review.