At a glance
- What brokeThe sitemap's 26 addresses were refused: 21 filed as duplicates of the slashless pages Google had already indexed, 4 unknown. Six hours later, with the sitemap corrected: 24 of 26 indexed. 28 impressions in September, all for one workshop's name; 1 click.
- Found bySearch Console index report, read by the OSI search-read script
- Where it standsStill open. The log says so, and the write-up grows as the repair does.
The story
The sitemap told Google about 26 addresses, and Google refused 25 of them: 21 as duplicates, 4 as unknown. The pages themselves were fine. They were indexed at a slightly different address, the one without the trailing slash, and the sitemap was the only thing on the site that did not know it.
The short version
- The symptom. Search Console, read on 2026-10-07: 26 URLs in the sitemap, 1 “submitted and indexed”, 21 “duplicate without user-selected canonical”, 4 “unknown to Google”. 28 impressions in September, every one of them for the name of one workshop. One click.
- The cause. Every page answered at two addresses,
/column/and/column, and the site sent one to the other with a 307, a temporary redirect. A temporary redirect tells Google to keep both. Google chose the slashless form and indexed it; the sitemap submitted the slash form, so every sitemap URL was a duplicate of a page Google already had. Under that:http://answered 200 with no redirect tohttps://, no URL in the sitemap carried a date, and no page carried a date, an author or any structured data at all. - The repair. The sitemap, the canonical and every link in one form, slashless. A permanent redirect on the trailing slash and on
http://, set where the answer is actually produced (the Cloudflare zone, before any code runs). A sitemap the site writes itself, with the CMS row’supdatedAton every URL. One schema.org graph on every page with the author and both dates. A description of its own on every page. - The first receipt. The same read, six hours later, against the corrected sitemap: 24 of 26 “submitted and indexed”, 2 unknown. The pages were there all along; now the sitemap says so too.
What was actually lost
Not the index. Five weeks of Google reading a sitemap it could not use, with no date on anything and no author anywhere, while the site’s whole case for existing is to be found by people who build with AI and stall before production. Its growth gate (300 subscribers or 2,000 monthly readers by 2026-12-05) does not move on 28 impressions a month. This fix cleared the plumbing. The 28 is the next fix.
The evidence
The trace is rough while the fix is open. It runs straight from the repair on.
- Opened
Search Console index report read by script: 26 URLs, 1 indexed, 21 duplicate without user-selected canonical, 4 unknown to Google.
receipt · raw/keywords/track/flowingkhaos/2026-10/index.csv - Diagnosis
First attempt: canonical on every page, one URL form, build format 'file'. Deployed; /column/ still 307 on production at 23:00. The redirect is Cloudflare's assets layer, not the site.
- Diagnosis
Live crawl of the 26 URLs: http:// 200 with no HSTS; 0 pages with JSON-LD, an author or a date; 16 of 26 share one description. The 307 can only become a 301 as a Redirect Rule on the zone.
- Repair
Built on a branch: HSTS header file, a site-written sitemap with lastmod on 23 of 26 URLs, one schema.org graph per page with author and dates, a description and H1 per page, nofollow on sign-in links. 265 tests pass. Waits on the merge and on the two zone settings.
receipt · live-CMS build: 26 URLs / 23 lastmod; wrangler preview curled - Diagnosis
Live crawl of the 26 URLs: http:// 200 with no HSTS; 0 pages with JSON-LD, an author or a date; 16 of 26 share one description. The 307 can only become a 301 as a Redirect Rule on the zone.
- Repair
Built on a branch: HSTS header file, a site-written sitemap with lastmod on 23 of 26 URLs, one schema.org graph per page with author and dates, a description and H1 per page, nofollow on sign-in links. 265 tests pass. Waits on the merge and on the two zone settings.
receipt · live-CMS build: 26 URLs / 23 lastmod; wrangler preview curled - Diagnosis
Second Search Console read against the slashless sitemap: 24 of 26 submitted and indexed (crawled 19–29 Sept), 2 unknown. The first read's '1 of 26' described the sitemap's slash addresses, not the pages. Correction written into every page of this fix.
receipt · raw/keywords/track/flowingkhaos/2026-10/index.csv, inspected 2026-10-08T00:22:38Z - Repair
Merged to main (ecd4c3c) and deployed. Measured on production: 23 lastmod in sitemap-0.xml, TechArticle on a fix stage, HSTS header on /. Zone redirect rule and Always Use HTTPS still the operator's.
receipt · curl on flowingkhaos.com, 2026-10-08 ~01:00 UTC
The rule I changed after
Read Search Console within a week of any cut-over, not five weeks after. And inspect the address Google chose, not the address you submitted: a URL Inspection report answers for the sitemap's mistake, not the site's reach.