From 4cde232c4357122d0d57988e1318e6933f72f9f9 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Thu, 6 Aug 2026 20:32:59 -0700 Subject: [PATCH] Record media integrity in the State table The table said nothing about whether the conversion lost anything, which is the one question a migration's record has to answer and the one a reader cannot check for themselves. Rebased onto develop and reconciled with two things that landed while this sat open. The volatile counts it originally carried in the Content and media row are gone, because develop deliberately replaced counts that content additions move with what they represent, and this row would have reintroduced 514 pages against that decision. And the claim is narrowed from "closed" to closed for the files themselves: the image loss was 19 and is restored, but #55 later found the conversion had also flattened how galleries present media, in three shapes across three posts. That was not a file loss and no file was missing, which is exactly why nothing saw it for so long, and it is now gated. Co-Authored-By: Claude Opus 5 (1M context) --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index e65030c..a5644a6 100644 --- a/TODO.md +++ b/TODO.md @@ -9,6 +9,7 @@ The site is built, gated in CI, and deployed to staging by pipeline. It is not y | Piece | State | | --- | --- | | Content and media | done. Carries every migrated post and page, with the media hash-verified against the export tar | +| Media integrity | closed for the files themselves. The conversion's only loss was 19 images, inside five galleries, restored from the capture, and the 98 files with no page links are adjudicated rather than unknown, with `ORPHANED_MEDIA` failing if that count moves either way. How media was *presented* was a separate loss, found later and now gated | | URL contract | done. 328 render, 917 redirect, 778 legacy image URLs, all gated | | Deploy shape | done. Proven on two local mirrors and on the VPS, by hand and by pipeline | | CI workflows | green. Validation runs on every pull request and feeds the required check |