Skip to content

chore(personhog): remove the persons ORM fallback, gate, and middleware#65968

Open
nickbest-ph wants to merge 23 commits into
masterfrom
nick/rm-personhog-orm-fallback
Open

chore(personhog): remove the persons ORM fallback, gate, and middleware#65968
nickbest-ph wants to merge 23 commits into
masterfrom
nick/rm-personhog-orm-fallback

Conversation

@nickbest-ph

@nickbest-ph nickbest-ph commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Problem

personhog is fully rolled out as the source of truth for person/group/cohort data. The Django ORM fallback, the rollout gate, and the per-request gate middleware are now dead weight — every read already goes through personhog. This deletes the fallback machinery and decouples the Django test suite from the persons DB so that the persons DB Django connection can be removed in a follow-up without breaking anything.

Changes

This is being landed incrementally; the intended end state of the PR:

  • Collapse _personhog_routed() to personhog-only in posthog/models/person/util.py and posthog/models/group_type_mapping.py, and drop the orm_fn branch from every caller (deletion.py, team/util.py, products/cohorts/backend/models/util.py + cohort.py, actor_base_query.py, session_recording.py). Group-type reads keep their stale-cache / fail-closed resilience — a personhog failure is re-raised as DatabaseError so the existing recovery still fires.
  • Delete the gate (gate.py), middleware (middleware.py), and their tests; remove the middleware from MIDDLEWARE and the PERSONHOG_ENABLED / PERSONHOG_ROLLOUT_PERCENTAGE settings, env/compose files, and the hogli devenv generator. The fakes no longer patch the gate.
  • Make the persons DB router raise on any ORM access to persons-DB models while the test fake is active, so the suite is forced through the fake and cannot silently depend on the persons DB. (follow-up push)
  • Drop the test-side ORM writes: the posthog/test/persons.py helpers and bulk_create_persons seed the fake (and ClickHouse) directly instead of writing to Postgres; tests that read/assert via the ORM now go through personhog helpers. (follow-up push)
  • CI: launch personhog-replica + personhog-router before demo-data generation in ci-e2e-playwright.yml and ci-mcp.yml, and point the e2e mprocs config at the local router.

How did you test this code?

I'm an agent. Local validation was limited to ruff and py_compile — the full Python test deps and Docker services aren't available in my environment, so CI on this PR is the real validator and I'm iterating against it. No manual testing performed.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Authored with Claude Code, directed by the repo owner to implement PR 4 of the personhog ORM-fallback removal and drive CI to green. Notable decisions: scoped the router's hard-block to "fake active" so migrations, production, and the e2e/demo paths (which still write demo persons via the ORM) are unaffected; preserved the group-type stale-cache resilience by re-raising personhog failures as DatabaseError; and included PR 3's CI changes because this branch is stacked on PR 2 rather than master.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QcrQWDC88oyojMLDuyR7tM


Generated by Claude Code

@nickbest-ph nickbest-ph requested a review from a team as a code owner June 25, 2026 04:57
@assign-reviewers-posthog assign-reviewers-posthog Bot requested review from a team, TueHaulund, arnohillen, fasyy612 and ksvat and removed request for a team June 25, 2026 04:58
@assign-reviewers-posthog

assign-reviewers-posthog Bot commented Jun 25, 2026

Copy link
Copy Markdown

👀 Auto-assigned reviewers

