[object Object]

← back to Dw Yolo Loop

jsonld-audit: Product JSON-LD structurally healthy (50/50) but 6/50 leak $4.25 sample into offers.price (multi-variant, real variant exists) — schema.org echo of $4.25 problem; distinct from GMC channel feed (organic rich results + Merchant-Center disapproval)

2845706a699c201a58044f2c1c432dd20841fd07 · 2026-06-17 12:02:43 -0700 · Steve Abrams

Files touched

Diff

commit 2845706a699c201a58044f2c1c432dd20841fd07
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jun 17 12:02:43 2026 -0700

    jsonld-audit: Product JSON-LD structurally healthy (50/50) but 6/50 leak $4.25 sample into offers.price (multi-variant, real variant exists) — schema.org echo of $4.25 problem; distinct from GMC channel feed (organic rich results + Merchant-Center disapproval)
---
 scripts/jsonld-audit/jsonld-audit-2026-06-17.json | 667 ++++++++++++++++++++++
 scripts/jsonld-audit/jsonld-audit.mjs             |  88 +++
 2 files changed, 755 insertions(+)

diff --git a/scripts/jsonld-audit/jsonld-audit-2026-06-17.json b/scripts/jsonld-audit/jsonld-audit-2026-06-17.json
new file mode 100644
index 0000000..d549152
--- /dev/null
+++ b/scripts/jsonld-audit/jsonld-audit-2026-06-17.json
@@ -0,0 +1,667 @@
+{
+  "ts": "2026-06-17T19:00:53.540Z",
+  "sampled": 50,
+  "summary": {
+    "product": 50,
+    "missing": 0,
+    "errs": 0,
+    "parseFails": 0,
+    "noOffer": 0,
+    "badCurrency": 0,
+    "badAvail": 0,
+    "sampleTraps": 6,
+    "mismatches": 0
+  },
+  "rows": [
+    {
+      "h": "venezia-glass-beads-wall-paper-gold-gls-111-glass-beads-gold",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 81.47,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 81.47,
+      "maxV": 81.47,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "venezia-glass-beads-red-rock-gls-113-glass-beads-red-rock",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 4.25,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 81.47,
+      "sampleTrap": true,
+      "priceMismatch": false
+    },
+    {
+      "h": "venezia-tm-glass-beads-silver-gls-112-glass-beads-silver",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 4.25,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 81.41,
+      "sampleTrap": true,
+      "priceMismatch": false
+    },
+    {
+      "h": "venezia-glass-beads-pinki-gls-115-glass-beads-pinki",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 4.25,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 81.47,
+      "sampleTrap": true,
+      "priceMismatch": false
+    },
+    {
+      "h": "venezia-glass-beads-coffee-gls-116-glass-beads-coffee",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 4.25,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 81.47,
+      "sampleTrap": true,
+      "priceMismatch": false
+    },
+    {
+      "h": "venezia-glass-beads-bronzino-gls-114-glass-beads-bronzino",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 4.25,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 81.41,
+      "sampleTrap": true,
+      "priceMismatch": false
+    },
+    {
+      "h": "the-original-heavy-madagascar-cloth-raffia-wall-paper-mad-100",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 4.25,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 105.89,
+      "sampleTrap": true,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-wiki-horizontal-aba-311",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 27.06,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 27.06,
+      "maxV": 27.06,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-tightwiki-ab327-deep-wedgewood-blue-grs-ab327",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 42.5,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 42.5,
+      "maxV": 42.5,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-tightwiki-ab320-peach-grasscloth-tightwiki-ab320-peach",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 37.5,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 37.5,
+      "maxV": 37.5,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-tightwiki-light-blue-grs-1825",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 42.5,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 42.5,
+      "maxV": 42.5,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-tightwiki-chocolate-mocha-grs-1819",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 37.5,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 37.5,
+      "maxV": 37.5,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-tightwiki-tight-caramel-grasscloth-tightwiki-ab305-light",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 37.5,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 37.5,
+      "maxV": 37.5,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-tightwiki-ab318-golden-yellow-grasscloth-tightwiki-ab318-gyell",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 37.5,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 37.5,
+      "maxV": 37.5,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "grasscloth-tightwiki-mixed-naturals-grs-1808",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 18.82,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 18.82,
+      "maxV": 18.82,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g181f708c",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 250.43,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 250.43,
+      "maxV": 250.43,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g580f4af0",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 250.43,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 250.43,
+      "maxV": 250.43,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g24d3e005",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 250.43,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 250.43,
+      "maxV": 250.43,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g3480a31d",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 595.65,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 595.65,
+      "maxV": 595.65,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g918ec5d6",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 195.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 195.3,
+      "maxV": 195.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g5e29eff8",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 195.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 195.3,
+      "maxV": 195.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-gae880958",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 132.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 132.3,
+      "maxV": 132.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-gc98ca38f",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 132.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 132.3,
+      "maxV": 132.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-gf0fdccb1",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 132.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 132.3,
+      "maxV": 132.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g9526101c",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 132.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 132.3,
+      "maxV": 132.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g82a96688",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 195.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 195.3,
+      "maxV": 195.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-gf29b7324",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 195.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 195.3,
+      "maxV": 195.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g2178eefb",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 195.3,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 195.3,
+      "maxV": 195.3,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g1eba1890",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 207.9,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 207.9,
+      "maxV": 207.9,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dwkk-g69084daf",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 207.9,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 207.9,
+      "maxV": 207.9,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920226-den-323",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920227-den-353",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920228-den-373",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920229-den-381",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920230-den-382",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920231-den-383",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920232-den-746",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920233-den-786",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920234-den-810",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920235-den-813",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920236-den-833",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920237-den-843",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920238-den-883",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920239-doj-01",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 67.98,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 67.98,
+      "maxV": 67.98,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "prw-920240-doj-02",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 65.09,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 65.09,
+      "maxV": 65.09,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "dalila-hand-screen-print-yellow-wallcovering-schumacher",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 68.78,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 68.78,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "stablewood-dwtt-72420",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 262.26,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 262.26,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "indah-batik-sage-wallcovering-schumacher",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 43.44,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 43.44,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "indah-batik-neutral-wallcovering-schumacher",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 43.44,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 43.44,
+      "sampleTrap": false,
+      "priceMismatch": false
+    },
+    {
+      "h": "indah-batik-aqua-wallcovering-schumacher",
+      "hasProduct": true,
+      "parseFail": false,
+      "hasOffer": true,
+      "ldPrice": 43.44,
+      "currency": "USD",
+      "availability": "InStock",
+      "minV": 4.25,
+      "maxV": 43.44,
+      "sampleTrap": false,
+      "priceMismatch": false
+    }
+  ]
+}
\ No newline at end of file
diff --git a/scripts/jsonld-audit/jsonld-audit.mjs b/scripts/jsonld-audit/jsonld-audit.mjs
new file mode 100644
index 0000000..977b9c8
--- /dev/null
+++ b/scripts/jsonld-audit/jsonld-audit.mjs
@@ -0,0 +1,88 @@
+// jsonld-audit — READ-ONLY, $0. Samples live PDPs, parses the Product schema.org
+// JSON-LD, validates presence + well-formedness + offers(price/currency/availability),
+// and — the high-value check (DTD/officer flagged) — cross-references the JSON-LD
+// offer price against the product's ACTUAL variant prices to catch the $4.25
+// SAMPLE-TRAP leaking into structured data (which would be a Google rich-result +
+// Merchant-Center disapproval risk). All live; no writes.
+const WWW='https://www.designerwallcoverings.com';
+const UA='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36';
+const sleep=ms=>new Promise(r=>setTimeout(r,ms));
+async function get(u){for(let a=0;a<4;a++){try{const r=await fetch(u,{headers:{'User-Agent':UA}});if(r.status===429){await sleep(1500*(a+1));continue;}return {status:r.status,text:await r.text()};}catch(e){await sleep(800*(a+1));}}return {status:0,text:''};}
+
+// 1. gather live handles from several product sitemaps (vendor/age diversity)
+const smIdx=await get(`${WWW}/sitemap.xml`);
+const prodMaps=[...smIdx.text.matchAll(/<loc>([^<]+sitemap_products_\d+\.xml[^<]*)<\/loc>/g)].map(m=>m[1].replace(/&amp;/g,'&')).filter(u=>!/\/en-ca\//.test(u));
+// take a spread: first, middle, last few maps
+const pick=[prodMaps[0],prodMaps[Math.floor(prodMaps.length/3)],prodMaps[Math.floor(2*prodMaps.length/3)],prodMaps[prodMaps.length-1]].filter(Boolean);
+let handles=[];
+for(const sm of pick){ const x=await get(sm); const hs=[...x.text.matchAll(/<loc>[^<]*\/products\/([^<\/?]+)/g)].map(m=>m[1]); handles.push(...hs.slice(0,15)); await sleep(150); }
+handles=[...new Set(handles)].slice(0,50);
+console.log(`=== jsonld-audit (READ-ONLY, $0) ===\nsampling ${handles.length} live PDPs\n`);
+
+function parseProduct(html){
+  const blocks=[...html.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)].map(m=>m[1]);
+  let parseFail=false, product=null;
+  for(const b of blocks){
+    let j; try{ j=JSON.parse(b); }catch{ parseFail=true; continue; }
+    const cands=j['@graph']?j['@graph']:[j];
+    for(const c of cands){ if(c['@type']==='Product') product=c; }
+  }
+  return {blockCount:blocks.length, parseFail, product};
+}
+
+const rows=[];
+let done=0;
+for(const h of handles){
+  const pdp=await get(`${WWW}/products/${h}`);
+  if(pdp.status!==200){ rows.push({h,err:'pdp '+pdp.status}); done++; continue; }
+  const {blockCount,parseFail,product}=parseProduct(pdp.text);
+  // actual variant prices
+  const pj=await get(`${WWW}/products/${h}.json`);
+  let variantPrices=[]; try{ variantPrices=(JSON.parse(pj.text).product?.variants||[]).map(v=>parseFloat(v.price)); }catch{}
+  const minV=variantPrices.length?Math.min(...variantPrices):null;
+  const maxV=variantPrices.length?Math.max(...variantPrices):null;
+  const off=product?.offers;
+  const offer=Array.isArray(off)?off[0]:off;
+  const ldPrice=offer?parseFloat(offer.price):null;
+  const row={
+    h,
+    hasProduct: !!product,
+    parseFail,
+    hasOffer: !!offer,
+    ldPrice,
+    currency: offer?.priceCurrency||null,
+    availability: (offer?.availability||'').replace(/https?:\/\/schema\.org\//,''),
+    minV, maxV,
+    sampleTrap: (ldPrice!==null && ldPrice<=4.25 && maxV!==null && maxV>4.25), // JSON-LD shows sample price while a real variant exists
+    priceMismatch: (ldPrice!==null && minV!==null && maxV!==null && (ldPrice<minV-0.01 || ldPrice>maxV+0.01)),
+  };
+  rows.push(row);
+  done++;
+  if(done%10===0) console.log(`  ${done}/${handles.length}`);
+  await sleep(180);
+}
+
+const ok=rows.filter(r=>r.hasProduct);
+const noProduct=rows.filter(r=>!r.hasProduct && !r.err);
+const errs=rows.filter(r=>r.err);
+const parseFails=rows.filter(r=>r.parseFail);
+const noOffer=ok.filter(r=>!r.hasOffer);
+const badCurrency=ok.filter(r=>r.hasOffer && r.currency!=='USD');
+const badAvail=ok.filter(r=>r.hasOffer && !['InStock','OutOfStock','PreOrder','BackOrder','Discontinued'].includes(r.availability));
+const sampleTraps=rows.filter(r=>r.sampleTrap);
+const mismatches=rows.filter(r=>r.priceMismatch && !r.sampleTrap);
+
+console.log(`\n=== RESULTS (${rows.length} sampled) ===`);
+console.log(`Product JSON-LD present: ${ok.length} | missing: ${noProduct.length} | pdp-fetch-err: ${errs.length}`);
+console.log(`JSON parse failures: ${parseFails.length}`);
+console.log(`has offers: ${ok.length-noOffer.length} | no offers block: ${noOffer.length}`);
+console.log(`currency != USD: ${badCurrency.length}`);
+console.log(`invalid availability value: ${badAvail.length}`);
+console.log(`\n*** $4.25 SAMPLE-TRAP in JSON-LD (ld price<=4.25 but real variant exists): ${sampleTraps.length} ***`);
+console.log(`other price mismatch (ld price outside variant range): ${mismatches.length}`);
+if(sampleTraps.length) sampleTraps.slice(0,15).forEach(r=>console.log(`  TRAP - ${r.h}: ld=$${r.ldPrice} vs variants $${r.minV}-$${r.maxV}`));
+if(mismatches.length) mismatches.slice(0,10).forEach(r=>console.log(`  MISMATCH - ${r.h}: ld=$${r.ldPrice} vs $${r.minV}-$${r.maxV}`));
+
+import fs from 'fs';
+fs.writeFileSync('/tmp/jsonld-audit.json',JSON.stringify({ts:new Date().toISOString(),sampled:rows.length,summary:{product:ok.length,missing:noProduct.length,errs:errs.length,parseFails:parseFails.length,noOffer:noOffer.length,badCurrency:badCurrency.length,badAvail:badAvail.length,sampleTraps:sampleTraps.length,mismatches:mismatches.length},rows},null,2));
+console.log('\nwrote /tmp/jsonld-audit.json');

← 1bc3c5b empty-collections audit: 575 advertised -> ~37 live-empty +  ·  back to Dw Yolo Loop  ·  jsonld-425-scan: sized the $4.25 JSON-LD leak — 87.8% of mul 0f99d97 →