[object Object]

← 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

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 →