← back to Japan Enrich
TK-11016: activate 41 Carnegie drafts + tag 12 furniture SKUs width-exempt (kept draft)
0beac0c6d7e620b7b7ef1a9dc5d9ed70d4fc218a · 2026-08-31 10:04:51 -0700 · Steve Abrams
Files touched
A carnegie-split/activation-restore-2026-08-31T16-58-10-540Z.jsonA carnegie-split/disposition-12-furniture.cjsA carnegie-split/disposition-restore-2026-08-31T17-02-16-678Z.json
Diff
commit 0beac0c6d7e620b7b7ef1a9dc5d9ed70d4fc218a
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Aug 31 10:04:51 2026 -0700
TK-11016: activate 41 Carnegie drafts + tag 12 furniture SKUs width-exempt (kept draft)
---
...ctivation-restore-2026-08-31T16-58-10-540Z.json | 47 +++++++++++++
carnegie-split/disposition-12-furniture.cjs | 48 +++++++++++++
...sposition-restore-2026-08-31T17-02-16-678Z.json | 79 ++++++++++++++++++++++
3 files changed, 174 insertions(+)
diff --git a/carnegie-split/activation-restore-2026-08-31T16-58-10-540Z.json b/carnegie-split/activation-restore-2026-08-31T16-58-10-540Z.json
new file mode 100644
index 0000000..76550b9
--- /dev/null
+++ b/carnegie-split/activation-restore-2026-08-31T16-58-10-540Z.json
@@ -0,0 +1,47 @@
+{
+ "ticket": "TK-11016",
+ "undo": "PUT status:draft for each id",
+ "ids": [
+ 7923664519219,
+ 7923664650291,
+ 7923664748595,
+ 7923664879667,
+ 7923664977971,
+ 7923665109043,
+ 7923742212147,
+ 7925799649331,
+ 7925799780403,
+ 7925799845939,
+ 7925799911475,
+ 7925799977011,
+ 7925800042547,
+ 7925800108083,
+ 7925800140851,
+ 7925800173619,
+ 7925800206387,
+ 7925800239155,
+ 7925800337459,
+ 7925800402995,
+ 7925800468531,
+ 7925800534067,
+ 7925800599603,
+ 7925800665139,
+ 7925800730675,
+ 7925800796211,
+ 7925800828979,
+ 7925800861747,
+ 7925800894515,
+ 7925800960051,
+ 7925800992819,
+ 7925801025587,
+ 7925801091123,
+ 7925801156659,
+ 7925801189427,
+ 7925801222195,
+ 7925801254963,
+ 7925801287731,
+ 7925801320499,
+ 7925801353267,
+ 7925801418803
+ ]
+}
\ No newline at end of file
diff --git a/carnegie-split/disposition-12-furniture.cjs b/carnegie-split/disposition-12-furniture.cjs
new file mode 100644
index 0000000..0d14c58
--- /dev/null
+++ b/carnegie-split/disposition-12-furniture.cjs
@@ -0,0 +1,48 @@
+// TK-11016 TASK2 — disposition of the 12 Carnegie furniture/hardware SKUs.
+// VERDICT: legitimate Carnegie finished-goods (6 Bar/Hardware kits + 6 Pillow/Furniture),
+// NOT scrape noise. They have genuinely-empty width (a pillow/hardware kit has no bolt
+// width) so the NEVER-ACTIVE-without-width gate does not & will never apply to them.
+// DISPOSITION: keep DRAFT (already draft, not customer-facing) + add reversible exception
+// tags so the width gate stops re-flagging them and a human knows they're intentionally
+// out of the roll-width path. Do NOT activate. Do NOT archive. Do NOT delete.
+//
+// Reversible: writes a restore-map (id -> prior status + prior tags) BEFORE any write.
+// Usage: node disposition-12-furniture.cjs (dry-run)
+// node disposition-12-furniture.cjs --apply
+const fs=require("fs"),os=require("os"),path=require("path"),https=require("https");
+const APPLY=process.argv.includes("--apply");
+const env=fs.readFileSync(path.join(os.homedir(),"Projects/secrets-manager/.env"),"utf8");
+const g=k=>{const m=env.match(new RegExp("^"+k+"=(.*)$","m"));return m?m[1].trim().replace(/^["']|["']$/g,""):null};
+const shop="designer-laboratory-sandbox.myshopify.com",tok=g("SHOPIFY_ADMIN_TOKEN")||g("SHOPIFY_ADMIN_API_TOKEN");
+const IDS=["7923216187443","7923216252979","7923216318515","7923216384051","7923216449587","7923216515123","7923320881203","7923320913971","7923320946739","7923321012275","7923321143347","7923321208883"];
+const ADD_TAGS=["width-exempt-furniture","Needs-Width-Exempt-Review"];
+const sleep=ms=>new Promise(r=>setTimeout(r,ms));
+function req(method,p,body){return new Promise((res)=>{const b=body?JSON.stringify(body):null;const o={host:shop,path:p,method,headers:{"X-Shopify-Access-Token":tok,"Content-Type":"application/json"},timeout:30000};if(b)o.headers["Content-Length"]=Buffer.byteLength(b);const r=https.request(o,x=>{let d="";x.on("data",c=>d+=c);x.on("end",()=>res({status:x.statusCode,body:d}))});r.on("error",e=>res({status:0,body:String(e)}));if(b)r.write(b);r.end()})}
+(async()=>{
+ const restore={ticket:"TK-11016",action:"add width-exempt tags to 12 furniture/hardware drafts (kept DRAFT)",undo:"PUT each id back to its recorded tags string; status was & stays draft",items:[]};
+ const plan=[];
+ for(const id of IDS){
+ const r=await req("GET",`/admin/api/2024-10/products/${id}.json?fields=id,title,status,tags`);
+ const p=JSON.parse(r.body).product;
+ const cur=(p.tags||"").split(",").map(s=>s.trim()).filter(Boolean);
+ const next=[...cur];
+ for(const t of ADD_TAGS) if(!next.includes(t)) next.push(t);
+ restore.items.push({id:p.id,title:p.title,prior_status:p.status,prior_tags:p.tags});
+ plan.push({id:p.id,title:p.title,status:p.status,newTags:next.join(", ")});
+ await sleep(500);
+ }
+ console.log(`items: ${plan.length} (all should be status=draft)`);
+ plan.forEach(x=>console.log(` ${x.id} [${x.status}] ${x.title}`));
+ if(!APPLY){console.log("\nDRY-RUN — pass --apply. Nothing written.");return;}
+ const ts=new Date().toISOString().replace(/[:.]/g,"-");
+ const rp=`disposition-restore-${ts}.json`;
+ fs.writeFileSync(rp,JSON.stringify(restore,null,2));
+ console.log(`restore-map written: ${rp}`);
+ let ok=0,fail=0;
+ for(const x of plan){
+ const r=await req("PUT",`/admin/api/2024-10/products/${x.id}.json`,{product:{id:x.id,tags:x.newTags,status:"draft"}});
+ if(r.status===200){ok++;process.stdout.write(".");}else{fail++;process.stdout.write("x");}
+ await sleep(500);
+ }
+ console.log(`\ntagged ${ok}, ${fail} failed. Restore: ${rp}`);
+})();
diff --git a/carnegie-split/disposition-restore-2026-08-31T17-02-16-678Z.json b/carnegie-split/disposition-restore-2026-08-31T17-02-16-678Z.json
new file mode 100644
index 0000000..079926c
--- /dev/null
+++ b/carnegie-split/disposition-restore-2026-08-31T17-02-16-678Z.json
@@ -0,0 +1,79 @@
+{
+ "ticket": "TK-11016",
+ "action": "add width-exempt tags to 12 furniture/hardware drafts (kept DRAFT)",
+ "undo": "PUT each id back to its recorded tags string; status was & stays draft",
+ "items": [
+ {
+ "id": 7923216187443,
+ "title": "Bar (Set) Fabric - Color Black | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "Alabaster, Bar (Set), bar-220022-hardware, Carnegie, display_variant, Fabric, Light, Solid, split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923216252979,
+ "title": "Bar (Set) Fabric - Color Silver | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "Alabaster, Bar (Set), bar-220033-hardware, Carnegie, display_variant, Fabric, Light, Solid, split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923216318515,
+ "title": "Bar (Set) Fabric - Color White | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "Alabaster, Bar (Set), bar-220011-hardware, Carnegie, display_variant, Fabric, Light, Solid, split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923216384051,
+ "title": "Bar (Top) Fabric - Color Black | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "Alabaster, Bar (Top), bar-222020-hardware, Carnegie, display_variant, Fabric, Light, Solid, split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923216449587,
+ "title": "Bar (Top) Fabric - Color Silver | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "Alabaster, Bar (Top), bar-222030-hardware, Carnegie, display_variant, Fabric, Light, Solid, split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923216515123,
+ "title": "Bar (Top) Fabric - Color White | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "Alabaster, Bar (Top), bar-222010-hardware, Carnegie, display_variant, Fabric, Light, Solid, split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923320881203,
+ "title": "Pillow (18x18) Fabric - Color 11 | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "#fefefe, Carnegie, display_variant, Fabric, Pillow (18x18), split-batch:carnegie-v2, White"
+ },
+ {
+ "id": 7923320913971,
+ "title": "Pillow (18x18) Fabric - Color 12 | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "#fefefe, Carnegie, display_variant, Fabric, Pillow (18x18), split-batch:carnegie-v2, White"
+ },
+ {
+ "id": 7923320946739,
+ "title": "Pillow (18x18) Fabric - Color 14 | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "#95002a, Burgundy, Carnegie, display_variant, Fabric, Pillow (18x18), split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923321012275,
+ "title": "Pillow (18x18) Fabric - Color 56 | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "#a52433, Brick, Carnegie, display_variant, Fabric, Pillow (18x18), split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923321143347,
+ "title": "Pillow (9x18) Fabric - Color 1 | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "#ded8ca, Bone, Carnegie, display_variant, Fabric, Pillow (9x18), split-batch:carnegie-v2"
+ },
+ {
+ "id": 7923321208883,
+ "title": "Pillow (9x18) Fabric - Color 2 | Carnegie",
+ "prior_status": "draft",
+ "prior_tags": "#010101, Black, Carnegie, display_variant, Fabric, Pillow (9x18), split-batch:carnegie-v2"
+ }
+ ]
+}
\ No newline at end of file
← e48de5a carnegie: add GATED activation script for 41 eligible drafts
·
back to Japan Enrich
·
TK-11105: execute Steve-approved New Arrivals cleanup — 14 d c539b5a →