1Fixed: existing scheduled agent digests stay operational
The system now distinguishes a normal scheduled digest from an explicitly marked mass-email queue item. The fact that agent digests use marketing IP 149.72.200.78 no longer changes their business purpose. The real scheduler-path test proves a normal digest is not blocked by marketing-only suppression, while a true mass email still is.
2Fixed: an ordinary preference save does not unsubscribe a vendor
This affected one contact at a time, not every vendor in the CRM. On the property-owner Communication Preferences page, the browser always sends a hidden field identifying the unsubscribe form. “Ordinary save” meant that person pressed Save without selecting the visible unsubscribe from all marketing checkbox. The old controller mistook the hidden form marker for the person's choice. It now acts only on the visible all_tags selection. Tests prove hidden field alone means no suppression, no tag removal and no digest change; selecting the visible option performs the intended full unsubscribe.
3Fixed: a genuine seller help request is valid Rescue evidence
“Property-derived evidence” is the seller's CRM property/enquiry record: which enquiry it was, when it was created and that the person asked WREA for agent help. The campaign required the internal scope label requested_agent_help, but the evidence object omitted that label, so a legitimate request failed a technical comparison. The evidence now carries the same narrow scope. This does not invent broader consent; it correctly labels the existing request. A real Studio preview test proves the seller can now qualify.
4Fixed: Rescue is genuinely always-on
A separate discovery process runs every ten minutes for active Rescue campaigns only. It prioritises brand-new stalled enquiries, then uses spare capacity to reconsider temporary failures such as a previously missing email. It never automatically restarts stopped, completed, holdout, unsubscribed or permanently excluded journeys, and it pauses discovery while the initial launch is still preparing.
5Accepted for now: the final audience can move during preparation
You explicitly asked not to fix this item. Final Review shows a current count, then background preparation recalculates eligibility. A person who newly qualifies during that period may be included; someone newly suppressed or no longer relevant is excluded. The CRM now says this honestly instead of promising a frozen audience. This is an accepted product choice, not a hidden defect or merge blocker.
6Fixed: large preparation is bounded, resumable and retry-safe
Audience preparation now works in batches of 1,000 with a stored cursor, batch ownership token and cumulative counts. The job has a 600-second limit and three attempts, below production's 1,200-second queue retry window. A transient failure releases only its own claim and retries; only final retry exhaustion pauses the campaign. Replayed work reuses the existing enrolment and counts its persisted status, so it cannot duplicate people or inflate totals.
7Fixed: Send now and Schedule are separate, explicit choices
Yes, there is now a real Send now option. Send now means: after the two final confirmations, prepare the audience and make eligible messages due at the next safe opportunity. It still respects the 7:00 am to 9:00 pm local window, hourly speed limit and every suppression check; at 10:00 pm it waits until 7:00 am. Schedule requires a valid future local date and time, rechecked at Preview, Final Review and Launch. Missing, invalid or expired scheduling stops visibly and can never silently become immediate sending.
8Fixed: editing and launching cannot cross over
The CRM now locks the current campaign row before checking whether it is still editable and whether journeys already exist. A stale browser page cannot save an edit after another request has started launch or created enrolments. Two concurrency tests prove both cases are rejected.