Skip to content

feat(sig): automatically start tasks from signal reports#54056

Open
oliverb123 wants to merge 11 commits intomasterfrom
sig/autostart-tasks
Open

feat(sig): automatically start tasks from signal reports#54056
oliverb123 wants to merge 11 commits intomasterfrom
sig/autostart-tasks

Conversation

@oliverb123
Copy link
Copy Markdown
Contributor

Automatically starts a task if:

  • There's no previous task for this report
  • This report is judged immediately actionable
  • This report is judged to have a priority above the threshold
  • This report has a suggested reviewer in the opted in list

Stores the associated task in the report artefacts.

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

Note

Copilot was unable to run its full agentic suite in this review.

Adds an “autonomy” workflow for Signals where agentic report research can automatically start a Tasks coding run (when actionable/priority/reviewer conditions are met) and stores the resulting task info as a report artefact.

Changes:

  • Introduces SignalAutonomyConfig (per-team) + API endpoints to manage the minimum priority threshold and opted-in users.
  • Extends agentic report processing to optionally auto-start a Tasks run and persist a task_run report artefact.
  • Adds task_run as a new SignalReportArtefact type and wires up admin + router registration.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
products/tasks/backend/models.py Adds extra TaskRun metadata when the task originates from a signal report
products/signals/backend/views.py Adds SignalAutonomyViewSet endpoints for threshold + opted-in users
products/signals/backend/temporal/agentic/report.py Auto-starts Tasks runs after agentic research under specific conditions; writes task_run artefact
products/signals/backend/serializers.py Adds serializers for autonomy config and opted-in users resolution
products/signals/backend/models.py Adds SignalAutonomyConfig model and new artefact type TASK_RUN
products/signals/backend/migrations/max_migration.txt Bumps max migration pointer
products/signals/backend/migrations/0014_signal_autonomy_config.py Creates SignalAutonomyConfig table and adds task_run artefact type
products/signals/backend/admin.py Registers admin UI for autonomy config
products/signals/ARCHITECTURE.md Documents the auto-start flow and the autonomy config API
posthog/api/init.py Registers the new signal_autonomy routes

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

Comment thread products/tasks/backend/models.py Outdated
Comment thread products/signals/backend/temporal/agentic/report.py
Comment thread products/signals/backend/views.py Outdated
Comment thread products/signals/backend/views.py Outdated
Comment thread products/signals/backend/serializers.py Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 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:

products/signals/backend/migrations/0014_signalautonomyconfig_alter_signalreportartefact_type.py

BEGIN;
--
-- Create model SignalTeamConfig
--
CREATE TABLE "signals_signalteamconfig" ("id" uuid NOT NULL PRIMARY KEY, "team_id" integer NOT NULL UNIQUE, "default_autostart_priority" varchar(2) NOT NULL, "created_at" timestamp with time zone NOT NULL, "updated_at" timestamp with time zone NOT NULL);
--
-- Create model SignalUserAutonomyConfig
--
CREATE TABLE "signals_signaluserautonomyconfig" ("id" uuid NOT NULL PRIMARY KEY, "user_id" integer NOT NULL UNIQUE, "autostart_priority" varchar(2) NULL, "created_at" timestamp with time zone NOT NULL, "updated_at" timestamp with time zone NOT NULL);
--
-- Create model SignalReportTask
--
CREATE TABLE "signals_signalreporttask" ("id" uuid NOT NULL PRIMARY KEY, "team_id" integer NOT NULL, "report_id" uuid NOT NULL, "task_id" uuid NOT NULL, "relationship" varchar(200) NOT NULL, "created_at" timestamp with time zone NOT NULL);
ALTER TABLE "signals_signalteamconfig" ADD CONSTRAINT "signals_signalteamconfig_team_id_e6b1f11f_fk_posthog_team_id" FOREIGN KEY ("team_id") REFERENCES "posthog_team" ("id") DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE "signals_signaluserautonomyconfig" ADD CONSTRAINT "signals_signaluserau_user_id_a630f1ab_fk_posthog_u" FOREIGN KEY ("user_id") REFERENCES "posthog_user" ("id") DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE "signals_signalreporttask" ADD CONSTRAINT "signals_signalreporttask_team_id_d2724e3d_fk_posthog_team_id" FOREIGN KEY ("team_id") REFERENCES "posthog_team" ("id") DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE "signals_signalreporttask" ADD CONSTRAINT "signals_signalreport_report_id_c52c31d6_fk_signals_s" FOREIGN KEY ("report_id") REFERENCES "signals_signalreport" ("id") DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE "signals_signalreporttask" ADD CONSTRAINT "signals_signalreporttask_task_id_181bfcb9_fk_posthog_task_id" FOREIGN KEY ("task_id") REFERENCES "posthog_task" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX "signals_signalreporttask_team_id_d2724e3d" ON "signals_signalreporttask" ("team_id");
CREATE INDEX "signals_signalreporttask_report_id_c52c31d6" ON "signals_signalreporttask" ("report_id");
CREATE INDEX "signals_signalreporttask_task_id_181bfcb9" ON "signals_signalreporttask" ("task_id");
COMMIT;

