Repository navigation
feat(cdp): replay failed workflow runs from the admin replay tool - #124789
Conversation
…tion-replay-admin
…n them in clickhouse
…tion-replay-admin
…d stops before anything queued
…efore queuing anything
…let staff allow a resend
…eleasing stalled sends
🤖 CI report
|
| File | Comment lines | Added lines |
|---|---|---|
products/cdp/backend/services/invocation_replay.py |
5 | 152 |
products/workflows/backend/facade/contracts.py |
2 | 11 |
products/cdp/backend/test/test_invocation_replay.py |
1 | 77 |
products/workflows/backend/services/hog_flow_reads.py |
1 | 28 |
This check does not block merging. It updates on every push and clears when the share drops.
⚠️ Bundle size — 🔺 +313.5 KiB (+0.4%)
Uncompressed size of every built .js bundle, compared against the base branch.
Total: 78.20 MiB · 🔺 +313.5 KiB (+0.4%)
| File | Size | Δ vs base |
|---|---|---|
render-query/src/render-query/render-query.js |
22.08 MiB | 🔺 +95.8 KiB (+0.4%) |
exporter/src/queries/schema.js |
1.44 MiB | 🔺 +82.2 KiB (+5.9%) |
posthog-app/src/queries/schema.js |
1.44 MiB | 🔺 +82.2 KiB (+5.9%) |
posthog-app/_parent/products/data_modeling/frontend/ModelsScene.js |
27.0 KiB | 🟢 -66.0 KiB (-71.0%) |
posthog-app/_parent/products/data_catalog/frontend/DataCatalogSections.js |
46.5 KiB | 🔺 +46.5 KiB (new) |
posthog-app/_parent/products/data_catalog/frontend/DataCatalogMetricScene.js |
77.6 KiB | 🔺 +42.4 KiB (+120.9%) |
posthog-app/_parent/products/data_catalog/frontend/DataCatalogScene.js |
21.0 KiB | 🟢 -21.5 KiB (-50.5%) |
posthog-app/_parent/products/data_catalog/frontend/DataCatalogNewMetricScene.js |
31.9 KiB | 🔺 +12.5 KiB (+64.6%) |
posthog-app/src/layout/today/TodayTopBar.js |
7.9 KiB | 🟢 -10.9 KiB (-58.0%) |
posthog-app/src/layout/today/TodayShell.js |
31.8 KiB | 🔺 +10.4 KiB (+48.8%) |
exporter/src/scenes/web-analytics/WebAnalyticsInsight.js |
199.2 KiB | 🔺 +9.8 KiB (+5.2%) |
posthog-app/src/scenes/AuthenticatedShell.js |
149.2 KiB | 🔺 +8.9 KiB (+6.3%) |
posthog-app/_parent/products/mcp_registry/frontend/MCPRegistryScene.js |
removed | 🟢 -5.8 KiB (-100.0%) |
posthog-app/_parent/products/wizard/frontend/views/run-sidebar/WizardRailButton.js |
5.8 KiB | 🔺 +5.8 KiB (new) |
posthog-app/src/scenes/project-homepage/today/TodayHome.js |
48.3 KiB | 🔺 +3.7 KiB (+8.3%) |
posthog-app/_parent/products/wizard/frontend/views/run-sidebar/WizardRunsMoreMenuItem.js |
removed | 🟢 -3.5 KiB (-100.0%) |
posthog-app/_parent/products/signals/frontend/inbox/components/shell/ImplementClaimDialog.js |
2.2 KiB | 🔺 +2.2 KiB (new) |
exporter/src/exporter/scenes/ExporterNotebookScene.js |
3.90 MiB | 🔺 +2.2 KiB (+0.1%) |
posthog-app/_parent/products/cross_project_dashboards/frontend/CrossProjectDashboardScene.js |
46.3 KiB | 🔺 +2.0 KiB (+4.5%) |
posthog-app/_parent/products/wizard/frontend/views/run-sidebar/WizardRunsUnseenDot.js |
removed | 🟢 -1.9 KiB (-100.0%) |
posthog-app/_parent/products/signals/frontend/inbox/utils/reportActions.js |
1.8 KiB | 🔺 +1.8 KiB (new) |
posthog-app/src/scenes/marketing-analytics/MarketingAnalyticsScene.js |
212.1 KiB | 🔺 +1.7 KiB (+0.8%) |
posthog-app/_parent/products/signals/frontend/inbox/utils/reportClaim.js |
1.7 KiB | 🔺 +1.7 KiB (new) |
posthog-app/_parent/products/signals/frontend/inbox/logics/inboxBulkActionsLogic.js |
1.6 KiB | 🔺 +1.6 KiB (new) |
posthog-app/src/scenes/onboarding/Onboarding.js |
792.0 KiB | 🔺 +1.2 KiB (+0.1%) |
posthog-app/src/scenes/authentication/device/OAuthDeviceAuthorize.js |
12.5 KiB | 🔺 +1.1 KiB (+10.1%) |
posthog-app/src/scenes/experiments/Experiment.js |
446.6 KiB | 🔺 +1.1 KiB (+0.2%) |
Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report
✅ Eager graph — within budget
How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.
| Root | Eager (shipped) | Δ vs base | Budget |
|---|---|---|---|
entry (logged-out pages, app bootstrap)src/index.tsx |
1.04 MiB · 25 files | 🔺 +3.1 KiB (+0.3%) | █████████░ 90.7% 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.03 MiB · 628 files | 🔺 +3.8 KiB (+0.1%) | ██████████ 99.8% of 3.03 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
3.86 MiB · 1,236 files | 🔺 +15.5 KiB (+0.4%) | ██████████ 96.3% of 4.01 MiB |
dashboard scenesrc/scenes/dashboard/Dashboard.tsx |
7.75 MiB · 2,990 files | 🟢 -2.7 KiB (-0.0%) | ████████░░ 78.8% of 9.84 MiB |
today home pathsrc/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx |
4.83 MiB · 1,858 files | 🔺 +27.3 KiB (+0.6%) | ██████████ 98.0% 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.06 MiB · 2,290 files | 🔺 +24.7 KiB (+0.4%) | ██████████ 96.6% of 6.27 MiB |
events scenesrc/scenes/activity/explore/EventsScene.tsx |
6.77 MiB · 2,550 files | 🔺 +5.9 KiB (+0.1%) | ███████░░░ 71.9% of 9.41 MiB |
web analytics scenesrc/scenes/web-analytics/WebAnalyticsScene.tsx |
7.83 MiB · 2,929 files | 🔺 +28.0 KiB (+0.4%) | ███████░░░ 74.6% of 10.49 MiB |
replay detail scenesrc/scenes/session-recordings/detail/SessionRecordingDetail.tsx |
6.95 MiB · 2,612 files | 🔺 +10.4 KiB (+0.1%) | █████████░ 85.5% 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 |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 106.0 KiB | src/products.tsx |
| 87.8 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_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 |
| 29.0 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 |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 106.0 KiB | src/products.tsx |
| 87.8 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_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.6 KiB | src/lib/utils/eventUsageLogic.ts |
| 29.0 KiB | src/lib/constants.tsx |
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
| Size | File |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 113.4 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 112.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.0 KiB | src/products.tsx |
| 96.7 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.8 KiB | src/lib/api.ts |
| 78.8 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 69.0 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 |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 112.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.0 KiB | src/products.tsx |
| 87.8 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_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 |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 112.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.0 KiB | src/products.tsx |
| 87.8 KiB | src/lib/api.ts |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
| 68.5 KiB | ../products/posthog_ai/frontend/logics/runStreamLogic.ts |
| 42.7 KiB | ../node_modules/.pnpm/@dnd-kit+core@6.3.0_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 |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 112.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.0 KiB | src/products.tsx |
| 96.7 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.8 KiB | src/lib/api.ts |
| 78.8 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 69.0 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 |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 113.4 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/surveys-preview.js |
| 112.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.0 KiB | src/products.tsx |
| 96.7 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.8 KiB | src/lib/api.ts |
| 78.8 KiB | src/scenes/dashboard/dashboardLogic.tsx |
| 69.0 KiB | src/lib/lemon-ui/icons/icons.tsx |
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
| Size | File |
|---|---|
| 361.8 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_react@18.3.1/node_modules/posthog-js/dist/module.mjs |
| 322.0 KiB | ../node_modules/.pnpm/posthog-js@1.447.7_@types+react@18.3.31_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 |
| 112.2 KiB | ../packages/quill/packages/primitives/dist/index.js |
| 106.0 KiB | src/products.tsx |
| 96.7 KiB | ../packages/quill/packages/components/dist/index.js |
| 87.8 KiB | src/lib/api.ts |
| 69.0 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 | 3.00 MiB | 🔺 +4.4 KiB (+0.1%) |
| shell | 2.41 MiB | 🔺 +40.3 KiB (+1.7%) |
| query | 56.9 KiB | 🔺 +711 B (+1.2%) |
| features | 274.1 KiB | 🔺 +165 B (+0.1%) |
Download the interactive layer graph for this PR.
Posted automatically by check-layers
✅ Toolbar bundle — eager 2.44 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.44 MiB · 19 files | 🔺 +3.3 KiB (+0.1%) | ████░░░░░░ 42.6% of 5.72 MiB |
| Deferred (lazy) | 2.64 MiB · 44 files | 🔺 +36 B (+0.0%) | 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 |
|---|---|
| 974.8 KiB | dist/toolbar/toolbar-app-W7RYTFLH.css |
| 737.5 KiB | dist/toolbar/chunk-chunk-2GUA5KB7.js |
| 290.5 KiB | dist/toolbar/chunk-chunk-QRQPQULA.js |
| 137.6 KiB | dist/toolbar/chunk-chunk-KUOTCAG7.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-FQJO25M6.js |
| 75.7 KiB | dist/toolbar/toolbar-app-PXH7UCE5.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-BFAXZMC5.js |
| 33.8 KiB | dist/toolbar/chunk-chunk-RDAX246Y.js |
| 21.9 KiB | dist/toolbar/chunk-chunk-GDK4T7BX.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 — 🔺 +3.71 MiB (+0.4%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1003.03 MiB · 🔺 +3.71 MiB (+0.4%)
⚠️ Backend coverage — 79.0% of changed backend lines covered — 27 uncovered
🧪 Backend test coverage
Patch coverage — changed backend lines (products + core): ████████████████░░░░ 79.0% (106 / 133)
| File | Patch | Uncovered changed lines |
|---|---|---|
products/workflows/backend/services/hog_flow_reads.py |
22.2% | 574, 577–580, 583, 596 |
products/workflows/backend/facade/contracts.py |
25.0% | 204–207, 209, 211 |
products/cdp/backend/services/invocation_replay.py |
80.0% | 223, 277, 360, 371–379, 621 |
products/cdp/backend/console.py |
92.3% | 542 |
🤖 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 390299105991194 -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 |
████████████░░░░░░░░ 57.6% |
95 / 165 |
warehouse_sources_queue |
█████████████░░░░░░░ 65.8% |
2,192 / 3,330 |
demo |
██████████████░░░░░░ 71.6% |
2,006 / 2,803 |
knowledge_writer |
████████████████░░░░ 77.8% |
1,474 / 1,895 |
batch_exports |
█████████████████░░░ 83.0% |
24,967 / 30,076 |
engineering_analytics |
█████████████████░░░ 85.6% |
12,515 / 14,615 |
ml_inference |
█████████████████░░░ 86.3% |
524 / 607 |
commands |
█████████████████░░░ 86.7% |
1,674 / 1,930 |
mcp_analytics |
██████████████████░░ 87.8% |
6,827 / 7,777 |
posthog_ai |
██████████████████░░ 88.2% |
4,514 / 5,116 |
notebooks |
██████████████████░░ 88.6% |
15,599 / 17,612 |
apm |
██████████████████░░ 89.2% |
2,250 / 2,523 |
dashboards |
██████████████████░░ 89.6% |
9,057 / 10,105 |
cohorts |
██████████████████░░ 90.5% |
9,895 / 10,932 |
warehouse_suggestions |
██████████████████░░ 90.7% |
4,264 / 4,700 |
actions |
██████████████████░░ 90.9% |
1,524 / 1,677 |
visual_review |
██████████████████░░ 90.9% |
10,634 / 11,698 |
data_warehouse |
██████████████████░░ 91.0% |
15,808 / 17,369 |
cdp |
██████████████████░░ 91.1% |
11,814 / 12,967 |
signals |
██████████████████░░ 91.2% |
113,418 / 124,409 |
canvas |
██████████████████░░ 91.5% |
8,559 / 9,351 |
tasks |
██████████████████░░ 91.6% |
86,739 / 94,681 |
autoresearch |
██████████████████░░ 91.6% |
12,280 / 13,400 |
today |
██████████████████░░ 91.7% |
4,270 / 4,655 |
streamlit_apps |
██████████████████░░ 92.0% |
3,200 / 3,478 |
alerts_platform |
██████████████████░░ 92.1% |
11,062 / 12,013 |
business_knowledge |
██████████████████░░ 92.2% |
10,900 / 11,824 |
data_modeling |
██████████████████░░ 92.3% |
13,023 / 14,117 |
review_hog |
██████████████████░░ 92.4% |
18,498 / 20,025 |
conversations |
██████████████████░░ 92.4% |
31,728 / 34,335 |
metrics |
██████████████████░░ 92.4% |
13,031 / 14,101 |
wizard |
██████████████████░░ 92.4% |
7,323 / 7,922 |
slack_app |
███████████████████░ 92.6% |
25,685 / 27,748 |
error_tracking |
███████████████████░ 92.6% |
21,447 / 23,154 |
notifications |
███████████████████░ 92.8% |
1,230 / 1,326 |
early_access_features |
███████████████████░ 92.8% |
1,400 / 1,509 |
legal_documents |
███████████████████░ 93.0% |
2,380 / 2,558 |
ai_training |
███████████████████░ 93.1% |
605 / 650 |
managed_warehouse |
███████████████████░ 93.2% |
15,792 / 16,947 |
authorization |
███████████████████░ 93.2% |
850 / 912 |
webmcp |
███████████████████░ 93.3% |
277 / 297 |
stamphog |
███████████████████░ 93.3% |
11,751 / 12,592 |
alerts |
███████████████████░ 93.3% |
14,214 / 15,228 |
surveys |
███████████████████░ 93.6% |
7,847 / 8,388 |
web_analytics |
███████████████████░ 93.6% |
27,148 / 29,017 |
exports |
███████████████████░ 93.7% |
4,474 / 4,777 |
approvals |
███████████████████░ 93.7% |
5,026 / 5,366 |
cross_project_dashboards |
███████████████████░ 93.7% |
867 / 925 |
context_layer |
███████████████████░ 93.9% |
4,075 / 4,342 |
marketing_analytics |
███████████████████░ 93.9% |
22,429 / 23,882 |
ai_observability |
███████████████████░ 93.9% |
41,218 / 43,873 |
mcp_store |
███████████████████░ 94.0% |
9,391 / 9,991 |
billing_alerts |
███████████████████░ 94.0% |
2,332 / 2,480 |
messaging |
███████████████████░ 94.0% |
10,484 / 11,149 |
workflows |
███████████████████░ 94.1% |
30,964 / 32,922 |
annotations |
███████████████████░ 94.1% |
1,460 / 1,552 |
managed_migrations |
███████████████████░ 94.2% |
1,886 / 2,003 |
customer_analytics |
███████████████████░ 94.2% |
31,853 / 33,815 |
access_control |
███████████████████░ 94.4% |
8,663 / 9,179 |
replay_vision |
███████████████████░ 94.4% |
33,460 / 35,451 |
ai_gateway |
███████████████████░ 94.4% |
1,580 / 1,674 |
logs |
███████████████████░ 94.4% |
20,561 / 21,776 |
reminders |
███████████████████░ 94.5% |
837 / 886 |
experiments |
███████████████████░ 95.0% |
48,331 / 50,893 |
growth |
███████████████████░ 95.0% |
11,603 / 12,217 |
endpoints |
███████████████████░ 95.0% |
9,725 / 10,239 |
warehouse_sources |
███████████████████░ 95.0% |
142,683 / 150,210 |
release |
███████████████████░ 95.0% |
703 / 740 |
product_tours |
███████████████████░ 95.1% |
1,271 / 1,337 |
skills |
███████████████████░ 95.1% |
7,658 / 8,053 |
uptime_monitoring |
███████████████████░ 95.3% |
306 / 321 |
subscriptions |
███████████████████░ 95.7% |
14,272 / 14,921 |
ui_customization |
███████████████████░ 95.7% |
714 / 746 |
data_catalog |
███████████████████░ 95.7% |
5,409 / 5,651 |
tracing |
███████████████████░ 95.8% |
5,113 / 5,339 |
feature_flags |
███████████████████░ 95.8% |
31,130 / 32,505 |
product_analytics |
███████████████████░ 95.8% |
31,522 / 32,913 |
revenue_analytics |
███████████████████░ 95.9% |
1,877 / 1,958 |
data_quality |
███████████████████░ 96.0% |
8,583 / 8,937 |
groups |
███████████████████░ 96.4% |
2,068 / 2,145 |
aeo |
███████████████████░ 96.4% |
4,958 / 5,141 |
account_audits |
███████████████████░ 96.5% |
823 / 853 |
security |
███████████████████░ 96.8% |
1,597 / 1,650 |
pulse |
███████████████████░ 97.0% |
2,044 / 2,107 |
analytics_platform |
████████████████████ 98.0% |
2,962 / 3,022 |
field_notes |
████████████████████ 98.4% |
181 / 184 |
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.
…tion-replay-admin
…-invocation-replay-workflows
…tion-replay-admin
…dmin' into dmarchuk/cdp-invocation-replay-admin
…ole-tool-operations # Conflicts: # posthog/admin/console/AGENTS.md # posthog/admin/console/tools.py # posthog/admin/test_admin_console.py # posthog/templates/admin_console/_block.html
…dp-invocation-replay-admin
…-invocation-replay-workflows
…ole-tool-operations # Conflicts: # posthog/admin/test_admin_console.py
…p secrets out of live blocks
…dp-invocation-replay-admin
…-invocation-replay-workflows # Conflicts: # products/workflows/backend/services/hog_flow_reads.py
…ole-tool-operations # Conflicts: # posthog/admin/test_admin_console.py
…dp-invocation-replay-admin
…-invocation-replay-workflows
|
😎 Stack merged successfully - details. |
…tion-replay-workflows # Conflicts: # products/cdp/backend/console.py # products/cdp/backend/management/commands/replay_failed_invocations.py # products/cdp/backend/services/invocation_replay.py # products/cdp/backend/test/test_invocation_replay.py
|
Risk: No findings The only change since the last review is a merge of master into the branch; the +22 lines in products/workflows/backend/facade/contracts.py (CodeEmailWorkflow, SegmentCohortFilters, ImportSegment.conditions, ImportOptions.pending_segment_cohorts) are master code, not PR-authored, and are pure dataclass field declarations with no logic. The PR's own replay-tool code in products/cdp, hog_flow_reads.py, and facade/workflows.py is byte-identical to the state the last review cleared, so no previously reviewed risk changed. Sentinel reviewed |
…tion-replay-workflows
A new stamphog review started for this PR — the fresh verdict replaces this approval.
There was a problem hiding this comment.
Approved.
Risky replay and cross-team access changes have current-head approval, owning-team authorship, and STRONG familiarity. No unresolved substantive concerns or policy-specific refusal grounds were found; the new security-rule suppression is not one of the prohibited house-pattern exemptions.
- Author wrote 99% of the modified lines and has 22 merged PRs in these paths (familiarity STRONG).
- webjunkie reviewed the current head.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✓ | no deny categories matched |
| size | ✓ | 369L, 7F substantive, 462L/8F incl. docs/generated/snapshots — within ceiling |
| tier | ✓ | T1-agent / T1d-complex (462L, 8F, single-area, feat) |
| stamphog 2.8.0 | .stamphog/policy.yml @ be0964e · reviewed head be0964e |
|
/trunk merge |
Deploy status
This table shows the |
Problem
Changes
--include-workflows.Note
A failed email step counts as a failed run only when the step is set to stop the workflow on error. The default is to continue, so the run ends as succeeded and the tool cannot find the failed send.
How did you test this code?
Email replay steps and results
hog_invocation_resultsfor the 4 run IDsfailedat 14:14, thenrunningandsucceededat 14:29. The 8 failures outside the window were untouched.app_metrics2for the failed batch runemail_sent4 on the email stepOther steps and results
Setup: 3 workflows and 1 webhook destination in a demo team. Failed runs: active workflow 3, draft workflow 2, sensitive-email workflow 2, destination 2. All data is invented.
hog_flows/<id>/rerunwith the workflow's 3 run IDs.hog_functions/<id>/rerunwith the destination's 2.done, both requests 200template-hubspot/ excludetemplate-webhook/template-webhookLocal test runs:
test_invocation_replay.pycannot start here, because local ClickHouse fails the test table setup on_source_topic, an unrelated table. CI is the check.Test rationale:
test_workflow_failures_are_planned_only_when_includedfails if the console form drops the option. The workflow planner and send tests cover what gets skipped, and that workflow runs are resent as workflows.CI report: the bundle size warning does not apply. This PR changes no frontend files.
Screenshots
These replace the earlier screenshots, which showed the old tool name.
Failed email runs ready to replay
Status after the email replay
Details with workflows included
Status after the send
Release status
Docs update
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Agent: Claude Code, Claude Opus 5.5
/stacking-prs,/extending-the-admin-console,/writing-tests,/posthog-local-e2e-qa,/merging-prs,/writing-pr-descriptions,/writing-plainly.🤖 Generated with Claude Code