Skip to content

chore(devex): move alert and action models to product folders#59224

Merged
webjunkie merged 11 commits into
masterfrom
chore/move-alerts-actions-to-product
May 21, 2026
Merged

chore(devex): move alert and action models to product folders#59224
webjunkie merged 11 commits into
masterfrom
chore/move-alerts-actions-to-product

Conversation

@webjunkie
Copy link
Copy Markdown
Contributor

Problem

Alert and action models still live in posthog/models/ causing migration conflicts for the analytics platform team. Both teams confirmed the target assignments in March 2026.

Changes

Moves 7 Django models into their product backends using SeparateDatabaseAndState (no DB changes, tables keep their posthog_ prefix):

  • alerts (5 models): Alert, Threshold, AlertConfiguration, AlertSubscription, AlertCheck → products/alerts/backend/models/
  • actions (2 models): Action, ActionStep + util → products/actions/backend/models/

Cross-app FK re-pointing: PluginConfig.match_action, TaggedItem.action, Survey.actions now reference the new app labels. ContentType rows updated via RunPython. File system registration updated for actions.

~195 files touched, almost entirely mechanical import rewrites.

How did you test this code?

  • manage.py migrate --plan validates clean
  • ruff lint + format pass
  • No stale imports remain (rg "from posthog.models.alert\|from posthog.models.action" returns nothing)

🤖 Agent context

Co-authored with Claude Code. Used the product-model-migration skill (move_scanner.py, import_rewriter.py, migrate_phased.py) for file moves, import rewrites, and FK fixes. Manual steps: apps.py creation, INSTALLED_APPS registration, SeparateDatabaseAndState migration wrapping, ContentType update functions, cross-app FK fixes (PluginConfig, TaggedItem, file_system registrations), and barrel import cleanup (second rewriter pass with posthog.models symbol_remap).

Move 7 Django models out of posthog/models/ into their respective
product backends as part of the ongoing product isolation effort.

alerts (5 models): Alert, Threshold, AlertConfiguration,
AlertSubscription, AlertCheck → products/alerts/backend/models/

actions (2 models): Action, ActionStep + util →
products/actions/backend/models/

State-only migrations with SeparateDatabaseAndState — no DB changes,
tables keep their posthog_ prefix via explicit db_table. ContentType
rows updated via RunPython. Cross-app FKs (PluginConfig.match_action,
TaggedItem.action, Survey.actions) re-pointed to the new app labels.

Both teams confirmed these assignments (analytics platform, March 2026).
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 20, 2026

🎭 Playwright didn't run on this PR — your changes touch code that could affect E2E behavior, but Playwright is opt-in via label now to keep CI cost down.

Add the run-playwright label if you want an E2E sweep before merging — CI will pick it up automatically.

Most PRs don't need this. Real regressions still get caught on master and fix-forward.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 20, 2026

Migration SQL Changes

Hey 👋, we've detected some migrations on this PR. Here's the SQL output for each migration, make sure they make sense:

posthog/migrations/1168_migrate_alerts_actions_models.py

BEGIN;
--
-- Custom state/database change combination
--
-- (no-op)
--
-- Raw Python operation
--
-- THIS OPERATION CANNOT BE WRITTEN AS SQL
COMMIT;

products/actions/backend/migrations/0001_migrate_actions_models.py

BEGIN;
--
-- Custom state/database change combination
--
-- (no-op)
COMMIT;

products/alerts/backend/migrations/0001_migrate_models.py

BEGIN;
--
-- Custom state/database change combination
--
-- (no-op)
COMMIT;

products/surveys/backend/migrations/0002_action_fk_repoint.py

BEGIN;
--
-- Custom state/database change combination
--
-- (no-op)
COMMIT;

Last updated: 2026-05-21 12:09 UTC (85f187e)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 20, 2026

🔍 Migration Risk Analysis

We've analyzed your migrations for potential risks.

Summary: 3 Safe | 1 Needs Review | 0 Blocked

⚠️ Needs Review

May have performance impact

posthog.1168_migrate_alerts_actions_models
  └─ #1 ✅ SeparateDatabaseAndState: Only state operations (no database changes)
  └─ #2 ⚠️ RunPython: RunPython data migration needs review for performance

✅ Safe

Brief or no lock, backwards compatible

actions.0001_migrate_actions_models
  └─ #1 ✅ SeparateDatabaseAndState: Only state operations (no database changes)
alerts.0001_migrate_models
  └─ #1 ✅ SeparateDatabaseAndState: Only state operations (no database changes)
surveys.0002_action_fk_repoint
  └─ #1 ✅ SeparateDatabaseAndState: Only state operations (no database changes)

📚 How to Deploy These Changes Safely

RunPython:

Use batching for large data migrations:

  • Use .iterator() to avoid loading all rows into memory
  • Use .bulk_update() instead of saving individual objects
  • Batch size: 1,000-10,000 rows per batch
  • Add pauses between batches
  • Consider background jobs for very large updates (millions of rows)

See the migration safety guide

Last updated: 2026-05-21 12:10 UTC (85f187e)

webjunkie added 8 commits May 20, 2026 18:08
Move API viewsets, serializers, and tests alongside their models:

- posthog/api/alert.py, alert_schedule_restriction.py →
  products/alerts/backend/api/
- posthog/api/action.py → products/actions/backend/api/
- test files to respective test dirs

Fix relative imports that broke on move, update router import in
posthog/api/__init__.py, update cross-product references (surveys,
insight). Add ANN exemption for the moved files (pre-existing
violations, same pattern as all other products).
…ctions-to-product

# Conflicts:
#	posthog/migrations/max_migration.txt
…ctions-to-product

# Conflicts:
#	posthog/migrations/max_migration.txt
#	posthog/tasks/alerts/checks.py
#	posthog/tasks/alerts/test/test_alert_checks.py
#	posthog/tasks/alerts/utils.py
posthog/1168 deletes Action from posthog state, but
surveys/0001_initial has to="posthog.action" on the M2M field.
Without an explicit dependency on surveys/0002 (which repoints
to="actions.action"), Django's system check fails with a lazy
reference error because the deletion runs before the repoint.
- Add surveys/0002 dependency to posthog/1168 so the M2M repoint
  runs before the DeleteModel (fixes lazy reference validation error)
- Fix alert imports in new test files from #53837 merge
- Fix Action.__str__ return type (name is nullable)
Another new file from #53837 merge that still imported AlertCheck
from posthog.models.alert instead of products.alerts.backend.models.
- Add products.actions module to tach.toml and wire depends_on for
  ee, posthog, dashboards, surveys, web_analytics, product_analytics,
  marketing_analytics, experiments
- Fix mock patch string in test_property.py (posthog.models.Action →
  products.actions.backend.models.action.Action)
- Update alerts 0001 migration to reflect final model state: remove
  is_calculating field (dropped in 1167), add EVERY_15_MINUTES choice
  and max_length=20 for calculation_interval (altered in 1164)
