Skip to content

ref(workflow_engine): Normalize the Workflow creation for a new project#112276

Draft
saponifi3d wants to merge 15 commits intomasterfrom
jcallender/aci/organize-rule-defaults
Draft

ref(workflow_engine): Normalize the Workflow creation for a new project#112276
saponifi3d wants to merge 15 commits intomasterfrom
jcallender/aci/organize-rule-defaults

Conversation

@saponifi3d
Copy link
Copy Markdown
Contributor

@saponifi3d saponifi3d commented Apr 6, 2026

Description

Migrate the Workflow (/ Issue rule code) to match the patterns from the detectors PR and remove uses of IssueAlertMigrator.

This introduces a subtle change as well; before this would ensure connections for ErrorDetector + IssueStreamDetector to every workflow; now this will only use the IssueStreamDetector to reduce the redundant connections.

The remainder of the code is logically unchanged.

@github-actions github-actions bot added the Scope: Backend Automatically applied to PRs that change backend components label Apr 6, 2026
@saponifi3d saponifi3d force-pushed the jcallender/aci/organize-rule-defaults branch 2 times, most recently from 9e8cb89 to d1ae9bb Compare April 6, 2026 19:23
@saponifi3d saponifi3d force-pushed the jcallender/aci/organize-defaults-code branch from 682bf2a to 2f3a48c Compare April 6, 2026 19:24
@saponifi3d saponifi3d force-pushed the jcallender/aci/organize-rule-defaults branch from d1ae9bb to f146ca8 Compare April 6, 2026 19:24
@saponifi3d saponifi3d changed the title Jcallender/aci/organize rule defaults ref(workflow_engine): Normalize the Workflow creation for a new project Apr 6, 2026
@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@getsentry getsentry deleted a comment from github-actions bot Apr 6, 2026
@getsentry getsentry deleted a comment from github-actions bot Apr 6, 2026
@getsentry getsentry deleted a comment from github-actions bot Apr 6, 2026
@github-actions

This comment was marked as outdated.

…nditions that might cause this to be invoked mulitple times
…ing it because it's not clear where its' eing used / how
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 6, 2026

Backend Test Failures

Failures on 43f95a7 in this run:

tests/sentry/projects/project_rules/test_creator.py::TestProjectRuleCreator::test_create_rule_and_workflowlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/projects/project_rules/test_creator.py:60: in test_create_rule_and_workflow
    alert_rule_detector = AlertRuleDetector.objects.get(rule_id=rule_id)
