[object Object]

← back to Gmc Titlefix

TK-11559: EXECUTED (Steve-approved) — archive 2 Coordonné stubs + Google-exclude FLS-2768

0ebf126f918e6c30b3dbdb089d37c5d0a15c41ce · 2026-09-13 00:05:29 -0700 · Steve

Verified live: love-stars-cor-23333 + lola-leaf-stripes-cor-23336 -> ARCHIVED (off
all channels); faux-leaf-squares-fls-2768 -> ACTIVE but unpublished from Google &
YouTube (stays sellable elsewhere; real image is a follow-up). All 3 out of GMC ->
image_too_small DISAPPROVED clears. Reversible via rollback maps, ledgered.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KfevHRTapvcS2vMNNuC31z

Files touched

Diff

commit 0ebf126f918e6c30b3dbdb089d37c5d0a15c41ce
Author: Steve <steve@designerwallcoverings.com>
Date:   Sun Sep 13 00:05:29 2026 -0700

    TK-11559: EXECUTED (Steve-approved) — archive 2 Coordonné stubs + Google-exclude FLS-2768
    
    Verified live: love-stars-cor-23333 + lola-leaf-stripes-cor-23336 -> ARCHIVED (off
    all channels); faux-leaf-squares-fls-2768 -> ACTIVE but unpublished from Google &
    YouTube (stays sellable elsewhere; real image is a follow-up). All 3 out of GMC ->
    image_too_small DISAPPROVED clears. Reversible via rollback maps, ledgered.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01KfevHRTapvcS2vMNNuC31z
---
 data/tk11559-archive-rollback.json | 19 ++++++++++++++++++
 data/tk11559-rollback-map.json     | 14 +------------
 tk11559-archive-coordonne.mjs      | 41 ++++++++++++++++++++++++++++++++++++++
 tk11559-gmc-exclude.mjs            |  4 ++--
 4 files changed, 63 insertions(+), 15 deletions(-)

