Skip to main content

max / makenotwork

Record why the seventeen seed mismatches were not a stale pin
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-19 20:53 UTC
Signed with PGP, not checked
Commit: 8668f5439b7e42d32ed4d1dfb7eefc370d3a8971
Parent: 2a53c90
1 file changed, +23 insertions, -0 deletions
@@ -58,6 +58,29 @@
58 58 # rejected: it would turn "this file was replaced" into a line in a log nobody
59 59 # reads, on a box whose whole job is to be looked at.
60 60 #
61 + # STEP 2 IS NOT AUTOMATIC, AND 2026-08-19 IS WHY. Sando build 60 failed
62 + # code_smoke with seventeen digest mismatches at once, every one of them a
63 + # metmuseum.org URL. Following step 1 cleared all seventeen: the API still
64 + # reports isPublicDomain true for each object, each object's title and artist
65 + # still match this file, and each `url` is still the object's own
66 + # `primaryImage`. Then step 2 refused to apply. Re-fetching from fw13 returned
67 + # the digest ALREADY PINNED HERE, for all seventeen, twice over with two HTTP
68 + # clients, and six consecutive GETs of one asset were byte-identical with a
69 + # stable etag whose `last-modified` is 2023-05-03. Nothing had changed at the
70 + # source and there was nothing to repin.
71 + #
72 + # So a mismatch does NOT imply the pin is stale. It can also mean the fetch got
73 + # a variant, and pasting that variant's digest in would pin the wrong bytes and
74 + # fail the next build that gets the canonical ones. One oddity worth knowing
75 + # while diagnosing: HEAD on that asset reports content-length 1238267 while GET
76 + # consistently returns 1222008 bytes, so the origin does describe more than one
77 + # encoding of the same object.
78 + #
79 + # BEFORE REPINNING ANYTHING, re-fetch by hand and confirm the digest you are
80 + # about to paste is one you can reproduce twice. If it matches what is already
81 + # here, the pin is right and the build is what went wrong: rebuild rather than
82 + # edit this file.
83 + #
61 84 # Two sources, both chosen because the licence is machine-readable at the
62 85 # source rather than asserted by a human reading a page:
63 86 #