Last updated: 2026-04-15 17:13 UTC (6802d55)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

🔍 Migration Risk Analysis

We've analyzed your migrations for potential risks.

Summary: ⚠️ Missing migrations detected

Migrations for 'signals':
  products/signals/backend/migrations/0015_remove_signalreport_cluster_centroid_and_more.py
    - Alter field id on signalreporttask
    - Alter field id on signalteamconfig
    - Alter field id on signaluserautonomyconfig

Run python manage.py makemigrations to create them.

Summary: 1 Safe | 0 Needs Review | 0 Blocked

✅ Safe

Brief or no lock, backwards compatible

signals.0014_signalautonomyconfig_alter_signalreportartefact_type
  └─ #1 ✅ CreateModel
     Creating new table is safe
     model: SignalTeamConfig
  └─ #2 ✅ CreateModel
     Creating new table is safe
     model: SignalUserAutonomyConfig
  └─ #3 ✅ CreateModel
     Creating new table is safe
     model: SignalReportTask
  │
  └──> ℹ️  INFO:
       ℹ️  Skipped operations on newly created tables (empty tables
       don't cause lock contention).

Last updated: 2026-04-15 17:14 UTC (6802d55)

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Apr 10, 2026

Comments Outside Diff (2)

  1. products/signals/backend/temporal/agentic/report.py, line 600-604 (link)

    P2 Redundant .lower() on already-lowercased login

    _build_reviewers_content already stores github_login=reviewer.login.lower() in ReviewerContent, so the second .lower() call here is a no-op. It won't cause incorrect behavior, but it's misleading — a future reader may wonder why it's needed.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: products/signals/backend/temporal/agentic/report.py
    Line: 600-604
    
    Comment:
    **Redundant `.lower()` on already-lowercased login**
    
    `_build_reviewers_content` already stores `github_login=reviewer.login.lower()` in `ReviewerContent`, so the second `.lower()` call here is a no-op. It won't cause incorrect behavior, but it's misleading — a future reader may wonder why it's needed.
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
  2. products/signals/backend/temporal/agentic/report.py, line 627 (link)

    P2 Implicit coupling between two independent Priority enums

    Priority(autonomy_config.minimum_autostart_priority) converts SignalAutonomyConfig.Priority's string value into research.Priority. Both happen to share the same P0P4 string values today, but they are separate enums with no shared definition. If the research enum ever gains or renames a level, this call silently raises ValueError at auto-start time (caught and logged by the outer try/except, so no crash, but the task is silently never started).

    Consider either sharing one enum, or comparing the priority strings directly without conversion:

    # Direct string comparison — no implicit coupling
    config_rank = _priority_rank(Priority(autonomy_config.minimum_autostart_priority))
    result_rank = _priority_rank(result.priority.priority)
    if result_rank > config_rank:
        return

    Or, define a shared Priority constant reused by both models.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: products/signals/backend/temporal/agentic/report.py
    Line: 627
    
    Comment:
    **Implicit coupling between two independent `Priority` enums**
    
    `Priority(autonomy_config.minimum_autostart_priority)` converts `SignalAutonomyConfig.Priority`'s string value into `research.Priority`. Both happen to share the same `P0``P4` string values today, but they are separate enums with no shared definition. If the research enum ever gains or renames a level, this call silently raises `ValueError` at auto-start time (caught and logged by the outer `try/except`, so no crash, but the task is silently never started).
    
    Consider either sharing one enum, or comparing the priority strings directly without conversion:
    
    ```python
    # Direct string comparison — no implicit coupling
    config_rank = _priority_rank(Priority(autonomy_config.minimum_autostart_priority))
    result_rank = _priority_rank(result.priority.priority)
    if result_rank > config_rank:
        return
    ```
    
    Or, define a shared Priority constant reused by both models.
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: products/signals/backend/temporal/agentic/report.py
Line: 600-604

Comment:
**Redundant `.lower()` on already-lowercased login**

`_build_reviewers_content` already stores `github_login=reviewer.login.lower()` in `ReviewerContent`, so the second `.lower()` call here is a no-op. It won't cause incorrect behavior, but it's misleading — a future reader may wonder why it's needed.

```suggestion
        candidate = login_to_user.get(reviewer["github_login"])
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: products/signals/backend/temporal/agentic/report.py
Line: 627

Comment:
**Implicit coupling between two independent `Priority` enums**

`Priority(autonomy_config.minimum_autostart_priority)` converts `SignalAutonomyConfig.Priority`'s string value into `research.Priority`. Both happen to share the same `P0``P4` string values today, but they are separate enums with no shared definition. If the research enum ever gains or renames a level, this call silently raises `ValueError` at auto-start time (caught and logged by the outer `try/except`, so no crash, but the task is silently never started).

Consider either sharing one enum, or comparing the priority strings directly without conversion:

```python
# Direct string comparison — no implicit coupling
config_rank = _priority_rank(Priority(autonomy_config.minimum_autostart_priority))
result_rank = _priority_rank(result.priority.priority)
if result_rank > config_rank:
    return
```

Or, define a shared Priority constant reused by both models.

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "idor rules" | Re-trigger Greptile

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

🎭 Playwright report · View test results →

⚠️ 1 flaky test:

  • Materialize view pane (chromium)

These issues are not necessarily caused by your changes.
Annoyed by this comment? Help fix flakies and failures and it'll disappear!

Copy link
Copy Markdown
Contributor

@joshsny joshsny left a comment

Choose a reason for hiding this comment

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

very excited for this 🎉

Comment thread products/signals/backend/temporal/agentic/report.py Outdated
Comment thread products/signals/backend/temporal/agentic/report.py Outdated
Comment thread products/signals/backend/temporal/agentic/report.py Outdated
Comment thread products/signals/backend/serializers.py Outdated
Comment thread products/signals/backend/views.py Outdated
Comment thread products/signals/backend/views.py Outdated
Comment thread products/tasks/backend/models.py Outdated
Copy link
Copy Markdown
Member

@Twixes Twixes left a comment

Choose a reason for hiding this comment

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

Direction is solid but a few comments from me + Josh I think worth clearing up!

Comment thread products/signals/backend/temporal/agentic/report.py Outdated
Comment thread products/signals/backend/temporal/agentic/report.py
Comment thread products/signals/backend/temporal/agentic/report.py
Comment thread products/signals/backend/temporal/agentic/report.py
Comment thread products/signals/backend/temporal/agentic/report.py Outdated
Comment thread posthog/api/__init__.py Outdated
Comment thread products/signals/backend/serializers.py
Comment thread products/signals/backend/serializers.py Outdated
Comment thread products/signals/backend/views.py Outdated
Comment on lines +145 to +149
class SignalReportTaskSerializer(serializers.ModelSerializer):
class Meta:
model = SignalReportTask
fields = ["id", "relationship", "task_id", "created_at"]
read_only_fields = fields
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.

The serializer is missing task_title and task_status fields that are documented in ARCHITECTURE.md (line 605). The fields list only includes ["id", "relationship", "task_id", "created_at"] but according to the documentation, it should also expose task_title and task_status. This will cause the API to return incomplete data.

class SignalReportTaskSerializer(serializers.ModelSerializer):
    task_title = serializers.CharField(source='task.title', read_only=True)
    task_status = serializers.SerializerMethodField()

    class Meta:
        model = SignalReportTask
        fields = ["id", "relationship", "task_id", "task_title", "task_status", "created_at"]
        read_only_fields = fields
    
    def get_task_status(self, obj):
        # Derive from latest TaskRun via prefetch
        return obj.task.latest_run.status if obj.task.latest_run else None
Suggested change
class SignalReportTaskSerializer(serializers.ModelSerializer):
class Meta:
model = SignalReportTask
fields = ["id", "relationship", "task_id", "created_at"]
read_only_fields = fields
class SignalReportTaskSerializer(serializers.ModelSerializer):
task_title = serializers.CharField(source='task.title', read_only=True)
task_status = serializers.SerializerMethodField()
class Meta:
model = SignalReportTask
fields = ["id", "relationship", "task_id", "task_title", "task_status", "created_at"]
read_only_fields = fields
def get_task_status(self, obj):
# Derive from latest TaskRun via prefetch
return obj.task.latest_run.status if obj.task.latest_run else None

Spotted by Graphite

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 15, 2026

Size Change: +210 B (0%)

Total Size: 129 MB

ℹ️ View Unchanged
Filename Size Change
frontend/dist/368Hedgehogs 5.26 kB 0 B
frontend/dist/abap 14.2 kB 0 B
frontend/dist/AccountSocialConnected 1.62 kB 0 B
frontend/dist/Action 23.2 kB 0 B
frontend/dist/Actions 1.02 kB 0 B
frontend/dist/AdvancedActivityLogsScene 34 kB 0 B
frontend/dist/AgenticAuthorize 5.25 kB 0 B
frontend/dist/apex 3.95 kB 0 B
frontend/dist/ApprovalDetail 16.2 kB 0 B
frontend/dist/array.full.es5.js 332 kB 0 B
frontend/dist/array.full.js 427 kB 0 B
frontend/dist/array.js 183 kB 0 B
frontend/dist/AsyncMigrations 13.1 kB 0 B
frontend/dist/AuthorizationStatus 716 B 0 B
frontend/dist/azcli 846 B 0 B
frontend/dist/bat 1.84 kB 0 B
frontend/dist/BatchExportScene 60.3 kB 0 B
frontend/dist/bicep 2.55 kB 0 B
frontend/dist/Billing 493 B 0 B
frontend/dist/BillingSection 20.8 kB 0 B
frontend/dist/BoxPlot 5.04 kB 0 B
frontend/dist/browserAll-0QZMN1W2 37.4 kB 0 B
frontend/dist/ButtonPrimitives 562 B 0 B
frontend/dist/CalendarHeatMap 4.79 kB 0 B
frontend/dist/cameligo 2.18 kB 0 B
frontend/dist/changeRequestsLogic 544 B 0 B
frontend/dist/CLIAuthorize 11.3 kB 0 B
frontend/dist/CLILive 3.97 kB 0 B
frontend/dist/clojure 9.64 kB 0 B
frontend/dist/coffee 3.59 kB 0 B
frontend/dist/Cohort 23.2 kB 0 B
frontend/dist/CohortCalculationHistory 6.22 kB 0 B
frontend/dist/Cohorts 9.39 kB 0 B
frontend/dist/ConfirmOrganization 4.48 kB 0 B
frontend/dist/conversations.js 65.8 kB 0 B
frontend/dist/Coupons 720 B 0 B
frontend/dist/cpp 5.3 kB 0 B
frontend/dist/Create 655 B 0 B
frontend/dist/crisp-chat-integration.js 1.88 kB 0 B
frontend/dist/csharp 4.52 kB 0 B
frontend/dist/csp 1.42 kB 0 B
frontend/dist/css 4.51 kB 0 B
frontend/dist/cssMode 4.15 kB 0 B
frontend/dist/CustomCssScene 3.55 kB 0 B
frontend/dist/CustomerAnalyticsConfigurationScene 1.99 kB 0 B
frontend/dist/CustomerAnalyticsScene 26.4 kB 0 B
frontend/dist/CustomerJourneyBuilderScene 1.69 kB 0 B
frontend/dist/CustomerJourneyTemplatesScene 7.39 kB 0 B
frontend/dist/customizations.full.js 17.9 kB 0 B
frontend/dist/CyclotronJobInputAssignee 1.32 kB 0 B
frontend/dist/CyclotronJobInputTicketTags 711 B 0 B
frontend/dist/cypher 3.38 kB 0 B
frontend/dist/dart 4.25 kB 0 B
frontend/dist/Dashboard 1.11 kB 0 B
frontend/dist/Dashboards 23.1 kB 0 B
frontend/dist/DataManagementScene 646 B 0 B
frontend/dist/DataPipelinesNewScene 2.32 kB 0 B
frontend/dist/DataWarehouseScene 1.21 kB 0 B
frontend/dist/DataWarehouseSourceScene 668 B 0 B
frontend/dist/Deactivated 1.13 kB 0 B
frontend/dist/dead-clicks-autocapture.js 13.1 kB 0 B
frontend/dist/DeadLetterQueue 5.38 kB 0 B
frontend/dist/DebugScene 20 kB 0 B
frontend/dist/decompressionWorker 2.85 kB 0 B
frontend/dist/decompressionWorker.js 2.85 kB 0 B
frontend/dist/DefinitionEdit 7.11 kB 0 B
frontend/dist/DefinitionView 22.7 kB 0 B
frontend/dist/DestinationsScene 2.71 kB 0 B
frontend/dist/dist 575 B 0 B
frontend/dist/dockerfile 1.87 kB 0 B
frontend/dist/EarlyAccessFeature 753 B 0 B
frontend/dist/EarlyAccessFeatures 2.84 kB 0 B
frontend/dist/ecl 5.33 kB 0 B
frontend/dist/EditorScene 896 B 0 B
frontend/dist/elixir 10.3 kB 0 B
frontend/dist/elk.bundled 1.44 MB 0 B
frontend/dist/EmailMFAVerify 2.98 kB 0 B
frontend/dist/EndpointScene 37.5 kB 0 B
frontend/dist/EndpointsScene 22.1 kB 0 B
frontend/dist/ErrorTrackingConfigurationScene 2.2 kB 0 B
frontend/dist/ErrorTrackingIssueFingerprintsScene 6.98 kB 0 B
frontend/dist/ErrorTrackingIssueScene 82.9 kB 0 B
frontend/dist/ErrorTrackingScene 12.9 kB 0 B
frontend/dist/EvaluationTemplates 575 B 0 B
frontend/dist/EventsScene 2.46 kB 0 B
frontend/dist/exception-autocapture.js 11.8 kB 0 B
frontend/dist/Experiment 210 kB 0 B
frontend/dist/Experiments 17.7 kB 0 B
frontend/dist/exporter 20.9 MB +42 B (0%)
frontend/dist/exporter.js 20.9 MB +42 B (0%)
frontend/dist/ExportsScene 3.86 kB 0 B
frontend/dist/FeatureFlag 128 kB 0 B
frontend/dist/FeatureFlags 606 B 0 B
frontend/dist/FeatureFlagTemplatesScene 7.03 kB 0 B
frontend/dist/FlappyHog 5.78 kB 0 B
frontend/dist/flow9 1.8 kB 0 B
frontend/dist/freemarker2 16.7 kB 0 B
frontend/dist/fsharp 2.98 kB 0 B
frontend/dist/go 2.65 kB 0 B
frontend/dist/graphql 2.26 kB 0 B
frontend/dist/Group 14.4 kB 0 B
frontend/dist/Groups 3.91 kB 0 B
frontend/dist/GroupsNew 7.34 kB 0 B
frontend/dist/handlebars 7.34 kB 0 B
frontend/dist/hcl 3.59 kB 0 B
frontend/dist/HealthCategoryDetailScene 7.23 kB 0 B
frontend/dist/HealthScene 10.3 kB 0 B
frontend/dist/HeatmapNewScene 4.16 kB 0 B
frontend/dist/HeatmapRecordingScene 3.92 kB 0 B
frontend/dist/HeatmapScene 5.88 kB 0 B
frontend/dist/HeatmapsScene 3.88 kB 0 B
frontend/dist/hls 394 kB 0 B
frontend/dist/HogFunctionScene 58.8 kB 0 B
frontend/dist/HogRepl 7.37 kB 0 B
frontend/dist/html 5.58 kB 0 B
frontend/dist/htmlMode 4.62 kB 0 B
frontend/dist/image-blob-reduce.esm 49.4 kB 0 B
frontend/dist/InboxScene 59.8 kB 0 B
frontend/dist/index 306 kB 0 B
frontend/dist/index.js 306 kB 0 B
frontend/dist/ini 1.1 kB 0 B
frontend/dist/InsightQuickStart 5.42 kB 0 B
frontend/dist/InsightScene 28.9 kB 0 B
frontend/dist/IntegrationsRedirect 733 B 0 B
frontend/dist/intercom-integration.js 1.93 kB 0 B
frontend/dist/InviteSignup 14.4 kB 0 B
frontend/dist/java 3.22 kB 0 B
frontend/dist/javascript 985 B 0 B
frontend/dist/jsonMode 13.9 kB 0 B
frontend/dist/julia 7.22 kB 0 B
frontend/dist/kotlin 3.4 kB 0 B
frontend/dist/lazy 158 kB 0 B
frontend/dist/LegacyPluginScene 26.6 kB 0 B
frontend/dist/LemonTextAreaMarkdown 502 B 0 B
frontend/dist/less 3.9 kB 0 B
frontend/dist/lexon 2.44 kB 0 B
frontend/dist/lib 2.22 kB 0 B
frontend/dist/Link 468 B 0 B
frontend/dist/LinkScene 24.8 kB 0 B
frontend/dist/LinksScene 4.19 kB 0 B
frontend/dist/liquid 4.53 kB 0 B
frontend/dist/LiveDebugger 19.1 kB 0 B
frontend/dist/LiveEventsTable 2.98 kB 0 B
frontend/dist/LLMAnalyticsClusterScene 15.7 kB 0 B
frontend/dist/LLMAnalyticsClustersScene 43.1 kB 0 B
frontend/dist/LLMAnalyticsDatasetScene 19.7 kB 0 B
frontend/dist/LLMAnalyticsDatasetsScene 3.28 kB 0 B
frontend/dist/LLMAnalyticsEvaluation 41.7 kB 0 B
frontend/dist/LLMAnalyticsEvaluationsScene 29.5 kB 0 B
frontend/dist/LLMAnalyticsPlaygroundScene 36.3 kB 0 B
frontend/dist/LLMAnalyticsScene 117 kB 0 B
frontend/dist/LLMAnalyticsSessionScene 13.4 kB 0 B
frontend/dist/LLMAnalyticsTraceScene 127 kB 0 B
frontend/dist/LLMAnalyticsUsers 526 B 0 B
frontend/dist/LLMASessionFeedbackDisplay 4.83 kB 0 B
frontend/dist/LLMPromptScene 20.6 kB 0 B
frontend/dist/LLMPromptsScene 4.21 kB 0 B
frontend/dist/Login 8.57 kB 0 B
frontend/dist/Login2FA 4.2 kB 0 B
frontend/dist/logs.js 38.5 kB 0 B
frontend/dist/LogsScene 11.4 kB 0 B
frontend/dist/lua 2.11 kB 0 B
frontend/dist/m3 2.81 kB 0 B
frontend/dist/main 819 kB 0 B
frontend/dist/ManagedMigration 14.1 kB 0 B
frontend/dist/markdown 3.79 kB 0 B
frontend/dist/MarketingAnalyticsScene 39.7 kB 0 B
frontend/dist/MaterializedColumns 10.2 kB 0 B
frontend/dist/Max 835 B 0 B
frontend/dist/mdx 5.39 kB 0 B
frontend/dist/memlens.lib.bundle 27.8 kB 0 B
frontend/dist/MessageTemplate 16.3 kB 0 B
frontend/dist/MetricsScene 828 B 0 B
frontend/dist/mips 2.58 kB 0 B
frontend/dist/ModelsScene 13.6 kB 0 B
frontend/dist/MonacoDiffEditor 403 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.46 kB 0 B
frontend/dist/msdax 4.91 kB 0 B
frontend/dist/mysql 11.3 kB 0 B
frontend/dist/NavTabChat 4.68 kB 0 B
frontend/dist/NewSourceWizard 758 B 0 B
frontend/dist/NewTabScene 681 B 0 B
frontend/dist/NodeDetailScene 16.3 kB 0 B
frontend/dist/NotebookCanvasScene 3.2 kB 0 B
frontend/dist/NotebookPanel 5.21 kB 0 B
frontend/dist/NotebookScene 8.21 kB 0 B
frontend/dist/NotebooksScene 7.58 kB 0 B
frontend/dist/OAuthAuthorize 573 B 0 B
frontend/dist/objective-c 2.41 kB 0 B
frontend/dist/Onboarding 704 kB 0 B
frontend/dist/OnboardingCouponRedemption 1.2 kB 0 B
frontend/dist/pascal 2.99 kB 0 B
frontend/dist/pascaligo 2 kB 0 B
frontend/dist/passkeyLogic 484 B 0 B
frontend/dist/PasswordReset 4.32 kB 0 B
frontend/dist/PasswordResetComplete 2.94 kB 0 B
frontend/dist/PendingDeletion 2.21 kB 0 B
frontend/dist/perl 8.25 kB 0 B
frontend/dist/PersonScene 16.1 kB 0 B
frontend/dist/PersonsScene 4.68 kB 0 B
frontend/dist/pgsql 13.5 kB 0 B
frontend/dist/php 8.02 kB 0 B
frontend/dist/PipelineStatusScene 6.22 kB 0 B
frontend/dist/pla 1.67 kB 0 B
frontend/dist/posthog 144 kB 0 B
frontend/dist/postiats 7.86 kB 0 B
frontend/dist/powerquery 16.9 kB 0 B
frontend/dist/powershell 3.27 kB 0 B
frontend/dist/PreflightCheck 5.53 kB 0 B
frontend/dist/product-tours.js 115 kB 0 B
frontend/dist/ProductTour 273 kB 0 B
frontend/dist/ProductTours 4.68 kB 0 B
frontend/dist/ProjectHomepage 24.7 kB 0 B
frontend/dist/protobuf 9.05 kB 0 B
frontend/dist/pug 4.82 kB 0 B
frontend/dist/python 4.76 kB 0 B
frontend/dist/qsharp 3.19 kB 0 B
frontend/dist/QueryPerformance 5.73 kB 0 B
frontend/dist/r 3.12 kB 0 B
frontend/dist/razor 9.35 kB 0 B
frontend/dist/recorder-v2.js 111 kB 0 B
frontend/dist/recorder.js 111 kB 0 B
frontend/dist/redis 3.55 kB 0 B
frontend/dist/redshift 11.8 kB 0 B
frontend/dist/RegionMap 29.4 kB 0 B
frontend/dist/render-query 20.6 MB +42 B (0%)
frontend/dist/render-query.js 20.6 MB +42 B (0%)
frontend/dist/ResourceTransfer 9.17 kB 0 B
frontend/dist/restructuredtext 3.9 kB 0 B
frontend/dist/RevenueAnalyticsScene 25.6 kB 0 B
frontend/dist/ruby 8.5 kB 0 B
frontend/dist/rust 4.16 kB 0 B
frontend/dist/SavedInsights 664 B 0 B
frontend/dist/sb 1.82 kB 0 B
frontend/dist/scala 7.32 kB 0 B
frontend/dist/scheme 1.76 kB 0 B
frontend/dist/scss 6.41 kB 0 B
frontend/dist/SdkDoctorScene 9.4 kB 0 B
frontend/dist/SessionAttributionExplorerScene 6.62 kB 0 B
frontend/dist/SessionGroupSummariesTable 4.62 kB 0 B
frontend/dist/SessionGroupSummaryScene 17 kB 0 B
frontend/dist/SessionProfileScene 15.8 kB 0 B
frontend/dist/SessionRecordingDetail 1.73 kB 0 B
frontend/dist/SessionRecordingFilePlaybackScene 4.46 kB 0 B
frontend/dist/SessionRecordings 742 B 0 B
frontend/dist/SessionRecordingsKiosk 8.84 kB 0 B
frontend/dist/SessionRecordingsPlaylistScene 4.14 kB 0 B
frontend/dist/SessionRecordingsSettingsScene 1.9 kB 0 B
frontend/dist/SessionsScene 3.86 kB 0 B
frontend/dist/SettingsScene 2.98 kB 0 B
frontend/dist/SharedMetric 4.83 kB 0 B
frontend/dist/SharedMetrics 549 B 0 B
frontend/dist/shell 3.07 kB 0 B
frontend/dist/SignupContainer 24.5 kB 0 B
frontend/dist/Site 1.18 kB 0 B
frontend/dist/solidity 18.6 kB 0 B
frontend/dist/sophia 2.76 kB 0 B
frontend/dist/SourcesScene 5.96 kB 0 B
frontend/dist/sourceWizardLogic 696 B 0 B
frontend/dist/sparql 2.55 kB 0 B
frontend/dist/sql 10.3 kB 0 B
frontend/dist/SqlVariableEditScene 7.24 kB 0 B
frontend/dist/st 7.4 kB 0 B
frontend/dist/StartupProgram 21.2 kB 0 B
frontend/dist/SubscriptionsScene 16.4 kB 0 B
frontend/dist/SupportSettingsScene 1.16 kB 0 B
frontend/dist/SupportTicketScene 24.6 kB 0 B
frontend/dist/SupportTicketsScene 733 B 0 B
frontend/dist/Survey 848 B 0 B
frontend/dist/SurveyFormBuilder 1.54 kB 0 B
frontend/dist/Surveys 18.2 kB 0 B
frontend/dist/surveys.js 90 kB 0 B
frontend/dist/SurveyWizard 64.2 kB 0 B
frontend/dist/swift 5.26 kB 0 B
frontend/dist/SystemStatus 16.8 kB 0 B
frontend/dist/systemverilog 7.61 kB 0 B
frontend/dist/TaskDetailScene 21.5 kB 0 B
frontend/dist/TaskTracker 13.2 kB 0 B
frontend/dist/tcl 3.57 kB 0 B
frontend/dist/TextCardMarkdownEditor 11 kB 0 B
frontend/dist/toolbar 10.7 MB 0 B
frontend/dist/toolbar.js 10.7 MB +42 B (0%)
frontend/dist/ToolbarLaunch 2.52 kB 0 B
frontend/dist/tracing-headers.js 1.74 kB 0 B
frontend/dist/TracingScene 29.8 kB 0 B
frontend/dist/TransformationsScene 1.95 kB 0 B
frontend/dist/tsMode 24 kB 0 B
frontend/dist/twig 5.97 kB 0 B
frontend/dist/TwoFactorReset 3.98 kB 0 B
frontend/dist/typescript 240 B 0 B
frontend/dist/typespec 2.82 kB 0 B
frontend/dist/Unsubscribe 1.62 kB 0 B
frontend/dist/UserInterview 4.53 kB 0 B
frontend/dist/UserInterviews 2.01 kB 0 B
frontend/dist/vb 5.79 kB 0 B
frontend/dist/VercelConnect 4.95 kB 0 B
frontend/dist/VercelLinkError 1.91 kB 0 B
frontend/dist/VerifyEmail 4.48 kB 0 B
frontend/dist/vimMode 211 kB 0 B
frontend/dist/VisualReviewRunScene 19.4 kB 0 B
frontend/dist/VisualReviewRunsScene 5.54 kB 0 B
frontend/dist/VisualReviewSettingsScene 10.8 kB 0 B
frontend/dist/web-vitals.js 6.39 kB 0 B
frontend/dist/WebAnalyticsScene 5.77 kB 0 B
frontend/dist/WebGLRenderer-DYjOwNoG 60.3 kB 0 B
frontend/dist/WebGPURenderer-B_wkl_Ja 36.3 kB 0 B
frontend/dist/WebScriptsScene 2.57 kB 0 B
frontend/dist/webworkerAll-puPV1rBA 324 B 0 B
frontend/dist/wgsl 7.34 kB 0 B
frontend/dist/Wizard 4.45 kB 0 B
frontend/dist/WorkflowScene 101 kB 0 B
frontend/dist/WorkflowsScene 48.7 kB 0 B
frontend/dist/WorldMap 4.73 kB 0 B
frontend/dist/xml 2.98 kB 0 B
frontend/dist/yaml 4.6 kB 0 B

compressed-size-action

return Response(status=status.HTTP_404_NOT_FOUND)
return Response(SignalUserAutonomyConfigSerializer(config).data)

def post(self, request, user_id, **kwargs):
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.

The method is named post but the ARCHITECTURE.md documentation (line 558) and REST conventions specify this should be a put method for idempotent create-or-update operations. This mismatch will cause 405 Method Not Allowed errors if clients follow the documented API contract and send PUT requests.

def put(self, request, user_id, **kwargs):
Suggested change
def post(self, request, user_id, **kwargs):
def put(self, request, user_id, **kwargs):

Spotted by Graphite

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog bot commented Apr 15, 2026

⏭️ Skipped snapshot commit because branch advanced to bb66e54 while workflow was testing deaad5e.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog bot commented Apr 15, 2026

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 →

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.

4 participants