.venv/lib/python3.13/site-packages/django/db/models/manager.py:87: in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/query.py:635: in get
    raise self.model.DoesNotExist(
E   sentry.workflow_engine.models.alertrule_detector.AlertRuleDetector.DoesNotExist: AlertRuleDetector matching query does not exist.
tests/sentry/monitors/endpoints/test_organization_monitor_details.py::UpdateMonitorTest::test_existing_issue_alert_rule_add_slug_conditionlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:564: in test_existing_issue_alert_rule_add_slug_condition
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/workflow_engine/test_integration.py::TestWorkflowEngineIntegrationFromErrorPostProcess::test_default_workflowlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/workflow_engine/test_integration.py:224: in test_default_workflow
    workflow = DetectorWorkflow.objects.get(detector=detector).workflow
.venv/lib/python3.13/site-packages/django/db/models/manager.py:87: in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/query.py:635: in get
    raise self.model.DoesNotExist(
E   sentry.workflow_engine.models.detector_workflow.DetectorWorkflow.DoesNotExist: DetectorWorkflow matching query does not exist.
tests/sentry/core/endpoints/test_organization_projects_experiment.py::OrganizationProjectsExperimentCreateTest::test_without_default_ruleslog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/core/endpoints/test_organization_projects_experiment.py:173: in test_without_default_rules
    assert not Rule.objects.filter(project=project).exists()
E   AssertionError: assert not True
E    +  where True = <bound method QuerySet.exists of <BaseQuerySet [<Rule at 0x7f72284c7cd0: id=12, project_id=4557923691921424, label='Send a notification for high priority issues'>]>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet [<Rule at 0x7f72284c7cd0: id=12, project_id=4557923691921424, label='Send a notification for high priority issues'>]>> = <BaseQuerySet [<Rule at 0x7f72284c7ac0: id=12, project_id=4557923691921424, label='Send a notification for high priority issues'>]>.exists
E    +      where <BaseQuerySet [<Rule at 0x7f72284c7ac0: id=12, project_id=4557923691921424, label='Send a notification for high priority issues'>]> = <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f7286af97f0>>(project=<Project at 0x7f726e59ad00: id=4557923691921424, team_id=None, name='project-one', slug='project-one', organization_id=4557923691921424>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f7286af97f0>> = <sentry.db.models.manager.base.BaseManager object at 0x7f7286af97f0>.filter
E    +          where <sentry.db.models.manager.base.BaseManager object at 0x7f7286af97f0> = Rule.objects
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_project_created_with_originlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:195: in test_project_created_with_origin
    assert_last_analytics_event(
src/sentry/testutils/helpers/analytics.py:50: in assert_last_analytics_event
    assert_event_equal(
src/sentry/testutils/helpers/analytics.py:23: in assert_event_equal
    raise AssertionError(
E   AssertionError: Expected event type <class 'sentry.analytics.events.project_created.ProjectCreatedEvent'> but got <class 'sentry.analytics.events.alert_created.AlertCreatedEvent'>
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_issue_alert_received_through_project_creationlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:855: in test_issue_alert_received_through_project_creation
    assert not OrganizationOnboardingTask.objects.filter(
E   AssertionError: assert not True
E    +  where True = <bound method QuerySet.exists of <BaseQuerySet [<OrganizationOnboardingTask at 0x7f9fa24df9d0: id=80, organization=<Organization at 0x7f9f8d0c0f70: id=4557923703914512, owner_id=None, name='Popular Burro', slug='second-org'>, task=10>]>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet [<OrganizationOnboardingTask at 0x7f9fa24df9d0: id=80, organization=<Organization at 0x7f9f8d0c0f70: id=4557923703914512, owner_id=None, name='Popular Burro', slug='second-org'>, task=10>]>> = <BaseQuerySet [<OrganizationOnboardingTask at 0x7f9fa24df9d0: id=80, organization=<Organization at 0x7f9f8d0c0e10: id=4557923703914512, owner_id=None, name='Popular Burro', slug='second-org'>, task=10>]>.exists
E    +      where <BaseQuerySet [<OrganizationOnboardingTask at 0x7f9fa24df9d0: id=80, organization=<Organization at 0x7f9f8d0c0e10: id=4557923703914512, owner_id=None, name='Popular Burro', slug='second-org'>, task=10>]> = <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f9fc5f95be0>>(organization=<Organization at 0x7f9f8d0c0d60: id=4557923703914512, owner_id=None, name='Popular Burro', slug='second-org'>, task=<OnboardingTask.ALERT_RULE: 10>, status=<OnboardingTaskStatus.COMPLETE: 1>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f9fc5f95be0>> = <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f9fc5f95be0>.filter
E    +          where <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f9fc5f95be0> = OrganizationOnboardingTask.objects
E    +        and   <Organization at 0x7f9f8d0c0d60: id=4557923703914512, owner_id=None, name='Popular Burro', slug='second-org'> = <Project at 0x7f9fba906750: id=4557923703914513, team_id=None, name='Massive Sculpin', slug='massive-sculpin', organization_id=4557923703914512>.organization
E    +        and   <OnboardingTask.ALERT_RULE: 10> = OnboardingTask.ALERT_RULE
E    +        and   <OnboardingTaskStatus.COMPLETE: 1> = OnboardingTaskStatus.COMPLETE
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_project_created__default_workflowlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:178: in test_project_created__default_workflow
    assert DetectorWorkflow.objects.filter(workflow=workflow).count() == 2
E   assert 1 == 2
E    +  where 1 = <bound method QuerySet.count of <BaseQuerySet [<DetectorWorkflow at 0x7f487421e150: id=47>]>>()
E    +    where <bound method QuerySet.count of <BaseQuerySet [<DetectorWorkflow at 0x7f487421e150: id=47>]>> = <BaseQuerySet [<DetectorWorkflow at 0x7f487421e150: id=47>]>.count
E    +      where <BaseQuerySet [<DetectorWorkflow at 0x7f487421e150: id=47>]> = <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f48932482f0>>(workflow=<Workflow at 0x7f488c6bf410: id=37, organization_id=4557923702145056>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f48932482f0>> = <sentry.db.models.manager.base.BaseManager object at 0x7f48932482f0>.filter
E    +          where <sentry.db.models.manager.base.BaseManager object at 0x7f48932482f0> = DetectorWorkflow.objects
tests/sentry/monitors/endpoints/test_organization_monitor_details.py::UpdateMonitorTest::test_existing_issue_alert_rulelog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:512: in test_existing_issue_alert_rule
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/monitors/endpoints/test_project_monitor_details.py::ProjectUpdateMonitorTest::test_existing_issue_alert_rule_add_slug_conditionlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:564: in test_existing_issue_alert_rule_add_slug_condition
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_new_onboarding_completelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:877: in test_new_onboarding_complete
    assert_last_analytics_event(
src/sentry/testutils/helpers/analytics.py:50: in assert_last_analytics_event
    assert_event_equal(
src/sentry/testutils/helpers/analytics.py:23: in assert_event_equal
    raise AssertionError(
E   AssertionError: Expected event type <class 'sentry.analytics.events.project_created.ProjectCreatedEvent'> but got <class 'sentry.analytics.events.alert_created.AlertCreatedEvent'>
tests/sentry/core/endpoints/test_team_projects.py::TeamProjectsCreateTest::test_without_default_rules_disable_member_project_creationlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/core/endpoints/test_team_projects.py:158: in test_without_default_rules_disable_member_project_creation
    assert not Rule.objects.filter(project=project).exists()
E   AssertionError: assert not True
E    +  where True = <bound method QuerySet.exists of <BaseQuerySet [<Rule at 0x7f17a78b4a10: id=13, project_id=4557923693166624, label='Send a notification for high priority issues'>]>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet [<Rule at 0x7f17a78b4a10: id=13, project_id=4557923693166624, label='Send a notification for high priority issues'>]>> = <BaseQuerySet [<Rule at 0x7f17a78b4d10: id=13, project_id=4557923693166624, label='Send a notification for high priority issues'>]>.exists
E    +      where <BaseQuerySet [<Rule at 0x7f17a78b4d10: id=13, project_id=4557923693166624, label='Send a notification for high priority issues'>]> = <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f17dc9057f0>>(project=<Project at 0x7f17c7921e60: id=4557923693166624, team_id=None, name='foo', slug='bar', organization_id=4557923693166624>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f17dc9057f0>> = <sentry.db.models.manager.base.BaseManager object at 0x7f17dc9057f0>.filter
E    +          where <sentry.db.models.manager.base.BaseManager object at 0x7f17dc9057f0> = Rule.objects
tests/sentry/monitors/endpoints/test_organization_monitor_index.py::CreateOrganizationMonitorTest::test_simple_with_alert_rulelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_organization_monitor_index.py:604: in test_simple_with_alert_rule
    assert DetectorWorkflow.objects.filter(detector=detector, workflow=workflow).exists()
E   AssertionError: assert False
E    +  where False = <bound method QuerySet.exists of <BaseQuerySet []>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet []>> = <BaseQuerySet []>.exists
E    +      where <BaseQuerySet []> = <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f2521c502f0>>(detector=<Detector at 0x7f2509ea69c0: id=436>, workflow=<Workflow at 0x7f2504c36e10: id=34, organization_id=4557923703521296>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f2521c502f0>> = <sentry.db.models.manager.base.BaseManager object at 0x7f2521c502f0>.filter
E    +          where <sentry.db.models.manager.base.BaseManager object at 0x7f2521c502f0> = <class 'sentry.workflow_engine.models.detector_workflow.DetectorWorkflow'>.objects
tests/sentry/monitors/endpoints/test_project_monitor_details.py::ProjectUpdateMonitorTest::test_existing_issue_alert_rulelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:512: in test_existing_issue_alert_rule
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code

…g tests for now, start updating tests that are failing because of the logic change
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 6, 2026

Backend Test Failures

Failures on 5f924d9 in this run:

tests/sentry/monitors/endpoints/test_organization_monitor_details.py::UpdateMonitorTest::test_existing_issue_alert_rulelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:512: in test_existing_issue_alert_rule
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/monitors/endpoints/test_project_monitor_details.py::ProjectUpdateMonitorTest::test_existing_issue_alert_rule_add_slug_conditionlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:564: in test_existing_issue_alert_rule_add_slug_condition
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

Backend Test Failures

Failures on fc43ef7 in this run:

tests/sentry/monitors/endpoints/test_organization_monitor_details.py::UpdateMonitorTest::test_existing_issue_alert_rulelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:512: in test_existing_issue_alert_rule
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/monitors/endpoints/test_project_monitor_details.py::ProjectUpdateMonitorTest::test_existing_issue_alert_rule_add_slug_conditionlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:564: in test_existing_issue_alert_rule_add_slug_condition
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/monitors/endpoints/test_organization_monitor_details.py::UpdateMonitorTest::test_existing_issue_alert_rule_add_slug_conditionlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:564: in test_existing_issue_alert_rule_add_slug_condition
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/projects/project_rules/test_creator.py::TestProjectRuleCreator::test_create_rule_and_workflowlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/projects/project_rules/test_creator.py:57: in test_create_rule_and_workflow
    rule = self.creator.run()
src/sentry/projects/project_rules/creator.py:38: in run
    workflows = ensure_default_workflows(self.project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7f77cf021710: id=46, organization_id=4557923896328225>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/workflow_engine/defaults/test_workflows.py::TestCreatePriorityWorkflow::test_idempotent_returns_existing_workflowlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/workflow_engine/defaults/test_workflows.py:159: in test_idempotent_returns_existing_workflow
    assert workflow1.id == workflow2.id
E   AttributeError: 'BaseQuerySet' object has no attribute 'id'
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py::ProjectAlertRuleTaskDetailsTest::test_status_successlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py:22: in setUp
    self.create_project(teams=[team], name="bar", fire_project_created=True)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fe48436d5e0: id=6, organization_id=4557923882237968>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/snuba/sessions/test_sessions.py::GetCrashFreeRateTestCase::test_get_current_and_previous_crash_free_rateslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/sessions/test_sessions.py:1046: in setUp
    self.project3 = self.create_project(
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fd71dea9ef0: id=63, organization_id=4557923909435424>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py::ProjectAlertRuleTaskDetailsTest::test_workflow_engine_serializerlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py:22: in setUp
    self.create_project(teams=[team], name="bar", fire_project_created=True)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fc2a067db80: id=6, organization_id=4557923882434576>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/api/endpoints/test_project_rules.py::CreateProjectRuleTest::test_exceed_limit_slow_conditionslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_rules.py:761: in test_exceed_limit_slow_conditions
    self.run_test(conditions=conditions, actions=actions)
tests/sentry/api/endpoints/test_project_rules.py:449: in run_test
    response = self.get_success_response(
src/sentry/testutils/cases.py:641: in get_success_response
    assert_status_code(response, 200, 300)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 300
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/snuba/sessions/test_sessions.py::GetCrashFreeRateTestCase::test_extract_crash_free_rate_from_result_groups_with_nonelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/sessions/test_sessions.py:1046: in setUp
    self.project3 = self.create_project(
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fc29197e8d0: id=55, organization_id=4557923909566480>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/snuba/sessions/test_sessions.py::GetCrashFreeRateTestCase::test_extract_crash_free_rates_from_result_groups_only_nonelog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/sessions/test_sessions.py:1046: in setUp
    self.project3 = self.create_project(
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7f306d199010: id=65, organization_id=4557923909763104>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/digests/test_utilities.py::GetPersonalizedDigestsTestCase::test_team_without_members_with_workflow_idlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/digests/test_utilities.py:349: in test_team_without_members_with_workflow_id
    project = self.create_project(teams=[team], fire_project_created=True)
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7f0c2bf4baf0: id=38, organization_id=4557923886956576>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py::ProjectAlertRuleTaskDetailsTest::test_status_failedlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py:22: in setUp
    self.create_project(teams=[team], name="bar", fire_project_created=True)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7f1da15d57c0: id=6, organization_id=4557923881975840>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/monitors/endpoints/test_organization_monitor_index.py::CreateOrganizationMonitorTest::test_simple_with_alert_rulelog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_organization_monitor_index.py:604: in test_simple_with_alert_rule
    assert DetectorWorkflow.objects.filter(detector=detector, workflow=workflow).exists()
E   AssertionError: assert False
E    +  where False = <bound method QuerySet.exists of <BaseQuerySet []>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet []>> = <BaseQuerySet []>.exists
E    +      where <BaseQuerySet []> = <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f1dc3c582f0>>(detector=<Detector at 0x7f1d9258b1e0: id=467>, workflow=<Workflow at 0x7f1d90749c10: id=43, organization_id=4557923895279648>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f1dc3c582f0>> = <sentry.db.models.manager.base.BaseManager object at 0x7f1dc3c582f0>.filter
E    +          where <sentry.db.models.manager.base.BaseManager object at 0x7f1dc3c582f0> = <class 'sentry.workflow_engine.models.detector_workflow.DetectorWorkflow'>.objects
tests/sentry/api/endpoints/test_project_rules.py::CreateProjectRuleTest::test_comparison_conditionlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_rules.py:1178: in test_comparison_condition
    self.run_test(actions=actions, conditions=[condition])
tests/sentry/api/endpoints/test_project_rules.py:449: in run_test
    response = self.get_success_response(
src/sentry/testutils/cases.py:641: in get_success_response
    assert_status_code(response, 200, 300)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 300
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/monitors/endpoints/test_project_monitor_details.py::ProjectUpdateMonitorTest::test_existing_issue_alert_rulelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:512: in test_existing_issue_alert_rule
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/snuba/sessions/test_sessions.py::GetCrashFreeRateTestCase::test_get_current_and_previous_crash_free_rates_with_zero_sessionslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/sessions/test_sessions.py:1046: in setUp
    self.project3 = self.create_project(
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7f5922b209f0: id=90, organization_id=4557923910287392>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py::ProjectAlertRuleTaskDetailsTest::test_status_pendinglog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_alert_rule_task_details.py:22: in setUp
    self.create_project(teams=[team], name="bar", fire_project_created=True)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fda2da5a210: id=6, organization_id=4557923883745296>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/digests/test_utilities.py::GetPersonalizedDigestsTestCase::test_team_without_members_with_legacy_rule_idlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/digests/test_utilities.py:370: in test_team_without_members_with_legacy_rule_id
    project = self.create_project(teams=[team], fire_project_created=True)
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7ff7ddeb8210: id=32, organization_id=4557923889381408>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/workflow_engine/test_integration.py::TestWorkflowEngineIntegrationFromErrorPostProcess::test_default_workflowlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/workflow_engine/test_integration.py:269: in test_default_workflow
    assert not mock_trigger.called
E   AssertionError: assert not True
E    +  where True = <MagicMock name='apply_async' id='140574457084768'>.called
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_issue_alert_received_through_project_creationlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:850: in test_issue_alert_received_through_project_creation
    assert OrganizationOnboardingTask.objects.filter(
E   AssertionError: assert False
E    +  where False = <bound method QuerySet.exists of <BaseQuerySet []>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet []>> = <BaseQuerySet []>.exists
E    +      where <BaseQuerySet []> = <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f0e087b9be0>>(organization=<Organization at 0x7f0de5813330: id=4557923897901072, owner_id=None, name='Delicate Seasnail', slug='first-org'>, task=<OnboardingTask.ALERT_RULE: 10>, status=<OnboardingTaskStatus.COMPLETE: 1>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f0e087b9be0>> = <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f0e087b9be0>.filter
E    +          where <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f0e087b9be0> = OrganizationOnboardingTask.objects
E    +        and   <Organization at 0x7f0de5813330: id=4557923897901072, owner_id=None, name='Delicate Seasnail', slug='first-org'> = <Project at 0x7f0df127ab60: id=4557923897966608, team_id=None, name='Capable Anemone', slug='capable-anemone', organization_id=4557923897901072>.organization
E    +        and   <OnboardingTask.ALERT_RULE: 10> = OnboardingTask.ALERT_RULE
E    +        and   <OnboardingTaskStatus.COMPLETE: 1> = OnboardingTaskStatus.COMPLETE
tests/sentry/digests/test_utilities.py::GetPersonalizedDigestsTestCase::test_team_without_memberslog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/digests/test_utilities.py:327: in test_team_without_members
    project = self.create_project(teams=[team], fire_project_created=True)
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fc41c869fd0: id=34, organization_id=4557923888005136>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/api/endpoints/test_project_rules.py::CreateProjectRuleTest::test_duplicate_rule_environmentlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_rules.py:599: in test_duplicate_rule_environment
    response = self.get_success_response(
src/sentry/testutils/cases.py:641: in get_success_response
    assert_status_code(response, 200, 300)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 300
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/api/endpoints/test_project_rules.py::CreateProjectRuleTest::test_exceed_limit_fast_conditionslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_project_rules.py:725: in test_exceed_limit_fast_conditions
    self.run_test(conditions=self.first_seen_condition, actions=self.notify_event_action)
tests/sentry/api/endpoints/test_project_rules.py:449: in run_test
    response = self.get_success_response(
src/sentry/testutils/cases.py:641: in get_success_response
    assert_status_code(response, 200, 300)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 300
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/incidents/test_logic.py::UpdateAlertRuleTest::test_delete_projectslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/incidents/test_logic.py:899: in test_delete_projects
    projects=[self.project, self.create_project(fire_project_created=True)]
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fc208277890: id=66, organization_id=4557923891544096>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/incidents/test_logic.py::UpdateAlertRuleTest::test_new_updated_deleted_projectslog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/incidents/test_logic.py:915: in test_new_updated_deleted_projects
    new_project = self.create_project(fire_project_created=True)
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7fc209af6e10: id=72, organization_id=4557923892068384>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_source_maps_as_required_tasklog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:1320: in test_source_maps_as_required_task
    assert (
E   AssertionError: assert 0 == 1
E    +  where 0 = <bound method QuerySet.count of <BaseQuerySet []>>()
E    +    where <bound method QuerySet.count of <BaseQuerySet []>> = <BaseQuerySet []>.count
E    +      where <BaseQuerySet []> = <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7fc2263d1fd0>>(organization=<Organization at 0x7fc1eed70cd0: id=4557923898884128, owner_id=None, name='baz', slug='baz'>, key='onboarding:complete')
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7fc2263d1fd0>> = <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7fc2263d1fd0>.filter
E    +          where <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7fc2263d1fd0> = OrganizationOption.objects
E    +        and   <Organization at 0x7fc1eed70cd0: id=4557923898884128, owner_id=None, name='baz', slug='baz'> = <tests.sentry.receivers.test_onboarding.OrganizationOnboardingTaskTest testMethod=test_source_maps_as_required_task>.organization
tests/snuba/sessions/test_sessions.py::GetCrashFreeRateTestCase::test_extract_crash_free_rate_from_result_groupslog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/snuba/sessions/test_sessions.py:1046: in setUp
    self.project3 = self.create_project(
src/sentry/testutils/cases.py:1067: in create_project
    return super().create_project(**kwargs)
src/sentry/testutils/fixtures.py:216: in create_project
    return Factories.create_project(**kwargs)
/opt/hostedtoolcache/Python/3.13.1/x64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
src/sentry/testutils/factories.py:586: in create_project
    project_created.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
src/sentry/workflow_engine/receivers/project_workflows.py:56: in create_default_rules
    workflows = ensure_default_workflows(project)
src/sentry/workflow_engine/defaults/workflows.py:116: in ensure_default_workflows
    connect_workflows_to_issue_stream(project, workflows)
src/sentry/workflow_engine/defaults/workflows.py:33: in connect_workflows_to_issue_stream
    DetectorWorkflow(
.venv/lib/python3.13/site-packages/django/db/models/base.py:545: in __init__
    _setattr(self, field.name, rel_obj)
.venv/lib/python3.13/site-packages/django/db/models/fields/related_descriptors.py:291: in __set__
    raise ValueError(
E   ValueError: Cannot assign "<BaseQuerySet [<Workflow at 0x7f4229f6cd70: id=57, organization_id=4557923913957392>]>": "DetectorWorkflow.workflow" must be a "Workflow" instance.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 7, 2026

Backend Test Failures

Failures on 9a665d6 in this run:

tests/sentry/monitors/endpoints/test_organization_monitor_details.py::UpdateMonitorTest::test_existing_issue_alert_rule_add_slug_conditionlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:564: in test_existing_issue_alert_rule_add_slug_condition
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_issue_alert_received_through_project_creationlog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:850: in test_issue_alert_received_through_project_creation
    assert OrganizationOnboardingTask.objects.filter(
E   AssertionError: assert False
E    +  where False = <bound method QuerySet.exists of <BaseQuerySet []>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet []>> = <BaseQuerySet []>.exists
E    +      where <BaseQuerySet []> = <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f7ec01b1be0>>(organization=<Organization at 0x7f7e803f90d0: id=4557923963830304, owner_id=None, name='Easy Pug', slug='first-org'>, task=<OnboardingTask.ALERT_RULE: 10>, status=<OnboardingTaskStatus.COMPLETE: 1>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f7ec01b1be0>> = <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f7ec01b1be0>.filter
E    +          where <sentry.db.models.manager.base.OrganizationOnboardingTaskManager object at 0x7f7ec01b1be0> = OrganizationOnboardingTask.objects
E    +        and   <Organization at 0x7f7e803f90d0: id=4557923963830304, owner_id=None, name='Easy Pug', slug='first-org'> = <Project at 0x7f7ea6abfee0: id=4557923963895840, team_id=None, name='Healthy Eft', slug='healthy-eft', organization_id=4557923963830304>.organization
E    +        and   <OnboardingTask.ALERT_RULE: 10> = OnboardingTask.ALERT_RULE
E    +        and   <OnboardingTaskStatus.COMPLETE: 1> = OnboardingTaskStatus.COMPLETE
tests/sentry/receivers/test_onboarding.py::OrganizationOnboardingTaskTest::test_source_maps_as_required_tasklog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/receivers/test_onboarding.py:1320: in test_source_maps_as_required_task
    assert (
E   AssertionError: assert 0 == 1
E    +  where 0 = <bound method QuerySet.count of <BaseQuerySet []>>()
E    +    where <bound method QuerySet.count of <BaseQuerySet []>> = <BaseQuerySet []>.count
E    +      where <BaseQuerySet []> = <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7f6ddfdd5fd0>>(organization=<Organization at 0x7f6db22ba850: id=4557923964157968, owner_id=None, name='baz', slug='baz'>, key='onboarding:complete')
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7f6ddfdd5fd0>> = <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7f6ddfdd5fd0>.filter
E    +          where <sentry.db.models.manager.base.OrganizationOptionManager object at 0x7f6ddfdd5fd0> = OrganizationOption.objects
E    +        and   <Organization at 0x7f6db22ba850: id=4557923964157968, owner_id=None, name='baz', slug='baz'> = <tests.sentry.receivers.test_onboarding.OrganizationOnboardingTaskTest testMethod=test_source_maps_as_required_task>.organization
tests/sentry/workflow_engine/test_integration.py::TestWorkflowEngineIntegrationFromErrorPostProcess::test_default_workflowlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/workflow_engine/test_integration.py:269: in test_default_workflow
    assert not mock_trigger.called
E   AssertionError: assert not True
E    +  where True = <MagicMock name='apply_async' id='139933950525520'>.called
tests/sentry/monitors/endpoints/test_organization_monitor_index.py::CreateOrganizationMonitorTest::test_simple_with_alert_rulelog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_organization_monitor_index.py:604: in test_simple_with_alert_rule
    assert DetectorWorkflow.objects.filter(detector=detector, workflow=workflow).exists()
E   AssertionError: assert False
E    +  where False = <bound method QuerySet.exists of <BaseQuerySet []>>()
E    +    where <bound method QuerySet.exists of <BaseQuerySet []>> = <BaseQuerySet []>.exists
E    +      where <BaseQuerySet []> = <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f85bc0342f0>>(detector=<Detector at 0x7f85a2458460: id=439>, workflow=<Workflow at 0x7f85b54ab650: id=47, organization_id=4557923965075488>)
E    +        where <bound method QuerySet.filter of <sentry.db.models.manager.base.BaseManager object at 0x7f85bc0342f0>> = <sentry.db.models.manager.base.BaseManager object at 0x7f85bc0342f0>.filter
E    +          where <sentry.db.models.manager.base.BaseManager object at 0x7f85bc0342f0> = <class 'sentry.workflow_engine.models.detector_workflow.DetectorWorkflow'>.objects
tests/sentry/monitors/endpoints/test_organization_monitor_details.py::UpdateMonitorTest::test_existing_issue_alert_rulelog
[gw1] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:512: in test_existing_issue_alert_rule
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/monitors/endpoints/test_project_monitor_details.py::ProjectUpdateMonitorTest::test_existing_issue_alert_rule_add_slug_conditionlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:564: in test_existing_issue_alert_rule_add_slug_condition
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code
tests/sentry/projects/project_rules/test_creator.py::TestProjectRuleCreator::test_create_rule_and_workflowlog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/projects/project_rules/test_creator.py:60: in test_create_rule_and_workflow
    alert_rule_detector = AlertRuleDetector.objects.get(rule_id=rule_id)
.venv/lib/python3.13/site-packages/django/db/models/manager.py:87: in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
.venv/lib/python3.13/site-packages/django/db/models/query.py:635: in get
    raise self.model.DoesNotExist(
E   sentry.workflow_engine.models.alertrule_detector.AlertRuleDetector.DoesNotExist: AlertRuleDetector matching query does not exist.
tests/sentry/monitors/endpoints/test_project_monitor_details.py::ProjectUpdateMonitorTest::test_existing_issue_alert_rulelog
[gw0] linux -- Python 3.13.1 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/monitors/endpoints/test_base_monitor_details.py:512: in test_existing_issue_alert_rule
    resp = self.get_success_response(
src/sentry/testutils/cases.py:636: in get_success_response
    assert_status_code(response, status.HTTP_200_OK)
src/sentry/testutils/asserts.py:46: in assert_status_code
    assert minimum <= response.status_code < maximum, response
E   AssertionError: <Response status_code=500, "application/json">
E   assert 500 < 201
E    +  where 500 = <Response status_code=500, "application/json">.status_code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant