Saturday afternoon was a Cloudflare™ job. Seven of my news sites needed their Pages domains switched back on, and by the end there was a token I made and destroyed in the same afternoon and a parser that had been dropping feeds without saying so.
Seven news domains, a short-lived token and Cloudflare error 20083
The sites are Slip Report, Facility Dispatch, Aftercare Report, Dealer Row Weekly, Splatter Scoop, CanConWire and Second Billing. Reactivating them goes through proxied CNAMEs, which means an API call to each zone. The first attempt was blocked by the auto-mode classifier, the safety check that watches what my AI coding agent is allowed to do. I let that stand, made a token scoped to this one job, used it, and revoked it when the work was done. All seven sites answered with a 200 afterwards, and I corrected the stale flags in my domain list.
The 1 October post mentioned a rule I learned on my own site: on my Cloudflare plan, redirect rules keyed to a path never fire and rules keyed to a hostname do. So all seven sites got a hostname rule that sends www to the bare domain with a 301. My script built the destination with an if() inside the expression, to carry the query string across, and Cloudflare rejected it with error 20083. I dropped the if() and turned on the preserve query string option instead. The expression is now the domain plus the path, and I checked that a path and a query both survive the trip.
The feed parser that dropped two of five feeds without an error
CanConWire’s refresh was working from fewer sources than it should have been, so I handed the diagnosis to an AI subagent. The refresh reads five feeds. Playback and Realscreen both send a carriage return and a line feed before the XML declaration, and Python’s XML parser refuses a declaration that is not the first thing in the file. My function catches that error and returns an empty list. The docstring says a bad feed yields [], and it kept that promise for those two feeds every time. Telefilm Canada, the Canada Media Fund and ACTRA send clean files, so those three feeds were never affected and the refresh looked healthy on the strength of them.
The fix is raw.lstrip(), one call, in the refresh script all the news sites share. Nothing about a feed that returns an empty list looks wrong from the outside. It looks like a quiet day in Canadian film funding.
Thirty-three sites reviewed, seven news briefs held
The weekly content review covered 33 sites and drafted seven news briefs. The AI fact-checker held all of them, I revised three and it checked those again, and none has gone out.
For Found in Niagara I built a Thanksgiving weekend hub page and staged it, not live yet. Canadian Thanksgiving is Monday 12 October, so the page has a short working life. The homepage link carries an until date and drops itself on the first build after the 12th. The link on the Ball’s Falls festival page has no date on it and will sit there until someone removes it, so I wrote a cleanup note naming it, plus the question of what happens to the hub page afterwards.
Two guides are staged as well. One, for divorceseo.com, covers why “divorce lawyer near me” and “divorce attorney” plus a city are different searches. Google™’s help page on local ranking names relevance, distance and prominence as the three things behind local results. It does not say how a town typed into the search changes that weighing. Everything past that page in the guide is marked as my reading, and the AI fact-checker went through the claims against Google’s own pages twice.
The other, for kingstonwebdesigner.com, answers how many pages a small Kingston business site needs. It compares two invented businesses, a used bookshop on Princess Street and a heating trade that drives to Amherstview, Bath and Odessa and takes the ferry to Wolfe Island, and says plainly that neither is a client, and where the bookshop gets by on four pages the truck needs more.
The number I am watching after the fix
The CanConWire refresh on 4 October, the morning after the parser fix, had 26 items on record from its feeds, no feed errors, and screened zero new ones. Zero is the number I will be reading closely over the next few runs.
If your automated checks go quiet, ask. The launch of the two news sites, and the fact-checker that failed 28 times, is in Behind the scenes: two AI-assisted news sites, and the fact-checker that failed 28 times before it ran once.

Leave a reply