[object Object]

← back to Dw Rotation Activator

TK-11186 Step D prep: rotation-activator skips showroom vendors (no activate/New Arrival tag/browse publish)

37bb28a94f2acdb258c5dd4dbb15aed2be83890e · 2026-09-03 12:07:07 -0700 · steve

Files touched

Diff

commit 37bb28a94f2acdb258c5dd4dbb15aed2be83890e
Author: steve <steve@designerwallcoverings.com>
Date:   Thu Sep 3 12:07:07 2026 -0700

    TK-11186 Step D prep: rotation-activator skips showroom vendors (no activate/New Arrival tag/browse publish)
---
 rotate-activate.js | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/rotate-activate.js b/rotate-activate.js
index e9102af..c19eea9 100644
--- a/rotate-activate.js
+++ b/rotate-activate.js
@@ -46,6 +46,11 @@ const { SettlementGate } = require('./lib/settlement-gate.js');
 const { fiveFieldExtra } = require('./lib/five-field-extra.js');
 const { mfrGate } = require('./lib/mfr-gate.js');
 const { reusedMfrSet, stagingColorFor } = require('./lib/mfr-gate-resolve.js');
+// Canonical showroom-vendor primitive (list + logic live in fix-live-board/config). Showroom-only
+// vendors are addressable-not-discoverable: never rotate them into the New Arrivals discoverability
+// flow (activate + 'New Arrival' tag + browse-channel publish). Never hardcode a vendor — edit
+// showroom-vendors.json. TK-11186.
+const { isShowroomVendor } = require(path.join(process.env.HOME, 'Projects/fix-live-board/config/showroom-vendor.cjs'));
 const { validateBeforeActivate, toImageList } =
   require(path.join(os.homedir(), 'Projects/Designer-Wallcoverings/shopify/scripts/lib/validate-before-activate.js'));
 
@@ -308,6 +313,15 @@ function leakGuard(title, vendor) {
       if (n.status === 'ACTIVE') { alreadyActive++; continue; }
       if (n.status !== 'DRAFT') { continue; }   // ARCHIVED → leave (never un-archive)
 
+      // Showroom-only vendors stay out of the discoverable rotation entirely: this activator's
+      // job is activate + 'New Arrival' tag + browse-channel publish, all discoverability actions
+      // a showroom line must never receive. Leave the product DRAFT for its own showroom flow. TK-11186.
+      if (isShowroomVendor(q && q.vendor)) {
+        skipped++;
+        fs.appendFileSync(AUDIT, JSON.stringify({ ts: new Date().toISOString(), shopify_id: n.id, vendor: q && q.vendor, dw_sku: q && q.dw_sku, action: 'skip-showroom-vendor' }) + '\n');
+        continue;
+      }
+
       const gate = gateFromLive(n, q && q.dw_sku, q && q.vendor);
       const extra = fiveFieldExtra(n);
       const leak = leakGuard(n.title, q && q.vendor);

← 99013ea feat(golive-gate): mfr_sku provenance gate blocks blank/fabr  ·  back to Dw Rotation Activator  ·  Restore draft readiness checks and verify live activation ca c88ff69 →