From b24f8c916f7638cf3807550f7e2084b76603280f Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Sat, 1 Aug 2026 12:04:56 -0700 Subject: [PATCH 1/2] Retire the R numbering that the matcher rename orphaned Re-deriving the redirect table replaced the R1 to R11 numbering with the Caddy matcher names, but only in the table. Two references to the old scheme survived elsewhere, pointing at labels that are now defined nowhere in the repo. Both found by review on the promotion. `checks/check-url-parity.py` printed "resolve after the R8 rewrite" and named "the R8 rewrite prefix" in its failure text. That script is the source of the line quoted in the audit, so it was the actual origin of the orphan rather than a second copy of it. Both strings now name `@uploads`, and the quoted output in `reports/Blog/audit.md` is updated from a real run rather than edited to match. `TODO.md` described an open decision as "a one-line change to rule R3", which is now the `@date_archive` rule. Matcher names were chosen precisely because they can be grepped against the Caddyfile, and that only holds if nothing still refers to the numbering they replaced. Verified: 514 pages, 328/328 render, 778/778 media, 1012/1012 assets. Co-Authored-By: Claude Opus 5 (1M context) --- TODO.md | 2 +- checks/check-url-parity.py | 4 ++-- reports/Blog/audit.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/TODO.md b/TODO.md index 1836168..435f1cd 100644 --- a/TODO.md +++ b/TODO.md @@ -36,7 +36,7 @@ The site is built and gated in CI. It is on GitHub, and it is not yet serving it - The staging FQDN name. - `/robots.txt/` and `/osd.xml/` currently sit in `slugs.map` pointing at `/`. The first would be better pointing at the real `/robots.txt`. -- Whether the 78 legacy date-archive redirects should point at `/all/` rather than `/`, so a visitor following a `/2015/` link lands somewhere they can find 2015 posts. It is a one-line change to rule R3. +- Whether the 78 legacy date-archive redirects should point at `/all/` rather than `/`, so a visitor following a `/2015/` link lands somewhere they can find 2015 posts. It is a one-line change to the `@date_archive` rule in the Caddyfile. ## Deliberate deviations from the fleet baseline diff --git a/checks/check-url-parity.py b/checks/check-url-parity.py index 94582b1..b3232f6 100755 --- a/checks/check-url-parity.py +++ b/checks/check-url-parity.py @@ -62,10 +62,10 @@ def check_media(public): for url in legacy: rewritten = re.sub(r"^/wp-content/uploads/", "/media/", url) if rewritten == url: - missing.append(f"{url} (does not match the R8 rewrite prefix)") + missing.append(f"{url} (does not match the @uploads rewrite prefix)") elif not (public / rewritten.lstrip("/")).is_file(): missing.append(url) - print(f"media : {len(legacy) - len(missing)}/{len(legacy)} legacy image URLs resolve after the R8 rewrite") + print(f"media : {len(legacy) - len(missing)}/{len(legacy)} legacy image URLs resolve after the @uploads rewrite") return missing diff --git a/reports/Blog/audit.md b/reports/Blog/audit.md index eaaabf0..fb655b2 100644 --- a/reports/Blog/audit.md +++ b/reports/Blog/audit.md @@ -67,7 +67,7 @@ From the first run on `main`: hugo v0.164.0+extended (pinned by version and sha256) Pages 514 | Total in 858 ms (zero warnings under --panicOnWarning) render : 328/328 golden URLs built -media : 778/778 legacy image URLs resolve after the R8 rewrite +media : 778/778 legacy image URLs resolve after the @uploads rewrite assets : 1012/1012 local asset references resolve PASS - the built site honors the URL contract ``` From 3e966dc5ffd71117a13bdb26e285058e3a048767 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Sat, 1 Aug 2026 12:09:33 -0700 Subject: [PATCH 2/2] Drop the date-archive open decision, which is already implemented The item asked whether the legacy date archives should redirect to `/all/` rather than `/`. The Caddyfile already does exactly that, in `redir @date_archive /all/ 301`, and the redirect table documents the class as landing on `/all/`. So the entry was not an open decision but a record of one already made, which is worse than no entry: it sends a reader hunting for a change that is in effect, and it contradicts the config and the table. Raised by review, which noticed the config and the backlog disagreed. Rewording it to name `@date_archive` in the previous commit made the contradiction easier to see, since it now pointed at the exact rule that already behaved the way the item was asking for. The remaining decisions were checked against the config for the same defect. The `/robots.txt/` and `/osd.xml/` entry is genuinely open, since both still resolve to `/` in `slugs.map`. Co-Authored-By: Claude Opus 5 (1M context) --- TODO.md | 1 - 1 file changed, 1 deletion(-) diff --git a/TODO.md b/TODO.md index 435f1cd..8da733f 100644 --- a/TODO.md +++ b/TODO.md @@ -36,7 +36,6 @@ The site is built and gated in CI. It is on GitHub, and it is not yet serving it - The staging FQDN name. - `/robots.txt/` and `/osd.xml/` currently sit in `slugs.map` pointing at `/`. The first would be better pointing at the real `/robots.txt`. -- Whether the 78 legacy date-archive redirects should point at `/all/` rather than `/`, so a visitor following a `/2015/` link lands somewhere they can find 2015 posts. It is a one-line change to the `@date_archive` rule in the Caddyfile. ## Deliberate deviations from the fleet baseline