Repository navigation
Conversation
Add POST /api/projects/:id/integrations/email_sandbox_sender/. Behind the workflows-sandbox-sender flag, it creates one PostHog-managed email integration per project, refreshes its display name from the organization name, and reports the first provisioning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🤖 CI report
|
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.03 MiB · 25 files | no change | █████████░ 90.1% of 1.14 MiB |
logged-out boot: index + App + bootApp (preloaded by every page, including /login)src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts |
3.01 MiB · 625 files | no change | ██████████ 99.2% of 3.03 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
3.83 MiB · 1,228 files | no change | ██████████ 95.6% of 4.01 MiB |
dashboard scenesrc/scenes/dashboard/Dashboard.tsx |
7.61 MiB · 2,941 files | no change | ████████░░ 77.4% of 9.84 MiB |
today home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx |
4.70 MiB · 1,760 files | no change | ██████████ 95.4% of 4.93 MiB |
AI-first home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx |
6.00 MiB · 2,266 files | no change | ██████████ 95.7% of 6.27 MiB |
events scenesrc/scenes/activity/explore/EventsScene.tsx |
6.69 MiB · 2,519 files | no change | ███████░░░ 71.1% of 9.41 MiB |
web analytics scenesrc/scenes/web-analytics/WebAnalyticsScene.tsx |
7.71 MiB · 2,884 files | no change | ███████░░░ 73.5% of 10.49 MiB |
replay detail scenesrc/scenes/session-recordings/detail/SessionRecordingDetail.tsx |
6.91 MiB · 2,606 files | no change | █████████░ 85.0% of 8.13 MiB |
🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 products/product_analytics/frontend/insights/activityDescriptions stays out of src/index.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/svg/ stays out of src/index.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/components/ stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/layout/navigation-3000/navigationLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/scenes/dashboard/dashboardLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/lemon-ui/LemonMarkdown/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/RichContentEditor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/CodeSnippet/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/taxonomy/core-filter-definitions-by-group.json stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/zod/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/logic/billing/billingLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/ProductEmptyState/productSetupPreloadLogic.ts stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/kea-test-utils/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/product_analytics/frontend/insights/activityDescriptions stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/dashboards/frontend/widgets/previews/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/panel-layout/ProjectTree/menus/SessionReplayMenuItems.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/taxonomy/core-filter-definitions-by-group.json stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/navigation/projectNoticeLogic.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/navigation/ImpersonationNotice/ImpersonationNotice.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/cohorts/cohortSavedToast.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/wizard/frontend/runs/WizardRunDetailsDrawer.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayShell.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayContextPanelFloating.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodaySidePanel.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/TodayTopBar.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/layout/today/todayRailItems.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/subscriptions/frontend/components/Subscriptions/exportNudge/exportNudgeLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/billing/paymentEntryLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/conversations/frontend/components/SidePanel/sidepanelTicketsLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/zod/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/authentication/auth/loginLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/authentication/shared/passkeyLogic.ts stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/cohorts/CohortFilters/constants.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 products/persons/frontend/logics/personsLogic.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/surveys/constants.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/re2js/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/react-markdown/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/Command/Command.tsx stays out of src/scenes/AuthenticatedShell.tsx
🟢 packages/quill/packages/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 zod/v4/locales/de.js stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/svg/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 node_modules/@posthog/brand/dist/generated/hoggies/components/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/marked/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/frimousse/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/session-recordings/playlist/SessionRecordingsPlaylist.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/web-analytics/tiles/WebAnalyticsTile.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/queries/validators.js stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/queries/web-analytics-validators.js stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/re2js/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/scenes/debug/HogDebug.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 src/queries/QueryEditor/QueryEditor.tsx stays out of src/scenes/dashboard/Dashboard.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/today/TodayReportPage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/queries/Query/Query.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 packages/quill/packages/charts/ stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/components/tool/widgets/VisualizationWidget.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/components/tool/widgets/RecordingsWidget.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 src/queries/Query/Query.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 products/posthog_ai/frontend/api/primitives.ts stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 src/scenes/notebooks/Notebook/notebookLogic.ts stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/marked/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/frimousse/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/session-recordings/playlist/SessionRecordingsPlaylist.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/web-analytics/tiles/WebAnalyticsTile.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/validators.js stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/web-analytics-validators.js stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/re2js/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/nodes/InsightViz/InsightViz.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/nodes/DataVisualization/DataVisualization.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/nodes/WebOverview/WebOverview.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/scenes/debug/HogDebug.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 src/queries/QueryEditor/QueryEditor.tsx stays out of src/scenes/activity/explore/EventsScene.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/marked/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/frimousse/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/scenes/web-analytics/LiveMetricsDashboard/LiveWebAnalyticsMetrics.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 products/product_analytics/frontend/insights/trends/WorldMap/countryVectors.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/queries/validators.js stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/re2js/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/scenes/debug/HogDebug.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 src/queries/QueryEditor/QueryEditor.tsx stays out of src/scenes/web-analytics/WebAnalyticsScene.tsx
🟢 packages/quill/packages/quill/dist/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/@tiptap/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/prosemirror- stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/marked/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 src/scenes/settings/SettingsMap.tsx stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 @jspm/core/nodelibs/browser/fs stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/re2js/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/kea-test-utils/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
🟢 node_modules/d3/src/ stays out of src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
Largest files eagerly shipped from src/index.tsx
| Size | File |
|---|---|
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
| 6.3 KiB | ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js |
| 4.7 KiB | ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js |
| 4.0 KiB | ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js |
| 1.9 KiB | src/lib/utils/bootTiming.ts |
| 1.7 KiB | src/index.tsx |
| 1.7 KiB | ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js |
| 1.2 KiB | src/RootErrorBoundary.tsx |
| 1.1 KiB | src/lib/utils/deferredAppContext.ts |
Largest files eagerly shipped from src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 105.7 KiB | src/products.tsx |
| 87.4 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 36.4 KiB | ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js |
| 28.6 KiB | src/lib/constants.tsx |
| 24.6 KiB | ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 105.7 KiB | src/products.tsx |
| 87.4 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 36.4 KiB | ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js |
| 32.5 KiB | src/lib/utils/eventUsageLogic.ts |
| 28.6 KiB | src/lib/constants.tsx |
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 115.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 111.3 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 105.7 KiB | src/products.tsx |
| 96.1 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.4 KiB | src/lib/api.ts |
| 79.0 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.3 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 105.7 KiB | src/products.tsx |
| 87.4 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 36.4 KiB | ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js |
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.3 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 105.7 KiB | src/products.tsx |
| 87.4 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 41.9 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js |
| 41.7 KiB | src/scenes/hog-functions/sub-templates/sub-templates.ts |
Largest files eagerly shipped from src/scenes/activity/explore/EventsScene.tsx
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.3 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 105.7 KiB | src/products.tsx |
| 96.1 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.4 KiB | src/lib/api.ts |
| 79.0 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
Largest files eagerly shipped from src/scenes/web-analytics/WebAnalyticsScene.tsx
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 115.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 111.3 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 105.7 KiB | src/products.tsx |
| 96.1 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.4 KiB | src/lib/api.ts |
| 79.0 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
| Size | File |
|---|---|
| 359.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 321.1 KiB | ../node_modules/.pnpm/posthog-js@1.447.1_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/rrweb.js |
| 224.1 KiB | ../node_modules/.pnpm/@posthog+icons@0.39.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js |
| 126.8 KiB | ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js |
| 111.3 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 105.7 KiB | src/products.tsx |
| 96.1 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.4 KiB | src/lib/api.ts |
| 68.7 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479
✅ Frontend layers — no new upward imports, 0 removed
Static imports from a lower frontend layer into a higher one (layers, lowest first: kernel, shell, query, features). Compared with the base branch, so an import that a PR also adds to layer-baseline.txt still shows here. Sizes are the source bytes on the eager path of every logged-in page.
| Layer | Eager source bytes | Δ vs base |
|---|---|---|
| kernel | 2.98 MiB | no change |
| shell | 2.36 MiB | no change |
| query | 56.2 KiB | no change |
| features | 273.8 KiB | no change |
Download the interactive layer graph for this PR.
Posted automatically by check-layers
✅ Toolbar bundle — eager 2.43 MiB within budget
What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.
| Metric | Size | Δ vs base | Budget |
|---|---|---|---|
| Eager (shipped) entry + static imports |
2.43 MiB · 19 files | no change | ████░░░░░░ 42.4% of 5.72 MiB |
| Deferred (lazy) | 2.64 MiB · 44 files | no change | n/a — loads on demand |
Loader dist/toolbar.js |
1.2 KiB | no change | █░░░░░░░░░ 6.0% of 19.5 KiB |
Largest eagerly-shipped chunks
| Size | File |
|---|---|
| 967.6 KiB | dist/toolbar/toolbar-app-DPGLK7O2.css |
| 732.3 KiB | dist/toolbar/chunk-chunk-J5PBHNM7.js |
| 290.5 KiB | dist/toolbar/chunk-chunk-CBC3BDP6.js |
| 137.0 KiB | dist/toolbar/chunk-chunk-HTOXCPKS.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-FQJO25M6.js |
| 75.7 KiB | dist/toolbar/toolbar-app-BQQKEFBC.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-BFAXZMC5.js |
| 33.8 KiB | dist/toolbar/chunk-chunk-6EBAJOMK.js |
| 21.9 KiB | dist/toolbar/chunk-chunk-6Y3VU5HE.js |
| 6.8 KiB | dist/toolbar/chunk-chunk-RVLGRPCH.js |
Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile
✅ Dist folder size — 🔺 +8.0 KiB (+0.0%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 991.37 MiB · 🔺 +8.0 KiB (+0.0%)
ℹ️ MCP UI apps size — 35 app(s), 29918.4 KB JS
Built size of each MCP UI app (main.js + styles.css).
| App | JS | CSS |
|---|---|---|
| debug | 864.4 KB | 222.2 KB |
| explain-chart | 1143.1 KB | 222.2 KB |
| action | 793.1 KB | 222.2 KB |
| action-list | 855.4 KB | 222.2 KB |
| cohort | 792.1 KB | 222.2 KB |
| cohort-list | 854.4 KB | 222.2 KB |
| email-template | 792.0 KB | 222.2 KB |
| error-details | 797.0 KB | 222.2 KB |
| error-issue | 794.1 KB | 222.2 KB |
| error-issue-list | 856.6 KB | 222.2 KB |
| experiment | 852.5 KB | 222.2 KB |
| experiment-list | 856.2 KB | 222.2 KB |
| experiment-results | 854.4 KB | 222.2 KB |
| feature-flag | 854.8 KB | 222.2 KB |
| feature-flag-list | 858.5 KB | 222.2 KB |
| feature-flag-testing | 795.4 KB | 222.2 KB |
| inline-scan | 792.6 KB | 222.2 KB |
| insight-actors | 853.9 KB | 222.2 KB |
| llm-costs | 851.2 KB | 222.2 KB |
| session-recording | 794.4 KB | 222.2 KB |
| survey | 793.7 KB | 222.2 KB |
| survey-global-stats | 851.2 KB | 222.2 KB |
| survey-list | 856.1 KB | 222.2 KB |
| survey-stats | 851.2 KB | 222.2 KB |
| trace-span | 792.5 KB | 222.2 KB |
| trace-span-list | 855.3 KB | 222.2 KB |
| vision-observation-list | 854.5 KB | 222.2 KB |
| workflow | 792.4 KB | 222.2 KB |
| workflow-list | 854.8 KB | 222.2 KB |
| workflow-setup-status | 792.1 KB | 222.2 KB |
| query-results | 1114.5 KB | 222.2 KB |
| render-ui | 1218.8 KB | 222.2 KB |
| visual-review-snapshots | 797.0 KB | 222.2 KB |
| workflow-data-suggestions | 794.8 KB | 222.2 KB |
| workflow-sending-rules | 793.5 KB | 222.2 KB |
⚠️ Backend coverage — 91.0% of changed backend lines covered — 25 uncovered
🧪 Backend test coverage
Patch coverage — changed backend lines (products + core): ██████████████████░░ 91.0% (280 / 305)
| File | Patch | Uncovered changed lines |
|---|---|---|
posthog/api/team/team_config.py |
33.3% | 443–444 |
posthog/api/integration.py |
36.8% | 2957–2962, 2969–2970, 3048–3049, 3051, 3054 |
products/workflows/backend/facade/contracts.py |
71.4% | 301–302 |
products/workflows/backend/services/transactional_email_workflows.py |
72.2% | 165–166, 171, 181, 193 |
posthog/models/integration/email.py |
81.2% | 76, 95, 240 |
products/messaging/backend/services/transactional_email.py |
85.7% | 604 |
🤖 Agents: add a test only if an uncovered line exposes a realistic regression that existing tests miss. Otherwise explain why no new test is needed under "How did you test this code?". Gap list: the patch-coverage artifact on this run (gh run download 583602125428252 -n patch-coverage), or the coverage-data block at the end of this comment.
Per-product line coverage (touched products)
| Product | Coverage | Lines |
|---|---|---|
platform_features |
██░░░░░░░░░░░░░░░░░░ 12.1% |
7 / 58 |
data_tools |
████████████░░░░░░░░ 60.9% |
95 / 156 |
warehouse_sources_queue |
█████████████░░░░░░░ 65.3% |
2,163 / 3,314 |
demo |
██████████████░░░░░░ 71.2% |
1,982 / 2,783 |
knowledge_writer |
███████████████░░░░░ 76.5% |
1,289 / 1,685 |
batch_exports |
█████████████████░░░ 82.6% |
24,173 / 29,278 |
engineering_analytics |
█████████████████░░░ 85.5% |
12,384 / 14,482 |
ml_inference |
█████████████████░░░ 86.3% |
524 / 607 |
commands |
█████████████████░░░ 86.5% |
1,645 / 1,901 |
mcp_analytics |
█████████████████░░░ 86.8% |
6,235 / 7,180 |
posthog_ai |
██████████████████░░ 88.2% |
4,502 / 5,104 |
apm |
██████████████████░░ 88.2% |
1,973 / 2,236 |
notebooks |
██████████████████░░ 88.8% |
15,454 / 17,409 |
mcp_registry |
██████████████████░░ 89.0% |
1,596 / 1,794 |
dashboards |
██████████████████░░ 89.5% |
8,130 / 9,087 |
product_tours |
██████████████████░░ 89.6% |
1,355 / 1,512 |
warehouse_suggestions |
██████████████████░░ 90.2% |
3,879 / 4,300 |
ai_gateway |
██████████████████░░ 90.3% |
971 / 1,075 |
cohorts |
██████████████████░░ 90.5% |
9,621 / 10,633 |
visual_review |
██████████████████░░ 90.7% |
9,870 / 10,883 |
signals |
██████████████████░░ 90.8% |
105,659 / 116,317 |
data_warehouse |
██████████████████░░ 91.1% |
15,703 / 17,236 |
canvas |
██████████████████░░ 91.2% |
8,205 / 8,996 |
cdp |
██████████████████░░ 91.4% |
10,806 / 11,817 |
today |
██████████████████░░ 91.5% |
3,975 / 4,346 |
tasks |
██████████████████░░ 91.5% |
85,359 / 93,291 |
autoresearch |
██████████████████░░ 91.6% |
12,047 / 13,151 |
metrics |
██████████████████░░ 91.9% |
11,564 / 12,581 |
streamlit_apps |
██████████████████░░ 91.9% |
3,170 / 3,448 |
data_modeling |
██████████████████░░ 92.0% |
12,440 / 13,526 |
business_knowledge |
██████████████████░░ 92.1% |
10,871 / 11,801 |
managed_warehouse |
██████████████████░░ 92.3% |
14,337 / 15,533 |
wizard |
██████████████████░░ 92.3% |
7,031 / 7,616 |
conversations |
██████████████████░░ 92.3% |
31,407 / 34,013 |
review_hog |
██████████████████░░ 92.4% |
18,136 / 19,636 |
early_access_features |
██████████████████░░ 92.5% |
1,339 / 1,448 |
error_tracking |
███████████████████░ 92.5% |
20,776 / 22,453 |
actions |
███████████████████░ 92.8% |
1,360 / 1,466 |
notifications |
███████████████████░ 92.8% |
1,219 / 1,313 |
slack_app |
███████████████████░ 92.9% |
24,199 / 26,051 |
alerts_platform |
███████████████████░ 92.9% |
9,007 / 9,695 |
alerts |
███████████████████░ 93.2% |
12,010 / 12,885 |
stamphog |
███████████████████░ 93.2% |
10,903 / 11,697 |
webmcp |
███████████████████░ 93.3% |
277 / 297 |
ai_training |
███████████████████░ 93.3% |
598 / 641 |
web_analytics |
███████████████████░ 93.5% |
27,004 / 28,886 |
surveys |
███████████████████░ 93.5% |
7,456 / 7,973 |
exports |
███████████████████░ 93.6% |
4,394 / 4,696 |
approvals |
███████████████████░ 93.7% |
5,004 / 5,343 |
cross_project_dashboards |
███████████████████░ 93.7% |
858 / 916 |
workflows |
███████████████████░ 93.8% |
29,079 / 31,007 |
context_layer |
███████████████████░ 93.8% |
4,066 / 4,333 |
marketing_analytics |
███████████████████░ 93.9% |
22,170 / 23,617 |
authorization |
███████████████████░ 94.0% |
671 / 714 |
mcp_store |
███████████████████░ 94.0% |
9,324 / 9,920 |
billing_alerts |
███████████████████░ 94.0% |
2,322 / 2,470 |
messaging |
███████████████████░ 94.1% |
8,884 / 9,445 |
ai_observability |
███████████████████░ 94.1% |
34,380 / 36,546 |
customer_analytics |
███████████████████░ 94.1% |
30,873 / 32,803 |
managed_migrations |
███████████████████░ 94.1% |
1,877 / 1,994 |
legal_documents |
███████████████████░ 94.3% |
2,313 / 2,453 |
replay_vision |
███████████████████░ 94.4% |
33,357 / 35,351 |
logs |
███████████████████░ 94.4% |
19,543 / 20,692 |
aeo |
███████████████████░ 94.6% |
3,138 / 3,318 |
access_control |
███████████████████░ 94.7% |
8,515 / 8,991 |
reminders |
███████████████████░ 94.8% |
782 / 825 |
experiments |
███████████████████░ 94.8% |
45,809 / 48,311 |
warehouse_sources |
███████████████████░ 95.0% |
141,344 / 148,847 |
growth |
███████████████████░ 95.0% |
11,589 / 12,202 |
endpoints |
███████████████████░ 95.0% |
9,720 / 10,234 |
annotations |
███████████████████░ 95.0% |
1,097 / 1,155 |
skills |
███████████████████░ 95.2% |
7,656 / 8,043 |
uptime_monitoring |
███████████████████░ 95.3% |
306 / 321 |
data_catalog |
███████████████████░ 95.6% |
4,740 / 4,956 |
subscriptions |
███████████████████░ 95.7% |
14,021 / 14,654 |
ui_customization |
███████████████████░ 95.7% |
714 / 746 |
product_analytics |
███████████████████░ 95.8% |
31,105 / 32,468 |
feature_flags |
███████████████████░ 95.8% |
30,674 / 32,018 |
revenue_analytics |
███████████████████░ 95.9% |
1,877 / 1,958 |
data_quality |
███████████████████░ 96.0% |
8,564 / 8,918 |
tracing |
███████████████████░ 96.5% |
4,572 / 4,739 |
account_audits |
███████████████████░ 96.8% |
783 / 809 |
security |
███████████████████░ 96.8% |
1,597 / 1,650 |
pulse |
███████████████████░ 97.3% |
2,036 / 2,093 |
analytics_platform |
████████████████████ 98.0% |
2,953 / 3,013 |
groups |
████████████████████ 98.1% |
1,623 / 1,655 |
field_notes |
████████████████████ 98.3% |
172 / 175 |
Report-only. Patch coverage = changed backend lines covered vs origin/master. Sorted lowest first.
Known gaps: lines covered only by Temporal tests show as uncovered; core line numbers may drift if master changed the same file.
❌ Hogbox preview — build failed
The preview didn't come up for commit a37318e. See the build log for the failing step. It'll retry on the next push.
Previews are optional and never block merging. A failure here is often a hogland or tailnet hiccup rather than anything in your PR, so the check stays green and this section is the status.
There was a problem hiding this comment.
PostHog Review · Standard · reviewed ea4d933: 1 Should fix.
This is the only automatic review while this pull request is a draft. Comment @posthog review to review new changes sooner. Otherwise, a review of the new changes runs when you mark it ready for review.
See this review and its findings in PostHog Review. Comment @posthog review --deep for a Deep review. A Deep review takes longer and looks deeper than a Standard review.
…ndbox-split/provision-endpoint
…ndbox-split/provision-endpoint Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndbox-split/provision-endpoint
…ndbox-split/provision-endpoint
The flag SDK answers a service outage with no value, which reads as "off", so provisioning answers 404 and writes nothing rather than failing loudly. The comment and the test that mocked a raise above the SDK described a 500 that cannot happen. The rename test now also checks that workers reload the renamed row, and the doc says only an empty domain setting lifts the domain block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Risk: No findings This delta is the merge commit a37318e, which folds the sibling managed-sender-guards/sender-surfaces stack and a master sync into the branch; this PR's own authored change is a one-line comment fix in posthog/api/integration.py plus the new get_ses_mail_from_subdomain facade wrapper. The substantive sibling changes (email sender create-only semantics with an advisory domain lock, SES mail-from reuse within an org, the MCP email-create tool, and Node-side workflow-run link tagging) all check out: no new security issues found. Sentinel reviewed |
There was a problem hiding this comment.
Not approved — this change needs a human reviewer.
Re-add the stamphog label to request another review once you have addressed this.
Owning-team authorship, strong familiarity, and the reported current-head review provide assurance for the risky changes, but @PostHog's substantive inline concern remains unfixed. Address the flag-failure handling in products/workflows/backend/services/sandbox_sender.py or obtain explicit reviewer acceptance of the fail-closed behavior before re-requesting.
- Author wrote 75% of the modified lines and has 5 merged PRs in these paths (familiarity STRONG).
- PostHog Review (Standard) reviewed the current head: no findings.
- @PostHog on products/workflows/backend/services/sandbox_sender.py: the concern about hiding failed flag evaluations remains unaddressed. The service still calls posthog_feature_flag_enabled, whose implementation in posthog/permissions.py converts a nullable evaluation to a boolean; a missing evaluation therefore produces the endpoint's unavailable response rather than surfacing the failure. No non-author acceptance of this behavior is provided.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 114L, 5F substantive, 254L/8F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (254L, 8F, cross-cutting, feat) |
| stamphog 2.7.0 | .stamphog/policy.yml @ 10a2e16 · reviewed head 10a2e16 |
A from address outside WORKFLOWS_SANDBOX_SENDER_DOMAIN would send from a domain the own-sender guard does not cover. The doc also says how to target the flag, since it is evaluated without person properties. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndbox-split/provision-endpoint
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndbox-split/provision-endpoint Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndbox-split/provision-endpoint Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new stamphog review started for this PR — the fresh verdict replaces this approval.
…ndbox-split/provision-endpoint
…ull from address Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A new stamphog review started for this PR — the fresh verdict replaces this approval.
…ndbox-split/provision-endpoint
…ndbox-split/provision-endpoint
A new stamphog review started for this PR — the fresh verdict replaces this approval.
…onfig Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndbox-split/provision-endpoint
A new stamphog review started for this PR — the fresh verdict replaces this approval.
There was a problem hiding this comment.
Approved.
The risky changes have assurance through owning-team authorship and STRONG familiarity, with focused tests included. No concrete unresolved review concerns or other refusal grounds were identified; the historical review and unrelated discussion summary provide no current-head assurance.
- Author wrote 80% of the modified lines and has 5 merged PRs in these paths (familiarity STRONG).
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 133L, 6F substantive, 295L/9F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (295L, 9F, cross-cutting, feat) |
| stamphog 2.7.0 | .stamphog/policy.yml @ 9002117 · reviewed head 9002117 |
…ndbox-split/provision-endpoint Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Note 🤖 Claude Opus 5.5 responding on behalf of Michael Replaced by #131840 in the isolated sandbox rebuild. |
Problem
Merge danger
Warning
🟡 Merge risk: medium · two-way door (merge-risk rubric)
workflows-sandbox-senderis on and the sandbox settings are valid. The settings stay empty until the charts change lands.workflows-sandbox-sender, orgit revertthe merge commit. A revert leaves created rows behind: delete the email integrations withconfig.provider = "sandbox".Changes
POST /api/projects/:id/integrations/email_sandbox_sender/creates the project's sandbox sender, or refreshes its display name. It needsintegration:writeand is safe to call on every visit.sandbox, named from the organization, such as "Acme via PostHog".SES_SANDBOX_TENANT_NAMEand aSES_SANDBOX_FROM_ADDRESSwith a local part onWORKFLOWS_SANDBOX_SENDER_DOMAINor a subdomain. Otherwise it reportsSandboxSenderMisconfiguredto error tracking and answers 404.workflows sandbox sender provisionedfires once, on create, grouped under the project's organization.products/integrations/frontend/generated/api.ts.How did you test this code?
Test rationale:
test_sandbox_sender.pycatches provisioning that runs without the flag or valid settings, writes a second row, or reports to the wrong organization. Each 404 row also asserts no row and no event.posthog-sandboxexternal id or thesandboxprovider, so provisioning cannot take over a user's row. The display name tests cover long names and names with no letters or digits.Earlier local run, at d1aa702 (not saved as proof)
POST …/integrations/email_sandbox_sender/, flag offsandbox, name "Example Org via PostHog", verifiedCI report findings
Release status
Docs update
docs/internal/workflows-email-sending-tiers.mddescribes the endpoint, its settings, the from address rule and the rollout order. It says to target the flag by organization or by the project group'sidproperty.🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, Claude Opus 5.5
Skills:
/improving-drf-endpoints,/writing-tests,/stacking-prs,/writing-pr-descriptions,/qa-swarmDecisions for the whole sandbox sender stack
sandbox, created only by PostHog codeWORKFLOWS_SANDBOX_SENDER_ENABLED, no feature flag in CDP Node codeNo open questions.
More context for AI agents
projectgroup key (the team id). Passingteam.uuidhere would disagree with every other server-side gate.projectby id whileposthog/event_usage.pykeys it by uuid. That repo-wide mismatch is outside this PR.email_sandbox_senderinposthog/api/integration.py, andproducts/workflows/backend/services/sandbox_sender.py.🤖 Generated with Claude Code