[object Object]

← back to Designerwallcoverings

PJ re-channel guard: additive showroom-vendor filter on the Google publication in the 10 go-live onboarders (no-op today, guards the re-add rollback path; reversible via git revert)

09a52a82e2878bda4adade219812bb562dfb863c · 2026-09-09 12:54:59 -0700 · Steve Abrams

Files touched

Diff

commit 09a52a82e2878bda4adade219812bb562dfb863c
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Sep 9 12:54:59 2026 -0700

    PJ re-channel guard: additive showroom-vendor filter on the Google publication in the 10 go-live onboarders (no-op today, guards the re-add rollback path; reversible via git revert)
---
 scripts/artmura-onboard/go-live-artmura.js         | 3 ++-
 scripts/fallingstar-onboard/go-live-fallingstar.js | 3 ++-
 scripts/knoll-onboard/go-live.mjs                  | 4 +++-
 scripts/maharam-onboard/go-live.mjs                | 4 +++-
 scripts/muralsource-onboard/go-live.mjs            | 4 +++-
 scripts/osborne-onboard/go-live.mjs                | 4 +++-
 scripts/sanderson-onboard/go-live.mjs              | 4 +++-
 scripts/stout-onboard/go-live.mjs                  | 4 +++-
 scripts/stroheim-onboard/go-live.mjs               | 4 +++-
 scripts/tres-tintas-onboard/go-live-tres-tintas.js | 3 ++-
 10 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/scripts/artmura-onboard/go-live-artmura.js b/scripts/artmura-onboard/go-live-artmura.js
index acbb6d0..51111c3 100644
--- a/scripts/artmura-onboard/go-live-artmura.js
+++ b/scripts/artmura-onboard/go-live-artmura.js
@@ -1,4 +1,5 @@
 #!/usr/bin/env node
