You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Master drift since October: where Audience fits on today's master #640
What did PostHog/posthog master gain since the old Audience drafts (early October 2026) that the rebuild must fit, and did any part of the Audience MVP already land in another form?
Answer, as facts with file paths and commit or PR links:
Placement. Where an Audience area belongs today: the Messaging nav, the Transactional and EmailDomain scenes, products/workflows/frontend/messagingTabs.tsx, products/workflows/manifest.tsx, the sidebar, and the Opt-outs and Suppression list tabs that Audience redirects from.
UI kit. Whether master's messaging and workflows frontends now build new UI in Quill or LemonUI, and what that means for the map's "LemonUI only" constraint.
Overlap. Per old draft (see the map's Prior attempt line): whether its feature or a variant already exists on master (a facet search bar, a suppressions HogQL table, a recipient listing or lookup API, recipient detail, topics, engagement tiles, setup), and what of it is still needed.
Conflicts. Per old draft: which of its files moved, were renamed, or changed shape on master (generated products.json / products.tsx / productScenes.tsx, frontend/src/lib/constants.tsx, messaging routes.py, the generated messaging API, WorkflowsScene.tsx, BroadcastsScene.tsx), and what a port must adapt to.
Backend seams. Changes since October to the HogQL persons table, system.message_recipient_preferences, MessageSuppression and products/messaging/backend/facade/, and any new repo ratchet the old code would fail (semgrep, tach, product lint, repo invariants).
Dependencies. The state of PostHog/posthog-js#5173 (posthog.messaging.setPreferences) and whether the workflows-audience flag exists.
Read-only. A recommendation per item is welcome; the decisions belong to the rebuild-plan ticket.
Research complete against fetched master fa6c2b3facf.
Research folder contains the findings, immutable source links, and overlap/porting matrix for all ten old drafts. Saved in signed commit e8701fe, with an identical copy at the map's shared notes/master-drift.md.
Placement: workflows still owns these scenes. Master now groups setup under one Messaging tab and adds Transactional and EmailDomain scenes. Old Opt-outs and Suppression URLs remain, including new Transactional variants. The manifest and messagingTabs.tsx are the integration points. Recommendation: reconcile the map's name with the new glossary, which reserves Audience for broadcast targeting and calls the consent area Recipients.
UI kit:current frontend rules still require LemonUI outside the today-rail-nav redesign. Quill header branches do not change that rule. Recommendation: retain LemonUI for the existing UI path.
Overlap: no unified recipients list/lookup/detail, suppressions HogQL table, FacetSearchBar, project-wide engagement dashboard, or preference-sync setup landed. Adjacent capabilities did: shared FacetRail, person email history, topic CRUD/MCP, workflow metrics, transactional log, and an atomic preference-write route. Recommendation: reuse those seams while preserving the missing recipient behavior. The report distinguishes each old draft from its nearest existing variant.
Conflicts: the per-draft matrix covers every old feature and changed integration file. Messaging backend/api/ became backend/presentation/views/, tests moved, facades now own the boundary, generated APIs expanded, and Workflows/Broadcasts routing changed. Recommendation: regenerate product registrations and API clients from current manifests/serializers, preserve Transactional/EmailDomain routes, and replace removed message-assets imports through the allowed facade.
Backend seams: persons join optimizations do not prove the old grouped recipient query bounded. Preferences retain exact identifiers. Suppressions gained hard_bounced_at; transactional sends may pass manual, complaint and soft-bounce suppression. See the model and send check. Product isolation, changed-file Semgrep scans, shared pagination, frontend layers and repo invariants constrain the port. Recommendation: retain both mandated query fixes and update suppression copy/contract.
Dependencies: SDK #5173 is closed unmerged. Its open successor #5511 proposes posthog.emails.setPreferences({ to, allMarketing, topics }) with a project secret key and { data, error }. Its server route landed in #127204, but the SDK method is absent from current main. The flag constant is absent from master; the read-only control-plane lookup is documented privately. Recommendation: re-plan the setup dependency and explicit flag provisioning before implementation.
Research calls:
✅ Pinned source: use fetched master and separately pinned SDK main so later drift cannot change the meaning of the findings.
✅ Overlap criterion: require equivalent recipient behavior rather than a similarly named audience or person-history feature.
✅ Decision boundary: leave naming, slicing, SDK choice and rollout changes to the rebuild-plan ticket; this report makes recommendations only.
✅ Read-only scope: no application code, builds, tests, PRs, flag changes, or other ticket mutations.
❌ Using the old SDK draft as a shipped dependency: it is closed unmerged, current main lacks its messaging module, and the open replacement has a different contract. The old setup snippet cannot be carried forward as working setup.
Validation: source paths checked, private commit signature verified, published report verified, shared-notes copy matched. Runtime behavior and query performance were not tested under this read-only brief.
Activity
Silthus commentedon Nov 5, 2026
Runtime: T3 Code
Task: node:delegated-task:command%3Amcp%3A6133b270-470c-45e4-a120-7eed6d297659%3Adelegate-task%3A8a37155c-3a7b-4fbc-b8bc-cc3886911b5d
Child thread: thread:delegated-task:command%3Amcp%3A6133b270-470c-45e4-a120-7eed6d297659%3Adelegate-task%3A8a37155c-3a7b-4fbc-b8bc-cc3886911b5d
Cast: Codex GPT-6.1 Sol, reasoning effort high (deep research). Cap: 90 minutes. Prompt rendered from
lane-research-child.md.Silthus commentedon Nov 5, 2026
Note
🤖 GPT-6.1 Sol responding on behalf of Michael
Research complete against fetched master fa6c2b3facf.
Research folder contains the findings, immutable source links, and overlap/porting matrix for all ten old drafts. Saved in signed commit e8701fe, with an identical copy at the map's shared
notes/master-drift.md.today-rail-navredesign. Quill header branches do not change that rule. Recommendation: retain LemonUI for the existing UI path.backend/api/becamebackend/presentation/views/, tests moved, facades now own the boundary, generated APIs expanded, and Workflows/Broadcasts routing changed. Recommendation: regenerate product registrations and API clients from current manifests/serializers, preserve Transactional/EmailDomain routes, and replace removed message-assets imports through the allowed facade.hard_bounced_at; transactional sends may pass manual, complaint and soft-bounce suppression. See the model and send check. Product isolation, changed-file Semgrep scans, shared pagination, frontend layers and repo invariants constrain the port. Recommendation: retain both mandated query fixes and update suppression copy/contract.posthog.emails.setPreferences({ to, allMarketing, topics })with a project secret key and{ data, error }. Its server route landed in #127204, but the SDK method is absent from current main. The flag constant is absent from master; the read-only control-plane lookup is documented privately. Recommendation: re-plan the setup dependency and explicit flag provisioning before implementation.Research calls:
Validation: source paths checked, private commit signature verified, published report verified, shared-notes copy matched. Runtime behavior and query performance were not tested under this read-only brief.