[object Object]

← back to Designer Wallcoverings

cadence: onboard Maharam as quote-only wallcovering vendor (own MAHARAM_DRIP gate)

5d76defbaf65367bbd632b4b218af2d9e24ed98d · 2026-07-22 08:12:04 -0700 · Steve

- vendors.js: add 'Maharam' sampleOnly entry (mahDrip:true, own default-OFF drip)
- cadence-import.js: scope hardcoded 'Quadrille House' tag to the QH staging table
  only (also fixes latent Pierre Frey mistag); add MAH_DRIP gate mirroring PJ_DRIP
- 1,429 activation-ready wallcoverings import-eligible; 164 fabric + 8 no-desc held
  via dedup_skip (roll-on-fabric rule). Dry-run verified; inert for the shared drip.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 5d76defbaf65367bbd632b4b218af2d9e24ed98d
Author: Steve <steve@designerwallcoverings.com>
Date:   Wed Jul 22 08:12:04 2026 -0700

    cadence: onboard Maharam as quote-only wallcovering vendor (own MAHARAM_DRIP gate)
    
    - vendors.js: add 'Maharam' sampleOnly entry (mahDrip:true, own default-OFF drip)
    - cadence-import.js: scope hardcoded 'Quadrille House' tag to the QH staging table
      only (also fixes latent Pierre Frey mistag); add MAH_DRIP gate mirroring PJ_DRIP
    - 1,429 activation-ready wallcoverings import-eligible; 164 fabric + 8 no-desc held
      via dedup_skip (roll-on-fabric rule). Dry-run verified; inert for the shared drip.
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 shopify/scripts/cadence/cadence-import.js |  9 ++++++---
 shopify/scripts/cadence/vendors.js        | 10 ++++++++++
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/shopify/scripts/cadence/cadence-import.js b/shopify/scripts/cadence/cadence-import.js
index 539c1a3c..4199afe2 100644
--- a/shopify/scripts/cadence/cadence-import.js
+++ b/shopify/scripts/cadence/cadence-import.js
@@ -57,6 +57,9 @@ const SAMPLEONLY_DRIP = flag('--sampleonly') || process.env.QUADRILLE_SAMPLEONLY
 // is INERT: the scheduled hourly runner won't create any PJ product until PJ_DRAFT_DRIP=1 (or
 // --pj-drip) is set. A manual --only "Phillip Jeffries" run also whitelists it for the dry-run/test.
 const PJ_DRIP = flag('--pj-drip') || process.env.PJ_DRAFT_DRIP === '1';
+// Maharam quote-only LAUNCH drip — OWN scoped gate (mirrors PJ_DRIP), default OFF so adding the
+// Maharam vendors.js entry is INERT until MAHARAM_DRIP=1 (or --maharam). Steve 2026-07-22.
+const MAH_DRIP = flag('--maharam') || process.env.MAHARAM_DRIP === '1';
 // DWBR house-line remap (Steve 2-brand rule, 2026-06-25). OFF by default — when OFF, vendors that
 // declare a houseLineCol (today only 'Brewster & York') keep emitting the map key as the product
 // vendor/Brand and are HELD by bannedBrandReason() (nothing publishes), so committing the remap
@@ -329,8 +332,8 @@ function gate() {
       // whitelists it for the manual few-SKU test. Otherwise report gated so the scheduled
       // rotation never picks it up.
       const explicitlyTargeted = ONLY && ONLY.toLowerCase() === vendor.toLowerCase();
-      const dripOn = cfg.pjDrip ? PJ_DRIP : SAMPLEONLY_DRIP;     // PJ-scoped vs Quadrille-scoped enable
-      const dripEnv = cfg.pjDrip ? 'PJ_DRAFT_DRIP=1' : 'QUADRILLE_SAMPLEONLY_DRIP=1';
+      const dripOn = cfg.pjDrip ? PJ_DRIP : cfg.mahDrip ? MAH_DRIP : SAMPLEONLY_DRIP;   // PJ- / Maharam- / Quadrille-scoped enable
+      const dripEnv = cfg.pjDrip ? 'PJ_DRAFT_DRIP=1' : cfg.mahDrip ? 'MAHARAM_DRIP=1' : 'QUADRILLE_SAMPLEONLY_DRIP=1';
       if (!dripOn && !explicitlyTargeted) {
         rows.push({ vendor, cfg, ready: false, why: `sampleonly-drip-gated (set ${dripEnv} to enable)`, netnew: 0 });
         continue;
@@ -541,7 +544,7 @@ function buildSampleOnlyInput(vendor, cfg, row, activate) {
   // positives on the sample-only image set and tags a spurious Needs-Image. We keep every OTHER
   // gate flag (Needs-Specs / Needs-Description / Needs-Width) — only the false Needs-Image is dropped.
   const gateTags = gate.tags.filter(t => String(t).toLowerCase() !== 'needs-image');
-  const tagSet = [vendor, effType, 'Sample Only', 'display_variant', 'Quadrille House',
+  const tagSet = [vendor, effType, 'Sample Only', 'display_variant', ...(_isQH ? ['Quadrille House'] : []),
     ...(row.collection?[`Collection: ${row.collection}`]:[]), ...(color?[color]:[]), ...gateTags];
 
   const input = {
diff --git a/shopify/scripts/cadence/vendors.js b/shopify/scripts/cadence/vendors.js
index 2574c70b..556c72f6 100644
--- a/shopify/scripts/cadence/vendors.js
+++ b/shopify/scripts/cadence/vendors.js
@@ -201,4 +201,14 @@ module.exports = {
   // by activate-gated.js (which reads the same vendors.js) to recognize + promote the drafts.
   'Pierre Frey': { table: 'pierre_frey_catalog', sampleOnly: true, soldBy: 'Sample', productType: 'Wallcovering',
                    note: 'Quote-only samples LAUNCH (Steve 2026-07-07). No cost (pierrefrey.com shows no price) → activates quote-only: $4.25 Sample + NULL price + quotes tag. Drip-activated via com.steve.dw-pierre-frey-activate; held from the sampleonly IMPORT drip (already imported as DRAFT).' },
+  // ── Maharam — quote-only wallcovering LAUNCH via own scoped drip (Steve "push all on the std daily cadence" 2026-07-22) ──
+  // Onboarded into maharam_catalog (1,601 rows). AUTHORITATIVE type = Maharam's own "Application" spec field
+  // (scraped free/local): Application "Walls"/"Upholstered Walls" → Wallcovering (1,437); "Seating" → Fabric (164 Gemma).
+  // Only the 1,429 activation-ready wallcoverings are import-eligible — the 164 fabric + 8 no-desc rows carry
+  // dedup_skip=true (roll-on-fabric rule: fabrics stay OUT of the wallcoverings collection, separate onboarding later).
+  // Quote-only: no public price → $4.25 Sample + NULL price (like Pierre Frey). cfg.mahDrip gives it its OWN default-OFF
+  // gate (MAHARAM_DRIP=1 / --maharam), so this entry is INERT for the shared hourly runner until Steve enables the
+  // dedicated com.steve.dw-maharam-activate drip. Collection maharam-wallcoverings (299575476275) is smart-by-vendor=Maharam.
+  'Maharam': { table: 'maharam_catalog', sampleOnly: true, mahDrip: true, soldBy: 'Sample', productType: 'Wallcovering',
+               note: 'Quote-only wallcovering LAUNCH (Steve 2026-07-22). Own scoped drip (mahDrip/MAHARAM_DRIP) — held from the shared sampleonly drip. Fabrics held via dedup_skip. Activates quote-only: $4.25 Sample + NULL price.' },
 };

← 35503bb0 Anthology Phase-2 scrapers: SDG Trade Hub feed-first pull →  ·  back to Designer Wallcoverings  ·  auto-save: 2026-07-22T08:12:31 (2 files) — shopify/scripts/c 7d362d07 →