From 95698852ce0ffa54695a44f098de178eb29353bb Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 6 Jun 2026 04:02:00 -0500 Subject: [PATCH] healthcare warmup: gate Google/Workspace domains out of week 1 (they hard-reject cold IPs 550-5.7.1); send 501 non-Google practice domains first, defer 222 Google to week 2-3; cron uses hc_warmup_nongoogle.csv --- infra/cron/pw-hc-campaign | 2 +- scripts/build_healthcare_campaigns_cron.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/infra/cron/pw-hc-campaign b/infra/cron/pw-hc-campaign index 4d7dcf9..ffe2e37 100644 --- a/infra/cron/pw-hc-campaign +++ b/infra/cron/pw-hc-campaign @@ -2,4 +2,4 @@ # keep the Medicare-revalidation campaign running. Mon-Fri only, 7 AM Central # (host TZ = America/Chicago). Delivery is throttled by pw-hc-rampcap's # sliding-window cap, sent ONLY via the hc HOT stream (.107-.109). -0 7 * * 1-5 deploy cd /opt/performancewest && python3 scripts/build_healthcare_campaigns_cron.py --start-campaign >> /var/log/pw-hc-campaign.log 2>&1 +0 7 * * 1-5 deploy cd /opt/performancewest && HC_VERIFIED_CSV=/opt/performancewest/data/hc_warmup_nongoogle.csv python3 scripts/build_healthcare_campaigns_cron.py --start-campaign >> /var/log/pw-hc-campaign.log 2>&1 diff --git a/scripts/build_healthcare_campaigns_cron.py b/scripts/build_healthcare_campaigns_cron.py index e7e19ac..c078fa6 100644 --- a/scripts/build_healthcare_campaigns_cron.py +++ b/scripts/build_healthcare_campaigns_cron.py @@ -9,6 +9,12 @@ Runs daily (Mon-Fri, 7 AM Central via cron). Each run: 3. Listmonk-hc's sliding-window rate cap (driven by pw-hc-rampcap) does the actual per-hour throttling, so this builder just feeds the queue. +WARMUP COHORT: point HC_VERIFIED_CSV at hc_warmup_nongoogle.csv for weeks 1-2. +Google/Workspace-hosted practice domains (~31%) reject hard from cold IPs +(550-5.7.1 "unsolicited"), which damages warmup reputation. Send the 501 +non-Google practice domains first; switch to hc_warmup_google.csv (222) once the +IPs are warm (week 2-3). + The daily slice size follows the hc warmup ramp so we never queue more than the IPs can safely send while warming. Sends ONLY happen via the hc HOT stream (listmonk-hc -> host :2526/2527/2528 -> .107/.108/.109), never the trucking pool.