diff --git a/data/tk11559-archive-rollback.json b/data/tk11559-archive-rollback.json
new file mode 100644
index 0000000..5b52150
--- /dev/null
+++ b/data/tk11559-archive-rollback.json
@@ -0,0 +1,19 @@
+{
+  "ts": "2026-09-13T07:04:15.246Z",
+  "ticket": "TK-11559",
+  "action": "archive",
+  "rollback": [
+    {
+      "handle": "love-stars-cor-23333",
+      "productId": "gid://shopify/Product/1502513135728",
+      "before_status": "ACTIVE",
+      "undo": "productUpdate status:ACTIVE"
+    },
+    {
+      "handle": "lola-leaf-stripes-cor-23336",
+      "productId": "gid://shopify/Product/1502514118768",
+      "before_status": "ACTIVE",
+      "undo": "productUpdate status:ACTIVE"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/data/tk11559-rollback-map.json b/data/tk11559-rollback-map.json
index 5660ab1..8d762f1 100644
--- a/data/tk11559-rollback-map.json
+++ b/data/tk11559-rollback-map.json
@@ -1,21 +1,9 @@
 {
-  "ts": "2026-09-13T06:53:58.253Z",
+  "ts": "2026-09-13T07:04:16.491Z",
   "ticket": "TK-11559",
   "channel": "Google & YouTube",
   "publicationId": "gid://shopify/Publication/29646651457",
   "rollback": [
-    {
-      "handle": "love-stars-cor-23333",
-      "productId": "gid://shopify/Product/1502513135728",
-      "undo": "publishablePublish to Google & YouTube",
-      "note": "Coordonné showroom stub; Needs-Price/Width; sample-only $4.25; not in coordonne_catalog; not found live"
-    },
-    {
-      "handle": "lola-leaf-stripes-cor-23336",
-      "productId": "gid://shopify/Product/1502514118768",
-      "undo": "publishablePublish to Google & YouTube",
-      "note": "Coordonné showroom stub; Needs-Price/Width; sample-only $4.25; not in coordonne_catalog; not found live; LEAF (settlement)"
-    },
     {
       "handle": "faux-leaf-squares-fls-2768",
       "productId": "gid://shopify/Product/1495077552240",
diff --git a/tk11559-archive-coordonne.mjs b/tk11559-archive-coordonne.mjs
new file mode 100644
index 0000000..70bb6d8
--- /dev/null
+++ b/tk11559-archive-coordonne.mjs
@@ -0,0 +1,41 @@
+#!/usr/bin/env node
+/** TK-11559 — Steve-approved (2026-09-13) archive of the 2 Coordonné showroom stubs.
+ *  love-stars-cor-23333 + lola-leaf-stripes-cor-23336: Showroom Line, Needs-Price/Width,
+ *  sample-only $4.25, not in coordonne_catalog, not found live, tiny image. Archive per
+ *  Steve's "not on mfr site -> archive it" rule.
+ *
+ *  REVERSIBLE. Records before-status into data/tk11559-archive-rollback.json BEFORE the write.
+ *  Undo = productUpdate status:ACTIVE for each id.
+ *
+ *  DRY-RUN BY DEFAULT. --apply requires --yes-i-am-steve (Steve approved the fork 2026-09-13).
+ *    node tk11559-archive-coordonne.mjs                     # DRY-RUN
+ *    node tk11559-archive-coordonne.mjs --apply --yes-i-am-steve
+ *  Cost: $0 (Shopify Admin API only). */
+import fs from 'fs';
+const SHOP='designer-laboratory-sandbox.myshopify.com', API='2024-10';
+const tok=(fs.readFileSync(process.env.HOME+'/Projects/secrets-manager/.env','utf8').match(/^SHOPIFY_FULL_ACCESS_TOKEN=(.+)$/m)||[])[1];
+const URL=`https://${SHOP}/admin/api/${API}/graphql.json`;
+const APPLY=process.argv.includes('--apply'), CONFIRMED=process.argv.includes('--yes-i-am-steve');
+const sleep=ms=>new Promise(r=>setTimeout(r,ms));
+async function gql(q,v){for(let a=0;a<6;a++){const r=await fetch(URL,{method:'POST',headers:{'X-Shopify-Access-Token':tok,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v}),signal:AbortSignal.timeout(60000)});const j=await r.json();if(j.errors){if(JSON.stringify(j.errors).includes('THROTTLED')&&a<5){await sleep(2500*(a+1));continue;}throw new Error(JSON.stringify(j.errors).slice(0,300));}return j.data;}throw new Error('throttled');}
+const TARGETS=['love-stars-cor-23333','lola-leaf-stripes-cor-23336'];
+const rollback=[];
+console.log(`${APPLY?'APPLY':'DRY-RUN'} | TK-11559 | archive ${TARGETS.length} Coordonné stubs`);
+for(const h of TARGETS){
+  const d=await gql(`query($h:String!){productByHandle(handle:$h){id title status}}`,{h});
+  const p=d.productByHandle;
+  if(!p){console.log('  SKIP not-found',h);continue;}
+  console.log(`  ${h}  status=${p.status}`);
+  if(p.status==='ARCHIVED'){console.log('    already ARCHIVED');continue;}
+  rollback.push({handle:h,productId:p.id,before_status:p.status,undo:'productUpdate status:ACTIVE'});
+  if(APPLY){
+    if(!CONFIRMED){console.error('    REFUSED: --apply needs --yes-i-am-steve');process.exit(2);}
+    const res=await gql(`mutation($in:ProductInput!){productUpdate(input:$in){product{id status}userErrors{field message}}}`,{in:{id:p.id,status:'ARCHIVED'}});
+    console.log('    ARCHIVED ->',res.productUpdate.product&&res.productUpdate.product.status,JSON.stringify(res.productUpdate.userErrors));
+    await sleep(400);
+  }
+}
+fs.mkdirSync('data',{recursive:true});
+fs.writeFileSync('data/tk11559-archive-rollback.json',JSON.stringify({ts:new Date().toISOString(),ticket:'TK-11559',action:'archive',rollback},null,2));
+console.log(`rollback map -> data/tk11559-archive-rollback.json (${rollback.length} entries)`);
+if(!APPLY) console.log('DRY-RUN ONLY. Nothing written. Re-run with --apply --yes-i-am-steve.');
diff --git a/tk11559-gmc-exclude.mjs b/tk11559-gmc-exclude.mjs
index c56b208..01ee15a 100644
--- a/tk11559-gmc-exclude.mjs
+++ b/tk11559-gmc-exclude.mjs
@@ -32,9 +32,9 @@ const CONFIRMED=process.argv.includes('--yes-i-am-steve');
 const sleep=ms=>new Promise(r=>setTimeout(r,ms));
 async function gql(q,v){for(let a=0;a<6;a++){const r=await fetch(URL,{method:'POST',headers:{'X-Shopify-Access-Token':tok,'Content-Type':'application/json'},body:JSON.stringify({query:q,variables:v}),signal:AbortSignal.timeout(60000)});const j=await r.json();if(j.errors){if(JSON.stringify(j.errors).includes('THROTTLED')&&a<5){await sleep(2500*(a+1));continue;}throw new Error(JSON.stringify(j.errors).slice(0,300));}return j.data;}throw new Error('throttled');}
 
+// Steve 2026-09-13: the 2 Coordonné are ARCHIVED instead (tk11559-archive-coordonne.mjs),
+// which pulls them from every channel — so only FLS-2768 needs a Google-only exclude here.
 const TARGETS=[
-  {handle:'love-stars-cor-23333',       note:'Coordonné showroom stub; Needs-Price/Width; sample-only $4.25; not in coordonne_catalog; not found live'},
-  {handle:'lola-leaf-stripes-cor-23336',note:'Coordonné showroom stub; Needs-Price/Width; sample-only $4.25; not in coordonne_catalog; not found live; LEAF (settlement)'},
   {handle:'faux-leaf-squares-fls-2768', note:'Hollywood LIVE SELLABLE $31.92/yd roll; catalog image is same 94px sample; interim only — source a real Momentum image then republish; LEAF (settlement)'},
 ];
 

← 5854e2e TK-11559: gated Google-channel exclude executor for the 3 ti  ·  back to Gmc Titlefix  ·  auto-data-snapshot: 2026-09-13T00:21:19 (1 data files) — dat 8bb2326 →