From c4b4658e30489b22ababf2ab4f01cc2307527866 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 11 Nov 2025 14:07:26 -0800 Subject: [PATCH 1/4] add constant for default config name to `server.py` --- src/sentry/conf/server.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sentry/conf/server.py b/src/sentry/conf/server.py index 8cb5d8e070a47d..1e74002aac8a82 100644 --- a/src/sentry/conf/server.py +++ b/src/sentry/conf/server.py @@ -2696,6 +2696,7 @@ def custom_parameter_sort(parameter: dict) -> tuple[str, int]: # Similarity-v1: uses hardcoded set of event properties for diffing SENTRY_SIMILARITY_INDEX_REDIS_CLUSTER = "default" +WINTER_2023_GROUPING_CONFIG = "newstyle:2023-01-11" DEFAULT_GROUPING_CONFIG = "newstyle:2023-01-11" BETA_GROUPING_CONFIG = "" From e4f586f65b7ab49a35151f7644277a2343ba16ac Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 11 Nov 2025 14:07:26 -0800 Subject: [PATCH 2/4] move new config constant to `server.py` --- src/sentry/conf/server.py | 1 + src/sentry/grouping/strategies/configurations.py | 2 +- tests/sentry/grouping/test_components.py | 3 +-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/sentry/conf/server.py b/src/sentry/conf/server.py index 1e74002aac8a82..93b04571f137c7 100644 --- a/src/sentry/conf/server.py +++ b/src/sentry/conf/server.py @@ -2697,6 +2697,7 @@ def custom_parameter_sort(parameter: dict) -> tuple[str, int]: SENTRY_SIMILARITY_INDEX_REDIS_CLUSTER = "default" WINTER_2023_GROUPING_CONFIG = "newstyle:2023-01-11" +FALL_2025_GROUPING_CONFIG = "newstyle:2025-11-21" DEFAULT_GROUPING_CONFIG = "newstyle:2023-01-11" BETA_GROUPING_CONFIG = "" diff --git a/src/sentry/grouping/strategies/configurations.py b/src/sentry/grouping/strategies/configurations.py index 176d68b1cf79d4..c2f593b413f593 100644 --- a/src/sentry/grouping/strategies/configurations.py +++ b/src/sentry/grouping/strategies/configurations.py @@ -1,3 +1,4 @@ +from sentry.conf.server import FALL_2025_GROUPING_CONFIG from sentry.grouping.strategies.base import ( StrategyConfiguration, create_strategy_configuration_class, @@ -63,7 +64,6 @@ def register_grouping_config(id: str, **kwargs) -> type[StrategyConfiguration]: fingerprinting_bases=["javascript@2024-02-02"], ) -FALL_2025_GROUPING_CONFIG = "newstyle:2025-11-21" register_grouping_config( id=FALL_2025_GROUPING_CONFIG, base="newstyle:2023-01-11", diff --git a/tests/sentry/grouping/test_components.py b/tests/sentry/grouping/test_components.py index 86be8fc100c167..6c8b409a68be61 100644 --- a/tests/sentry/grouping/test_components.py +++ b/tests/sentry/grouping/test_components.py @@ -3,7 +3,7 @@ import pytest -from sentry.conf.server import DEFAULT_GROUPING_CONFIG +from sentry.conf.server import DEFAULT_GROUPING_CONFIG, FALL_2025_GROUPING_CONFIG from sentry.grouping.component import ( BaseGroupingComponent, ChainedExceptionGroupingComponent, @@ -13,7 +13,6 @@ StacktraceGroupingComponent, ThreadsGroupingComponent, ) -from sentry.grouping.strategies.configurations import FALL_2025_GROUPING_CONFIG from sentry.services.eventstore.models import Event from sentry.testutils.cases import TestCase From b770c54309142fd594e37768cc4b12c959777a52 Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 11 Nov 2025 14:07:26 -0800 Subject: [PATCH 3/4] use constant when defining configs --- src/sentry/conf/server.py | 2 +- src/sentry/grouping/strategies/configurations.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sentry/conf/server.py b/src/sentry/conf/server.py index 93b04571f137c7..b7f94ccb0702eb 100644 --- a/src/sentry/conf/server.py +++ b/src/sentry/conf/server.py @@ -2698,7 +2698,7 @@ def custom_parameter_sort(parameter: dict) -> tuple[str, int]: WINTER_2023_GROUPING_CONFIG = "newstyle:2023-01-11" FALL_2025_GROUPING_CONFIG = "newstyle:2025-11-21" -DEFAULT_GROUPING_CONFIG = "newstyle:2023-01-11" +DEFAULT_GROUPING_CONFIG = WINTER_2023_GROUPING_CONFIG BETA_GROUPING_CONFIG = "" # How long the migration phase for grouping lasts diff --git a/src/sentry/grouping/strategies/configurations.py b/src/sentry/grouping/strategies/configurations.py index c2f593b413f593..b0b48c718a5f11 100644 --- a/src/sentry/grouping/strategies/configurations.py +++ b/src/sentry/grouping/strategies/configurations.py @@ -1,4 +1,4 @@ -from sentry.conf.server import FALL_2025_GROUPING_CONFIG +from sentry.conf.server import FALL_2025_GROUPING_CONFIG, WINTER_2023_GROUPING_CONFIG from sentry.grouping.strategies.base import ( StrategyConfiguration, create_strategy_configuration_class, @@ -53,7 +53,7 @@ def register_grouping_config(id: str, **kwargs) -> type[StrategyConfiguration]: # This is the current default config register_grouping_config( - id="newstyle:2023-01-11", + id=WINTER_2023_GROUPING_CONFIG, # There's no `base` argument here because this config is based on `BASE_STRATEGY`. To base a # config on a previous config, include its `id` value as the value for `base` here. initial_context={ @@ -66,7 +66,7 @@ def register_grouping_config(id: str, **kwargs) -> type[StrategyConfiguration]: register_grouping_config( id=FALL_2025_GROUPING_CONFIG, - base="newstyle:2023-01-11", + base=WINTER_2023_GROUPING_CONFIG, initial_context={ "use_legacy_exception_subcomponent_order": False, }, From 3446ec0ad0445551660102462b5d1f3095f5317d Mon Sep 17 00:00:00 2001 From: Katie Byers Date: Tue, 11 Nov 2025 14:07:26 -0800 Subject: [PATCH 4/4] use constant in test --- tests/sentry/grouping/test_components.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/sentry/grouping/test_components.py b/tests/sentry/grouping/test_components.py index 6c8b409a68be61..17e142dec9a5c3 100644 --- a/tests/sentry/grouping/test_components.py +++ b/tests/sentry/grouping/test_components.py @@ -3,7 +3,7 @@ import pytest -from sentry.conf.server import DEFAULT_GROUPING_CONFIG, FALL_2025_GROUPING_CONFIG +from sentry.conf.server import FALL_2025_GROUPING_CONFIG, WINTER_2023_GROUPING_CONFIG from sentry.grouping.component import ( BaseGroupingComponent, ChainedExceptionGroupingComponent, @@ -386,7 +386,7 @@ def test_get_subcomponent(self) -> None: def test_configs_put_exception_subcomponents_in_expected_order(self) -> None: self.event.data["exception"]["values"][0]["stacktrace"] = {"frames": []} - self.project.update_option("sentry:grouping_config", DEFAULT_GROUPING_CONFIG) + self.project.update_option("sentry:grouping_config", WINTER_2023_GROUPING_CONFIG) variants = self.event.get_grouping_variants() exception_component = variants["app"].root_component.values[0] assert isinstance(exception_component, ExceptionGroupingComponent)