← back to Designerwallcoverings
TK-10895: storefront verify needs a CDN grace period
e14d23e1823ac09b5fa547cdddb4668bb88d58d5 · 2026-09-10 11:23:51 -0700 · Steve
The 45-product run flagged 3 HARD FAIL 'storefront pos1 is $4.25'. Re-read a
minute later: all 3 correct. The storefront is CDN-fronted, so a 1.2s post-write
read can serve a stale document - a false LEAK, the sixth false ordering reading
on this ticket, this time from the right oracle read too early.
Now waits 2.5s and re-reads once after 4s before flagging. Distinguishes 'not
propagated yet' from 'actually wrong'.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Files touched
M scripts/tk10895-trancheB-golive-269.mjs
Diff
commit e14d23e1823ac09b5fa547cdddb4668bb88d58d5
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Sep 10 11:23:51 2026 -0700
TK-10895: storefront verify needs a CDN grace period
The 45-product run flagged 3 HARD FAIL 'storefront pos1 is $4.25'. Re-read a
minute later: all 3 correct. The storefront is CDN-fronted, so a 1.2s post-write
read can serve a stale document - a false LEAK, the sixth false ordering reading
on this ticket, this time from the right oracle read too early.
Now waits 2.5s and re-reads once after 4s before flagging. Distinguishes 'not
propagated yet' from 'actually wrong'.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---
scripts/tk10895-trancheB-golive-269.mjs | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/scripts/tk10895-trancheB-golive-269.mjs b/scripts/tk10895-trancheB-golive-269.mjs
index 1860a82..609b717 100644
--- a/scripts/tk10895-trancheB-golive-269.mjs
+++ b/scripts/tk10895-trancheB-golive-269.mjs
@@ -142,7 +142,7 @@ for (const [i, w] of work.entries()) {
// VERIFY ON THE RENDERED STOREFRONT — the Admin API returns a stale variant order after a
// GraphQL reorder and has now produced FIVE false readings of this exact defect on this ticket.
// The storefront is what Google Merchant Center reads, so it is the only oracle that counts.
- await sleep(1200);
+ await sleep(2500); // storefront is CDN-fronted; a 1.2s read produced 3 false LEAK flags
let sf = null;
for (let a = 1; a <= 4 && !sf; a++) {
try { const r = await fetch(`https://designerwallcoverings.com/products/${p.handle}.json`);
@@ -151,8 +151,14 @@ for (const [i, w] of work.entries()) {
}
if (!sf) { console.log(`${tag} WARN — could not read storefront to verify (write itself succeeded)`); warn++; }
else {
- const sv = [...sf.variants].sort((a,b)=>a.position-b.position);
- if (!(parseFloat(sv[0]?.price) > 50)) { console.log(`${tag} HARD FAIL — storefront pos1 is $${sv[0]?.price}`); warn++; }
+ let sv = [...sf.variants].sort((a,b)=>a.position-b.position);
+ if (!(parseFloat(sv[0]?.price) > 50)) {
+ // one re-read before crying leak — CDN propagation, not a defect
+ await sleep(4000);
+ try { const r2 = await fetch(`https://designerwallcoverings.com/products/${p.handle}.json`);
+ if (r2.ok) sv = [...(await r2.json()).product.variants].sort((a,b)=>a.position-b.position); } catch {}
+ }
+ if (!(parseFloat(sv[0]?.price) > 50)) { console.log(`${tag} HARD FAIL — storefront pos1 is $${sv[0]?.price} after re-read`); warn++; }
}
}
if (p.options?.[0]?.name && p.options[0].name !== 'Size') {
← e0c030e TK-10895: post-verify must read the STOREFRONT, not the Admi
·
back to Designerwallcoverings
·
TK-10895: bring main's copies to the final verified state (2 a6afe99 →