[object Object]

← back to Hollywood Optc

TK-10633: restore 36 held Hollywood products to real HWC-#### codes (lane A, DWHD->HWC, reversible)

ca7f7f259af684e4a5c991635cee20e03c17bc07 · 2026-08-27 19:17:17 -0700 · Steve Abrams

Files touched

Diff

commit ca7f7f259af684e4a5c991635cee20e03c17bc07
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Thu Aug 27 19:17:17 2026 -0700

    TK-10633: restore 36 held Hollywood products to real HWC-#### codes (lane A, DWHD->HWC, reversible)
---
 apply-held36-canary.mjs                            | 115 ++++++
 ...ply-result-held36-2026-08-28T02-14-46-457Z.json |  19 +
 ...ply-result-held36-2026-08-28T02-15-05-589Z.json | 437 +++++++++++++++++++++
 ...rsibility-held36-2026-08-28T02-14-46-457Z.jsonl |   2 +
 ...rsibility-held36-2026-08-28T02-15-05-589Z.jsonl |  72 ++++
 data/held36-canary.json                            |  30 ++
 data/held36-dryrun.json                            |   2 +-
 7 files changed, 676 insertions(+), 1 deletion(-)

diff --git a/apply-held36-canary.mjs b/apply-held36-canary.mjs
new file mode 100644
index 0000000..0b813ad
--- /dev/null
+++ b/apply-held36-canary.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-canary.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-canary.json', import.meta.url)));
+const applySet = dry.apply_set || [];
+if (applySet.length !== 1) { 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/data/apply-result-held36-2026-08-28T02-14-46-457Z.json b/data/apply-result-held36-2026-08-28T02-14-46-457Z.json
new file mode 100644
index 0000000..642e9ce
--- /dev/null
+++ b/data/apply-result-held36-2026-08-28T02-14-46-457Z.json
@@ -0,0 +1,19 @@
+{
+  "applied": 2,
+  "skipped_idempotent": 0,
+  "failed": 0,
+  "details": [
+    {
+      "variant_id": 44188115763251,
+      "status": "applied",
+      "from": "DWHD-502873",
+      "to": "HWC-61247"
+    },
+    {
+      "variant_id": 44188115730483,
+      "status": "applied",
+      "from": "DWHD-502873-Sample",
+      "to": "HWC-61247-Sample"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/data/apply-result-held36-2026-08-28T02-15-05-589Z.json b/data/apply-result-held36-2026-08-28T02-15-05-589Z.json
new file mode 100644
index 0000000..e08b78b
--- /dev/null
+++ b/data/apply-result-held36-2026-08-28T02-15-05-589Z.json
@@ -0,0 +1,437 @@
+{
+  "applied": 70,
+  "skipped_idempotent": 2,
+  "failed": 0,
+  "details": [
+    {
+      "variant_id": 44188115763251,
+      "status": "skip_already_target",
+      "sku": "HWC-61247"
+    },
+    {
+      "variant_id": 44188115730483,
+      "status": "skip_already_target",
+      "sku": "HWC-61247-Sample"
+    },
+    {
+      "variant_id": 44188115828787,
+      "status": "applied",
+      "from": "DWHD-502874",
+      "to": "HWC-61248"
+    },
+    {
+      "variant_id": 44188115796019,
+      "status": "applied",
+      "from": "DWHD-502874-Sample",
+      "to": "HWC-61248-Sample"
+    },
+    {
+      "variant_id": 44188115894323,
+      "status": "applied",
+      "from": "DWHD-502875",
+      "to": "HWC-61249"
+    },
+    {
+      "variant_id": 44188115861555,
+      "status": "applied",
+      "from": "DWHD-502875-Sample",
+      "to": "HWC-61249-Sample"
+    },
+    {
+      "variant_id": 44188115959859,
+      "status": "applied",
+      "from": "DWHD-502876",
+      "to": "HWC-61250"
+    },
+    {
+      "variant_id": 44188115927091,
+      "status": "applied",
+      "from": "DWHD-502876-Sample",
+      "to": "HWC-61250-Sample"
+    },
+    {
+      "variant_id": 44188116025395,
+      "status": "applied",
+      "from": "DWHD-502877",
+      "to": "HWC-61251"
+    },
+    {
+      "variant_id": 44188115992627,
+      "status": "applied",
+      "from": "DWHD-502877-Sample",
+      "to": "HWC-61251-Sample"
+    },
+    {
+      "variant_id": 44188116090931,
+      "status": "applied",
+      "from": "DWHD-502878",
+      "to": "HWC-61252"
+    },
+    {
+      "variant_id": 44188116058163,
+      "status": "applied",
+      "from": "DWHD-502878-Sample",
+      "to": "HWC-61252-Sample"
+    },
+    {
+      "variant_id": 44188116156467,
+      "status": "applied",
+      "from": "DWHD-502879",
+      "to": "HWC-61253"
+    },
+    {
+      "variant_id": 44188116123699,
+      "status": "applied",
+      "from": "DWHD-502879-Sample",
+      "to": "HWC-61253-Sample"
+    },
+    {
+      "variant_id": 44188116811827,
+      "status": "applied",
+      "from": "DWHD-502880",
+      "to": "HWC-61256"
+    },
+    {
+      "variant_id": 44188116779059,
+      "status": "applied",
+      "from": "DWHD-502880-Sample",
+      "to": "HWC-61256-Sample"
+    },
+    {
+      "variant_id": 44188116877363,
+      "status": "applied",
+      "from": "DWHD-502881",
+      "to": "HWC-61257"
+    },
+    {
+      "variant_id": 44188116844595,
+      "status": "applied",
+      "from": "DWHD-502881-Sample",
+      "to": "HWC-61257-Sample"
+    },
+    {
+      "variant_id": 44188116942899,
+      "status": "applied",
+      "from": "DWHD-502882",
+      "to": "HWC-61258"
+    },
+    {
+      "variant_id": 44188116910131,
+      "status": "applied",
+      "from": "DWHD-502882-Sample",
+      "to": "HWC-61258-Sample"
+    },
+    {
+      "variant_id": 44188117008435,
+      "status": "applied",
+      "from": "DWHD-502883",
+      "to": "HWC-61259"
+    },
+    {
+      "variant_id": 44188116975667,
+      "status": "applied",
+      "from": "DWHD-502883-Sample",
+      "to": "HWC-61259-Sample"
+    },
+    {
+      "variant_id": 44188117073971,
+      "status": "applied",
+      "from": "DWHD-502884",
+      "to": "HWC-61260"
+    },
+    {
+      "variant_id": 44188117041203,
+      "status": "applied",
+      "from": "DWHD-502884-Sample",
+      "to": "HWC-61260-Sample"
+    },
+    {
+      "variant_id": 44188117237811,
+      "status": "applied",
+      "from": "DWHD-502885",
+      "to": "HWC-61261"
+    },
+    {
+      "variant_id": 44188117205043,
+      "status": "applied",
+      "from": "DWHD-502885-Sample",
+      "to": "HWC-61261-Sample"
+    },
+    {
+      "variant_id": 44188117303347,
+      "status": "applied",
+      "from": "DWHD-502886",
+      "to": "HWC-61262"
+    },
+    {
+      "variant_id": 44188117270579,
+      "status": "applied",
+      "from": "DWHD-502886-Sample",
+      "to": "HWC-61262-Sample"
+    },
+    {
+      "variant_id": 44188117368883,
+      "status": "applied",
+      "from": "DWHD-502887",
+      "to": "HWC-61263"
+    },
+    {
+      "variant_id": 44188117336115,
+      "status": "applied",
+      "from": "DWHD-502887-Sample",
+      "to": "HWC-61263-Sample"
+    },
+    {
+      "variant_id": 44188117434419,
+      "status": "applied",
+      "from": "DWHD-502888",
+      "to": "HWC-61264"
+    },
+    {
+      "variant_id": 44188117401651,
+      "status": "applied",
+      "from": "DWHD-502888-Sample",
+      "to": "HWC-61264-Sample"
+    },
+    {
+      "variant_id": 44188117499955,
+      "status": "applied",
+      "from": "DWHD-502889",
+      "to": "HWC-61265"
+    },
+    {
+      "variant_id": 44188117467187,
+      "status": "applied",
+      "from": "DWHD-502889-Sample",
+      "to": "HWC-61265-Sample"
+    },
+    {
+      "variant_id": 44188117565491,
+      "status": "applied",
+      "from": "DWHD-502890",
+      "to": "HWC-61266"
+    },
+    {
+      "variant_id": 44188117532723,
+      "status": "applied",
+      "from": "DWHD-502890-Sample",
+      "to": "HWC-61266-Sample"
+    },
+    {
+      "variant_id": 44188117631027,
+      "status": "applied",
+      "from": "DWHD-502891",
+      "to": "HWC-61267"
+    },
+    {
+      "variant_id": 44188117598259,
+      "status": "applied",
+      "from": "DWHD-502891-Sample",
+      "to": "HWC-61267-Sample"
+    },
+    {
+      "variant_id": 44188117696563,
+      "status": "applied",
+      "from": "DWHD-502892",
+      "to": "HWC-61268"
+    },
+    {
+      "variant_id": 44188117663795,
+      "status": "applied",
+      "from": "DWHD-502892-Sample",
+      "to": "HWC-61268-Sample"
+    },
+    {
+      "variant_id": 44188117762099,
+      "status": "applied",
+      "from": "DWHD-502893",
+      "to": "HWC-61269"
+    },
+    {
+      "variant_id": 44188117729331,
+      "status": "applied",
+      "from": "DWHD-502893-Sample",
+      "to": "HWC-61269-Sample"
+    },
+    {
+      "variant_id": 44188117827635,
+      "status": "applied",
+      "from": "DWHD-502894",
+      "to": "HWC-61270"
+    },
+    {
+      "variant_id": 44188117794867,
+      "status": "applied",
+      "from": "DWHD-502894-Sample",
+      "to": "HWC-61270-Sample"
+    },
+    {
+      "variant_id": 44188117893171,
+      "status": "applied",
+      "from": "DWHD-502895",
+      "to": "HWC-61271"
+    },
+    {
+      "variant_id": 44188117860403,
+      "status": "applied",
+      "from": "DWHD-502895-Sample",
+      "to": "HWC-61271-Sample"
+    },
+    {
+      "variant_id": 44188117958707,
+      "status": "applied",
+      "from": "DWHD-502896",
+      "to": "HWC-61272"
+    },
+    {
+      "variant_id": 44188117925939,
+      "status": "applied",
+      "from": "DWHD-502896-Sample",
+      "to": "HWC-61272-Sample"
+    },
+    {
+      "variant_id": 44188118057011,
+      "status": "applied",
+      "from": "DWHD-502897",
+      "to": "HWC-61273"
+    },
+    {
+      "variant_id": 44188118024243,
+      "status": "applied",
+      "from": "DWHD-502897-Sample",
+      "to": "HWC-61273-Sample"
+    },
+    {
+      "variant_id": 44188118122547,
+      "status": "applied",
+      "from": "DWHD-502898",
+      "to": "HWC-61274"
+    },
+    {
+      "variant_id": 44188118089779,
+      "status": "applied",
+      "from": "DWHD-502898-Sample",
+      "to": "HWC-61274-Sample"
+    },
+    {
+      "variant_id": 44188118188083,
+      "status": "applied",
+      "from": "DWHD-502899",
+      "to": "HWC-61275"
+    },
+    {
+      "variant_id": 44188118155315,
+      "status": "applied",
+      "from": "DWHD-502899-Sample",
+      "to": "HWC-61275-Sample"
+    },
+    {
+      "variant_id": 44188118253619,
+      "status": "applied",
+      "from": "DWHD-502900",
+      "to": "HWC-61276"
+    },
+    {
+      "variant_id": 44188118220851,
+      "status": "applied",
+      "from": "DWHD-502900-Sample",
+      "to": "HWC-61276-Sample"
+    },
+    {
+      "variant_id": 44188118319155,
+      "status": "applied",
+      "from": "DWHD-502901",
+      "to": "HWC-61277"
+    },
+    {
+      "variant_id": 44188118286387,
+      "status": "applied",
+      "from": "DWHD-502901-Sample",
+      "to": "HWC-61277-Sample"
+    },
+    {
+      "variant_id": 44188118384691,
+      "status": "applied",
+      "from": "DWHD-502902",
+      "to": "HWC-61278"
+    },
+    {
+      "variant_id": 44188118351923,
+      "status": "applied",
+      "from": "DWHD-502902-Sample",
+      "to": "HWC-61278-Sample"
+    },
+    {
+      "variant_id": 44188119072819,
+      "status": "applied",
+      "from": "DWHD-502903",
+      "to": "HWC-61279"
+    },
+    {
+      "variant_id": 44188119040051,
+      "status": "applied",
+      "from": "DWHD-502903-Sample",
+      "to": "HWC-61279-Sample"
+    },
+    {
+      "variant_id": 44188119138355,
+      "status": "applied",
+      "from": "DWHD-502904",
+      "to": "HWC-61280"
+    },
+    {
+      "variant_id": 44188119105587,
+      "status": "applied",
+      "from": "DWHD-502904-Sample",
+      "to": "HWC-61280-Sample"
+    },
+    {
+      "variant_id": 44188116222003,
+      "status": "applied",
+      "from": "DWHD-502905",
+      "to": "HWC-61254"
+    },
+    {
+      "variant_id": 44188116189235,
+      "status": "applied",
+      "from": "DWHD-502905-Sample",
+      "to": "HWC-61254-Sample"
+    },
+    {
+      "variant_id": 44188116484147,
+      "status": "applied",
+      "from": "DWHD-502906",
+      "to": "HWC-61255"
+    },
+    {
+      "variant_id": 44188116451379,
+      "status": "applied",
+      "from": "DWHD-502906-Sample",
+      "to": "HWC-61255-Sample"
+    },
+    {
+      "variant_id": 44193896398899,
+      "status": "applied",
+      "from": "DWHD-502551-Yard",
+      "to": "HWC-61284"
+    },
+    {
+      "variant_id": 44190205771827,
+      "status": "applied",
+      "from": "DWHD-502551-Sample",
+      "to": "HWC-61284-Sample"
+    },
+    {
+      "variant_id": 44188083912755,
+      "status": "applied",
+      "from": "DWHD-503061",
+      "to": "HWC-61245"
+    },
+    {
+      "variant_id": 44187866103859,
+      "status": "applied",
+      "from": "DWHD-503061-Sample",
+      "to": "HWC-61245-Sample"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/data/apply-reversibility-held36-2026-08-28T02-14-46-457Z.jsonl b/data/apply-reversibility-held36-2026-08-28T02-14-46-457Z.jsonl
new file mode 100644
index 0000000..df5f9a0
--- /dev/null
+++ b/data/apply-reversibility-held36-2026-08-28T02-14-46-457Z.jsonl
@@ -0,0 +1,2 @@
+{"variant_id":44188115763251,"from_sku":"DWHD-502873","to_sku":"HWC-61247","ts":"2026-08-28T02:14:46.458Z"}
+{"variant_id":44188115730483,"from_sku":"DWHD-502873-Sample","to_sku":"HWC-61247-Sample","ts":"2026-08-28T02:14:48.005Z"}
diff --git a/data/apply-reversibility-held36-2026-08-28T02-15-05-589Z.jsonl b/data/apply-reversibility-held36-2026-08-28T02-15-05-589Z.jsonl
new file mode 100644
index 0000000..aa883e6
--- /dev/null
+++ b/data/apply-reversibility-held36-2026-08-28T02-15-05-589Z.jsonl
@@ -0,0 +1,72 @@
+{"variant_id":44188115763251,"from_sku":"DWHD-502873","to_sku":"HWC-61247","ts":"2026-08-28T02:15:05.590Z"}
+{"variant_id":44188115730483,"from_sku":"DWHD-502873-Sample","to_sku":"HWC-61247-Sample","ts":"2026-08-28T02:15:05.860Z"}
+{"variant_id":44188115828787,"from_sku":"DWHD-502874","to_sku":"HWC-61248","ts":"2026-08-28T02:15:06.051Z"}
+{"variant_id":44188115796019,"from_sku":"DWHD-502874-Sample","to_sku":"HWC-61248-Sample","ts":"2026-08-28T02:15:07.404Z"}
+{"variant_id":44188115894323,"from_sku":"DWHD-502875","to_sku":"HWC-61249","ts":"2026-08-28T02:15:08.784Z"}
+{"variant_id":44188115861555,"from_sku":"DWHD-502875-Sample","to_sku":"HWC-61249-Sample","ts":"2026-08-28T02:15:10.446Z"}
+{"variant_id":44188115959859,"from_sku":"DWHD-502876","to_sku":"HWC-61250","ts":"2026-08-28T02:15:11.939Z"}
+{"variant_id":44188115927091,"from_sku":"DWHD-502876-Sample","to_sku":"HWC-61250-Sample","ts":"2026-08-28T02:15:13.303Z"}
+{"variant_id":44188116025395,"from_sku":"DWHD-502877","to_sku":"HWC-61251","ts":"2026-08-28T02:15:14.641Z"}
+{"variant_id":44188115992627,"from_sku":"DWHD-502877-Sample","to_sku":"HWC-61251-Sample","ts":"2026-08-28T02:15:15.976Z"}
+{"variant_id":44188116090931,"from_sku":"DWHD-502878","to_sku":"HWC-61252","ts":"2026-08-28T02:15:17.284Z"}
+{"variant_id":44188116058163,"from_sku":"DWHD-502878-Sample","to_sku":"HWC-61252-Sample","ts":"2026-08-28T02:15:18.592Z"}
+{"variant_id":44188116156467,"from_sku":"DWHD-502879","to_sku":"HWC-61253","ts":"2026-08-28T02:15:19.991Z"}
+{"variant_id":44188116123699,"from_sku":"DWHD-502879-Sample","to_sku":"HWC-61253-Sample","ts":"2026-08-28T02:15:21.441Z"}
+{"variant_id":44188116811827,"from_sku":"DWHD-502880","to_sku":"HWC-61256","ts":"2026-08-28T02:15:22.827Z"}
+{"variant_id":44188116779059,"from_sku":"DWHD-502880-Sample","to_sku":"HWC-61256-Sample","ts":"2026-08-28T02:15:24.550Z"}
+{"variant_id":44188116877363,"from_sku":"DWHD-502881","to_sku":"HWC-61257","ts":"2026-08-28T02:15:25.927Z"}
+{"variant_id":44188116844595,"from_sku":"DWHD-502881-Sample","to_sku":"HWC-61257-Sample","ts":"2026-08-28T02:15:28.069Z"}
+{"variant_id":44188116942899,"from_sku":"DWHD-502882","to_sku":"HWC-61258","ts":"2026-08-28T02:15:29.537Z"}
+{"variant_id":44188116910131,"from_sku":"DWHD-502882-Sample","to_sku":"HWC-61258-Sample","ts":"2026-08-28T02:15:30.921Z"}
+{"variant_id":44188117008435,"from_sku":"DWHD-502883","to_sku":"HWC-61259","ts":"2026-08-28T02:15:32.517Z"}
+{"variant_id":44188116975667,"from_sku":"DWHD-502883-Sample","to_sku":"HWC-61259-Sample","ts":"2026-08-28T02:15:33.820Z"}
+{"variant_id":44188117073971,"from_sku":"DWHD-502884","to_sku":"HWC-61260","ts":"2026-08-28T02:15:35.138Z"}
+{"variant_id":44188117041203,"from_sku":"DWHD-502884-Sample","to_sku":"HWC-61260-Sample","ts":"2026-08-28T02:15:36.484Z"}
+{"variant_id":44188117237811,"from_sku":"DWHD-502885","to_sku":"HWC-61261","ts":"2026-08-28T02:15:38.072Z"}
+{"variant_id":44188117205043,"from_sku":"DWHD-502885-Sample","to_sku":"HWC-61261-Sample","ts":"2026-08-28T02:15:39.394Z"}
+{"variant_id":44188117303347,"from_sku":"DWHD-502886","to_sku":"HWC-61262","ts":"2026-08-28T02:15:40.713Z"}
+{"variant_id":44188117270579,"from_sku":"DWHD-502886-Sample","to_sku":"HWC-61262-Sample","ts":"2026-08-28T02:15:42.127Z"}
+{"variant_id":44188117368883,"from_sku":"DWHD-502887","to_sku":"HWC-61263","ts":"2026-08-28T02:15:43.416Z"}
+{"variant_id":44188117336115,"from_sku":"DWHD-502887-Sample","to_sku":"HWC-61263-Sample","ts":"2026-08-28T02:15:44.778Z"}
+{"variant_id":44188117434419,"from_sku":"DWHD-502888","to_sku":"HWC-61264","ts":"2026-08-28T02:15:46.118Z"}
+{"variant_id":44188117401651,"from_sku":"DWHD-502888-Sample","to_sku":"HWC-61264-Sample","ts":"2026-08-28T02:15:47.633Z"}
+{"variant_id":44188117499955,"from_sku":"DWHD-502889","to_sku":"HWC-61265","ts":"2026-08-28T02:15:49.121Z"}
+{"variant_id":44188117467187,"from_sku":"DWHD-502889-Sample","to_sku":"HWC-61265-Sample","ts":"2026-08-28T02:15:50.628Z"}
+{"variant_id":44188117565491,"from_sku":"DWHD-502890","to_sku":"HWC-61266","ts":"2026-08-28T02:15:51.964Z"}
+{"variant_id":44188117532723,"from_sku":"DWHD-502890-Sample","to_sku":"HWC-61266-Sample","ts":"2026-08-28T02:15:53.263Z"}
+{"variant_id":44188117631027,"from_sku":"DWHD-502891","to_sku":"HWC-61267","ts":"2026-08-28T02:15:54.560Z"}
+{"variant_id":44188117598259,"from_sku":"DWHD-502891-Sample","to_sku":"HWC-61267-Sample","ts":"2026-08-28T02:15:55.949Z"}
+{"variant_id":44188117696563,"from_sku":"DWHD-502892","to_sku":"HWC-61268","ts":"2026-08-28T02:15:57.795Z"}
+{"variant_id":44188117663795,"from_sku":"DWHD-502892-Sample","to_sku":"HWC-61268-Sample","ts":"2026-08-28T02:15:59.251Z"}
+{"variant_id":44188117762099,"from_sku":"DWHD-502893","to_sku":"HWC-61269","ts":"2026-08-28T02:16:00.585Z"}
+{"variant_id":44188117729331,"from_sku":"DWHD-502893-Sample","to_sku":"HWC-61269-Sample","ts":"2026-08-28T02:16:01.990Z"}
+{"variant_id":44188117827635,"from_sku":"DWHD-502894","to_sku":"HWC-61270","ts":"2026-08-28T02:16:03.221Z"}
+{"variant_id":44188117794867,"from_sku":"DWHD-502894-Sample","to_sku":"HWC-61270-Sample","ts":"2026-08-28T02:16:04.502Z"}
+{"variant_id":44188117893171,"from_sku":"DWHD-502895","to_sku":"HWC-61271","ts":"2026-08-28T02:16:05.730Z"}
+{"variant_id":44188117860403,"from_sku":"DWHD-502895-Sample","to_sku":"HWC-61271-Sample","ts":"2026-08-28T02:16:06.993Z"}
+{"variant_id":44188117958707,"from_sku":"DWHD-502896","to_sku":"HWC-61272","ts":"2026-08-28T02:16:08.320Z"}
+{"variant_id":44188117925939,"from_sku":"DWHD-502896-Sample","to_sku":"HWC-61272-Sample","ts":"2026-08-28T02:16:09.626Z"}
+{"variant_id":44188118057011,"from_sku":"DWHD-502897","to_sku":"HWC-61273","ts":"2026-08-28T02:16:10.928Z"}
+{"variant_id":44188118024243,"from_sku":"DWHD-502897-Sample","to_sku":"HWC-61273-Sample","ts":"2026-08-28T02:16:12.311Z"}
+{"variant_id":44188118122547,"from_sku":"DWHD-502898","to_sku":"HWC-61274","ts":"2026-08-28T02:16:13.736Z"}
+{"variant_id":44188118089779,"from_sku":"DWHD-502898-Sample","to_sku":"HWC-61274-Sample","ts":"2026-08-28T02:16:14.987Z"}
+{"variant_id":44188118188083,"from_sku":"DWHD-502899","to_sku":"HWC-61275","ts":"2026-08-28T02:16:16.253Z"}
+{"variant_id":44188118155315,"from_sku":"DWHD-502899-Sample","to_sku":"HWC-61275-Sample","ts":"2026-08-28T02:16:17.529Z"}
+{"variant_id":44188118253619,"from_sku":"DWHD-502900","to_sku":"HWC-61276","ts":"2026-08-28T02:16:18.872Z"}
+{"variant_id":44188118220851,"from_sku":"DWHD-502900-Sample","to_sku":"HWC-61276-Sample","ts":"2026-08-28T02:16:20.155Z"}
+{"variant_id":44188118319155,"from_sku":"DWHD-502901","to_sku":"HWC-61277","ts":"2026-08-28T02:16:21.424Z"}
+{"variant_id":44188118286387,"from_sku":"DWHD-502901-Sample","to_sku":"HWC-61277-Sample","ts":"2026-08-28T02:16:22.700Z"}
+{"variant_id":44188118384691,"from_sku":"DWHD-502902","to_sku":"HWC-61278","ts":"2026-08-28T02:16:23.986Z"}
+{"variant_id":44188118351923,"from_sku":"DWHD-502902-Sample","to_sku":"HWC-61278-Sample","ts":"2026-08-28T02:16:25.274Z"}
+{"variant_id":44188119072819,"from_sku":"DWHD-502903","to_sku":"HWC-61279","ts":"2026-08-28T02:16:26.679Z"}
+{"variant_id":44188119040051,"from_sku":"DWHD-502903-Sample","to_sku":"HWC-61279-Sample","ts":"2026-08-28T02:16:27.943Z"}
+{"variant_id":44188119138355,"from_sku":"DWHD-502904","to_sku":"HWC-61280","ts":"2026-08-28T02:16:29.482Z"}
+{"variant_id":44188119105587,"from_sku":"DWHD-502904-Sample","to_sku":"HWC-61280-Sample","ts":"2026-08-28T02:16:30.767Z"}
+{"variant_id":44188116222003,"from_sku":"DWHD-502905","to_sku":"HWC-61254","ts":"2026-08-28T02:16:32.140Z"}
+{"variant_id":44188116189235,"from_sku":"DWHD-502905-Sample","to_sku":"HWC-61254-Sample","ts":"2026-08-28T02:16:33.426Z"}
+{"variant_id":44188116484147,"from_sku":"DWHD-502906","to_sku":"HWC-61255","ts":"2026-08-28T02:16:34.677Z"}
+{"variant_id":44188116451379,"from_sku":"DWHD-502906-Sample","to_sku":"HWC-61255-Sample","ts":"2026-08-28T02:16:35.999Z"}
+{"variant_id":44193896398899,"from_sku":"DWHD-502551-Yard","to_sku":"HWC-61284","ts":"2026-08-28T02:16:37.255Z"}
+{"variant_id":44190205771827,"from_sku":"DWHD-502551-Sample","to_sku":"HWC-61284-Sample","ts":"2026-08-28T02:16:38.561Z"}
+{"variant_id":44188083912755,"from_sku":"DWHD-503061","to_sku":"HWC-61245","ts":"2026-08-28T02:16:39.992Z"}
+{"variant_id":44187866103859,"from_sku":"DWHD-503061-Sample","to_sku":"HWC-61245-Sample","ts":"2026-08-28T02:16:41.714Z"}
diff --git a/data/held36-canary.json b/data/held36-canary.json
new file mode 100644
index 0000000..8be8974
--- /dev/null
+++ b/data/held36-canary.json
@@ -0,0 +1,30 @@
+{
+  "generated_at": "2026-08-28T02:14:25.603Z",
+  "ticket": "TK-10633",
+  "scope": "held36-metafield-clean-HWC-remap",
+  "products": 1,
+  "variant_writes": 2,
+  "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"
+        }
+      ]
+    }
+  ],
+  "problems": []
+}
\ No newline at end of file
diff --git a/data/held36-dryrun.json b/data/held36-dryrun.json
index 7c56241..ca207e9 100644
--- a/data/held36-dryrun.json
+++ b/data/held36-dryrun.json
@@ -1,5 +1,5 @@
 {
-  "generated_at": "2026-08-27T17:41:50.238Z",
+  "generated_at": "2026-08-28T02:14:25.603Z",
   "ticket": "TK-10633",
   "scope": "held36-metafield-clean-HWC-remap",
   "products": 36,

← 90e1ff8 TK-10633: dry-run + apply/rollback tooling for 36 held produ  ·  back to Hollywood Optc  ·  auto-data-snapshot: 2026-08-28T00:56:56 (5 data files) — dat 5bb5506 →