← 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
A data/tk11559-archive-rollback.jsonM data/tk11559-rollback-map.jsonA tk11559-archive-coordonne.mjsM tk11559-gmc-exclude.mjs
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 →