Skip to content

fix(campaigns): isolate platform recipient resolution - #4668

Merged
hellofrequencylab merged 4 commits into
mainfrom
codex/beta-root-audience-20261104
Nov 4, 2026
Merged

hellofrequencylab merged 4 commits into
mainfrom
codex/beta-root-audience-20261104

Conversation

@hellofrequencylab

Copy link
Copy Markdown
Owner

Platform audience resolution could include another Space’s private contacts when the same person had a profile. An unknown built-in audience key also fell through to the member audience. This change constrains every platform contact read to Frequency root or legacy-null contacts and makes unknown built-ins resolve to nobody. Missing-root lookup stays restricted to legacy-null contacts.

This is the audience-isolation phase of SEC-CAMPAIGN-AUDIENCE. The row stays OPEN: separating message purpose from recipient selectors and final production acceptance remain outstanding. The send category, consent/suppression behavior, per-Space campaign implementation, pricing offers and message content are unchanged. No sends, schedules, contact exports, role/provider changes or SQL were performed.

The existing canonical row was explicitly transferred out of #4666 (remote head 97b3224b, six files) to this feature; it is not duplicated. Its exact transferred JSON remains open. Daniel specifically approved the existing three-file audience test review. The four-file source/test patch remains byte-identical to the reviewed candidate SHA256 d87167ccc5b292661cdae4e0431d8caeb5278eafe0d0dca38e966bc4a9d42851; no additional protected tests, probes, pins, thresholds or baselines change.

Validation:

  • Normally merged current main e1e2398de1506ae8eaed200e5713f48f99494fc3. Five-file PR diff, no source/test or ledger-ID overlap with the other seven current open PRs.
  • Final integrated 49 tests pass across seven focused audience, consent and lifecycle suites; changed source/test lint passes.
  • Admin-client, authz, canon, CRM parity, static backlog (2 search-kind probes; command probes skipped), one-list and diff checks pass.
  • Strict scoped type check of the unchanged four source/test roots and real dependencies passed across 1,019 files in 10.66s before the unrelated main integration. This is not a final-head full-tree CI claim. Two temporary ambient-harness mistakes were disclosed and corrected without changing repository source, tests or configuration.
  • Synthetic checks cover 16 selector cases with root present/missing (32 total), reproduce both defects on pristine main, and preserve consent categories. Five actual installed Supabase/PostgREST SDK fixtures verify tenant/source query groups are both serialized, missing-root scope stays null-only, and an unknown audience makes no request. Fetch was mocked; no real contacts were read.

Exact-head CI, a real READY preview and safe production acceptance remain required. The root driver owns serialized merging and deployment verification; auto-merge must remain off.

Current head: a802a873239d87a4fc43fac60db0aa71ee7b8b58. Coordination: #4306 (comment).

@vercel

vercel Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
frequency-web Ready Ready Preview Nov 4, 2026 8:02pm UTC

Request Review

@hellofrequencylab
hellofrequencylab merged commit 16a666b into main Nov 4, 2026
17 checks passed

This branch was successfully deployed

1 active deployment
Preview — 0d57835e Deployed Nov 4, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants