← 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
M scripts/artmura-onboard/go-live-artmura.jsM scripts/fallingstar-onboard/go-live-fallingstar.jsM scripts/knoll-onboard/go-live.mjsM scripts/maharam-onboard/go-live.mjsM scripts/muralsource-onboard/go-live.mjsM scripts/osborne-onboard/go-live.mjsM scripts/sanderson-onboard/go-live.mjsM scripts/stout-onboard/go-live.mjsM scripts/stroheim-onboard/go-live.mjsM scripts/tres-tintas-onboard/go-live-tres-tintas.js
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 →