+const _isShowroomGuard = require('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live for the 161 Artmura draft products. Per product:
  *   1. enable inventory tracking on both variants (inventoryItemUpdate tracked:true)
@@ -85,7 +86,7 @@ async function goLive(pid) {
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
   // 3: publish to all channels
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Artmura")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate (TK-10162 fleet backfill): never flip a product ACTIVE without a
   // real manufacturer_sku metafield — the no-mfr go-live breach class (PJ 09-02, 893 SKUs).
diff --git a/scripts/fallingstar-onboard/go-live-fallingstar.js b/scripts/fallingstar-onboard/go-live-fallingstar.js
index 3dd81ff..fff00c7 100644
--- a/scripts/fallingstar-onboard/go-live-fallingstar.js
+++ b/scripts/fallingstar-onboard/go-live-fallingstar.js
@@ -1,4 +1,5 @@
 #!/usr/bin/env node
+const _isShowroomGuard = require('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Activate FallingStar Studio products (DW go-live). Mirrors go-live-artmura.js.
  * Self-contained: reads out/created.jsonl (product ids) — no DB.
@@ -76,7 +77,7 @@ async function goLive(pid) {
   const r2 = await gql(M_SETQTY, { input: { name: 'available', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Falling Star")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate (TK-10162 fleet backfill): never flip a product ACTIVE without a
   // real manufacturer_sku metafield — the no-mfr go-live breach class (PJ 09-02, 893 SKUs).
diff --git a/scripts/knoll-onboard/go-live.mjs b/scripts/knoll-onboard/go-live.mjs
index e1e6af9..a5e9be8 100644
--- a/scripts/knoll-onboard/go-live.mjs
+++ b/scripts/knoll-onboard/go-live.mjs
@@ -1,4 +1,6 @@
 #!/usr/bin/env node
+import { createRequire as _crGuard } from 'node:module';
+const _isShowroomGuard = _crGuard(import.meta.url)('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live for the Knoll drafts created by create-drafts.mjs (reads out/created.jsonl).
  * Per product: enable inventory tracking on both variants, activate at Ventura Blvd +
@@ -73,7 +75,7 @@ async function goLive(pid, sku) {
   const r2 = await gql(M_SETQTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Knoll")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate: never flip a product ACTIVE without a real manufacturer_sku metafield.
   // Fail-safe backstop for the no-mfr go-live breach class (TK-10291): even if
diff --git a/scripts/maharam-onboard/go-live.mjs b/scripts/maharam-onboard/go-live.mjs
index 0a5b75b..e66b1cc 100644
--- a/scripts/maharam-onboard/go-live.mjs
+++ b/scripts/maharam-onboard/go-live.mjs
@@ -1,4 +1,6 @@
 #!/usr/bin/env node
+import { createRequire as _crGuard } from 'node:module';
+const _isShowroomGuard = _crGuard(import.meta.url)('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live for the Maharam drafts created by create-drafts.mjs (reads out/created.jsonl).
  * Sample-only line: enable inventory tracking on the single $4.25 Sample variant,
@@ -78,7 +80,7 @@ async function goLive(pid, sku, mfrSku) {
   const r2 = await gql(M_SETQTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Maharam")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate: never flip a product ACTIVE without a real manufacturer_sku metafield.
   // Fail-safe backstop for the no-mfr go-live breach class (TK-10291): even if
diff --git a/scripts/muralsource-onboard/go-live.mjs b/scripts/muralsource-onboard/go-live.mjs
index f4e5893..04fce25 100644
--- a/scripts/muralsource-onboard/go-live.mjs
+++ b/scripts/muralsource-onboard/go-live.mjs
@@ -1,4 +1,6 @@
 #!/usr/bin/env node
+import { createRequire as _crGuard } from 'node:module';
+const _isShowroomGuard = _crGuard(import.meta.url)('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live (GATED trickle) for the Mural Source drafts created by create-drafts.mjs.
  * For each draft (out/created.jsonl) this:
@@ -98,7 +100,7 @@ async function goLive(pid, sku, mfrSku) {
   const r2 = await gql(M_SETQTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Mural Source")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate: never flip a product ACTIVE without a real manufacturer_sku metafield.
   // Fail-safe backstop for the no-mfr go-live breach class (TK-10291): even if
diff --git a/scripts/osborne-onboard/go-live.mjs b/scripts/osborne-onboard/go-live.mjs
index a3dd51c..a98d77c 100644
--- a/scripts/osborne-onboard/go-live.mjs
+++ b/scripts/osborne-onboard/go-live.mjs
@@ -1,4 +1,6 @@
 #!/usr/bin/env node
+import { createRequire as _crGuard } from 'node:module';
+const _isShowroomGuard = _crGuard(import.meta.url)('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live for the Osborne drafts created by create-drafts.mjs (reads out/created.jsonl).
  * Per product: enable inventory tracking on both variants, activate at Ventura Blvd + set
@@ -71,7 +73,7 @@ async function goLive(pid) {
   const r2 = await gql(M_SETQTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Osborne & Little")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate: never flip a product ACTIVE without a real manufacturer_sku metafield.
   // Fail-safe backstop for the no-mfr go-live breach class (TK-10291): even if
diff --git a/scripts/sanderson-onboard/go-live.mjs b/scripts/sanderson-onboard/go-live.mjs
index 0c5efc6..1965b6d 100644
--- a/scripts/sanderson-onboard/go-live.mjs
+++ b/scripts/sanderson-onboard/go-live.mjs
@@ -1,4 +1,6 @@
 #!/usr/bin/env node
+import { createRequire as _crGuard } from 'node:module';
+const _isShowroomGuard = _crGuard(import.meta.url)('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Gated go-live for Sanderson drafts (reads out/created.jsonl). Models osborne go-live.mjs plus the
  * two Task #3 gates:
@@ -100,7 +102,7 @@ async function goLive(rec) {
       quantities: [{ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY }] } });
     (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
   }
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Sanderson")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate: never flip a product ACTIVE without a real manufacturer_sku metafield.
   // Fail-safe backstop for the no-mfr go-live breach class (TK-10291): even if
diff --git a/scripts/stout-onboard/go-live.mjs b/scripts/stout-onboard/go-live.mjs
index d7ff0a2..89c606d 100644
--- a/scripts/stout-onboard/go-live.mjs
+++ b/scripts/stout-onboard/go-live.mjs
@@ -1,4 +1,6 @@
 #!/usr/bin/env node
+import { createRequire as _crGuard } from 'node:module';
+const _isShowroomGuard = _crGuard(import.meta.url)('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live (GATED trickle) for the Stout Textiles drafts created by create-drafts.mjs.
  * For each draft (out/created.jsonl) this:
@@ -101,7 +103,7 @@ async function goLive(pid, sku, mfrSku) {
   const r2 = await gql(M_SETQTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Stout")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate: never flip a product ACTIVE without a real manufacturer_sku metafield.
   // Fail-safe backstop for the no-mfr go-live breach class (TK-10291): even if
diff --git a/scripts/stroheim-onboard/go-live.mjs b/scripts/stroheim-onboard/go-live.mjs
index 123bd7e..fcb3a62 100644
--- a/scripts/stroheim-onboard/go-live.mjs
+++ b/scripts/stroheim-onboard/go-live.mjs
@@ -1,4 +1,6 @@
 #!/usr/bin/env node
+import { createRequire as _crGuard } from 'node:module';
+const _isShowroomGuard = _crGuard(import.meta.url)('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live (GATED trickle) for the Stroheim drafts created by create-drafts.mjs.
  *
@@ -102,7 +104,7 @@ async function goLive(pid, sku, mfrSku) {
   const r2 = await gql(M_SETQTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (r2.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('setqty:' + e.message));
-  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const r3 = await gql(M_PUBLISH, { id: gidP, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Stroheim")).map(p => ({ publicationId: p })) });
   (r3.publishablePublish?.userErrors || []).forEach(e => errs.push('publish:' + e.message));
   // TK-10303 go-live gate: never flip a product ACTIVE without a real manufacturer_sku metafield.
   // Fail-safe backstop for the no-mfr go-live breach class (TK-10291): even if
diff --git a/scripts/tres-tintas-onboard/go-live-tres-tintas.js b/scripts/tres-tintas-onboard/go-live-tres-tintas.js
index a90e0f9..a277757 100644
--- a/scripts/tres-tintas-onboard/go-live-tres-tintas.js
+++ b/scripts/tres-tintas-onboard/go-live-tres-tintas.js
@@ -1,4 +1,5 @@
 #!/usr/bin/env node
+const _isShowroomGuard = require('/Users/macstudio3/Projects/fix-live-board/config/showroom-vendor.cjs').isShowroomVendor; // PJ guard (canonical showroom-vendors.json)
 /**
  * Go-live for the DWTB Tres Tintas drafts created by push-tres-tintas-live.js.
  * Per product (read from data/created-ledger.jsonl):
@@ -79,7 +80,7 @@ async function goLive(pid) {
   const rq = await gql(M_QTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true,
     quantities: items.map(iid => ({ inventoryItemId: iid, locationId: LOCATION_ID, quantity: TARGET_QTY })) } });
   (rq.inventorySetQuantities?.userErrors || []).forEach(e => errs.push('qty:' + e.message));
-  const rp = await gql(M_PUB, { id: gid, pubs: PUBLICATIONS.map(p => ({ publicationId: p })) });
+  const rp = await gql(M_PUB, { id: gid, pubs: PUBLICATIONS.filter(_pid => _pid !== 29646651457 || !_isShowroomGuard("Tres Tintas")).map(p => ({ publicationId: p })) });
   (rp.publishablePublish?.userErrors || []).forEach(e => errs.push('pub:' + e.message));
   // TK-10303 go-live gate (TK-10162 fleet backfill): never flip a product ACTIVE without a
   // real manufacturer_sku metafield — the no-mfr go-live breach class (PJ 09-02, 893 SKUs).

← cf114d5 auto-data-snapshot: 2026-09-09T11:42:56 (1 data files) — dat  ·  back to Designerwallcoverings  ·  chore: v0.1.11 (session close — PJ re-channel guard) 578d108 →