[object Object]

← back to Hollywood Optc

TK-10633: dry-run + apply/rollback tooling for 36 held products missed by the 62-run (HWC-#### restore, gated)

90e1ff88f0d7446b54da6e070c39a48866313772 · 2026-08-27 10:46:18 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 90e1ff88f0d7446b54da6e070c39a48866313772
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Aug 27 10:46:18 2026 -0700

    TK-10633: dry-run + apply/rollback tooling for 36 held products missed by the 62-run (HWC-#### restore, gated)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 apply-held36.mjs               | 115 +++++++
 build-held36-dryrun.mjs        |  38 +++
 data/held36-dryrun.json        | 730 +++++++++++++++++++++++++++++++++++++++++
 data/order-history-held36.json |  32 ++
 order-history-check-held36.mjs |  17 +
 5 files changed, 932 insertions(+)

diff --git a/apply-held36.mjs b/apply-held36.mjs
new file mode 100644
index 0000000..fd0c674
--- /dev/null
+++ b/apply-held36.mjs
@@ -0,0 +1,115 @@
+#!/usr/bin/env node
+// TK-10633 — Option-C EXTENSION: remap the 36 metafield-clean HELD products the original
+// 62-run missed. Each of these 36 ACTIVE Hollywood products still carries a fabricated
+// DWHD-* variant SKU on the LIVE store, yet already has its real, pre-existing HWC-####
+// line code unanimously in global/dwc/custom.dw_sku (verified LIVE). This is the SAME
+// Steve-approved identity scheme + write shape as apply.mjs (the 62-run): variant SKU
+// DWHD-##### -> HWC-####, DWHD-#####-Sample -> HWC-####-Sample. manufacturer_sku (the
+// bare Momentum number) is NEVER touched — no leak.
+//
+// GATED: this is a customer-facing LIVE Shopify write. Do NOT run without Steve's go.
+// Drives off data/held36-dryrun.json (built read-only from LIVE Shopify).
+// Reversibility FIRST: appends {variant_id, from_sku, to_sku, ts} before every write.
+// Idempotent (skips a variant already == target). Rate-limit + THROTTLED aware.
+// Rollback: node rollback.mjs data/apply-reversibility-held36-<ts>.jsonl
+import { readFileSync, appendFileSync } from 'node:fs';
+
+const SHOP = 'designer-laboratory-sandbox.myshopify.com';
+const VER = '2024-10';
+const env = readFileSync(process.env.HOME + '/Projects/secrets-manager/.env', 'utf8');
+const TOKEN = (env.split('\n').find(l => l.startsWith('SHOPIFY_ADMIN_TOKEN=')) || '')
+  .replace('SHOPIFY_ADMIN_TOKEN=', '').replace(/["'\r]/g, '').trim();
+if (!TOKEN) { console.error('no SHOPIFY_ADMIN_TOKEN'); process.exit(1); }
+
+const dry = JSON.parse(readFileSync(new URL('./data/held36-dryrun.json', import.meta.url)));
+const applySet = dry.apply_set || [];
+if (applySet.length !== 36) { console.error(`expected 36 apply_set products, got ${applySet.length}`); process.exit(1); }
+if (dry.problems && dry.problems.length) { console.error(`dry-run has ${dry.problems.length} problems — refusing`); process.exit(1); }
+
+const TS = new Date().toISOString().replace(/[:.]/g, '-');
+const REV_PATH = new URL(`./data/apply-reversibility-held36-${TS}.jsonl`, import.meta.url).pathname;
+const OUT_PATH = new URL(`./data/apply-result-held36-${TS}.json`, import.meta.url).pathname;
+const GQL = `https://${SHOP}/admin/api/${VER}/graphql.json`;
+const sleep = ms => new Promise(r => setTimeout(r, ms));
+
+async function graphql(query, variables, tries = 0) {
+  const res = await fetch(GQL, {
+    method: 'POST',
+    headers: { 'X-Shopify-Access-Token': TOKEN, 'Content-Type': 'application/json' },
+    body: JSON.stringify({ query, variables }),
+  });
+  if (res.status === 429) { await sleep(2000); return graphql(query, variables, tries); }
+  if ((res.status === 502 || res.status === 503) && tries < 4) { await sleep(1500 * (tries + 1)); return graphql(query, variables, tries + 1); }
+  const j = await res.json();
+  if (j.errors && j.errors.some(e => /THROTTLED|throttl/i.test(JSON.stringify(e))) && tries < 6) {
+    await sleep(2500 * (tries + 1)); return graphql(query, variables, tries + 1);
+  }
+  return j;
+}
+
+const MUT = `
+mutation setSku($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {
+  productVariantsBulkUpdate(productId: $productId, variants: $variants) {
+    productVariants { id inventoryItem { sku } }
+    userErrors { field message code }
+  }
+}`;
+const CUR = `query cur($id: ID!) { productVariant(id: $id) { id inventoryItem { sku } } }`;
+
+async function currentSku(variantGid, tries = 0) {
+  const j = await graphql(CUR, { id: variantGid });
+  if (j.errors && tries < 4) { await sleep(1500 * (tries + 1)); return currentSku(variantGid, tries + 1); }
+  return j?.data?.productVariant?.inventoryItem?.sku ?? null;
+}
+
+async function setSku(productGid, variantGid, newSku) {
+  const j = await graphql(MUT, { productId: productGid, variants: [{ id: variantGid, inventoryItem: { sku: newSku } }] });
+  const ue = j?.data?.productVariantsBulkUpdate?.userErrors || [];
+  const pv = j?.data?.productVariantsBulkUpdate?.productVariants || [];
+  return { userErrors: ue, topErrors: j.errors || [], confirmedSku: pv[0]?.inventoryItem?.sku ?? null };
+}
+
+async function main() {
+  const results = { applied: 0, skipped_idempotent: 0, failed: 0, details: [] };
+  const totalVariants = applySet.reduce((a, p) => a + p.writes.length, 0);
+  let idx = 0;
+  for (const p of applySet) {
+    const productGid = `gid://shopify/Product/${p.product_id}`;
+    for (const w of p.writes) {
+      idx++;
+      const variantGid = `gid://shopify/ProductVariant/${w.variant_id}`;
+      appendFileSync(REV_PATH, JSON.stringify({ variant_id: w.variant_id, from_sku: w.from_sku, to_sku: w.to_sku, ts: new Date().toISOString() }) + '\n');
+      let live = null;
+      try { live = await currentSku(variantGid); } catch (e) { /* attempt write */ }
+      if (live && live.toUpperCase() === w.to_sku.toUpperCase()) {
+        results.skipped_idempotent++;
+        results.details.push({ variant_id: w.variant_id, status: 'skip_already_target', sku: live });
+        continue;
+      }
+      const r = await setSku(productGid, variantGid, w.to_sku);
+      if (r.topErrors.length || r.userErrors.length) {
+        results.failed++;
+        results.details.push({ variant_id: w.variant_id, handle: p.handle, from: w.from_sku, to: w.to_sku, status: 'ERROR', userErrors: r.userErrors, topErrors: r.topErrors });
+        console.error(`[${idx}/${totalVariants}] FAIL ${w.from_sku} -> ${w.to_sku}: ` + JSON.stringify(r.userErrors.length ? r.userErrors : r.topErrors));
+      } else if (r.confirmedSku && r.confirmedSku.toUpperCase() === w.to_sku.toUpperCase()) {
+        results.applied++;
+        results.details.push({ variant_id: w.variant_id, status: 'applied', from: w.from_sku, to: r.confirmedSku });
+        console.log(`[${idx}/${totalVariants}] OK   ${w.from_sku} -> ${r.confirmedSku}`);
+      } else {
+        results.failed++;
+        results.details.push({ variant_id: w.variant_id, status: 'UNCONFIRMED', from: w.from_sku, to: w.to_sku, confirmedSku: r.confirmedSku });
+        console.error(`[${idx}/${totalVariants}] UNCONFIRMED ${w.from_sku} -> ${w.to_sku} (got ${r.confirmedSku})`);
+      }
+      await sleep(350);
+    }
+  }
+  console.log('\n=== SUMMARY ===');
+  console.log(`applied:            ${results.applied}`);
+  console.log(`skipped_idempotent: ${results.skipped_idempotent}`);
+  console.log(`failed:             ${results.failed}`);
+  console.log(`reversibility file: ${REV_PATH}`);
+  appendFileSync(OUT_PATH, JSON.stringify(results, null, 2));
+  console.log(`result detail:      ${OUT_PATH}`);
+  if (results.failed) { console.error('\n!! FAILURES PRESENT — reversibility record intact, do NOT half-apply silently.'); process.exit(2); }
+}
+main().catch(e => { console.error('FATAL', e); process.exit(1); });
diff --git a/build-held36-dryrun.mjs b/build-held36-dryrun.mjs
new file mode 100644
index 0000000..59df72f
--- /dev/null
+++ b/build-held36-dryrun.mjs
@@ -0,0 +1,38 @@
+import { readFileSync, writeFileSync } from 'node:fs';
+const TOKEN=process.env.SHOPIFY_ADMIN_TOKEN;
+const SHOP="designer-laboratory-sandbox.myshopify.com", VER="2024-10";
+const handles=readFileSync('/tmp/held36-handles.txt','utf8').split('\n').map(s=>s.trim()).filter(Boolean);
+async function gj(url,t=0){const r=await fetch(url,{headers:{"X-Shopify-Access-Token":TOKEN}});
+ if(r.status===429){await new Promise(x=>setTimeout(x,2000));return gj(url,t);}
+ if((r.status===502||r.status===503)&&t<3){await new Promise(x=>setTimeout(x,1500));return gj(url,t+1);}
+ if(!r.ok)throw new Error(r.status+" "+url);return r.json();}
+const applySet=[]; const problems=[];
+for(const h of handles){
+ const j=await gj(`https://${SHOP}/admin/api/${VER}/products.json?handle=${h}&fields=id,handle,status,variants`);
+ const p=(j.products||[])[0];
+ if(!p){problems.push({h,why:'not found live'});continue;}
+ const mj=await gj(`https://${SHOP}/admin/api/${VER}/products/${p.id}/metafields.json?limit=250`);
+ const mfs=mj.metafields||[];
+ const dwskus=mfs.filter(m=>m.key==='dw_sku').map(m=>String(m.value).trim().toUpperCase());
+ const hwc=dwskus.find(v=>/^HWC-\d+$/.test(v));
+ const unanimous = dwskus.length>0 && dwskus.every(v=>v===hwc);
+ if(!hwc){problems.push({h,why:'no HWC in live dw_sku',dwskus});continue;}
+ if(!unanimous){problems.push({h,why:'dw_sku namespaces disagree',dwskus});continue;}
+ // build variant writes: DWHD-* base -> HWC, DWHD-*-Sample -> HWC-Sample
+ const writes=[];
+ for(const v of p.variants){
+   const cur=String(v.sku||'');
+   if(!/^DWHD/i.test(cur)){problems.push({h,why:'variant not DWHD',cur});continue;}
+   const isSample=/-sample$/i.test(cur);
+   const target=isSample?`${hwc}-Sample`:hwc;
+   if(cur===target)continue;
+   writes.push({variant_id:v.id,from_sku:cur,to_sku:target,title:v.title});
+ }
+ if(writes.length) applySet.push({product_id:p.id,handle:h,hwc,manufacturer_sku_untouched:true,writes});
+}
+const out={generated_at:new Date().toISOString(),ticket:'TK-10633',scope:'held36-metafield-clean-HWC-remap',
+ products:applySet.length, variant_writes:applySet.reduce((a,x)=>a+x.writes.length,0),
+ apply_set:applySet, problems};
+writeFileSync('data/held36-dryrun.json',JSON.stringify(out,null,2));
+console.log('products:',out.products,'| variant_writes:',out.variant_writes,'| problems:',problems.length);
+if(problems.length)console.log('PROBLEMS:',JSON.stringify(problems.slice(0,10),null,1));
diff --git a/data/held36-dryrun.json b/data/held36-dryrun.json
new file mode 100644
index 0000000..7c56241
--- /dev/null
+++ b/data/held36-dryrun.json
@@ -0,0 +1,730 @@
+{
+  "generated_at": "2026-08-27T17:41:50.238Z",
+  "ticket": "TK-10633",
+  "scope": "held36-metafield-clean-HWC-remap",
+  "products": 36,
+  "variant_writes": 72,
+  "apply_set": [
+    {
+      "product_id": 7814464307251,
+      "handle": "asilomar-candlelight-hollywood-wallcoverings",
+      "hwc": "HWC-61247",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188115763251,
+          "from_sku": "DWHD-502873",
+          "to_sku": "HWC-61247",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188115730483,
+          "from_sku": "DWHD-502873-Sample",
+          "to_sku": "HWC-61247-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464340019,
+      "handle": "asilomar-cerulean-hollywood-wallcoverings",
+      "hwc": "HWC-61248",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188115828787,
+          "from_sku": "DWHD-502874",
+          "to_sku": "HWC-61248",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188115796019,
+          "from_sku": "DWHD-502874-Sample",
+          "to_sku": "HWC-61248-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464372787,
+      "handle": "asilomar-chestnut-hollywood-wallcoverings",
+      "hwc": "HWC-61249",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188115894323,
+          "from_sku": "DWHD-502875",
+          "to_sku": "HWC-61249",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188115861555,
+          "from_sku": "DWHD-502875-Sample",
+          "to_sku": "HWC-61249-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464405555,
+      "handle": "asilomar-coastal-fog-hollywood-wallcoverings",
+      "hwc": "HWC-61250",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188115959859,
+          "from_sku": "DWHD-502876",
+          "to_sku": "HWC-61250",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188115927091,
+          "from_sku": "DWHD-502876-Sample",
+          "to_sku": "HWC-61250-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464438323,
+      "handle": "asilomar-cocoa-bean-hollywood-wallcoverings",
+      "hwc": "HWC-61251",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116025395,
+          "from_sku": "DWHD-502877",
+          "to_sku": "HWC-61251",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188115992627,
+          "from_sku": "DWHD-502877-Sample",
+          "to_sku": "HWC-61251-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464471091,
+      "handle": "asilomar-crystalline-hollywood-wallcoverings",
+      "hwc": "HWC-61252",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116090931,
+          "from_sku": "DWHD-502878",
+          "to_sku": "HWC-61252",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116058163,
+          "from_sku": "DWHD-502878-Sample",
+          "to_sku": "HWC-61252-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464503859,
+      "handle": "asilomar-dappled-hollywood-wallcoverings",
+      "hwc": "HWC-61253",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116156467,
+          "from_sku": "DWHD-502879",
+          "to_sku": "HWC-61253",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116123699,
+          "from_sku": "DWHD-502879-Sample",
+          "to_sku": "HWC-61253-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464700467,
+      "handle": "asilomar-dark-star-hollywood-wallcoverings",
+      "hwc": "HWC-61256",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116811827,
+          "from_sku": "DWHD-502880",
+          "to_sku": "HWC-61256",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116779059,
+          "from_sku": "DWHD-502880-Sample",
+          "to_sku": "HWC-61256-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464733235,
+      "handle": "asilomar-dawn-hollywood-wallcoverings",
+      "hwc": "HWC-61257",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116877363,
+          "from_sku": "DWHD-502881",
+          "to_sku": "HWC-61257",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116844595,
+          "from_sku": "DWHD-502881-Sample",
+          "to_sku": "HWC-61257-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464766003,
+      "handle": "asilomar-deep-shadow-hollywood-wallcoverings",
+      "hwc": "HWC-61258",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116942899,
+          "from_sku": "DWHD-502882",
+          "to_sku": "HWC-61258",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116910131,
+          "from_sku": "DWHD-502882-Sample",
+          "to_sku": "HWC-61258-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464798771,
+      "handle": "asilomar-ember-glow-hollywood-wallcoverings",
+      "hwc": "HWC-61259",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117008435,
+          "from_sku": "DWHD-502883",
+          "to_sku": "HWC-61259",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116975667,
+          "from_sku": "DWHD-502883-Sample",
+          "to_sku": "HWC-61259-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464831539,
+      "handle": "asilomar-felt-grey-hollywood-wallcoverings",
+      "hwc": "HWC-61260",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117073971,
+          "from_sku": "DWHD-502884",
+          "to_sku": "HWC-61260",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117041203,
+          "from_sku": "DWHD-502884-Sample",
+          "to_sku": "HWC-61260-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464864307,
+      "handle": "asilomar-firelight-hollywood-wallcoverings",
+      "hwc": "HWC-61261",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117237811,
+          "from_sku": "DWHD-502885",
+          "to_sku": "HWC-61261",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117205043,
+          "from_sku": "DWHD-502885-Sample",
+          "to_sku": "HWC-61261-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464897075,
+      "handle": "asilomar-fossil-hollywood-wallcoverings",
+      "hwc": "HWC-61262",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117303347,
+          "from_sku": "DWHD-502886",
+          "to_sku": "HWC-61262",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117270579,
+          "from_sku": "DWHD-502886-Sample",
+          "to_sku": "HWC-61262-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464929843,
+      "handle": "asilomar-herbal-hollywood-wallcoverings",
+      "hwc": "HWC-61263",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117368883,
+          "from_sku": "DWHD-502887",
+          "to_sku": "HWC-61263",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117336115,
+          "from_sku": "DWHD-502887-Sample",
+          "to_sku": "HWC-61263-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464962611,
+      "handle": "asilomar-hot-sun-hollywood-wallcoverings",
+      "hwc": "HWC-61264",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117434419,
+          "from_sku": "DWHD-502888",
+          "to_sku": "HWC-61264",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117401651,
+          "from_sku": "DWHD-502888-Sample",
+          "to_sku": "HWC-61264-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464995379,
+      "handle": "asilomar-island-sky-hollywood-wallcoverings",
+      "hwc": "HWC-61265",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117499955,
+          "from_sku": "DWHD-502889",
+          "to_sku": "HWC-61265",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117467187,
+          "from_sku": "DWHD-502889-Sample",
+          "to_sku": "HWC-61265-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465028147,
+      "handle": "asilomar-mirage-hollywood-wallcoverings",
+      "hwc": "HWC-61266",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117565491,
+          "from_sku": "DWHD-502890",
+          "to_sku": "HWC-61266",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117532723,
+          "from_sku": "DWHD-502890-Sample",
+          "to_sku": "HWC-61266-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465060915,
+      "handle": "asilomar-moonlight-hollywood-wallcoverings",
+      "hwc": "HWC-61267",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117631027,
+          "from_sku": "DWHD-502891",
+          "to_sku": "HWC-61267",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117598259,
+          "from_sku": "DWHD-502891-Sample",
+          "to_sku": "HWC-61267-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465093683,
+      "handle": "asilomar-nimbus-hollywood-wallcoverings",
+      "hwc": "HWC-61268",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117696563,
+          "from_sku": "DWHD-502892",
+          "to_sku": "HWC-61268",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117663795,
+          "from_sku": "DWHD-502892-Sample",
+          "to_sku": "HWC-61268-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465126451,
+      "handle": "asilomar-pale-silver-hollywood-wallcoverings",
+      "hwc": "HWC-61269",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117762099,
+          "from_sku": "DWHD-502893",
+          "to_sku": "HWC-61269",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117729331,
+          "from_sku": "DWHD-502893-Sample",
+          "to_sku": "HWC-61269-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465159219,
+      "handle": "asilomar-peridot-hollywood-wallcoverings",
+      "hwc": "HWC-61270",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117827635,
+          "from_sku": "DWHD-502894",
+          "to_sku": "HWC-61270",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117794867,
+          "from_sku": "DWHD-502894-Sample",
+          "to_sku": "HWC-61270-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465191987,
+      "handle": "asilomar-pewter-hollywood-wallcoverings",
+      "hwc": "HWC-61271",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117893171,
+          "from_sku": "DWHD-502895",
+          "to_sku": "HWC-61271",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117860403,
+          "from_sku": "DWHD-502895-Sample",
+          "to_sku": "HWC-61271-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465224755,
+      "handle": "asilomar-porcelain-hollywood-wallcoverings",
+      "hwc": "HWC-61272",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188117958707,
+          "from_sku": "DWHD-502896",
+          "to_sku": "HWC-61272",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188117925939,
+          "from_sku": "DWHD-502896-Sample",
+          "to_sku": "HWC-61272-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465257523,
+      "handle": "asilomar-radiance-hollywood-wallcoverings",
+      "hwc": "HWC-61273",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188118057011,
+          "from_sku": "DWHD-502897",
+          "to_sku": "HWC-61273",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188118024243,
+          "from_sku": "DWHD-502897-Sample",
+          "to_sku": "HWC-61273-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465290291,
+      "handle": "asilomar-renaissance-hollywood-wallcoverings",
+      "hwc": "HWC-61274",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188118122547,
+          "from_sku": "DWHD-502898",
+          "to_sku": "HWC-61274",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188118089779,
+          "from_sku": "DWHD-502898-Sample",
+          "to_sku": "HWC-61274-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465323059,
+      "handle": "asilomar-shimmer-hollywood-wallcoverings",
+      "hwc": "HWC-61275",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188118188083,
+          "from_sku": "DWHD-502899",
+          "to_sku": "HWC-61275",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188118155315,
+          "from_sku": "DWHD-502899-Sample",
+          "to_sku": "HWC-61275-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465355827,
+      "handle": "asilomar-silver-leaf-hollywood-wallcoverings",
+      "hwc": "HWC-61276",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188118253619,
+          "from_sku": "DWHD-502900",
+          "to_sku": "HWC-61276",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188118220851,
+          "from_sku": "DWHD-502900-Sample",
+          "to_sku": "HWC-61276-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465388595,
+      "handle": "asilomar-snow-field-hollywood-wallcoverings",
+      "hwc": "HWC-61277",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188118319155,
+          "from_sku": "DWHD-502901",
+          "to_sku": "HWC-61277",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188118286387,
+          "from_sku": "DWHD-502901-Sample",
+          "to_sku": "HWC-61277-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465421363,
+      "handle": "asilomar-sparkle-hollywood-wallcoverings",
+      "hwc": "HWC-61278",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188118384691,
+          "from_sku": "DWHD-502902",
+          "to_sku": "HWC-61278",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188118351923,
+          "from_sku": "DWHD-502902-Sample",
+          "to_sku": "HWC-61278-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465486899,
+      "handle": "asilomar-summer-field-hollywood-wallcoverings",
+      "hwc": "HWC-61279",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188119072819,
+          "from_sku": "DWHD-502903",
+          "to_sku": "HWC-61279",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188119040051,
+          "from_sku": "DWHD-502903-Sample",
+          "to_sku": "HWC-61279-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814465519667,
+      "handle": "asilomar-suntan-hollywood-wallcoverings",
+      "hwc": "HWC-61280",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188119138355,
+          "from_sku": "DWHD-502904",
+          "to_sku": "HWC-61280",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188119105587,
+          "from_sku": "DWHD-502904-Sample",
+          "to_sku": "HWC-61280-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464536627,
+      "handle": "asilomar-tangerine-hollywood-wallcoverings",
+      "hwc": "HWC-61254",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116222003,
+          "from_sku": "DWHD-502905",
+          "to_sku": "HWC-61254",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116189235,
+          "from_sku": "DWHD-502905-Sample",
+          "to_sku": "HWC-61254-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814464602163,
+      "handle": "asilomar-twilight-hollywood-wallcoverings",
+      "hwc": "HWC-61255",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188116484147,
+          "from_sku": "DWHD-502906",
+          "to_sku": "HWC-61255",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44188116451379,
+          "from_sku": "DWHD-502906-Sample",
+          "to_sku": "HWC-61255-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814884818995,
+      "handle": "back-bay-glitterati-hollywood-wallcoverings",
+      "hwc": "HWC-61284",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44193896398899,
+          "from_sku": "DWHD-502551-Yard",
+          "to_sku": "HWC-61284",
+          "title": "Sold Per Yard"
+        },
+        {
+          "variant_id": 44190205771827,
+          "from_sku": "DWHD-502551-Sample",
+          "to_sku": "HWC-61284-Sample",
+          "title": "Sample"
+        }
+      ]
+    },
+    {
+      "product_id": 7814360137779,
+      "handle": "doud-creek-midnight-hollywood-wallcoverings",
+      "hwc": "HWC-61245",
+      "manufacturer_sku_untouched": true,
+      "writes": [
+        {
+          "variant_id": 44188083912755,
+          "from_sku": "DWHD-503061",
+          "to_sku": "HWC-61245",
+          "title": "Yard"
+        },
+        {
+          "variant_id": 44187866103859,
+          "from_sku": "DWHD-503061-Sample",
+          "to_sku": "HWC-61245-Sample",
+          "title": "Sample"
+        }
+      ]
+    }
+  ],
+  "problems": []
+}
\ No newline at end of file
diff --git a/data/order-history-held36.json b/data/order-history-held36.json
new file mode 100644
index 0000000..63e021c
--- /dev/null
+++ b/data/order-history-held36.json
@@ -0,0 +1,32 @@
+{
+  "generated_at": "2026-08-27T17:45:06.310Z",
+  "ticket": "TK-10633",
+  "scope": "held36",
+  "window": {
+    "since": "2025-08-27T17:43:21.783Z"
+  },
+  "orders_scanned": 3498,
+  "line_items_scanned": 9391,
+  "target_skus": 72,
+  "distinct_target_skus_in_orders": 4,
+  "matched_line_items": 5,
+  "matched_orders": 4,
+  "hits": [
+    [
+      "DWHD-502899-SAMPLE",
+      2
+    ],
+    [
+      "DWHD-502885-SAMPLE",
+      1
+    ],
+    [
+      "DWHD-502892-SAMPLE",
+      1
+    ],
+    [
+      "DWHD-502873-SAMPLE",
+      1
+    ]
+  ]
+}
\ No newline at end of file
diff --git a/order-history-check-held36.mjs b/order-history-check-held36.mjs
new file mode 100644
index 0000000..042e5b9
--- /dev/null
+++ b/order-history-check-held36.mjs
@@ -0,0 +1,17 @@
+import { readFileSync, writeFileSync } from 'node:fs';
+const SHOP='designer-laboratory-sandbox.myshopify.com', VER='2024-10';
+const TOKEN=(readFileSync(process.env.HOME+'/Projects/secrets-manager/.env','utf8').split('\n').find(l=>l.startsWith('SHOPIFY_FULL_ACCESS_TOKEN='))||'').replace('SHOPIFY_FULL_ACCESS_TOKEN=','').replace(/["'\r]/g,'').trim();
+if(!TOKEN){console.error('no FULL token');process.exit(1);}
+const targets=new Set(readFileSync('/tmp/held36-fromskus.txt','utf8').split('\n').map(s=>s.trim().toUpperCase()).filter(Boolean));
+async function gj(url){const r=await fetch(url,{headers:{'X-Shopify-Access-Token':TOKEN}});
+ if(r.status===429){await new Promise(x=>setTimeout(x,2000));return gj(url);}
+ if(!r.ok)throw new Error(r.status+' '+await r.text());
+ const link=r.headers.get('link')||''; const m=link.match(/<([^>]+)>;\s*rel="next"/);
+ return {body:await r.json(), next:m?m[1]:null};}
+const since=new Date(Date.now()-365*864e5).toISOString();
+let url=`https://${SHOP}/admin/api/${VER}/orders.json?status=any&created_at_min=${since}&limit=250&fields=id,line_items`;
+let orders=0,li=0,matched=0; const hits=new Map(); const mo=new Set(); let pages=0;
+while(url){const {body,next}=await gj(url); for(const o of (body.orders||[])){orders++; for(const l of (o.line_items||[])){li++; const s=(l.sku||'').toUpperCase(); if(s&&targets.has(s)){matched++; mo.add(o.id); hits.set(s,(hits.get(s)||0)+1);}}} pages++; url=next; if(pages%8===0)console.error(`  ...${orders} orders / ${li} LI`);}
+const res={generated_at:new Date().toISOString(),ticket:'TK-10633',scope:'held36',window:{since},orders_scanned:orders,line_items_scanned:li,target_skus:targets.size,distinct_target_skus_in_orders:hits.size,matched_line_items:matched,matched_orders:mo.size,hits:[...hits.entries()].sort((a,b)=>b[1]-a[1]).slice(0,20)};
+writeFileSync('data/order-history-held36.json',JSON.stringify(res,null,2));
+console.log(JSON.stringify(res,null,2));

← 1428520 Add LBI Boyd HWC-recovery request CSV (584 held products)  ·  back to Hollywood Optc  ·  TK-10633: restore 36 held Hollywood products to real HWC-### ca7f7f2 →