@webjunkie webjunkie marked this pull request as ready for review May 21, 2026 10:46
@webjunkie webjunkie requested a review from a team as a code owner May 21, 2026 10:46
Copilot AI review requested due to automatic review settings May 21, 2026 10:46
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 35e9518a53

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread products/dashboards/backend/api/dashboard.py:970:9 Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR relocates the Django alerts and actions models out of posthog/models/ into their respective products/*/backend/models/ packages to reduce cross-team migration conflicts, while preserving existing database tables via SeparateDatabaseAndState and repointing cross-app FK/M2M references plus ContentType rows.

Changes:

  • Moved Alerts (5 models) and Actions (2 models + util) into new product backend apps, adding app configs, model db_table mappings, and state-only migrations.
  • Repointed cross-app relations (e.g. PluginConfig.match_action, TaggedItem.action, Survey.actions) and added a RunPython migration to migrate ContentType/Permission references.
  • Mechanically rewired imports across the codebase and updated module dependency rules (tach) and products ruff configuration.

Reviewed changes

Copilot reviewed 213 out of 223 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tach.toml Adds module dependency declarations for new products.actions / products.alerts modules.
products/ruff.toml Adds temporary annotation-rule exemptions for new actions/alerts backends.
posthog/settings/web.py Registers the new Django apps for actions and alerts.
posthog/migrations/max_migration.txt Advances PostHog max migration pointer for the move.
posthog/migrations/1168_migrate_alerts_actions_models.py State-only model removals + ContentType migration for actions/alerts + FK repointing.
products/actions/backend/apps.py Introduces actions Django app config/label.
products/actions/backend/models/action.py Moves Action model into product module, adds db_table, updates FKs to posthog.*.
products/actions/backend/models/action_step.py Moves ActionStep model and pins db_table.
products/actions/backend/models/util.py Moves action util helpers and updates imports/typing.
products/actions/backend/models/init.py Exposes new actions models as a package API.
products/actions/backend/migrations/max_migration.txt Sets actions app max migration pointer.
products/actions/backend/migrations/0001_migrate_actions_models.py State-only create models for actions app (no DB ops).
products/actions/backend/api/action.py Moves Action API/viewset & serializers under products, rewires imports.
products/actions/backend/api/test/test_action.py Updates tests to import Action from new location.
products/alerts/backend/apps.py Introduces alerts Django app config/label.
products/alerts/backend/models/alert.py Moves alert-related models into product module, adds db_table, updates FKs and typing.
products/alerts/backend/models/init.py Exposes new alerts models as a package API.
products/alerts/backend/migrations/max_migration.txt Sets alerts app max migration pointer.
products/alerts/backend/migrations/0001_migrate_models.py State-only create models for alerts app (no DB ops).
products/alerts/backend/api/alert.py Moves alert API under products and updates model/type imports and signal handlers typing.
products/alerts/backend/api/alert_schedule_restriction.py Adds Pydantic OpenAPI types for schedule restriction payloads under alerts product.
products/alerts/backend/api/test/test_alert.py Updates tests to import alert models from new location and patch new API path.
products/alerts/backend/max_tools.py Updates Max tools to import alerts models from new module.
products/alerts/backend/test_max_tools.py Updates Max tools tests to import alerts models from new module.
products/surveys/backend/models.py Repoints Survey.actions M2M to new Action import.
products/surveys/backend/migrations/max_migration.txt Advances surveys max migration pointer.
products/surveys/backend/migrations/0002_action_fk_repoint.py State-only M2M repoint to actions.Action.
products/surveys/backend/api/survey.py Repoints serializers and Action imports to products/actions modules.
products/surveys/backend/api/test/test_survey.py Updates tests to import Action from new location.
products/web_analytics/backend/test/test_weekly_digest.py Updates tests to import Action from new location.
products/product_analytics/backend/hogql_queries/stickiness/stickiness_query_runner.py Updates Action import path.
products/product_analytics/backend/hogql_queries/stickiness/test/test_stickiness_query_runner.py Updates test Action import path.
products/marketing_analytics/backend/hogql_queries/conversion_goal_processor.py Updates Action import path.
products/marketing_analytics/backend/hogql_queries/test_conversion_goal_processor.py Updates tests to import Action from new location.
products/marketing_analytics/backend/hogql_queries/test_conversion_goals_aggregator.py Updates tests to import Action from new location.
products/marketing_analytics/backend/hogql_queries/test_marketing_analytics_table_query_runner_compare.py Updates tests to import Action from new location.
products/marketing_analytics/backend/hogql_queries/test_marketing_analytics_table_query_runner_business.py Updates tests to import Action from new location.
products/dashboards/backend/api/dashboard.py Updates imports to use AlertConfiguration from new alerts module.
products/dashboards/backend/api/dashboard.py:970:9 Adds a (likely accidental) static type-checker diagnostic artifact file.
posthog/api/init.py Routes Action endpoints to the new products.actions viewset; wires alerts API import.
posthog/api/insight.py Updates AlertConfiguration and AlertSerializer imports to the new alerts module.
posthog/api/file_system/registrations.py Repoints file-system registration app label for Action to actions.
posthog/admin/admins/alert_admin.py Repoints admin import to products.alerts model.
posthog/models/init.py Removes Action / ActionStep / AlertConfiguration exports from posthog.models.
posthog/models/action/init.py Removes old action package re-export.
posthog/models/plugin.py Repoints PluginConfig.match_action FK to actions.Action.
posthog/models/tagged_item.py Repoints TaggedItem.action FK to actions.Action.
posthog/models/organization.py Repoints alert subscription cleanup import to new alerts module.
posthog/middleware.py Updates Action import path.
posthog/test/base.py Updates Action import path for core test base.
posthog/test/test_middleware.py Updates Action import path.
posthog/models/test/test_event_model.py Updates Action import path.
posthog/models/test/test_hog_function.py Updates Action import path.
posthog/models/test/test_hog_flow.py Updates Action import path.
posthog/models/test/test_remote_config.py Updates Action import path.
posthog/models/test/test_tagged_item_model.py Updates Action import path.
posthog/models/property/util.py Updates Action + action util imports to new actions module.
posthog/models/entity/entity.py Updates Action import path.
posthog/models/entity/util.py Updates action util imports to new actions module.
posthog/models/cohort/util.py Updates Action + action util imports to new actions module.
posthog/models/event/query_event_list.py Updates Action + action util imports to new actions module.
posthog/models/file_system/unfiled_file_saver.py Updates Action import path.
posthog/models/hog_flow/hog_flow.py Updates Action import path.
posthog/models/hog_functions/hog_function.py Updates Action import path.
posthog/models/resource_transfer/visitors/action.py Updates visitor model import to new actions module.
posthog/models/resource_transfer/visitors/cohort.py Updates dynamic edge import to new actions module.
posthog/models/resource_transfer/visitors/experiment.py Updates dynamic edge import to new actions module.
posthog/models/resource_transfer/visitors/experiment_saved_metric.py Updates dynamic edge import to new actions module.
posthog/models/resource_transfer/visitors/feature_flag.py Updates Action import path.
posthog/models/resource_transfer/visitors/insight.py Updates dynamic edge import to new actions module.
posthog/models/resource_transfer/test/test_inter_project_transferer.py Updates tests to import Action from new location.
posthog/models/resource_transfer/test/test_visitors.py Updates tests to import Action from new location.
posthog/tasks/hog_flows.py Updates Action import path.
posthog/tasks/hog_functions.py Updates Action import path.
posthog/tasks/exports/test/test_csv_exporter.py Updates tests to import Action from new location.
posthog/queries/trends/trends.py Updates Action import path.
posthog/queries/trends/breakdown.py Updates action util import path.
posthog/queries/funnels/base.py Updates action util import path.
posthog/queries/funnels/test/test_funnel.py Updates tests to import Action from new location.
posthog/queries/test/test_lifecycle.py Updates tests to import Action from new location.
posthog/queries/test/test_trends.py Updates tests to import Action from new location.
posthog/queries/foss_cohort_query.py Updates Action import path.
posthog/queries/column_optimizer/foss_column_optimizer.py Updates action util import path.
posthog/tasks/alerts/utils.py Updates alerts model imports to new alerts module.
posthog/tasks/alerts/trends.py Updates AlertConfiguration import path.
posthog/tasks/alerts/detector.py Updates AlertConfiguration import path.
posthog/tasks/alerts/schedule_restriction.py Updates AlertConfiguration import path.
posthog/tasks/alerts/investigation_notifications.py Updates alerts model imports to new alerts module.
posthog/tasks/alerts/test/alert_check_helpers.py Updates AlertConfiguration import path.
posthog/tasks/alerts/test/test_alert_check_helpers.py Updates AlertCheck import path.
posthog/tasks/alerts/test/test_alert_evaluation.py Updates alerts model imports to new alerts module.
posthog/tasks/alerts/test/test_alert_subscriptions.py Updates alerts model imports to new alerts module.
posthog/tasks/alerts/test/test_detector_breakdowns.py Updates AlertConfiguration import path.
posthog/tasks/alerts/test/test_investigation_notifications.py Updates alerts model imports to new alerts module.
posthog/tasks/alerts/test/test_schedule_restriction.py Updates AlertConfiguration import path.
posthog/tasks/alerts/test/test_trends_absolute_alerts.py Updates alerts model imports to new alerts module.
posthog/tasks/alerts/test/test_trends_relative_alerts.py Updates alerts model imports to new alerts module.
posthog/test/activity_logging/test_alert_activity_logging.py Updates alert subscription imports to new alerts module.
posthog/temporal/alerts/activities.py Updates alerts model imports to new alerts module.
posthog/temporal/alerts/investigation.py Updates alerts model imports to new alerts module.
posthog/temporal/ai/sync_vectors.py Updates Action import path.
posthog/temporal/ai/anomaly_investigation/notebook.py Updates alerts model imports to new alerts module.
posthog/temporal/ai/anomaly_investigation/runner.py Updates AlertConfiguration import path.
posthog/temporal/ai/anomaly_investigation/tools.py Updates AlertConfiguration import path.
posthog/temporal/ai/anomaly_investigation/workflow.py Updates alerts model imports to new alerts module.
posthog/temporal/tests/ai/test_anomaly_investigation_notebook.py Updates alerts model imports to new alerts module.
posthog/temporal/tests/ai/test_anomaly_investigation_verdict.py Updates alerts model imports to new alerts module.
posthog/temporal/tests/ai/test_sync_vectors.py Updates Action import path.
posthog/temporal/tests/test_alerts_activities.py Updates alerts model imports to new alerts module.
posthog/temporal/tests/test_alerts_investigation.py Updates alerts model imports to new alerts module.
posthog/temporal/tests/test_alerts_workflows.py Updates alerts model imports to new alerts module.
posthog/session_recordings/queries/utils.py Updates Action import path.
posthog/session_recordings/queries/test/listing_recordings/test_session_recording_list_by_top_level_event_property.py Updates tests to import Action from new location.
posthog/session_recordings/queries/test/listing_recordings/test_session_recording_list_from_query.py Updates tests to import Action from new location.
posthog/hogql/property.py Updates Action/ActionStepJSON imports to new actions module.
posthog/hogql/functions/action.py Updates Action import path.
posthog/hogql/functions/test/test_action.py Updates tests to import Action from new location.
posthog/hogql/test/test_action_to_expr.py Updates tests to import Action/ActionStepJSON from new location.
posthog/hogql/test/test_property.py Updates patch target for Action.objects.get to new import path.
posthog/hogql/database/schema/test/test_system_tables.py Updates Action and AlertConfiguration imports to new locations.
posthog/hogql_queries/query_metadata.py Updates Action import path.
posthog/hogql_queries/sessions_query_runner.py Updates Action import path.
posthog/hogql_queries/events_query_runner.py Updates Action/ActionStepJSON imports to new actions module.
posthog/hogql_queries/utils/timestamp_utils.py Updates Action import path.
posthog/hogql_queries/utils/test/test_timestamp_utils.py Updates tests to import Action from new location.
posthog/hogql_queries/test/test_query_metadata.py Updates tests to import/patch Action from new location.
posthog/hogql_queries/ai/event_taxonomy_query_runner.py Updates Action import path.
posthog/hogql_queries/ai/test/test_event_taxonomy_query_runner.py Updates tests to import Action from new location.
posthog/hogql_queries/web_analytics/web_goals.py Updates Action import path.
posthog/hogql_queries/web_analytics/web_analytics_query_runner.py Updates Action import path.
posthog/hogql_queries/web_analytics/test/test_web_analytics_cohort_filter.py Updates tests to import Action from new location.
posthog/hogql_queries/web_analytics/test/test_web_goals.py Updates tests to import Action from new location.
posthog/hogql_queries/web_analytics/test/test_web_overview.py Updates tests to import Action from new location.
posthog/hogql_queries/web_analytics/test/test_web_stats_table.py Updates tests to import Action from new location.
posthog/hogql_queries/web_analytics/test/test_web_stats_table_pre_aggregated_conversions.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/trends/utils.py Updates dynamic import of Action to new path.
posthog/hogql_queries/insights/trends/trends_query_builder.py Updates Action import path.
posthog/hogql_queries/insights/trends/trends_query_runner.py Updates Action import path.
posthog/hogql_queries/insights/trends/trends_actors_query_builder.py Updates Action import path.
posthog/hogql_queries/insights/trends/test/test_trends.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/trends/test/test_trends_persons.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/trends/test/test_trends_query_runner.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/trends/test/test_calendar_heatmap_query_runner.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/trends/calendar_heatmap_query_runner.py Updates Action import path.
posthog/hogql_queries/insights/retention/retention_query_runner.py Updates Action import path.
posthog/hogql_queries/insights/retention/test/test_retention_query_runner.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/lifecycle/lifecycle_query_runner.py Updates Action import path.
posthog/hogql_queries/insights/lifecycle/test/test_lifecycle_query_runner.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/funnels/base.py Updates Action import path.
posthog/hogql_queries/insights/funnels/funnel_event_query.py Updates Action import path.
posthog/hogql_queries/insights/funnels/funnel_correlation_query_runner.py Updates Action import path.
posthog/hogql_queries/insights/funnels/test/test_funnel.py Updates tests to import Action from new location.
posthog/hogql_queries/insights/funnels/test/test_funnel_event_query.py Updates tests to import Action from new location.
posthog/hogql_queries/experiments/base_query_utils.py Updates Action import path.
posthog/hogql_queries/experiments/exposure_query_logic.py Updates Action import path.
posthog/hogql_queries/experiments/test/test_experiment_trends_query_runner.py Updates tests to import Action from new location.
posthog/hogql_queries/experiments/test/experiment_query_runner/test_base.py Updates tests to import Action from new location.
posthog/hogql_queries/experiments/test/experiment_query_runner/test_experiment_exposures_query_runner.py Updates tests to import Action from new location.
posthog/hogql_queries/experiments/test/experiment_query_runner/test_funnel_metric.py Updates tests to import Action from new location.
posthog/hogql_queries/experiments/test/experiment_query_runner/test_ratio_metric.py Updates tests to import Action from new location.
posthog/management/commands/test/test_migrate_hooks.py Updates Action import path for migrate hooks tests.
posthog/migrations/0410_action_steps_population.py Updates data migration’s Action import (migration logic touched).
posthog/demo/products/hedgebox/matrix.py Updates demo data generator Action import path.
posthog/demo/legacy/app_data_generator.py Updates demo generator Action import path.
posthog/demo/legacy/revenue_data_generator.py Updates demo generator Action import path.
posthog/demo/legacy/web_data_generator.py Updates demo generator Action import path.
posthog/cdp/filters.py Updates Action import path.
posthog/cdp/test/test_filters.py Updates tests to import Action from new location.
posthog/cdp/test/test_site_functions.py Updates tests to import Action from new location.
posthog/api/search.py Updates Action import path.
posthog/api/test/test_cohort.py Updates tests to import Action from new location.
posthog/api/test/test_event.py Updates tests to import Action from new location.
posthog/api/test/test_event_definition.py Updates tests to import Action from new location.
posthog/api/test/test_file_system.py Updates tests to import Action from new location.
posthog/api/test/test_hog_function.py Updates tests to import Action from new location.
posthog/api/test/test_resource_transfer.py Updates tests to import Action from new location.
.semgrep/rules/idor-team-scoped-models.py Updates semgrep rule imports to new Action location.
ee/api/test/test_action.py Updates tests to import Action from new location.
ee/api/test/test_hooks.py Updates tests to import Action from new location.
ee/api/rbac/test/test_access_control.py Updates runtime imports to new Action location.
ee/benchmarks/benchmarks.py Updates benchmark imports to new Action location.
ee/clickhouse/models/test/test_action.py Updates tests to import Action and action util functions from new location.
ee/clickhouse/models/test/test_cohort.py Updates tests to import Action from new location.
ee/clickhouse/queries/column_optimizer.py Updates action util import path.
ee/clickhouse/queries/experiments/test_utils.py Updates tests to import Action from new location.
ee/clickhouse/queries/funnels/test/test_funnel.py Updates tests to import Action from new location.
ee/clickhouse/queries/test/test_cohort_query.py Updates tests to import Action from new location.
ee/clickhouse/queries/test/test_column_optimizer.py Updates tests to import Action from new location.
ee/clickhouse/queries/test/test_event_query.py Updates tests to import Action from new location.
ee/clickhouse/queries/test/test_util.py Updates tests to import Action from new location.
ee/clickhouse/views/test/test_experiments_action_names.py Updates tests to import Action from new location.
ee/clickhouse/views/test/test_experiment_saved_metrics.py Updates tests’ local imports to new Action location.
ee/hogai/core/mixins.py Updates Action import path.
ee/hogai/summarizers/actions.py Updates Action/types import path.
ee/hogai/summarizers/chains.py Updates Action import path.
ee/hogai/summarizers/test/test_actions.py Updates tests to import Action from new location.
ee/hogai/test/test_insights_assistant.py Updates tests to import Action from new location.
ee/hogai/eval/ci/eval_ui_context.py Updates Action import path.
ee/hogai/context/entity_search/context.py Updates Action and AlertConfiguration imports to new locations.
ee/hogai/context/entity_search/test/test_context.py Updates tests to import Action from new location.
ee/hogai/chat_agent/test/test_chat_agent.py Updates tests to import Action from new location.
ee/hogai/chat_agent/taxonomy/toolkit.py Updates Action import path.
ee/hogai/chat_agent/taxonomy/test/test_events.py Updates tests to import Action from new location.
ee/hogai/chat_agent/retention/test/test_nodes.py Updates tests to import Action from new location.
ee/hogai/chat_agent/rag/nodes.py Updates Action import path.
ee/hogai/chat_agent/rag/test/test_nodes.py Updates tests to import Action from new location.
ee/hogai/chat_agent/query_planner/toolkit.py Updates Action import path.
ee/hogai/chat_agent/query_planner/test/test_toolkit.py Updates tests to import Action from new location.
Comments suppressed due to low confidence (3)

products/actions/backend/api/action.py:202

  • ActionSerializer.get_creation_context is annotated as returning None, but it’s exposed as a SerializerMethodField with an OpenAPI CharField(allow_null=True). The return type should reflect the serializer contract (e.g. str | None) to avoid misleading typing and potential static analysis issues as this method evolves.
    products/dashboards/backend/api/dashboard.py:970:9:15
  • This file appears to be a pasted/static type-checker diagnostic output, not source code, and it lives alongside the real dashboard.py. It will be imported/packaged as a Python module on some tooling paths and is very likely accidental. Please delete this file and address the underlying type error in products/dashboards/backend/api/dashboard.py instead (or exclude the diagnostic from being committed).
    products/actions/backend/api/action.py:44
  • Directly importing Experiment here forces a hard dependency from products.actions -> products.experiments, which (given experiments already import/use Action) creates a module cycle. Consider removing this import and using a runtime lookup (e.g. django.apps.apps.get_model("experiments", "Experiment")) inside the small number of functions that need it, or moving this reference-query logic into the experiments module/facade so only one direction is needed.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tach.toml
Comment on lines +110 to 116
[[modules]]
path = "products.actions"
depends_on = [
"ee",
"posthog",
"products.experiments",
]
Comment on lines 7 to 10
def copy_action_steps_to_json(apps, schema_editor):
from posthog.models import Action
from products.actions.backend.models.action import Action

all_actions_with_steps = Action.objects.prefetch_related("action_steps").order_by("pk").all()
@github-actions
Copy link
Copy Markdown
Contributor

MCP UI Apps size report

App JS CSS
debug 474.9 KB 139.1 KB
action 349.4 KB 139.1 KB
action-list 357.2 KB 139.1 KB
cohort 348.5 KB 139.1 KB
cohort-list 356.2 KB 139.1 KB
error-details 369.9 KB 139.1 KB
error-issue 349.2 KB 139.1 KB
error-issue-list 357.2 KB 139.1 KB
experiment 353.7 KB 139.1 KB
experiment-list 358.0 KB 139.1 KB
experiment-results 355.8 KB 139.1 KB
feature-flag 434.3 KB 139.1 KB
feature-flag-list 438.8 KB 139.1 KB
feature-flag-testing 427.2 KB 139.1 KB
insight-actors 352.3 KB 139.1 KB
llm-costs 351.9 KB 139.1 KB
session-recording 350.2 KB 139.1 KB
session-summary 356.2 KB 139.1 KB
survey 350.0 KB 139.1 KB
survey-global-stats 354.8 KB 139.1 KB
survey-list 357.9 KB 139.1 KB
survey-stats 354.8 KB 139.1 KB
trace-span 348.8 KB 139.1 KB
trace-span-list 357.1 KB 139.1 KB
workflow 348.8 KB 139.1 KB
workflow-list 356.6 KB 139.1 KB
query-results 370.6 KB 139.1 KB

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 21, 2026

Size Change: 0 B

Total Size: 116 MB

ℹ️ View Unchanged
Filename Size Change
frontend/dist/368Hedgehogs 5.51 kB 0 B
frontend/dist/abap 14.2 kB 0 B
frontend/dist/AccountConnected 2.99 kB 0 B
frontend/dist/Action 24.8 kB -145 B (-0.58%)
frontend/dist/Actions 1.2 kB -63 B (-4.99%)
frontend/dist/AdvancedActivityLogsScene 39.9 kB 0 B
frontend/dist/AgenticAuthorize 5.74 kB 0 B
frontend/dist/apex 3.99 kB 0 B
frontend/dist/ApprovalDetail 16.5 kB 0 B
frontend/dist/architecture-7EHR7CIX 372 B 0 B
frontend/dist/architectureDiagram-3BPJPVTR 151 kB 0 B
frontend/dist/array.full.es5.js 347 kB 0 B
frontend/dist/array.full.js 427 kB 0 B
frontend/dist/array.js 191 kB 0 B
frontend/dist/AsyncMigrations 13.4 kB 0 B
frontend/dist/AuthenticatedShell 175 kB 0 B
frontend/dist/AuthorizationStatus 968 B 0 B
frontend/dist/azcli 885 B 0 B
frontend/dist/bat 1.88 kB 0 B
frontend/dist/BatchExportScene 60.8 kB 0 B
frontend/dist/bicep 2.59 kB 0 B
frontend/dist/Billing 731 B 0 B
frontend/dist/BillingSection 21 kB 0 B
frontend/dist/blockDiagram-GPEHLZMM 72.5 kB 0 B
frontend/dist/BoxPlot 5.25 kB 0 B
frontend/dist/browserAll-0QZMN1W2 37.4 kB 0 B
frontend/dist/BusinessKnowledgeScene 18.9 kB +34 B (+0.18%)
frontend/dist/ButtonPrimitives 762 B 0 B
frontend/dist/c4Diagram-AAUBKEIU 70.8 kB 0 B
frontend/dist/CalendarHeatMap 5.04 kB 0 B
frontend/dist/cameligo 2.23 kB 0 B
frontend/dist/changeRequestsLogic 782 B 0 B
frontend/dist/classDiagram-4FO5ZUOK 1.28 kB 0 B
frontend/dist/classDiagram-v2-Q7XG4LA2 1.28 kB 0 B
frontend/dist/CLIAuthorize 11.6 kB 0 B
frontend/dist/CLILive 4.26 kB 0 B
frontend/dist/clojure 9.68 kB 0 B
frontend/dist/CodeEditorInline 730 B 0 B
frontend/dist/coffee 3.63 kB 0 B
frontend/dist/Cohort 28.3 kB 0 B
frontend/dist/CohortCalculationHistory 6.47 kB 0 B
frontend/dist/Cohorts 9.67 kB 0 B
frontend/dist/ConfirmOrganization 4.76 kB 0 B
frontend/dist/conversations.js 67.3 kB 0 B
frontend/dist/cose-bilkent-S5V4N54A 82.8 kB 0 B
frontend/dist/Coupons 963 B 0 B
frontend/dist/cpp 5.33 kB 0 B
frontend/dist/Create 898 B -178 B (-16.54%) 👏
frontend/dist/crisp-chat-integration.js 1.97 kB 0 B
frontend/dist/csharp 4.56 kB 0 B
frontend/dist/csp 1.45 kB 0 B
frontend/dist/css 4.54 kB 0 B
frontend/dist/cssMode 4.2 kB 0 B
frontend/dist/CustomCssScene 3.8 kB 0 B
frontend/dist/CustomerAnalyticsConfigurationScene 2.31 kB 0 B
frontend/dist/CustomerAnalyticsScene 28.1 kB 0 B
frontend/dist/CustomerJourneyBuilderScene 2.04 kB -34 B (-1.64%)
frontend/dist/CustomerJourneyTemplatesScene 7.75 kB +35 B (+0.45%)
frontend/dist/customizations.full.js 18 kB 0 B
frontend/dist/CyclotronJobInputAssignee 1.54 kB 0 B
frontend/dist/CyclotronJobInputBusinessHours 2.92 kB 0 B
frontend/dist/CyclotronJobInputTicketTags 954 B +34 B (+3.7%)
frontend/dist/cypher 3.42 kB 0 B
frontend/dist/dagre-BM42HDAG 11.9 kB 0 B
frontend/dist/dart 4.29 kB 0 B
frontend/dist/Dashboard 1.51 kB 0 B
frontend/dist/Dashboards 19.7 kB 0 B
frontend/dist/DashboardTemplateCopyScene 5.95 kB 0 B
frontend/dist/DataManagementScene 884 B 0 B
frontend/dist/DataPipelinesNewScene 2.55 kB 0 B
frontend/dist/DataWarehouseScene 46.6 kB 0 B
frontend/dist/Deactivated 1.37 kB 0 B
frontend/dist/dead-clicks-autocapture.js 14.3 kB 0 B
frontend/dist/DeadLetterQueue 5.63 kB 0 B
frontend/dist/DebugScene 20.2 kB 0 B
frontend/dist/decompressionWorker 2.85 kB 0 B
frontend/dist/decompressionWorker.js 2.85 kB 0 B
frontend/dist/DecompressionWorkerManager 329 B 0 B
frontend/dist/DefinitionEdit 17.1 kB 0 B
frontend/dist/DefinitionView 24.3 kB 0 B
frontend/dist/Deployment 3.9 kB -34 B (-0.86%)
frontend/dist/DeploymentProject 5.43 kB 0 B
frontend/dist/Deployments 9.2 kB 0 B
frontend/dist/DestinationsScene 2.92 kB 0 B
frontend/dist/diagram-2AECGRRQ 6.66 kB 0 B
frontend/dist/diagram-5GNKFQAL 3.61 kB 0 B
frontend/dist/diagram-KO2AKTUF 11.5 kB 0 B
frontend/dist/diagram-LMA3HP47 5.02 kB 0 B
frontend/dist/diagram-OG6HWLK6 11.8 kB 0 B
frontend/dist/dist 643 B 0 B
frontend/dist/dockerfile 1.91 kB 0 B
frontend/dist/EarlyAccessFeature 1.06 kB +170 B (+19.12%) ⚠️
frontend/dist/EarlyAccessFeatures 3.1 kB 0 B
frontend/dist/ecl 5.38 kB 0 B
frontend/dist/EditorScene 1.38 kB 0 B
frontend/dist/elixir 10.3 kB 0 B
frontend/dist/elk.bundled 1.44 MB 0 B
frontend/dist/EmailMFAVerify 3.26 kB 0 B
frontend/dist/EndpointScene 40 kB +73 B (+0.18%)
frontend/dist/EndpointsScene 23.9 kB 0 B
frontend/dist/erDiagram-TEJ5UH35 27.7 kB 0 B
frontend/dist/ErrorTrackingIssueFingerprintsScene 7.22 kB -40 B (-0.55%)
frontend/dist/ErrorTrackingIssueScene 100 kB 0 B
frontend/dist/ErrorTrackingScene 27 kB -72 B (-0.27%)
frontend/dist/EvaluationTemplates 779 B 0 B
frontend/dist/eventmodeling-FCH6USID 375 B 0 B
frontend/dist/EventsScene 2.81 kB 0 B
frontend/dist/exception-autocapture.js 11.8 kB 0 B
frontend/dist/Experiment 205 kB 0 B
frontend/dist/Experiments 19.9 kB 0 B
frontend/dist/exporter 19 kB 0 B
frontend/dist/exporter.js 19 kB 0 B
frontend/dist/ExporterDashboardScene 1.85 kB 0 B
frontend/dist/ExporterHeatmapScene 19.5 kB 0 B
frontend/dist/ExporterInsightScene 2.88 kB 0 B
frontend/dist/ExporterInterviewScene 309 kB 0 B
frontend/dist/ExporterNotebookScene 2.71 MB 0 B
frontend/dist/ExporterRecordingScene 995 B 0 B
frontend/dist/exporterSharedChunkAnchors 1.16 kB 0 B
frontend/dist/exporterSharedChunkAnchors.js 1.16 kB 0 B
frontend/dist/ExportsScene 4.22 kB 0 B
frontend/dist/FeatureFlag 134 kB 0 B
frontend/dist/FeatureFlags 980 B 0 B
frontend/dist/FeatureFlagTemplatesScene 7.27 kB 0 B
frontend/dist/FlappyHog 5.99 kB 0 B
frontend/dist/flow9 1.85 kB 0 B
frontend/dist/flowDiagram-I6XJVG4X 61.6 kB 0 B
frontend/dist/freemarker2 16.7 kB 0 B
frontend/dist/fsharp 3.02 kB 0 B
frontend/dist/ganttDiagram-6RSMTGT7 50.9 kB 0 B
frontend/dist/gitGraph-WXDBUCRP 360 B 0 B
frontend/dist/gitGraphDiagram-PVQCEYII 30.2 kB 0 B
frontend/dist/go 2.69 kB 0 B
frontend/dist/graphql 2.3 kB 0 B
frontend/dist/Group 15.3 kB 0 B
frontend/dist/Groups 4.15 kB 0 B
frontend/dist/GroupsNew 7.58 kB 0 B
frontend/dist/handlebars 7.38 kB 0 B
frontend/dist/hcl 3.63 kB 0 B
frontend/dist/HealthCategoryDetailScene 7.48 kB 0 B
frontend/dist/HealthScene 12.4 kB 0 B
frontend/dist/HeatmapNewScene 5.27 kB 0 B
frontend/dist/HeatmapRecordingScene 4.17 kB 0 B
frontend/dist/HeatmapScene 6.8 kB 0 B
frontend/dist/HeatmapsScene 4.13 kB 0 B
frontend/dist/hls 394 kB 0 B
frontend/dist/HogFunctionScene 59.5 kB 0 B
frontend/dist/hogql_parser_wasm_browser 1.53 MB 0 B
frontend/dist/HogRepl 7.61 kB 0 B
frontend/dist/html 5.62 kB 0 B
frontend/dist/htmlMode 4.65 kB 0 B
frontend/dist/image-blob-reduce.esm 49.5 kB 0 B
frontend/dist/InboxScene 63.1 kB 0 B
frontend/dist/index 60.7 kB 0 B
frontend/dist/index.js 60.7 kB 0 B
frontend/dist/info-J43DQDTF 348 B 0 B
frontend/dist/infoDiagram-5YYISTIA 1.32 kB 0 B
frontend/dist/ini 1.14 kB 0 B
frontend/dist/InsightQuickStart 5.67 kB 0 B
frontend/dist/InsightScene 34.6 kB 0 B
frontend/dist/IntegrationsRedirect 976 B 0 B
frontend/dist/intercom-integration.js 2.03 kB 0 B
frontend/dist/InviteSignup 15.2 kB 0 B
frontend/dist/ishikawaDiagram-YF4QCWOH 18 kB 0 B
frontend/dist/java 3.26 kB 0 B
frontend/dist/javascript 1.02 kB 0 B
frontend/dist/journeyDiagram-JHISSGLW 24 kB 0 B
frontend/dist/jsonMode 13.9 kB 0 B
frontend/dist/julia 7.26 kB 0 B
frontend/dist/kanban-definition-UN3LZRKU 21.2 kB 0 B
frontend/dist/katex 266 kB 0 B
frontend/dist/kotlin 3.44 kB 0 B
frontend/dist/lazy 146 kB 0 B
frontend/dist/LegacyPluginScene 20.9 kB 0 B
frontend/dist/LegalDocumentNewScene 59.6 kB -36 B (-0.06%)
frontend/dist/LegalDocumentsScene 5.17 kB 0 B
frontend/dist/LemonTextAreaMarkdown 740 B +34 B (+4.82%) 🔍
frontend/dist/less 3.93 kB 0 B
frontend/dist/lexon 2.47 kB 0 B
frontend/dist/lib 2.25 kB 0 B
frontend/dist/Link 699 B -34 B (-4.64%)
frontend/dist/LinkScene 25.1 kB 0 B
frontend/dist/LinksScene 4.4 kB 0 B
frontend/dist/liquid 4.57 kB 0 B
frontend/dist/LiveDebugger 19.3 kB 0 B
frontend/dist/LiveEventsTable 5.47 kB 0 B
frontend/dist/LLMAnalyticsClusterScene 21.5 kB 0 B
frontend/dist/LLMAnalyticsClustersScene 54.7 kB 0 B
frontend/dist/LLMAnalyticsDatasetScene 20.8 kB 0 B
frontend/dist/LLMAnalyticsDatasetsScene 3.49 kB -35 B (-0.99%)
frontend/dist/LLMAnalyticsEvaluation 59.7 kB 0 B
frontend/dist/LLMAnalyticsEvaluationsScene 28 kB +33 B (+0.12%)
frontend/dist/LLMAnalyticsPlaygroundScene 37.5 kB -33 B (-0.09%)
frontend/dist/LLMAnalyticsScene 118 kB 0 B
frontend/dist/LLMAnalyticsSessionScene 13.6 kB 0 B
frontend/dist/LLMAnalyticsTag 27.3 kB 0 B
frontend/dist/LLMAnalyticsTagsScene 7.19 kB 0 B
frontend/dist/LLMAnalyticsTraceScene 130 kB +36 B (+0.03%)
frontend/dist/LLMAnalyticsUsers 730 B 0 B
frontend/dist/LLMASessionFeedbackDisplay 5.04 kB 0 B
frontend/dist/LLMPromptScene 29 kB 0 B
frontend/dist/LLMPromptsScene 4.72 kB 0 B
frontend/dist/LLMSkillScene 793 B 0 B
frontend/dist/LLMSkillsScene 810 B 0 B
frontend/dist/Login 10.1 kB 0 B
frontend/dist/Login2FA 4.49 kB 0 B
frontend/dist/logs.js 38.9 kB 0 B
frontend/dist/LogsAlertDetailScene 17.2 kB 0 B
frontend/dist/LogsSamplingDetailScene 5.04 kB -40 B (-0.79%)
frontend/dist/LogsSamplingNewScene 2.11 kB -39 B (-1.81%)
frontend/dist/LogsScene 17.8 kB +133 B (+0.75%)
frontend/dist/lua 2.16 kB 0 B
frontend/dist/m3 2.85 kB 0 B
frontend/dist/main 819 kB 0 B
frontend/dist/ManagedMigration 14.8 kB -35 B (-0.24%)
frontend/dist/markdown 3.83 kB 0 B
frontend/dist/MarketingAnalyticsScene 40.4 kB 0 B
frontend/dist/MaterializedColumns 11.8 kB 0 B
frontend/dist/Max 888 B 0 B
frontend/dist/MCPAnalyticsScene 38.2 kB -35 B (-0.09%)
frontend/dist/MCPAnalyticsToolDetail 18.4 kB 0 B
frontend/dist/mdx 5.43 kB 0 B
frontend/dist/memlens.lib.bundle 27.9 kB 0 B
frontend/dist/mermaid.core 28.5 kB 0 B
frontend/dist/MermaidDiagram 2.15 kB +39 B (+1.85%)
frontend/dist/MessageTemplate 16.5 kB -69 B (-0.42%)
frontend/dist/MetricsScene 1.04 kB 0 B
frontend/dist/mindmap-definition-RKZ34NQL 24.8 kB 0 B
frontend/dist/mips 2.62 kB 0 B
frontend/dist/ModelsScene 18.9 kB +35 B (+0.19%)
frontend/dist/MonacoDiffEditor 471 B 0 B
frontend/dist/monacoEditorWorker 288 kB 0 B
frontend/dist/monacoEditorWorker.js 288 kB 0 B
frontend/dist/monacoJsonWorker 419 kB 0 B
frontend/dist/monacoJsonWorker.js 419 kB 0 B
frontend/dist/monacoTsWorker 7.02 MB 0 B
frontend/dist/monacoTsWorker.js 7.02 MB 0 B
frontend/dist/MoveToPostHogCloud 4.7 kB 0 B
frontend/dist/msdax 4.95 kB 0 B
frontend/dist/mysql 11.3 kB 0 B
frontend/dist/NavTabChat 7.39 kB 0 B
frontend/dist/NewSourceScene 1.05 kB 0 B
frontend/dist/NewTabScene 1.71 kB 0 B
frontend/dist/NodeDetailScene 16.9 kB +32 B (+0.19%)
frontend/dist/NotebookCanvasScene 3.71 kB 0 B
frontend/dist/NotebookPanel 5.68 kB 0 B
frontend/dist/NotebookScene 8.92 kB 0 B
frontend/dist/NotebooksScene 7.83 kB 0 B
frontend/dist/OAuthAuthorize 878 B 0 B
frontend/dist/objective-c 2.44 kB 0 B
frontend/dist/Onboarding 790 kB 0 B
frontend/dist/OnboardingCouponRedemption 1.44 kB 0 B
frontend/dist/packet-YPE3B663 354 B 0 B
frontend/dist/pascal 3.03 kB 0 B
frontend/dist/pascaligo 2.04 kB 0 B
frontend/dist/passkeyLogic 688 B 0 B
frontend/dist/PasswordReset 4.6 kB 0 B
frontend/dist/PasswordResetComplete 3.23 kB 0 B
frontend/dist/PendingDeletion 2.35 kB 0 B
frontend/dist/perl 8.29 kB 0 B
frontend/dist/PersonScene 18.7 kB 0 B
frontend/dist/PersonsScene 5.98 kB 0 B
frontend/dist/pgsql 13.5 kB 0 B
frontend/dist/php 8.06 kB 0 B
frontend/dist/pie-LRSECV5Y 345 B 0 B
frontend/dist/pieDiagram-4H26LBE5 4.92 kB 0 B
frontend/dist/PipelineStatusScene 9.34 kB 0 B
frontend/dist/pla 1.72 kB 0 B
frontend/dist/posthog 146 kB 0 B
frontend/dist/postiats 7.9 kB 0 B
frontend/dist/powerquery 17 kB 0 B
frontend/dist/powershell 3.31 kB 0 B
frontend/dist/PreflightCheck 5.81 kB 0 B
frontend/dist/product-tours.js 115 kB 0 B
frontend/dist/ProductTour 275 kB 0 B
frontend/dist/ProductTours 4.92 kB 0 B
frontend/dist/ProjectHomepage 19.9 kB 0 B
frontend/dist/protobuf 9.09 kB 0 B
frontend/dist/pug 4.86 kB 0 B
frontend/dist/python 4.8 kB 0 B
frontend/dist/qsharp 3.23 kB 0 B
frontend/dist/quadrantDiagram-W4KKPZXB 34.4 kB 0 B
frontend/dist/QueryPerformance 8.86 kB 0 B
frontend/dist/r 3.16 kB 0 B
frontend/dist/radar-GUYGQ44K 351 B 0 B
frontend/dist/razor 9.38 kB 0 B
frontend/dist/react-json-view 121 kB 0 B
frontend/dist/recorder-v2.js 98.6 kB 0 B
frontend/dist/recorder.js 98.6 kB 0 B
frontend/dist/redis 3.59 kB 0 B
frontend/dist/redshift 11.8 kB 0 B
frontend/dist/RegionMap 29.7 kB +34 B (+0.11%)
frontend/dist/render-query 26.5 MB 0 B
frontend/dist/render-query.js 26.5 MB 0 B
frontend/dist/ReplayLens 21.8 kB +32 B (+0.15%)
frontend/dist/ReplayLensesScene 12.1 kB 0 B
frontend/dist/requirementDiagram-4Y6WPE33 31.9 kB 0 B
frontend/dist/ResourceTransfer 9.42 kB 0 B
frontend/dist/restructuredtext 3.94 kB 0 B
frontend/dist/RevenueAnalyticsScene 25.8 kB +64 B (+0.25%)
frontend/dist/ruby 8.54 kB 0 B
frontend/dist/rust 4.2 kB 0 B
frontend/dist/sankeyDiagram-5OEKKPKP 24 kB 0 B
frontend/dist/SavedInsights 902 B 0 B
frontend/dist/sb 1.86 kB 0 B
frontend/dist/scala 7.36 kB 0 B
frontend/dist/schema 722 kB 0 B
frontend/dist/SchemaScene 23.8 kB -35 B (-0.15%)
frontend/dist/scheme 1.8 kB 0 B
frontend/dist/scss 6.45 kB 0 B
frontend/dist/SdkDoctorScene 9.66 kB 0 B
frontend/dist/sequenceDiagram-3UESZ5HK 117 kB 0 B
frontend/dist/SessionAttributionExplorerScene 6.87 kB 0 B
frontend/dist/SessionGroupSummariesTable 4.87 kB 0 B
frontend/dist/SessionGroupSummaryScene 19.1 kB +29 B (+0.15%)
frontend/dist/SessionProfileScene 15.3 kB 0 B
frontend/dist/SessionRecordingDetail 2 kB 0 B
frontend/dist/SessionRecordingFilePlaybackScene 4.71 kB 0 B
frontend/dist/SessionRecordings 1.01 kB 0 B
frontend/dist/SessionRecordingsKiosk 10.2 kB 0 B
frontend/dist/SessionRecordingsPlaylistScene 5.34 kB 0 B
frontend/dist/SessionRecordingsSettingsScene 2.21 kB 0 B
frontend/dist/SessionsScene 4.22 kB 0 B
frontend/dist/SettingsScene 3.36 kB 0 B
frontend/dist/sharedChunkAnchors 1.15 kB 0 B
frontend/dist/sharedChunkAnchors.js 1.15 kB 0 B
frontend/dist/SharedMetric 6.3 kB 0 B
frontend/dist/SharedMetrics 787 B 0 B
frontend/dist/shell 3.11 kB 0 B
frontend/dist/SignupContainer 28.4 kB 0 B
frontend/dist/Site 1.43 kB 0 B
frontend/dist/solidity 18.6 kB 0 B
frontend/dist/sophia 2.8 kB 0 B
frontend/dist/SourceScene 928 B -34 B (-3.53%)
frontend/dist/SourcesScene 6.17 kB -34 B (-0.55%)
frontend/dist/sparql 2.59 kB 0 B
frontend/dist/sql 10.3 kB 0 B
frontend/dist/SqlVariableEditScene 7.49 kB 0 B
frontend/dist/st 7.44 kB 0 B
frontend/dist/StartupProgram 21.4 kB 0 B
frontend/dist/stateDiagram-AJRCARHV 11.3 kB 0 B
frontend/dist/stateDiagram-v2-BHNVJYJU 1.18 kB 0 B
frontend/dist/StripeConfirmInstall 3.78 kB 0 B
frontend/dist/SubscriptionScene 14.4 kB 0 B
frontend/dist/SubscriptionsScene 5.42 kB 0 B
frontend/dist/SupportSettingsScene 1.71 kB 0 B
frontend/dist/SupportTicketScene 33.8 kB 0 B
frontend/dist/SupportTicketsScene 937 B -34 B (-3.5%)
frontend/dist/Survey 1.26 kB 0 B
frontend/dist/SurveyFormBuilder 1.78 kB 0 B
frontend/dist/Surveys 26.6 kB 0 B
frontend/dist/surveys.js 94.7 kB 0 B
frontend/dist/SurveyWizard 73.1 kB 0 B
frontend/dist/swift 5.3 kB 0 B
frontend/dist/SystemStatus 17.3 kB 0 B
frontend/dist/systemverilog 7.65 kB 0 B
frontend/dist/TaskDetailScene 23.3 kB +74 B (+0.32%)
frontend/dist/TaskTracker 14.5 kB 0 B
frontend/dist/tcl 3.61 kB 0 B
frontend/dist/TextCardMarkdownEditor 11.2 kB 0 B
frontend/dist/timeline-definition-PNZ67QCA 31.3 kB 0 B
frontend/dist/toolbar 14.9 MB 0 B
frontend/dist/toolbar.js 14.9 MB 0 B
frontend/dist/ToolbarLaunch 2.71 kB 0 B
frontend/dist/tracing-headers.js 1.74 kB 0 B
frontend/dist/TracingScene 53.9 kB -38 B (-0.07%)
frontend/dist/TransformationsScene 6.4 kB 0 B
frontend/dist/treemap-LRROVOQU 357 B 0 B
frontend/dist/treeView-BLDUP644 360 B 0 B
frontend/dist/TrendsBarChart 6.84 kB -34 B (-0.49%)
frontend/dist/TrendsLineChart 6.84 kB +34 B (+0.5%)
frontend/dist/tsMode 24 kB 0 B
frontend/dist/twig 6.01 kB 0 B
frontend/dist/TwoFactorReset 4.26 kB 0 B
frontend/dist/typescript 274 B 0 B
frontend/dist/typespec 2.86 kB 0 B
frontend/dist/Unsubscribe 1.9 kB 0 B
frontend/dist/UserInterview 6.28 kB 0 B
frontend/dist/UserInterviewResponse 5.57 kB 0 B
frontend/dist/UserInterviews 4.08 kB +34 B (+0.84%)
frontend/dist/vb 5.83 kB 0 B
frontend/dist/vennDiagram-CIIHVFJN 41.6 kB 0 B
frontend/dist/VercelConnect 5.23 kB 0 B
frontend/dist/VercelLinkError 2.5 kB 0 B
frontend/dist/VerifyEmail 5.02 kB 0 B
frontend/dist/vimMode 211 kB 0 B
frontend/dist/VisualReviewIndexScene 2.45 kB +35 B (+1.45%)
frontend/dist/VisualReviewRunScene 44.6 kB +33 B (+0.07%)
frontend/dist/VisualReviewRunsScene 7.17 kB -37 B (-0.51%)
frontend/dist/VisualReviewSettingsScene 11 kB 0 B
frontend/dist/VisualReviewSnapshotHistoryScene 13.8 kB 0 B
frontend/dist/VisualReviewSnapshotOverviewScene 19.4 kB -37 B (-0.19%)
frontend/dist/wardley-L42UT6IY 352 B 0 B
frontend/dist/wardleyDiagram-YWT4CUSO 26.2 kB 0 B
frontend/dist/web-vitals-with-attribution.js 11.8 kB 0 B
frontend/dist/web-vitals.js 6.39 kB 0 B
frontend/dist/WebAnalyticsScene 9.96 kB 0 B
frontend/dist/WebGLRenderer-DYjOwNoG 60.4 kB 0 B
frontend/dist/WebGPURenderer-B_wkl_Ja 36.3 kB 0 B
frontend/dist/WebScriptsScene 2.78 kB 0 B
frontend/dist/WebVitals 7.38 kB 0 B
frontend/dist/WebVitalsPathBreakdown 3.89 kB 0 B
frontend/dist/webworkerAll-puPV1rBA 397 B 0 B
frontend/dist/wgsl 7.38 kB 0 B
frontend/dist/Wizard 4.7 kB 0 B
frontend/dist/WorkflowScene 110 kB 0 B
frontend/dist/WorkflowsScene 60.1 kB +90 B (+0.15%)
frontend/dist/WorldMap 1.04 MB 0 B
frontend/dist/xml 3.02 kB 0 B
frontend/dist/xychartDiagram-2RQKCTM6 39.6 kB 0 B
frontend/dist/yaml 4.64 kB 0 B

compressed-size-action

@github-actions
Copy link
Copy Markdown
Contributor

ClickHouse migration SQL per cloud environment

No ClickHouse migrations changed in this PR.

Comment thread products/dashboards/backend/api/dashboard.py:970:9 Outdated
Spurious file with colon in name from git status output.
@webjunkie webjunkie merged commit 54d24c8 into master May 21, 2026
220 of 223 checks passed
@webjunkie webjunkie deleted the chore/move-alerts-actions-to-product branch May 21, 2026 12:22
@deployment-status-posthog
Copy link
Copy Markdown

deployment-status-posthog Bot commented May 21, 2026

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-05-21 13:10 UTC Run
prod-us ✅ Deployed 2026-05-21 13:21 UTC Run
prod-eu ✅ Deployed 2026-05-21 13:24 UTC Run

webjunkie added a commit that referenced this pull request May 29, 2026
The test patches posthog.api.action.report_user_action, but the API
moved to products/actions/backend/api/action.py in #59224. The tests
never ran in CI (silent skip — fixed by the lint discovery change in
this same PR) so the broken patch went unnoticed.
webjunkie added a commit that referenced this pull request May 29, 2026
Tightens the product lint to surface test files that no CI runner picks
up, and wires up the orphans the new check found.

The trigger was `products/actions/`: its `Action` model was moved into a
product app in #59224, but `__init__.py` and the `backend:test` script
were both missed in the move. The lint silently skipped it because
`lint_all_products` discovered products via `__init__.py` presence —
the exact file the lint should have been enforcing. Discovery now uses
`backend/`, which is the right load-bearing signal for products that
carry Python code worth linting. Frontend-only products keep getting
skipped, which is fine — they have nothing for these checks to validate.

New `OrphanedTestFilesCheck` walks the product directory for
`test_*.py` / `*_test.py` files and verifies each is reachable from
either the pytest paths in `backend:test` or a known external runner
(currently `dags/` → ci-dagster.yml, plus per-product allowlists for
the temporal pytest paths in ci-backend.yml). Catches:

- actions: backend/api/test/test_action.py (33 tests, ~10 days stranded)
- alerts: backend/api/test/test_alert.py
- tasks: backend/stream/tests/test_redis_stream.py
- posthog_ai: scripts/* (4 files, 50 tests)
- logs: skills/authoring-log-alerts/tests/* (17 tests)

Each product's `backend:test` is extended to cover its previously
unreached paths.

Tests in tools/hogli-commands cover the orphan check across the
file-vs-directory matching, the external-runner allowlist, and the
per-product exemption mapping.
webjunkie added a commit that referenced this pull request May 29, 2026
The test patches posthog.api.action.report_user_action, but the API
moved to products/actions/backend/api/action.py in #59224. The tests
never ran in CI (silent skip — fixed by the lint discovery change in
this same PR) so the broken patch went unnoticed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants