[object Object]

← back to Dw Activation Calendar

never-activate: exclude Jeffrey Stevens (DWJS) + Phillip Jeffries from activation — no old patterns re-surfaced; drift-guard asserts the exclusion stays (Steve 'no old dwjs, phillip jeffries')

54e4ec131d657f80f9d74a0a45527b6af22f1c74 · 2026-08-11 14:02:27 -0700 · steve@designerwallcoverings.com

Files touched

Diff

commit 54e4ec131d657f80f9d74a0a45527b6af22f1c74
Author: steve@designerwallcoverings.com <steve@designerwallcoverings.com>
Date:   Tue Aug 11 14:02:27 2026 -0700

    never-activate: exclude Jeffrey Stevens (DWJS) + Phillip Jeffries from activation — no old patterns re-surfaced; drift-guard asserts the exclusion stays (Steve 'no old dwjs, phillip jeffries')
---
 lib/rotation-order.js          |  7 ++++++-
 scripts/check-reintro-guard.sh | 12 ++++++++++--
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/lib/rotation-order.js b/lib/rotation-order.js
index 3446c58..322c506 100644
--- a/lib/rotation-order.js
+++ b/lib/rotation-order.js
@@ -52,7 +52,12 @@ const NOISE_REGEX =
 //   Fromental, Zuber, De Gournay — bespoke made-to-order, quote-only, settlement-heavy
 //   Astek    — internal line-viewer only, not on the DW Shopify store
 // (Schumacher is already excluded below as internal-only.)
-const NEVER_ACTIVATE_VENDORS = "gracie|fromental|zuber|de gournay|astek";
+// Added 2026-08-11 (Steve "no old dwjs, phillip jeffries", TK-10474) — DIFFERENT rationale:
+// these two are NOT bespoke; they already have full live catalogs (Jeffrey Stevens ~2.5k ACTIVE,
+// Phillip Jeffries ~2.5k ACTIVE). Their remaining DRAFTs are OLD leftovers, so exclude both from
+// auto-activation so no old pattern is re-surfaced as new. NB: DWJS- = Jeffrey Stevens (NOT York,
+// NOT Phillip Jeffries); Phillip Jeffries = DWJP-/DWPJ-. Matched by vendor NAME, not SKU prefix.
+const NEVER_ACTIVATE_VENDORS = "gracie|fromental|zuber|de gournay|astek|jeffrey stevens|phillip jeffries";
 
 // SAMPLE-SKU filter (2026-08-10, TK-10446). ~90% of the DRAFT pool are memo/sample
 // SKUs (…-Sample, …-S). Activating one publishes a standalone $4.25 memo listing
diff --git a/scripts/check-reintro-guard.sh b/scripts/check-reintro-guard.sh
index 060f1c2..ccf2495 100755
--- a/scripts/check-reintro-guard.sh
+++ b/scripts/check-reintro-guard.sh
@@ -36,8 +36,16 @@ else
   say "❌ activate-gated.js: re-introduction guard MISSING — the daily promoter could re-activate a retired pattern"; fail=1
 fi
 
+# (c) NEVER-ACTIVATE vendors must stay excluded (Steve "no old dwjs, phillip jeffries", 2026-08-11)
+for v in "jeffrey stevens" "phillip jeffries"; do
+  if grep -qi "$v" "$CAL"; then say "✅ rotation-order.js: never-activate vendor kept excluded — $v"
+  else say "❌ rotation-order.js: NEVER_ACTIVATE_VENDORS lost '$v' — old $v patterns could re-surface"; fail=1; fi
+done
+if grep -qiE "phillip jeffries|jeffrey stevens" "$GATED"; then say "✅ activate-gated.js: never-activate vendors kept excluded (dwjs/PJ)"
+else say "❌ activate-gated.js: NEVER_ACTIVATE lost the dwjs/phillip-jeffries exclusion"; fail=1; fi
+
 if [ "$fail" -ne 0 ]; then
-  say ""; say "🚨 RE-INTRO GUARD DRIFT DETECTED — do not run activation until fixed. (Steve rule: no reintroducing old patterns as new.)"
+  say ""; say "🚨 RE-INTRO GUARD DRIFT DETECTED — do not run activation until fixed. (Steve rule: no reintroducing old patterns as new; no old dwjs/phillip jeffries.)"
   exit 1
 fi
-say ""; say "✅ All daily-activation paths carry the re-introduction guard, and copies are in sync."
+say ""; say "✅ All daily-activation paths carry the re-introduction guard, copies are in sync, and dwjs/phillip-jeffries stay excluded."

← ecdc228 schedule regen: pre-flight re-intro guard check — abort rege  ·  back to Dw Activation Calendar  ·  chore: fail-closed regen gate + tighten drift-guard greps to 0d5b9ff →