These soft owners were skipped because their changes are minor, or the reviewer list was getting long. Nothing blocks merge, so self-assign if you'd like a look:

  • @PostHog/team-product-analytics (posthog/hogql_queries/insights/, posthog/hogql_queries/groups/)
  • @PostHog/team-growth (products/growth/**)
  • @PostHog/team-experiments (products/experiments/**)
  • @PostHog/team-web-analytics (posthog/models/web_preaggregated/**)

Soft owners come from CODEOWNERS-soft and each product's product.yaml. Generated files and lockfiles are ignored when deciding ownership.

@nickbest-ph nickbest-ph changed the base branch from nick/personhog-test-infra to master June 25, 2026 05:26
@nickbest-ph nickbest-ph marked this pull request as draft June 25, 2026 05:27
@posthog-project-board-bot posthog-project-board-bot Bot moved this to In Progress in Feature Flags Jun 25, 2026
@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

🕸️ Eager graph

How much code each root forces the browser to download and decode through static imports — the regression class total bundle size can't see.

Root Eager closure Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
15.15 MiB · 774 files no change ██████████ 99.3% of 15.26 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
32.34 MiB · 5,189 files no change ██████████ 99.7% of 32.42 MiB

node_modules/monaco-editor/ stays out of src/index.tsx
src/lib/components/ActivityLog/describers stays out of src/index.tsx
node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly reachable from src/index.tsx
Size File
899.9 KiB src/styles/global.scss
609.0 KiB public/hedgehog/burning-money-hog.png
541.9 KiB public/hedgehog/waving-hog.png
448.2 KiB public/hedgehog/stop-sign-hog.png
362.0 KiB public/hedgehog/phone-pair-hogs.png
355.9 KiB ../node_modules/.pnpm/@posthog+icons@0.37.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
343.0 KiB src/taxonomy/core-filter-definitions-by-group.json
335.6 KiB public/hedgehog/desk-hog.png
323.2 KiB public/hedgehog/3-bears-hogs.png
298.6 KiB src/lib/api.ts
Largest files eagerly reachable from src/scenes/AuthenticatedShell.tsx
Size File
899.9 KiB src/styles/global.scss
764.5 KiB src/queries/validators.js
609.0 KiB public/hedgehog/burning-money-hog.png
541.9 KiB public/hedgehog/waving-hog.png
448.2 KiB public/hedgehog/stop-sign-hog.png
362.0 KiB public/hedgehog/phone-pair-hogs.png
355.9 KiB ../node_modules/.pnpm/@posthog+icons@0.37.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
343.0 KiB src/taxonomy/core-filter-definitions-by-group.json
335.6 KiB public/hedgehog/desk-hog.png
323.2 KiB public/hedgehog/3-bears-hogs.png

Posted automatically by check-eager-graph · sizes are input-source bytes from the esbuild metafile · part of #32479

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 64 MB

ℹ️ View Unchanged
Filename Size
frontend/dist-report/decompression-worker/src/scenes/session-recordings/player/snapshot-processing/decompressionWorker 2.85 kB
frontend/dist-report/exporter/_chunks/chunk 2.24 MB
frontend/dist-report/exporter/_parent/products/actions/frontend/pages/Action 27.9 kB
frontend/dist-report/exporter/_parent/products/actions/frontend/pages/Actions 5.66 kB
frontend/dist-report/exporter/_parent/products/ai_gateway/frontend/AIGatewayScene 13.2 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityScene 120 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilitySessionScene 19.4 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityTraceScene 132 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityUsers 3.44 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClusterScene 21.8 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClustersScene 53.9 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetScene 20.7 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetsScene 4.07 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation 60.6 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluationsScene 32.8 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/EvaluationTemplates 671 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/LLMASessionFeedbackDisplay 4.81 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/playground/AIObservabilityPlaygroundScene 37.5 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptScene 32.8 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptsScene 5.21 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTag 32 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene 11.8 kB
frontend/dist-report/exporter/_parent/products/business_knowledge/frontend/scenes/BusinessKnowledgeScene 23.3 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/Assignee/CyclotronJobInputAssignee 1.38 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/SlaBusinessHours/CyclotronJobInputBusinessHours 2.69 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/TicketTags/CyclotronJobInputTicketTags 783 B
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/settings/SupportSettingsScene 5.73 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene 41.4 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/tickets/SupportTicketsScene 1.68 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene 100 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsConfigurationScene/CustomerAnalyticsConfigurationScene 6.48 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyBuilderScene/CustomerJourneyBuilderScene 6.33 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyTemplatesScene/CustomerJourneyTemplatesScene 9.23 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/DataWarehouseScene 32.3 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/NewSourceScene/NewSourceScene 2.88 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SchemaScene/SchemaScene 34.1 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourceConnectScene/SourceConnectScene 7 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourceScene/SourceScene 2.69 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourcesScene/SourcesScene 7.49 kB
frontend/dist-report/exporter/_parent/products/early_access_features/frontend/EarlyAccessFeature 5.54 kB
frontend/dist-report/exporter/_parent/products/early_access_features/frontend/EarlyAccessFeatures 3.73 kB
frontend/dist-report/exporter/_parent/products/endpoints/frontend/EndpointScene 47.6 kB
frontend/dist-report/exporter/_parent/products/endpoints/frontend/EndpointsScene 27.4 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsAuthorScene 5.31 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene 21.5 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/PullRequestDetailScene 20.8 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunDetailScene 6.42 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunsScene 7.94 kB
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingFingerprintsScene/ErrorTrackingIssueFingerprintsScene 7.66 kB
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingIssueScene/ErrorTrackingIssueScene 102 kB
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene 42.6 kB
frontend/dist-report/exporter/_parent/products/feature_flags/frontend/FeatureFlagTemplatesScene 6.91 kB
frontend/dist-report/exporter/_parent/products/games/368Hedgehogs/368Hedgehogs 5.24 kB
frontend/dist-report/exporter/_parent/products/games/FlappyHog/FlappyHog 5.7 kB
frontend/dist-report/exporter/_parent/products/growth/frontend/IdentityMatchingScene 35.9 kB
frontend/dist-report/exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentNewScene 60.1 kB
frontend/dist-report/exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentsScene 6.37 kB
frontend/dist-report/exporter/_parent/products/links/frontend/LinkScene 25.4 kB
frontend/dist-report/exporter/_parent/products/links/frontend/LinksScene 5.15 kB
frontend/dist-report/exporter/_parent/products/live_debugger/frontend/LiveDebugger 19.6 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/LogsScene 22.6 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsAlertDetailScene/LogsAlertDetailScene 18.5 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsAlertNotificationDetailScene/LogsAlertNotificationDetailScene 9 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsSamplingDetailScene/LogsSamplingDetailScene 6.11 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsSamplingNewScene/LogsSamplingNewScene 3.12 kB
frontend/dist-report/exporter/_parent/products/managed_migrations/frontend/ManagedMigration 15.2 kB
frontend/dist-report/exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene 109 kB
frontend/dist-report/exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsToolDetail 20.1 kB
frontend/dist-report/exporter/_parent/products/metrics/frontend/MetricsScene 18.1 kB
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/sandbox/components/tool/builtinToolRenderers 4.48 kB
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/sandbox/SandboxQuestionRenderer 1.76 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/stickiness/StickinessBarChart/StickinessBarChart 4.17 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/stickiness/StickinessLineChart/StickinessLineChart 4.05 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsBarChart/TrendsBarChart 9.6 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsLifecycleChart/TrendsLifecycleChart 5.87 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsLineChart/TrendsLineChart 5.82 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsPieChart/TrendsPieChart 5.01 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsSlopeChart/TrendsSlopeChart 2.6 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/observations/ReplayObservation 17.9 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner 41.3 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene 22.4 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene 25.2 kB
frontend/dist-report/exporter/_parent/products/revenue_analytics/frontend/revenueAnalyticsLogic 1.49 kB
frontend/dist-report/exporter/_parent/products/revenue_analytics/frontend/RevenueAnalyticsScene 29.8 kB
frontend/dist-report/exporter/_parent/products/session_summaries/frontend/SessionGroupSummariesTable 5.4 kB
frontend/dist-report/exporter/_parent/products/session_summaries/frontend/SessionGroupSummaryScene 23.3 kB
frontend/dist-report/exporter/_parent/products/skills/frontend/LLMSkillScene 1.47 kB
frontend/dist-report/exporter/_parent/products/skills/frontend/LLMSkillsScene 1.48 kB
frontend/dist-report/exporter/_parent/products/tasks/frontend/SlackTaskContextScene 9 kB
frontend/dist-report/exporter/_parent/products/tasks/frontend/TaskTracker 67.9 kB
frontend/dist-report/exporter/_parent/products/tracing/frontend/TracingScene 86.6 kB
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterview 10.8 kB
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterviewResponse 8.05 kB
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterviews 6.46 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewIndexScene 3 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunScene 47.2 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunsScene 8.23 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSettingsScene 11.6 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotHistoryScene 14.3 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotOverviewScene 19.8 kB
frontend/dist-report/exporter/_parent/products/workflows/frontend/TemplateLibrary/MessageTemplate 17 kB
frontend/dist-report/exporter/_parent/products/workflows/frontend/Workflows/WorkflowScene 113 kB
frontend/dist-report/exporter/_parent/products/workflows/frontend/WorkflowsScene 61.4 kB
frontend/dist-report/exporter/src/exporter/exporter 25.9 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterDashboardScene 6.64 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterHeatmapScene 20.1 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterInsightScene 7.21 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterInterviewScene 310 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterNotebookScene 2.9 MB
frontend/dist-report/exporter/src/exporter/scenes/ExporterRecordingScene 5.59 kB
frontend/dist-report/exporter/src/exporterSharedChunkAnchors 1.26 kB
frontend/dist-report/exporter/src/lib/components/ActivityLog/describers 129 kB
frontend/dist-report/exporter/src/lib/components/Cards/TextCard/TextCardMarkdownEditor 10.6 kB
frontend/dist-report/exporter/src/lib/components/MonacoDiffEditor 533 B
frontend/dist-report/exporter/src/lib/lemon-ui/LemonMarkdown/MermaidDiagram 2 kB
frontend/dist-report/exporter/src/lib/lemon-ui/LemonTextArea/LemonTextAreaMarkdown 790 B
frontend/dist-report/exporter/src/lib/lemon-ui/Link/Link 415 B
frontend/dist-report/exporter/src/lib/monaco/CodeEditor 448 B
frontend/dist-report/exporter/src/lib/monaco/CodeEditorImpl 26.5 kB
frontend/dist-report/exporter/src/lib/monaco/CodeEditorInline 649 B
frontend/dist-report/exporter/src/lib/monaco/vimMode 211 kB
frontend/dist-report/exporter/src/lib/ui/Button/ButtonPrimitives 482 B
frontend/dist-report/exporter/src/queries/nodes/WebVitals/WebVitals 11.5 kB
frontend/dist-report/exporter/src/queries/nodes/WebVitals/WebVitalsPathBreakdown 4.76 kB
frontend/dist-report/exporter/src/queries/Query/Query 5.08 kB
frontend/dist-report/exporter/src/queries/schema 955 kB
frontend/dist-report/exporter/src/scenes/approvals/changeRequestsLogic 622 B
frontend/dist-report/exporter/src/scenes/authentication/login/loginLogic 569 B
frontend/dist-report/exporter/src/scenes/authentication/shared/passkeyLogic 602 B
frontend/dist-report/exporter/src/scenes/data-pipelines/event-filtering/EventFilterScene 22.8 kB
frontend/dist-report/exporter/src/scenes/data-pipelines/TransformationsScene 8.09 kB
frontend/dist-report/exporter/src/scenes/experiments/notebook/NotebookCompactTable 1.54 kB
frontend/dist-report/exporter/src/scenes/hog-functions/misc/Diff 1.35 kB
frontend/dist-report/exporter/src/scenes/insights/views/BoxPlot/BoxPlot 4.49 kB
frontend/dist-report/exporter/src/scenes/insights/views/CalendarHeatMap/CalendarHeatMap 8.88 kB
frontend/dist-report/exporter/src/scenes/insights/views/RegionMap/RegionMap 30.3 kB
frontend/dist-report/exporter/src/scenes/insights/views/WorldMap/WorldMap 1.04 MB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/CreateInsightWidget 5.73 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/CreateNotebookWidget 1.8 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/EditDiffRenderer 3.23 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/ErrorTrackingWidget 5.55 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/QueryWidget 5.67 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/SearchSessionRecordingsWidget 5.58 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/UpsertDashboardWidget 1.61 kB
frontend/dist-report/exporter/src/scenes/models/ModelsScene 20 kB
frontend/dist-report/exporter/src/scenes/models/NodeDetailScene 19 kB
frontend/dist-report/monaco-editor-worker/src/lib/monaco/workers/monacoEditorWorker 288 kB
frontend/dist-report/monaco-json-worker/src/lib/monaco/workers/monacoJsonWorker 419 kB
frontend/dist-report/monaco-typescript-worker/src/lib/monaco/workers/monacoTsWorker 7.02 MB
frontend/dist-report/posthog-app/_chunks/chunk 2.61 MB
frontend/dist-report/posthog-app/_parent/products/actions/frontend/pages/Action 29.3 kB
frontend/dist-report/posthog-app/_parent/products/actions/frontend/pages/Actions 6.95 kB
frontend/dist-report/posthog-app/_parent/products/ai_gateway/frontend/AIGatewayScene 13.7 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityScene 122 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilitySessionScene 19.9 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityTraceScene 133 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityUsers 4.23 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/clusters/AIObservabilityClusterScene 22.3 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/clusters/AIObservabilityClustersScene 54.4 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetScene 21.2 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetsScene 4.54 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation 61.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluationsScene 34.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/EvaluationTemplates 671 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/LLMASessionFeedbackDisplay 4.81 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/playground/AIObservabilityPlaygroundScene 38.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/prompts/LLMPromptScene 34.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/prompts/LLMPromptsScene 5.69 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTag 33.2 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene 13 kB
frontend/dist-report/posthog-app/_parent/products/business_knowledge/frontend/scenes/BusinessKnowledgeScene 23.8 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/Assignee/CyclotronJobInputAssignee 1.38 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/SlaBusinessHours/CyclotronJobInputBusinessHours 2.7 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/TicketTags/CyclotronJobInputTicketTags 783 B
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/settings/SupportSettingsScene 7.77 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene 35.2 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/tickets/SupportTicketsScene 2.15 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene 100 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsConfigurationScene/CustomerAnalyticsConfigurationScene 8.52 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyBuilderScene/CustomerJourneyBuilderScene 7.58 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyTemplatesScene/CustomerJourneyTemplatesScene 10 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/DataWarehouseScene 2.04 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/NewSourceScene/NewSourceScene 3.66 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SchemaScene/SchemaScene 34.6 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourceConnectScene/SourceConnectScene 7.71 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourceScene/SourceScene 3.37 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourcesScene/SourcesScene 8.1 kB
frontend/dist-report/posthog-app/_parent/products/early_access_features/frontend/EarlyAccessFeature 6.97 kB
frontend/dist-report/posthog-app/_parent/products/early_access_features/frontend/EarlyAccessFeatures 4.21 kB
frontend/dist-report/posthog-app/_parent/products/endpoints/frontend/EndpointScene 48.9 kB
frontend/dist-report/posthog-app/_parent/products/endpoints/frontend/EndpointsScene 26.7 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsAuthorScene 5.79 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene 22 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/PullRequestDetailScene 21.3 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunDetailScene 6.89 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunsScene 8.42 kB
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingFingerprintsScene/ErrorTrackingIssueFingerprintsScene 8.17 kB
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingIssueScene/ErrorTrackingIssueScene 103 kB
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene 44.9 kB
frontend/dist-report/posthog-app/_parent/products/feature_flags/frontend/FeatureFlagTemplatesScene 6.92 kB
frontend/dist-report/posthog-app/_parent/products/games/368Hedgehogs/368Hedgehogs 5.24 kB
frontend/dist-report/posthog-app/_parent/products/games/FlappyHog/FlappyHog 5.7 kB
frontend/dist-report/posthog-app/_parent/products/growth/frontend/IdentityMatchingScene 36.3 kB
frontend/dist-report/posthog-app/_parent/products/legal_documents/frontend/scenes/LegalDocumentNewScene 60.6 kB
frontend/dist-report/posthog-app/_parent/products/legal_documents/frontend/scenes/LegalDocumentsScene 6.84 kB
frontend/dist-report/posthog-app/_parent/products/links/frontend/LinkScene 25.9 kB
frontend/dist-report/posthog-app/_parent/products/links/frontend/LinksScene 5.63 kB
frontend/dist-report/posthog-app/_parent/products/live_debugger/frontend/LiveDebugger 20 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/components/LogsViewer/LogsViewerModal/LogsViewerModal 2.41 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/LogsScene 23.8 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsAlertDetailScene/LogsAlertDetailScene 19.1 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsAlertNotificationDetailScene/LogsAlertNotificationDetailScene 9.54 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsSamplingDetailScene/LogsSamplingDetailScene 6.59 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsSamplingNewScene/LogsSamplingNewScene 3.6 kB
frontend/dist-report/posthog-app/_parent/products/managed_migrations/frontend/ManagedMigration 15.7 kB
frontend/dist-report/posthog-app/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene 110 kB
frontend/dist-report/posthog-app/_parent/products/mcp_analytics/frontend/MCPAnalyticsToolDetail 20.6 kB
frontend/dist-report/posthog-app/_parent/products/metrics/frontend/MetricsScene 18.9 kB
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/sandbox/components/tool/builtinToolRenderers 4.48 kB
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/sandbox/SandboxQuestionRenderer 1.76 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/stickiness/StickinessBarChart/StickinessBarChart 4.62 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/stickiness/StickinessLineChart/StickinessLineChart 4.5 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsBarChart/TrendsBarChart 10 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsLifecycleChart/TrendsLifecycleChart 6.31 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsLineChart/TrendsLineChart 6.27 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsPieChart/TrendsPieChart 5.45 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsSlopeChart/TrendsSlopeChart 3 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/observations/ReplayObservation 20 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner 42.6 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene 23.6 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene 25.7 kB
frontend/dist-report/posthog-app/_parent/products/revenue_analytics/frontend/revenueAnalyticsLogic 1.86 kB
frontend/dist-report/posthog-app/_parent/products/revenue_analytics/frontend/RevenueAnalyticsScene 31.1 kB
frontend/dist-report/posthog-app/_parent/products/session_summaries/frontend/SessionGroupSummariesTable 5.88 kB
frontend/dist-report/posthog-app/_parent/products/session_summaries/frontend/SessionGroupSummaryScene 25.3 kB
frontend/dist-report/posthog-app/_parent/products/skills/frontend/LLMSkillScene 1.94 kB
frontend/dist-report/posthog-app/_parent/products/skills/frontend/LLMSkillsScene 1.96 kB
frontend/dist-report/posthog-app/_parent/products/tasks/frontend/SlackTaskContextScene 9.47 kB
frontend/dist-report/posthog-app/_parent/products/tasks/frontend/TaskTracker 27.5 kB
frontend/dist-report/posthog-app/_parent/products/tracing/frontend/TracingScene 87.1 kB
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterview 10.8 kB
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterviewResponse 8.52 kB
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterviews 6.94 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewIndexScene 3.48 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewRunScene 47.7 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewRunsScene 8.71 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSettingsScene 12.1 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotHistoryScene 14.7 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotOverviewScene 20.3 kB
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/TemplateLibrary/MessageTemplate 17.6 kB
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/Workflows/WorkflowScene 107 kB
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/WorkflowsScene 62.5 kB
frontend/dist-report/posthog-app/src/index 62.5 kB
frontend/dist-report/posthog-app/src/layout/panel-layout/ai-first/tabs/NavTabChat 7.89 kB
frontend/dist-report/posthog-app/src/lib/components/ActivityLog/describers 130 kB
frontend/dist-report/posthog-app/src/lib/components/Cards/TextCard/TextCardMarkdownEditor 10.6 kB
frontend/dist-report/posthog-app/src/lib/components/MonacoDiffEditor 533 B
frontend/dist-report/posthog-app/src/lib/components/Shortcuts/utils/DebugCHQueriesImpl 20.1 kB
frontend/dist-report/posthog-app/src/lib/components/Support/supportRouterLogic 1.56 kB
frontend/dist-report/posthog-app/src/lib/lemon-ui/LemonMarkdown/MermaidDiagram 2 kB
frontend/dist-report/posthog-app/src/lib/lemon-ui/LemonTextArea/LemonTextAreaMarkdown 790 B
frontend/dist-report/posthog-app/src/lib/lemon-ui/Link/Link 415 B
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditor 448 B
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditorImpl 26.5 kB
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditorInline 649 B
frontend/dist-report/posthog-app/src/lib/monaco/vimMode 211 kB
frontend/dist-report/posthog-app/src/lib/ui/Button/ButtonPrimitives 482 B
frontend/dist-report/posthog-app/src/queries/nodes/WebVitals/WebVitals 12.7 kB
frontend/dist-report/posthog-app/src/queries/nodes/WebVitals/WebVitalsPathBreakdown 5.13 kB
frontend/dist-report/posthog-app/src/queries/Query/Query 6.34 kB
frontend/dist-report/posthog-app/src/queries/schema 955 kB
frontend/dist-report/posthog-app/src/scenes/activity/explore/EventsScene 8.51 kB
frontend/dist-report/posthog-app/src/scenes/activity/explore/SessionsScene 9.85 kB
frontend/dist-report/posthog-app/src/scenes/activity/live/LiveEventsTable 6.58 kB
frontend/dist-report/posthog-app/src/scenes/agentic/AgenticAuthorize 5.51 kB
frontend/dist-report/posthog-app/src/scenes/approvals/ApprovalDetail 17.7 kB
frontend/dist-report/posthog-app/src/scenes/approvals/changeRequestsLogic 622 B
frontend/dist-report/posthog-app/src/scenes/audit-logs/AdvancedActivityLogsScene 43 kB
frontend/dist-report/posthog-app/src/scenes/AuthenticatedShell 207 kB
frontend/dist-report/posthog-app/src/scenes/authentication/account/AccountConnected 3.32 kB
frontend/dist-report/posthog-app/src/scenes/authentication/account/AgenticAccountMismatch 2.43 kB
frontend/dist-report/posthog-app/src/scenes/authentication/account/credential-review/CredentialReview 5.04 kB
frontend/dist-report/posthog-app/src/scenes/authentication/cli/CLIAuthorize 12.1 kB
frontend/dist-report/posthog-app/src/scenes/authentication/cli/CLILive 4.05 kB
frontend/dist-report/posthog-app/src/scenes/authentication/email-mfa-verify/EmailMFAVerify 3.04 kB
frontend/dist-report/posthog-app/src/scenes/authentication/invite-signup/InviteSignup 1.44 kB
frontend/dist-report/posthog-app/src/scenes/authentication/login-2fa/Login2FA 4.74 kB
frontend/dist-report/posthog-app/src/scenes/authentication/login/Login 1.42 kB
frontend/dist-report/posthog-app/src/scenes/authentication/login/loginLogic 569 B
frontend/dist-report/posthog-app/src/scenes/authentication/password-reset/PasswordReset 4.5 kB
frontend/dist-report/posthog-app/src/scenes/authentication/password-reset/PasswordResetComplete 3.06 kB
frontend/dist-report/posthog-app/src/scenes/authentication/shared/passkeyLogic 602 B
frontend/dist-report/posthog-app/src/scenes/authentication/signup/SignupContainer 1.42 kB
frontend/dist-report/posthog-app/src/scenes/authentication/two-factor-reset/TwoFactorReset 4.04 kB
frontend/dist-report/posthog-app/src/scenes/authentication/vercel/VercelConnect 5.03 kB
frontend/dist-report/posthog-app/src/scenes/authentication/vercel/VercelLinkError 2.3 kB
frontend/dist-report/posthog-app/src/scenes/authentication/verify-email/VerifyEmail 1.44 kB
frontend/dist-report/posthog-app/src/scenes/billing/AuthorizationStatus 768 B
frontend/dist-report/posthog-app/src/scenes/billing/Billing 717 B
frontend/dist-report/posthog-app/src/scenes/billing/BillingSection 21.7 kB
frontend/dist-report/posthog-app/src/scenes/code-canvas/CodeCanvasLink 1.89 kB
frontend/dist-report/posthog-app/src/scenes/cohorts/Cohort 33.9 kB
frontend/dist-report/posthog-app/src/scenes/cohorts/CohortCalculationHistory 7.3 kB
frontend/dist-report/posthog-app/src/scenes/cohorts/Cohorts 11 kB
frontend/dist-report/posthog-app/src/scenes/coupons/Coupons 895 B
frontend/dist-report/posthog-app/src/scenes/dashboard/Dashboard 7.76 kB
frontend/dist-report/posthog-app/src/scenes/dashboard/dashboards/Dashboards 22.6 kB
frontend/dist-report/posthog-app/src/scenes/dashboard/dashboards/templates/DashboardTemplateCopyScene 7.02 kB
frontend/dist-report/posthog-app/src/scenes/data-management/DataManagementScene 6.65 kB
frontend/dist-report/posthog-app/src/scenes/data-management/definition/DefinitionEdit 23.3 kB
frontend/dist-report/posthog-app/src/scenes/data-management/definition/DefinitionView 31.5 kB
frontend/dist-report/posthog-app/src/scenes/data-management/MaterializedColumns/MaterializedColumns 12.8 kB
frontend/dist-report/posthog-app/src/scenes/data-management/variables/SqlVariableEditScene 8.5 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/batch-exports/BatchExportScene 67.8 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/DataPipelinesNewScene 5.25 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/DestinationsScene 5.68 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/event-filtering/EventFilterScene 23.3 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/legacy-plugins/LegacyPluginScene 22 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/TransformationsScene 4.88 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/WebScriptsScene 5.54 kB
frontend/dist-report/posthog-app/src/scenes/data-warehouse/DataWarehouseScene 2.02 kB
frontend/dist-report/posthog-app/src/scenes/data-warehouse/editor/EditorScene 4.91 kB
frontend/dist-report/posthog-app/src/scenes/debug/DebugScene 25.3 kB
frontend/dist-report/posthog-app/src/scenes/debug/hog/HogRepl 8.95 kB
frontend/dist-report/posthog-app/src/scenes/experiments/Experiment 227 kB
frontend/dist-report/posthog-app/src/scenes/experiments/Experiments 23.3 kB
frontend/dist-report/posthog-app/src/scenes/experiments/notebook/NotebookCompactTable 1.98 kB
frontend/dist-report/posthog-app/src/scenes/experiments/SharedMetrics/SharedMetric 12.3 kB
frontend/dist-report/posthog-app/src/scenes/experiments/SharedMetrics/SharedMetrics 1.81 kB
frontend/dist-report/posthog-app/src/scenes/exports/ExportsScene 5.53 kB
frontend/dist-report/posthog-app/src/scenes/feature-flags/FeatureFlag 117 kB
frontend/dist-report/posthog-app/src/scenes/feature-flags/FeatureFlags 3.9 kB
frontend/dist-report/posthog-app/src/scenes/groups/Group 23.5 kB
frontend/dist-report/posthog-app/src/scenes/groups/Groups 9.48 kB
frontend/dist-report/posthog-app/src/scenes/groups/GroupsNew 8.59 kB
frontend/dist-report/posthog-app/src/scenes/health-alerts/HealthAlertsScene 6.38 kB
frontend/dist-report/posthog-app/src/scenes/health/categoryDetail/HealthCategoryDetailScene 13.2 kB
frontend/dist-report/posthog-app/src/scenes/health/HealthScene 17.1 kB
frontend/dist-report/posthog-app/src/scenes/health/pipelineStatus/PipelineStatusScene 12.2 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapNewScene 5.15 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapRecordingScene 5.15 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapScene 7.87 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmaps/HeatmapsScene 5.16 kB
frontend/dist-report/posthog-app/src/scenes/hog-functions/HogFunctionScene 60.6 kB
frontend/dist-report/posthog-app/src/scenes/hog-functions/misc/Diff 1.35 kB
frontend/dist-report/posthog-app/src/scenes/inbox/InboxScene 223 kB
frontend/dist-report/posthog-app/src/scenes/insights/InsightQuickStart/InsightQuickStart 8.16 kB
frontend/dist-report/posthog-app/src/scenes/insights/InsightScene 41.2 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/BoxPlot/BoxPlot 4.93 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/CalendarHeatMap/CalendarHeatMap 9.26 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/RegionMap/RegionMap 30.7 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/WorldMap/WorldMap 6.1 kB
frontend/dist-report/posthog-app/src/scenes/instance/AsyncMigrations/AsyncMigrations 14.3 kB
frontend/dist-report/posthog-app/src/scenes/instance/DeadLetterQueue/DeadLetterQueue 6.65 kB
frontend/dist-report/posthog-app/src/scenes/instance/QueryPerformance/QueryPerformance 12.4 kB
frontend/dist-report/posthog-app/src/scenes/instance/SystemStatus/SystemStatus 18.1 kB
frontend/dist-report/posthog-app/src/scenes/integrations/IntegrationsLandingScene 1.67 kB
frontend/dist-report/posthog-app/src/scenes/IntegrationsRedirect/IntegrationsRedirect 955 B
frontend/dist-report/posthog-app/src/scenes/marketing-analytics/MarketingAnalyticsScene 46.8 kB
frontend/dist-report/posthog-app/src/scenes/max/Max 20.5 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/CreateInsightWidget 6.99 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/CreateNotebookWidget 1.8 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/EditDiffRenderer 3.23 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/ErrorTrackingWidget 7.56 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/QueryWidget 6.93 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/SearchSessionRecordingsWidget 7.58 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/UpsertDashboardWidget 1.61 kB
frontend/dist-report/posthog-app/src/scenes/models/ModelsScene 20.5 kB
frontend/dist-report/posthog-app/src/scenes/models/NodeDetailScene 19.8 kB
frontend/dist-report/posthog-app/src/scenes/moveToPostHogCloud/MoveToPostHogCloud 4.5 kB
frontend/dist-report/posthog-app/src/scenes/new-tab/NewTabScene 2.76 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookCanvasScene 12.3 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookPanel/NotebookPanel 14.3 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookScene 18 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebooksScene 8.69 kB
frontend/dist-report/posthog-app/src/scenes/oauth/OAuthAuthorize 810 B
frontend/dist-report/posthog-app/src/scenes/onboarding/legacy/coupon/OnboardingCouponRedemption 1.34 kB
frontend/dist-report/posthog-app/src/scenes/onboarding/Onboarding 785 kB
frontend/dist-report/posthog-app/src/scenes/onboarding/shared/sdkHealth/SdkHealthScene 9.04 kB
frontend/dist-report/posthog-app/src/scenes/organization/ConfirmOrganization/ConfirmOrganization 4.5 kB
frontend/dist-report/posthog-app/src/scenes/organization/Create/Create 704 B
frontend/dist-report/posthog-app/src/scenes/organization/Deactivated 1.17 kB
frontend/dist-report/posthog-app/src/scenes/organization/PendingDeletion 2.24 kB
frontend/dist-report/posthog-app/src/scenes/persons/PersonScene 28.4 kB
frontend/dist-report/posthog-app/src/scenes/persons/PersonsScene 11.7 kB
frontend/dist-report/posthog-app/src/scenes/PreflightCheck/PreflightCheck 5.57 kB
frontend/dist-report/posthog-app/src/scenes/product-tours/ProductTour 273 kB
frontend/dist-report/posthog-app/src/scenes/product-tours/ProductTours 5.97 kB
frontend/dist-report/posthog-app/src/scenes/project-homepage/ProjectHomepage 27.2 kB
frontend/dist-report/posthog-app/src/scenes/project/Create/Create 982 B
frontend/dist-report/posthog-app/src/scenes/project/PendingDeletion 2.6 kB
frontend/dist-report/posthog-app/src/scenes/resource-transfer/ResourceTransfer 10.5 kB
frontend/dist-report/posthog-app/src/scenes/saved-insights/SavedInsights 3.47 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/detail/SessionRecordingDetail 8.55 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/file-playback/SessionRecordingFilePlaybackScene 11.2 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/kiosk/SessionRecordingsKiosk 16.6 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/player/modal/SessionPlayerModal 8.26 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/player/snapshot-processing/DecompressionWorkerManager 323 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/playlist/SessionRecordingsPlaylistScene 11.7 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/SessionRecordings 7.68 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/settings/SessionRecordingsSettingsScene 8.88 kB
frontend/dist-report/posthog-app/src/scenes/sessions/SessionProfileScene 21.8 kB
frontend/dist-report/posthog-app/src/scenes/settings/SettingsMap 6.66 kB
frontend/dist-report/posthog-app/src/scenes/settings/SettingsScene 9.96 kB
frontend/dist-report/posthog-app/src/scenes/sites/Site 1.57 kB
frontend/dist-report/posthog-app/src/scenes/startups/StartupProgram 21.1 kB
frontend/dist-report/posthog-app/src/scenes/StripeConfirmInstall/StripeConfirmInstall 3.7 kB
frontend/dist-report/posthog-app/src/scenes/subscriptions/SubscriptionScene 17.5 kB
frontend/dist-report/posthog-app/src/scenes/subscriptions/SubscriptionsScene 7.02 kB
frontend/dist-report/posthog-app/src/scenes/surveys/forms/SurveyFormBuilder 3.02 kB
frontend/dist-report/posthog-app/src/scenes/surveys/Survey 7.48 kB
frontend/dist-report/posthog-app/src/scenes/surveys/Surveys 27.7 kB
frontend/dist-report/posthog-app/src/scenes/surveys/wizard/SurveyWizard 69.7 kB
frontend/dist-report/posthog-app/src/scenes/themes/CustomCssScene 4.91 kB
frontend/dist-report/posthog-app/src/scenes/toolbar-launch/ToolbarLaunch 3.97 kB
frontend/dist-report/posthog-app/src/scenes/Unsubscribe/Unsubscribe 1.71 kB
frontend/dist-report/posthog-app/src/scenes/web-analytics/SessionAttributionExplorer/SessionAttributionExplorerScene 12.3 kB
frontend/dist-report/posthog-app/src/scenes/web-analytics/WebAnalyticsScene 20.8 kB
frontend/dist-report/posthog-app/src/scenes/wizard/Wizard 4.45 kB
frontend/dist-report/posthog-app/src/sharedChunkAnchors 1.33 kB
frontend/dist-report/render-query/src/render-query/render-query 24.9 MB
frontend/dist-report/toolbar/src/toolbar/toolbar 11.3 MB

compressed-size-action

@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

✅ Hobby deploy smoke test: PASSED

Hobby deployment smoke test passed successfully.


Run 28206431260

@nickbest-ph nickbest-ph changed the base branch from master to nick/personhog-test-infra June 25, 2026 17:16
@nickbest-ph nickbest-ph force-pushed the nick/rm-personhog-orm-fallback branch from e59f1bf to 4442cf5 Compare June 25, 2026 17:26
@nickbest-ph nickbest-ph force-pushed the nick/personhog-test-infra branch from c7372bd to 8b9ff7b Compare June 25, 2026 18:37
claude added 4 commits June 25, 2026 21:32
…kflow test

fake_personhog_client no longer takes gate_enabled (the gate is removed); update
the delete-persons workflow test calls to the no-arg form.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QcrQWDC88oyojMLDuyR7tM
Address review feedback: state the rule directly ("all calls must route through
the personhog gRPC service") instead of referencing the now-removed ORM fallback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QcrQWDC88oyojMLDuyR7tM
…rebase

master's demo refactor routes persons-DB writes through persons_db_sync
(raw psycopg, decoupled from Django), so the @allow_persons_orm()
decorators on the demo manager are now no-ops. Also reword the stale
"before falling back to ORM" retry comment since there is no fallback.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QcrQWDC88oyojMLDuyR7tM
The identity-matching test referenced the deleted personhog_client.gate
module and seeded persons via the ORM. Convert it to create_person and
teach the fake's add_person to carry last_seen_at (the proto and the
proto->model converter already supported it), so person resolution reads
the seeded last_seen_at through personhog.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QcrQWDC88oyojMLDuyR7tM
@nickbest-ph nickbest-ph force-pushed the nick/rm-personhog-orm-fallback branch from 16b1cb5 to b83fe62 Compare June 25, 2026 21:49
Comment thread posthog/api/test/test_person.py Outdated
)
assert response.status_code == status.HTTP_202_ACCEPTED

# Verify: PG distinct_id version was bumped

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why drop the version assertions?

Comment thread conftest.py

# Tests that operate on the persons DB directly (not as person-data consumers) and
# so must NOT have the personhog fake / ORM block active.
_PERSONS_DB_DIRECT_TEST_PATHS = (

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this can be brittle if tests change - might be safer to use something like a @pytest.mark.persons_db_direct marker

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, maybe this whole nasty block can just be removed. working on it.

@z0br0wn z0br0wn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all in all lgtm! stoked to get this in. had some small comments, but gonna +1 in advance. a few things though:

  • it might be worth bumping the retry count and adding UNKNOWN to our retried error types - or at least seeing how ofter we've been falling back to orm. it'd be a bummer to be returning 5xxs on pure transient issues.
  • claude gets a little trigger happy with deleting test assertions and code comments, worth another pass to make sure we're not introducing any coverage regressions

@github-project-automation github-project-automation Bot moved this from In Progress to Approved in Feature Flags Jun 25, 2026
@nickbest-ph nickbest-ph marked this pull request as ready for review June 25, 2026 22:01
@assign-reviewers-posthog assign-reviewers-posthog Bot requested review from a team, TueHaulund, arnohillen, fasyy612 and ksvat and removed request for a team June 25, 2026 22:01
@posthog-project-board-bot posthog-project-board-bot Bot moved this from Approved to In Review in Feature Flags Jun 25, 2026
@greptile-apps

greptile-apps Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "chore(personhog): support last_seen_at i..." | Re-trigger Greptile

Comment on lines +41 to 49
fake = FakePersonHogClient()
set_active_fake(fake)
with (
patch("posthog.personhog_client.client.get_personhog_client", return_value=fake),
patch("posthog.personhog_client.gate.use_personhog", return_value=True),
):
block_persons_orm()
with patch("posthog.personhog_client.client.get_personhog_client", return_value=fake):
try:
yield fake
finally:
unblock_persons_orm()
set_active_fake(None)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 block_persons_orm() is called before the with patch(...) scope, but unblock_persons_orm() is inside it. If patch().__enter__() ever raises (e.g. the target attribute can't be found), the thread-local ORM block will remain set for all subsequent tests on the same thread, causing spurious PersonsDBORMBlockedError failures. Moving the cleanup into an outer try/finally makes the setup and teardown symmetric.

Suggested change
fake = FakePersonHogClient()
set_active_fake(fake)
with (
patch("posthog.personhog_client.client.get_personhog_client", return_value=fake),
patch("posthog.personhog_client.gate.use_personhog", return_value=True),
):
block_persons_orm()
with patch("posthog.personhog_client.client.get_personhog_client", return_value=fake):
try:
yield fake
finally:
unblock_persons_orm()
set_active_fake(None)
fake = FakePersonHogClient()
set_active_fake(fake)
block_persons_orm()
try:
with patch("posthog.personhog_client.client.get_personhog_client", return_value=fake):
yield fake
finally:
unblock_persons_orm()
set_active_fake(None)

Comment on lines 284 to +295
def _personhog_routed(
operation: str,
personhog_fn: Callable[[], _T],
orm_fn: Callable[[], _T],
*,
team_id: int,
) -> _T:
"""Try personhog first, fall back to ORM on failure or when disabled.
"""Call personhog and record the routing metric.

Handles gate check, metrics, and error logging for all personhog routing.
personhog is the sole read path — there is no ORM fallback. Errors propagate
to the caller (the gRPC client handles its own transient-error retries).
"""
from posthog.personhog_client.gate import use_personhog

if use_personhog():
try:
result = personhog_fn()
PERSONHOG_ROUTING_TOTAL.labels(operation=operation, source="personhog", client_name=get_client_name()).inc()
return result
except Exception:
PERSONHOG_ROUTING_ERRORS_TOTAL.labels(
operation=operation,
source="personhog",
error_type="grpc_error",
client_name=get_client_name(),
).inc()
logger.warning("personhog_%s_failure", operation, team_id=team_id, exc_info=True)

PERSONHOG_ROUTING_TOTAL.labels(operation=operation, source="django_orm", client_name=get_client_name()).inc()
return orm_fn()
result = personhog_fn()
PERSONHOG_ROUTING_TOTAL.labels(operation=operation, source="personhog", client_name=get_client_name()).inc()
return result

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Error metric gap vs. group_type_mapping path

When personhog_fn() raises, this function propagates the exception without incrementing any metric, so PERSONHOG_ROUTING_ERRORS_TOTAL is never touched for person reads. group_type_mapping._personhog_routed() still increments PERSONHOG_ROUTING_ERRORS_TOTAL on failure. The asymmetry means a personhog degradation affecting person reads is invisible to dashboards that watch that counter, while a group-type degradation is still visible.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@tests-posthog

tests-posthog Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Query snapshots: Backend query snapshots updated

Changes: 1 snapshots (1 modified, 0 added, 0 deleted)

What this means:

  • Query snapshots have been automatically updated to match current output
  • These changes reflect modifications to database queries or schema

Next steps:

  • Review the query changes to ensure they're intentional
  • If unexpected, investigate what caused the query to change

Review snapshot changes →

@nickbest-ph nickbest-ph force-pushed the nick/rm-personhog-orm-fallback branch from 7ad551b to 6856d6e Compare June 25, 2026 22:40
@tests-posthog

tests-posthog Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Query snapshots: Backend query snapshots updated

Changes: 1 snapshots (1 modified, 0 added, 0 deleted)

What this means:

  • Query snapshots have been automatically updated to match current output
  • These changes reflect modifications to database queries or schema

Next steps:

  • Review the query changes to ensure they're intentional
  • If unexpected, investigate what caused the query to change

Review snapshot changes →

The endpoint issues 9 framework/auth queries on the default DB; person
reads route through personhog (uncounted), so the count is unchanged from
the original 9. Corrects the assertNumQueries(7) over-estimate that was
failing the Core shard.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QcrQWDC88oyojMLDuyR7tM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

3 participants