← back to Designer Wallcoverings
Kravet roll-add: scope guard (refuse un-scoped --commit; require --only or --all) + exclude hard-archived Nicolette Mayer. Cody FIX-FIRST — has_sample_variant gate broadened the universe to ~5.7k, needed blast-radius discipline.
41b5c6099e134ad58c8d7af1ee3a2ade5fb906ef · 2026-08-18 15:58:50 -0700 · Steve
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
M shopify/scripts/cadence/add-kravet-roll-variants.js
Diff
commit 41b5c6099e134ad58c8d7af1ee3a2ade5fb906ef
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Aug 18 15:58:50 2026 -0700
Kravet roll-add: scope guard (refuse un-scoped --commit; require --only or --all) + exclude hard-archived Nicolette Mayer. Cody FIX-FIRST — has_sample_variant gate broadened the universe to ~5.7k, needed blast-radius discipline.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
shopify/scripts/cadence/add-kravet-roll-variants.js | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/shopify/scripts/cadence/add-kravet-roll-variants.js b/shopify/scripts/cadence/add-kravet-roll-variants.js
index b51452cb..da0135c5 100644
--- a/shopify/scripts/cadence/add-kravet-roll-variants.js
+++ b/shopify/scripts/cadence/add-kravet-roll-variants.js
@@ -39,6 +39,7 @@ const flag = n => args.includes(n);
const val = (n, d) => { const i = args.indexOf(n); return i >= 0 ? args[i + 1] : d; };
const COMMIT = flag('--commit');
const ONLY = val('--only', null);
+const ALL = flag('--all'); // explicit opt-in for an un-scoped commit run (see scope guard below)
const LIMIT = parseInt(val('--limit', '25'), 10);
const SANE_MIN = 5, SANE_MAX = 50000, SAMPLE = 4.25;
const KILL = path.join(os.homedir(), '.dw-fixer-stop');
@@ -108,7 +109,10 @@ function candidates() {
LEFT JOIN kravet_catalog kc ON upper(trim(kc.mfr_sku))=upper(trim(COALESCE(NULLIF(trim(s.metafields->'global'->'Item'->>'value'),''), s.mfr_sku)))
LEFT JOIN kravet_master_price km ON upper(trim(km.mfr_sku))=upper(trim(COALESCE(NULLIF(trim(s.metafields->'global'->'Item'->>'value'),''), s.mfr_sku)))
LEFT JOIN kravet_authoritative_pricing ap ON upper(trim(ap.mfr_sku))=upper(trim(COALESCE(NULLIF(trim(s.metafields->'global'->'Item'->>'value'),''), s.mfr_sku)))
- WHERE s.vendor ~* 'kravet|lee ?jofa|groundworks|brunschwig|baker|mulberry|threads|clarke|cole|gp ?& ?j|colefax|nicolette'
+ -- Nicolette Mayer removed 2026-08-18: it is a Kravet-family brand but HARD-ARCHIVED
+ -- (memory nicolette-mayer-hidden-on-shopify) — must never be reactivated / get a roll.
+ WHERE s.vendor ~* 'kravet|lee ?jofa|groundworks|brunschwig|baker|mulberry|threads|clarke|cole|gp ?& ?j|colefax'
+ AND s.vendor !~* 'nicolette'
AND s.product_type ~* 'wallcover'
AND s.mfr_sku IS NOT NULL AND s.mfr_sku <> ''
-- (2026-08-18) gate on the has_sample_variant flag, not the deduped mirror row's
@@ -136,6 +140,15 @@ function rollLabel(tags) {
(async () => {
if (COMMIT && fs.existsSync(KILL)) { console.log(`KILL SWITCH present (${KILL}) — aborting.`); return; }
+ // SCOPE GUARD (2026-08-18, Cody FIX-FIRST): the has_sample_variant gate matches ~5.7k
+ // Kravet-family products, so an un-scoped --commit could mutate arbitrary/never-activate
+ // products. Require an explicit target: --only <id> (safe, per-product) or --all (opt-in).
+ if (COMMIT && !ONLY && !ALL) {
+ console.log('REFUSING un-scoped --commit. Pass --only <shopify_id> to target one product,\n' +
+ 'or --all to explicitly run the whole ~5.7k candidate universe (bounded by --limit). This\n' +
+ 'guard prevents accidentally adding roll variants to arbitrary Kravet products.');
+ return;
+ }
ensureAudit();
const cands = candidates();
console.log(`MAP-priceable sample-only candidates (from mirror): ${cands.length}`);
← d2220252 Kravet roll-add: gate candidates on has_sample_variant (not
·
back to Designer Wallcoverings
·
Kravet 3b-PRE roll-price fix: set 117 archived roll variants e1e1481b →