← back to Harlequin Pilot Publish
Harlequin pilot LIVE published: 23/23 Single Roll variants added + verified; restore-map + rollback + ledger
606c45754a1353f93e8f90f6fa3b96e6fb35ec4d · 2026-08-26 09:34:43 -0700 · Steve Abrams
Files touched
A 03-verify.mjsM data/add-results.jsonA data/verify.jsonA rollback.mjs
Diff
commit 606c45754a1353f93e8f90f6fa3b96e6fb35ec4d
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Aug 26 09:34:43 2026 -0700
Harlequin pilot LIVE published: 23/23 Single Roll variants added + verified; restore-map + rollback + ledger
---
03-verify.mjs | 51 ++++++++++
data/add-results.json | 138 +++++++++++++--------------
data/verify.json | 255 ++++++++++++++++++++++++++++++++++++++++++++++++++
rollback.mjs | 18 ++++
4 files changed, 393 insertions(+), 69 deletions(-)
diff --git a/03-verify.mjs b/03-verify.mjs
new file mode 100644
index 0000000..2e69a3f
--- /dev/null
+++ b/03-verify.mjs
@@ -0,0 +1,51 @@
+// FRESH verify each of the 23: Single Roll @ retail AND Sample @ $4.25.
+import fs from 'node:fs';
+import { getProductVariants } from './lib.mjs';
+
+const pilot = JSON.parse(fs.readFileSync(new URL('./data/pilot-23.json', import.meta.url)));
+const located = JSON.parse(fs.readFileSync(new URL('./data/located.json', import.meta.url)));
+const byDw = Object.fromEntries(located.map(l => [l.dw_sku, l]));
+
+const rows = [];
+let pass = 0, fail = 0;
+
+for (const p of pilot) {
+ const loc = byDw[p.dw_sku];
+ const prod = await getProductVariants(loc.productGid);
+ const vs = prod.variants.edges.map(e => e.node);
+
+ const roll = vs.find(v => (v.title || '').toLowerCase() === 'single roll' || (v.sku || '').toUpperCase() === p.dw_sku.toUpperCase());
+ const sample = vs.find(v => (v.sku || '').toUpperCase() === (p.dw_sku + '-SAMPLE').toUpperCase());
+
+ const wantRetail = Number(p.retail).toFixed(2);
+ const rollOk = !!roll && Number(roll.price).toFixed(2) === wantRetail;
+ const sampleOk = !!sample && Number(sample.price).toFixed(2) === '4.25';
+ const verdict = rollOk && sampleOk ? 'PASS' : 'FAIL';
+ if (verdict === 'PASS') pass++; else fail++;
+
+ rows.push({
+ dw_sku: p.dw_sku, handle: loc.handle,
+ roll_id: roll?.id?.split('/').pop() || null, roll_price: roll?.price || null, roll_ok: rollOk,
+ sample_id: sample?.id?.split('/').pop() || null, sample_price: sample?.price || null, sample_ok: sampleOk,
+ verdict,
+ });
+ await new Promise(r => setTimeout(r, 250));
+}
+
+fs.writeFileSync(new URL('./data/verify.json', import.meta.url), JSON.stringify(rows, null, 2));
+
+// Print table
+console.log('DW SKU'.padEnd(12), 'ROLL id'.padEnd(16), 'ROLL$'.padEnd(9), 'OK', ' SAMPLE id'.padEnd(16), 'SMP$'.padEnd(6), 'OK', ' VERDICT');
+for (const r of rows) {
+ console.log(
+ r.dw_sku.padEnd(12),
+ String(r.roll_id).padEnd(16),
+ String(r.roll_price).padEnd(9),
+ (r.roll_ok ? 'Y' : 'N'),
+ String(r.sample_id).padEnd(16),
+ String(r.sample_price).padEnd(6),
+ (r.sample_ok ? 'Y' : 'N'),
+ r.verdict,
+ );
+}
+console.log(`\nPASS ${pass}/23 FAIL ${fail}/23`);
diff --git a/data/add-results.json b/data/add-results.json
index 0b24fa2..bd0fc14 100644
--- a/data/add-results.json
+++ b/data/add-results.json
@@ -1,140 +1,140 @@
[
{
"dw_sku": "DWHF-70127",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166048819,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70128",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166081587,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70129",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166310963,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70132",
- "action": "WOULD-ADD",
- "price": "981.00",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166343731,
+ "price": "981.00"
},
{
"dw_sku": "DWHF-70131",
- "action": "WOULD-ADD",
- "price": "981.00",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166376499,
+ "price": "981.00"
},
{
"dw_sku": "DWHF-70130",
- "action": "WOULD-ADD",
- "price": "981.00",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166409267,
+ "price": "981.00"
},
{
"dw_sku": "DWHF-70134",
- "action": "WOULD-ADD",
- "price": "208.14",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166474803,
+ "price": "208.14"
},
{
"dw_sku": "DWHF-70135",
- "action": "WOULD-ADD",
- "price": "208.14",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166507571,
+ "price": "208.14"
},
{
"dw_sku": "DWHF-70133",
- "action": "WOULD-ADD",
- "price": "208.14",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166540339,
+ "price": "208.14"
},
{
"dw_sku": "DWHF-70138",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166573107,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70137",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166736947,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70136",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166835251,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70139",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166900787,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70140",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166933555,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70141",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166966323,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70143",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782166999091,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70142",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782167031859,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70144",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782167064627,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70145",
- "action": "WOULD-ADD",
- "price": "269.68",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782167097395,
+ "price": "269.68"
},
{
"dw_sku": "DWHF-70146",
- "action": "WOULD-ADD",
- "price": "924.89",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782167130163,
+ "price": "924.89"
},
{
"dw_sku": "DWHF-70147",
- "action": "WOULD-ADD",
- "price": "924.89",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782167162931,
+ "price": "924.89"
},
{
"dw_sku": "DWHF-70148",
- "action": "WOULD-ADD",
- "price": "334.84",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782167195699,
+ "price": "334.84"
},
{
"dw_sku": "DWHF-70149",
- "action": "WOULD-ADD",
- "price": "334.84",
- "option": "Size=Single Roll"
+ "action": "ADDED",
+ "variant_id": 44782167228467,
+ "price": "334.84"
}
]
\ No newline at end of file
diff --git a/data/verify.json b/data/verify.json
new file mode 100644
index 0000000..532950d
--- /dev/null
+++ b/data/verify.json
@@ -0,0 +1,255 @@
+[
+ {
+ "dw_sku": "DWHF-70127",
+ "handle": "dwhf-70127-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166048819",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438303584307",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70128",
+ "handle": "dwhf-70128-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166081587",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438304043059",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70129",
+ "handle": "dwhf-70129-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166310963",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438304567347",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70132",
+ "handle": "dwhf-70132-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166343731",
+ "roll_price": "981.00",
+ "roll_ok": true,
+ "sample_id": "41438305910835",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70131",
+ "handle": "dwhf-70131-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166376499",
+ "roll_price": "981.00",
+ "roll_ok": true,
+ "sample_id": "41438305550387",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70130",
+ "handle": "dwhf-70130-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166409267",
+ "roll_price": "981.00",
+ "roll_ok": true,
+ "sample_id": "41438305091635",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70134",
+ "handle": "dwhf-70134-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166474803",
+ "roll_price": "208.14",
+ "roll_ok": true,
+ "sample_id": "41438306861107",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70135",
+ "handle": "dwhf-70135-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166507571",
+ "roll_price": "208.14",
+ "roll_ok": true,
+ "sample_id": "41438307188787",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70133",
+ "handle": "dwhf-70133-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166540339",
+ "roll_price": "208.14",
+ "roll_ok": true,
+ "sample_id": "41438306402355",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70138",
+ "handle": "dwhf-70138-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166573107",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438308728883",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70137",
+ "handle": "dwhf-70137-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166736947",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438308171827",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70136",
+ "handle": "dwhf-70136-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166835251",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438307582003",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70139",
+ "handle": "dwhf-70139-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166900787",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438309154867",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70140",
+ "handle": "dwhf-70140-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166933555",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438309515315",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70141",
+ "handle": "dwhf-70141-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166966323",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438309908531",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70143",
+ "handle": "dwhf-70143-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782166999091",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438310924339",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70142",
+ "handle": "dwhf-70142-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782167031859",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438310334515",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70144",
+ "handle": "dwhf-70144-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782167064627",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438311415859",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70145",
+ "handle": "dwhf-70145-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782167097395",
+ "roll_price": "269.68",
+ "roll_ok": true,
+ "sample_id": "41438311874611",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70146",
+ "handle": "dwhf-70146-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782167130163",
+ "roll_price": "924.89",
+ "roll_ok": true,
+ "sample_id": "41438312300595",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70147",
+ "handle": "dwhf-70147-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782167162931",
+ "roll_price": "924.89",
+ "roll_ok": true,
+ "sample_id": "41438312726579",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70148",
+ "handle": "dwhf-70148-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782167195699",
+ "roll_price": "334.84",
+ "roll_ok": true,
+ "sample_id": "41438313119795",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ },
+ {
+ "dw_sku": "DWHF-70149",
+ "handle": "dwhf-70149-sample-designer-wallcoverings-los-angeles",
+ "roll_id": "44782167228467",
+ "roll_price": "334.84",
+ "roll_ok": true,
+ "sample_id": "41438313611315",
+ "sample_price": "4.25",
+ "sample_ok": true,
+ "verdict": "PASS"
+ }
+]
\ No newline at end of file
diff --git a/rollback.mjs b/rollback.mjs
new file mode 100644
index 0000000..034befd
--- /dev/null
+++ b/rollback.mjs
@@ -0,0 +1,18 @@
+// Reverse the pilot: DELETE every Single Roll variant recorded in the restore map.
+// Dry-run by default; pass --apply to execute. Restores each product to its prior
+// single-Sample-variant state.
+import fs from 'node:fs';
+import { rest } from './lib.mjs';
+
+const APPLY = process.argv.includes('--apply');
+const MAP = process.env.HOME + '/.claude/yolo-queue/executed-reversible/harlequin-pilot-restore-map.json';
+const m = JSON.parse(fs.readFileSync(MAP));
+
+for (const e of m.entries) {
+ if (e.change !== 'ADDED_VARIANT') continue;
+ if (!APPLY) { console.log('WOULD-DELETE', e.dw_sku, 'variant', e.variant_id); continue; }
+ const r = await rest(`products/${e.product_id}/variants/${e.variant_id}.json`, 'DELETE');
+ console.log(e.dw_sku, 'delete variant', e.variant_id, '->', r.status);
+ await new Promise(res => setTimeout(res, 400));
+}
+console.log(APPLY ? 'ROLLBACK APPLIED' : 'DRY-RUN (pass --apply to execute)');
← 6312072 Harlequin pilot publish scaffold: locate 23 + idempotent Sin
·
back to Harlequin Pilot Publish
·
Part A: untrack 23 pilot Harlequin Sample variants (reversib 1270a58 →