Skip to content

Commit 90357ff

Browse files
verify:live: assert the graphite posture, and stop crying wolf at a 503
The stylesheet markers were the previous wave's: white paper and the light cobalt. They now name what this wave serves — the graphite page, the accent raised for it, and the second theme — and the retired list gains that wave's own signature (#101317, #72bdff) plus the prefers-color-scheme branch, which is gone by construction now that the dark theme IS :root. Its return would mean the tokens are duplicated again, which is how the print regression got in. probe() also retries 429/502/503/504. The deploy printed "plex-mono-400.woff2 — HTTP 503" on a file that then served 200 three times in a row: an edge saying come back later is not a verdict, while a 404 still is — one check asserts one on purpose.
1 parent 8f37aba commit 90357ff

1 file changed

Lines changed: 29 additions & 8 deletions

File tree

‎scripts/verify-live.mjs‎

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -95,22 +95,28 @@ async function get(url, attempts = 3) {
9595
// on a file curl then served four times in a row. A launch-day instrument that
9696
// cries wolf gets ignored, which is the whole of its value.
9797
//
98-
// It retries what the NETWORK threw and never what the SERVER answered. A 404
99-
// is an answer: retrying it would only make a real defect slower to report, and
100-
// one of these checks (the deleted map copy) is asserting a 404 on purpose.
98+
// It retries what the NETWORK threw, and — since 2026-08-01 — the two answers
99+
// that are not verdicts either. A 404 IS a verdict: retrying it would only make
100+
// a real defect slower to report, and one of these checks (the deleted map copy)
101+
// asserts a 404 on purpose. A 5xx is the edge telling you to come back: the
102+
// graphite deploy printed "plex-mono-400.woff2 — HTTP 503" on a file that then
103+
// served 200 three times in a row, which is the same false alarm as the fetch
104+
// blip above, just answered instead of thrown.
105+
const RETRYABLE = new Set([429, 502, 503, 504]);
101106
async function probe(url, init = {}, attempts = 3) {
102107
let lastErr;
103108
for (let i = 1; i <= attempts; i++) {
104109
try {
105-
return await fetch(url, {
110+
const res = await fetch(url, {
106111
headers: { 'user-agent': 'proofstone-verify' },
107112
signal: AbortSignal.timeout(20000),
108113
...init
109114
});
115+
if (!RETRYABLE.has(res.status) || i === attempts) return res;
110116
} catch (e) {
111117
lastErr = e;
112-
if (i < attempts) await new Promise((r) => setTimeout(r, 800 * i));
113118
}
119+
await new Promise((r) => setTimeout(r, 800 * i));
114120
}
115121
throw lastErr;
116122
}
@@ -294,16 +300,31 @@ console.log('\nDEPLOYED REDESIGN');
294300
// still carried the old wave's colours — a half-applied deploy, a stale
295301
// CDN object, a bad merge — and the check would have gone green.
296302
const need = [
297-
['--bg: #fcfdfe', 'white paper'],
298-
['--accent: #005ab8', 'cobalt accent'],
303+
['--bg: #161717', 'the graphite page'],
304+
['--accent: #5b9dff', 'cobalt raised for a dark page'],
305+
['[data-theme="light"]', 'the second theme, served'],
299306
['--map-ink', 'map tokens'],
300307
['font-weight: 400 700', 'sans declared through to a real 700']
301308
];
309+
// Each retired marker is one wave's signature, kept because a stale CDN
310+
// object or a half-applied deploy is exactly a stylesheet that carries the
311+
// new markers AND an old one. The graphite line is the last three:
312+
// • #101317 / #72bdff were the previous wave's dark page and accent —
313+
// they are what this wave replaced, not what it renamed;
314+
// • the prefers-color-scheme branch is gone by construction, because the
315+
// dark theme IS :root now. Its return would mean the tokens are
316+
// duplicated again, which is how the print regression got in last time.
317+
// Matched with the "@media (" prefix on purpose: the palette comment
318+
// names the mechanism it removed, and a bare string would flag that.
302319
const forbid = [
303320
['#9d3b1f', 'sealing wax'],
304321
['#f7f3ea', 'warm paper'],
305322
["'Zilla Slab'", 'the display serif'],
306-
['rgba(157, 59, 31', 'the map hover wash literal']
323+
['rgba(157, 59, 31', 'the map hover wash literal'],
324+
['#fcfdfe', 'white paper'],
325+
['#101317', "the previous wave's dark page"],
326+
['#72bdff', "the previous wave's dark accent"],
327+
['@media (prefers-color-scheme', 'the duplicated OS-theme branch']
307328
];
308329
const missing = need.filter(([t]) => !body.includes(t));
309330
const lingering = forbid.filter(([t]) => body.includes(t));

0 commit comments

Comments
 (0)