Repository: DataDog/datadog-agent
Pull request #36593: chore(ssi): bump major python tracer version
Author: login: betterengineering
Labels: name: qa/done
description: QA done before merge and regressions are covered by tests
name: long review
description: PR is complex, plan time to review it
Created: 2025-05-01T17:13:42Z | Merged: 2025-05-16T14:53:20Z


<!--
* Contributors are encouraged to read our [CONTRIBUTING](/CONTRIBUTING.md) documentation.
* Both Contributor and Reviewer Checklists are available at https://datadoghq.dev/datadog-agent/guidelines/contributing/#pull-requests.
* The pull request:
  * Should only fix one issue or add one feature at a time.
  * Must update the test suite for the relevant functionality.
  * Should pass all status checks before being reviewed or merged.
* Commit titles should be prefixed with general area of pull request's change.
* Please fill the below sections if possible with relevant information or links.
-->
### What does this PR do?
This commit bumps the major python tracer version used for Single Step Instrumentation.

### Motivation
We have already updated to major version 3 in the Datadog UI. This change updates the defaults in the installer/cluster agent to match.

### Describe how you validated your changes
<!--
Validate your changes before merge, ensuring that:
* Your PR is tested by static / unit / integrations / e2e tests
* Your PR description details which e2e tests cover your changes, if any
* The PR description contains details of how you validated your changes. If you validated changes manually and not through automated tests, add context on why automated tests did not fit your changes validation.

If you want additional validation by a second person, you can ask reviewers to do it. Describe how to set up an environment for manual tests in the PR description. Manual validation is expected to happen on every commit before merge.

Any manual validation step should then map to an automated test. Manual validation should not substitute automation, minus exceptions not supported by test tooling yet.
-->
Updated unit tests

### Possible Drawbacks / Trade-offs
[Python version 3.7 is no longer supported](https://github.com/DataDog/dd-trace-py/releases/tag/v3.0.0). When looking at our SSI customers, there is a very low percentage of customers using 3.7 and lower. It's also worth noting that those customers will not get a new major tracer version without re-running the installation or upgrading their agent. 

### Additional Notes
<!--
* Anything else we should know when reviewing?
* Include benchmarking information here whenever possible.
* Include info about alternatives that were considered and why the proposed
  version was chosen.
-->
We may wish to consider a better internal process for making this type of change in the future.


Diff:
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go b/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go
index 0ed54dcbb475..07396a71dfe9 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/auto_instrumentation_test.go
@@ -39,7 +39,7 @@ const commonRegistry = "gcr.io/datadoghq"
 var (
 	defaultLibraries = map[string]string{
 		"java":   "v1",
-		"python": "v2",
+		"python": "v3",
 		"ruby":   "v2",
 		"dotnet": "v3",
 		"js":     "v5",
@@ -2738,13 +2738,13 @@ func TestInjectAutoInstrumentationV1(t *testing.T) {
 					Value: uuid,
 				},
 			},
-			expectedInjectedLibraries: map[string]string{"java": "v1.28.0", "python": "v2.5.1"},
+			expectedInjectedLibraries: map[string]string{"java": "v1.28.0", "python": "v3.6.0"},
 			expectedSecurityContext:   &corev1.SecurityContext{},
 			wantErr:                   false,
 			wantWebhookInitErr:        false,
 			setupConfig: funcs{
 				enableAPMInstrumentation,
-				withLibVersions(map[string]string{"java": "v1.28.0", "python": "v2.5.1"}),
+				withLibVersions(map[string]string{"java": "v1.28.0", "python": "v3.6.0"}),
 			},
 		},
 		{
@@ -2794,7 +2794,7 @@ func TestInjectAutoInstrumentationV1(t *testing.T) {
 			wantWebhookInitErr:        false,
 			setupConfig: funcs{
 				enableAPMInstrumentation,
-				withLibVersions(map[string]string{"java": "v1.28.0", "python": "v2.5.1"}),
+				withLibVersions(map[string]string{"java": "v1.28.0", "python": "v3.6.0"}),
 			},
 		},
 		{
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/config_test.go b/pkg/clusteragent/admission/mutate/autoinstrumentation/config_test.go
index cb73f19603ec..ca74573ef9ef 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/config_test.go
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/config_test.go
@@ -489,7 +489,7 @@ func TestGetPinnedLibraries(t *testing.T) {
 			name: "default libs (major versions)",
 			libVersions: map[string]string{
 				"java":   "v1",
-				"python": "v2",
+				"python": "v3",
 				"js":     "v5",
 				"dotnet": "v3",
 				"ruby":   "v2",
@@ -512,7 +512,7 @@ func TestGetPinnedLibraries(t *testing.T) {
 			name: "default libs (major versions mismatch)",
 			libVersions: map[string]string{
 				"java":   "v1",
-				"python": "v2",
+				"python": "v3",
 				"js":     "v3",
 				"dotnet": "v3",
 				"ruby":   "v2",
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/language_versions.go b/pkg/clusteragent/admission/mutate/autoinstrumentation/language_versions.go
index 8a12feb13d3d..2224ddef3bb6 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/language_versions.go
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/language_versions.go
@@ -133,7 +133,7 @@ const defaultVersionMagicString = "default"
 var languageVersions = map[language]string{
 	java:   "v1", // https://datadoghq.atlassian.net/browse/APMON-1064
 	dotnet: "v3", // https://datadoghq.atlassian.net/browse/APMON-1390
-	python: "v2", // https://datadoghq.atlassian.net/browse/APMON-1068
+	python: "v3", // https://datadoghq.atlassian.net/browse/INPLAT-598
 	ruby:   "v2", // https://datadoghq.atlassian.net/browse/APMON-1066
 	js:     "v5", // https://datadoghq.atlassian.net/browse/APMON-1065
 	php:    "v1", // https://datadoghq.atlassian.net/browse/APMON-1128
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/target_mutator_test.go b/pkg/clusteragent/admission/mutate/autoinstrumentation/target_mutator_test.go
index 02235aa46690..80d7154a9ce6 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/target_mutator_test.go
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/target_mutator_test.go
@@ -89,7 +89,7 @@ func TestMutatePod(t *testing.T) {
 			},
 			expectedInitContainerImages: []string{
 				"registry/apm-inject:0",
-				"registry/dd-lib-python-init:v2",
+				"registry/dd-lib-python-init:v3",
 			},
 			expectedEnv: map[string]string{
 				"DD_INJECT_SENDER_TYPE":           "k8s",
@@ -100,10 +100,10 @@ func TestMutatePod(t *testing.T) {
 				"DD_TRACE_ENABLED":                "true",
 				"DD_TRACE_HEALTH_METRICS_ENABLED": "true",
 				"LD_PRELOAD":                      "/opt/datadog-packages/datadog-apm-inject/stable/inject/launcher.preload.so",
-				AppliedTargetEnvVar:               "{\"name\":\"Application Namespace\",\"namespaceSelector\":{\"matchNames\":[\"application\"]},\"ddTraceVersions\":{\"python\":\"v2\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
+				AppliedTargetEnvVar:               "{\"name\":\"Application Namespace\",\"namespaceSelector\":{\"matchNames\":[\"application\"]},\"ddTraceVersions\":{\"python\":\"v3\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
 			},
 			expectedAnnotations: map[string]string{
-				AppliedTargetAnnotation: "{\"name\":\"Application Namespace\",\"namespaceSelector\":{\"matchNames\":[\"application\"]},\"ddTraceVersions\":{\"python\":\"v2\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
+				AppliedTargetAnnotation: "{\"name\":\"Application Namespace\",\"namespaceSelector\":{\"matchNames\":[\"application\"]},\"ddTraceVersions\":{\"python\":\"v3\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
 			},
 		},
 		"no matching rule does not mutate pod": {
@@ -125,7 +125,7 @@ func TestMutatePod(t *testing.T) {
 			},
 			expectedInitContainerImages: []string{
 				"registry/apm-inject:0",
-				"registry/dd-lib-python-init:v2",
+				"registry/dd-lib-python-init:v3",
 			},
 			expectedEnv: map[string]string{
 				"DD_PROFILING_ENABLED":            "true",
@@ -138,10 +138,10 @@ func TestMutatePod(t *testing.T) {
 				"DD_TRACE_ENABLED":                "true",
 				"DD_TRACE_HEALTH_METRICS_ENABLED": "true",
 				"LD_PRELOAD":                      "/opt/datadog-packages/datadog-apm-inject/stable/inject/launcher.preload.so",
-				AppliedTargetEnvVar:               "{\"name\":\"Python Apps\",\"podSelector\":{\"matchLabels\":{\"language\":\"python\"}},\"ddTraceVersions\":{\"python\":\"v2\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
+				AppliedTargetEnvVar:               "{\"name\":\"Python Apps\",\"podSelector\":{\"matchLabels\":{\"language\":\"python\"}},\"ddTraceVersions\":{\"python\":\"v3\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
 			},
 			expectedAnnotations: map[string]string{
-				AppliedTargetAnnotation: "{\"name\":\"Python Apps\",\"podSelector\":{\"matchLabels\":{\"language\":\"python\"}},\"ddTraceVersions\":{\"python\":\"v2\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
+				AppliedTargetAnnotation: "{\"name\":\"Python Apps\",\"podSelector\":{\"matchLabels\":{\"language\":\"python\"}},\"ddTraceVersions\":{\"python\":\"v3\"},\"ddTraceConfigs\":[{\"name\":\"DD_PROFILING_ENABLED\",\"value\":\"true\"},{\"name\":\"DD_DATA_JOBS_ENABLED\",\"value\":\"true\"}]}",
 			},
 		},
 		"service name is applied when set in tracer configs": {
@@ -411,7 +411,7 @@ func TestGetTargetFromAnnotation(t *testing.T) {
 				ObjectMeta: metav1.ObjectMeta{
 					Namespace: "foo",
 					Annotations: map[string]string{
-						"admission.datadoghq.com/python-lib.version": "v2",
+						"admission.datadoghq.com/python-lib.version": "v3",
 					},
 				},
 			},
@@ -420,7 +420,7 @@ func TestGetTargetFromAnnotation(t *testing.T) {
 					{
 						ctrName: "",
 						lang:    python,
-						image:   "registry/dd-lib-python-init:v2",
+						image:   "registry/dd-lib-python-init:v3",
 					},
 				},
 			},
@@ -524,7 +524,7 @@ func TestGetTargetLibraries(t *testing.T) {
 					{
 						ctrName: "",
 						lang:    python,
-						image:   "registry/dd-lib-python-init:v2",
+						image:   "registry/dd-lib-python-init:v3",
 					},
 				},
 			},
@@ -645,7 +645,7 @@ func TestGetTargetLibraries(t *testing.T) {
 					{
 						ctrName: "",
 						lang:    python,
-						image:   "registry/dd-lib-python-init:v2",
+						image:   "registry/dd-lib-python-init:v3",
 					},
 					{
 						ctrName: "",
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/disabled_namespaces.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/disabled_namespaces.yaml
index 4fe4f7acff03..9d655687f86c 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/disabled_namespaces.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/disabled_namespaces.yaml
@@ -8,4 +8,3 @@ apm_config:
       python: "default"
     version: "v2"
     injector_image_tag: "foo"
-
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/enabled_namespaces.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/enabled_namespaces.yaml
index 3813b2ed4de1..8fd9dae7aabc 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/enabled_namespaces.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/enabled_namespaces.yaml
@@ -8,4 +8,3 @@ apm_config:
       python: "default"
     version: "v2"
     injector_image_tag: "foo"
-
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/extra_fields.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/extra_fields.yaml
index a5b5a193d4eb..c093b9920e0f 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/extra_fields.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/extra_fields.yaml
@@ -9,4 +9,4 @@ apm_config:
             language: "python"
         fooBar: "baz"
         ddTraceVersions:
-          python: "v2"
+          python: "v3"
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter.yaml
index 116ab7639510..49e8041430a0 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter.yaml
@@ -12,9 +12,9 @@ apm_config:
             app: "billing-service"
         namespaceSelector:
           matchNames:
-          - "billing-service"
+            - "billing-service"
         ddTraceVersions:
-          python: "v2"
+          python: "v3"
       - name: "Microservices"
         podSelector:
           matchLabels:
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_invalid_configs.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_invalid_configs.yaml
index edbe04bf26eb..219aeab23765 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_invalid_configs.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_invalid_configs.yaml
@@ -8,7 +8,7 @@ apm_config:
           matchLabels:
             language: "python"
         ddTraceVersions:
-          python: "v2"
+          python: "v3"
         ddTraceConfigs:
           - name: "DD_PROFILING_ENABLED"
             value: "true"
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_limited.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_limited.yaml
index b6c44d5b6493..d16795d0c6a8 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_limited.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_limited.yaml
@@ -9,6 +9,6 @@ apm_config:
             app: "billing-service"
         namespaceSelector:
           matchNames:
-          - "billing-service"
+            - "billing-service"
         ddTraceVersions:
-          python: "v2"
+          python: "v3"
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_configs.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_configs.yaml
index 7e91075a8f6b..f9c0dcdd9d62 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_configs.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_configs.yaml
@@ -8,7 +8,7 @@ apm_config:
           matchLabels:
             language: "python"
         ddTraceVersions:
-          python: "v2"
+          python: "v3"
         ddTraceConfigs:
           - name: "DD_PROFILING_ENABLED"
             value: "true"
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_namespace.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_namespace.yaml
index b62fd1ce32e9..d00504e96fb3 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_namespace.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_namespace.yaml
@@ -6,9 +6,9 @@ apm_config:
       - name: "Application Namespace"
         namespaceSelector:
           matchNames:
-          - "application"
+            - "application"
         ddTraceVersions:
-          python: "v2"
+          python: "v3"
         ddTraceConfigs:
           - name: "DD_PROFILING_ENABLED"
             value: "true"
diff --git a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_service.yaml b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_service.yaml
index f3680bf3d342..ccfcf7dd4cb0 100644
--- a/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_service.yaml
+++ b/pkg/clusteragent/admission/mutate/autoinstrumentation/testdata/filter_simple_service.yaml
@@ -8,7 +8,7 @@ apm_config:
           matchLabels:
             language: "python"
         ddTraceVersions:
-          python: "v2"
+          python: "v3"
         ddTraceConfigs:
           - name: "DD_SERVICE"
             value: "best-service"
diff --git a/pkg/fleet/installer/default_packages.go b/pkg/fleet/installer/default_packages.go
index 63f8ea8c95ad..862eea9d9e0e 100644
--- a/pkg/fleet/installer/default_packages.go
+++ b/pkg/fleet/installer/default_packages.go
@@ -51,7 +51,7 @@ var apmPackageDefaultVersions = map[string]string{
 	"datadog-apm-library-ruby":   "2",
 	"datadog-apm-library-js":     "5",
 	"datadog-apm-library-dotnet": "3",
-	"datadog-apm-library-python": "2",
+	"datadog-apm-library-python": "3",
 	"datadog-apm-library-php":    "1",
 }
 
diff --git a/pkg/fleet/installer/default_packages_test.go b/pkg/fleet/installer/default_packages_test.go
index add3ac9976e5..41d279c95fba 100644
--- a/pkg/fleet/installer/default_packages_test.go
+++ b/pkg/fleet/installer/default_packages_test.go
@@ -8,9 +8,10 @@ package installer
 import (
 	"testing"
 
+	"github.com/stretchr/testify/assert"
+
 	"github.com/DataDog/datadog-agent/pkg/fleet/installer/env"
 	"github.com/DataDog/datadog-agent/pkg/fleet/installer/oci"
-	"github.com/stretchr/testify/assert"
 )
 
 func TestDefaultPackagesDefaultInstall(t *testing.T) {
@@ -35,7 +36,7 @@ func TestDefaultPackagesAPMInjectEnabled(t *testing.T) {
 		"oci://install.datadoghq.com/apm-library-ruby-package:2",
 		"oci://install.datadoghq.com/apm-library-js-package:5",
 		"oci://install.datadoghq.com/apm-library-dotnet-package:3",
-		"oci://install.datadoghq.com/apm-library-python-package:2",
+		"oci://install.datadoghq.com/apm-library-python-package:3",
 		"oci://install.datadoghq.com/apm-library-php-package:1",
 	}, packages)
 }
@@ -55,7 +56,7 @@ func TestCentos6PackagesAPMInjectEnabled(t *testing.T) {
 		"oci://install.datadoghq.com/apm-library-ruby-package:2",
 		"oci://install.datadoghq.com/apm-library-js-package:5",
 		"oci://install.datadoghq.com/apm-library-dotnet-package:3",
-		"oci://install.datadoghq.com/apm-library-python-package:2",
+		"oci://install.datadoghq.com/apm-library-python-package:3",
 		"oci://install.datadoghq.com/apm-library-php-package:1",
 	}, packages)
 }
diff --git a/releasenotes-dca/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml b/releasenotes-dca/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml
new file mode 100644
index 000000000000..78cf2b59ff4c
--- /dev/null
+++ b/releasenotes-dca/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml
@@ -0,0 +1,10 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+enhancements:
+  - |
+    Single Step Instrumentation now uses the Python tracer major version 3 by default.
diff --git a/releasenotes/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml b/releasenotes/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml
new file mode 100644
index 000000000000..78cf2b59ff4c
--- /dev/null
+++ b/releasenotes/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml
@@ -0,0 +1,10 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+enhancements:
+  - |
+    Single Step Instrumentation now uses the Python tracer major version 3 by default.
diff --git a/test/new-e2e/tests/installer/script/default_script_test.go b/test/new-e2e/tests/installer/script/default_script_test.go
index 7a2f36f85358..370863f84804 100644
--- a/test/new-e2e/tests/installer/script/default_script_test.go
+++ b/test/new-e2e/tests/installer/script/default_script_test.go
@@ -45,7 +45,7 @@ func (s *installScriptDefaultSuite) TestInstall() {
 	s.RunInstallScript(
 		s.url,
 		"DD_SITE=datadoghq.com",
-		"DD_APM_INSTRUMENTATION_LIBRARIES=java:1,python:2,js:5,dotnet:3",
+		"DD_APM_INSTRUMENTATION_LIBRARIES=java:1,python:3,js:5,dotnet:3",
 		"DD_APM_INSTRUMENTATION_ENABLED=host",
 		"DD_RUNTIME_SECURITY_CONFIG_ENABLED=true",
 		"DD_SBOM_CONTAINER_IMAGE_ENABLED=true",
@@ -97,7 +97,7 @@ func (s *installScriptDefaultSuite) TestInstallParity() {
 	// Full supported option set
 	params := []string{
 		"DD_SITE=datadoghq.com",
-		"DD_APM_INSTRUMENTATION_LIBRARIES=java:1,python:2,js:5,dotnet:3",
+		"DD_APM_INSTRUMENTATION_LIBRARIES=java:1,python:3,js:5,dotnet:3",
 		"DD_APM_INSTRUMENTATION_ENABLED=host",
 		"DD_RUNTIME_SECURITY_CONFIG_ENABLED=true",
 		"DD_SBOM_CONTAINER_IMAGE_ENABLED=true",
diff --git a/test/new-e2e/tests/installer/unix/all_packages_test.go b/test/new-e2e/tests/installer/unix/all_packages_test.go
index cad47772665c..ba345eb9648a 100644
--- a/test/new-e2e/tests/installer/unix/all_packages_test.go
+++ b/test/new-e2e/tests/installer/unix/all_packages_test.go
@@ -52,7 +52,7 @@ var (
 	packagesTestsWithSkippedFlavors = []packageTestsWithSkippedFlavors{
 		{t: testInstaller},
 		{t: testAgent},
-		{t: testApmInjectAgent, skippedFlavors: []e2eos.Descriptor{e2eos.CentOS7, e2eos.RedHat9, e2eos.FedoraDefault}, skippedInstallationMethods: []InstallMethodOption{InstallMethodAnsible}},
+		{t: testApmInjectAgent, skippedFlavors: []e2eos.Descriptor{e2eos.CentOS7, e2eos.RedHat9, e2eos.FedoraDefault, e2eos.AmazonLinux2}, skippedInstallationMethods: []InstallMethodOption{InstallMethodAnsible}},
 		{t: testUpgradeScenario, skippedInstallationMethods: []InstallMethodOption{InstallMethodAnsible}},
 	}
 )
diff --git a/test/new-e2e/tests/installer/unix/package_apm_inject_test.go b/test/new-e2e/tests/installer/unix/package_apm_inject_test.go
index f14c4a14b39b..588273318ce1 100644
--- a/test/new-e2e/tests/installer/unix/package_apm_inject_test.go
+++ b/test/new-e2e/tests/installer/unix/package_apm_inject_test.go
@@ -449,7 +449,7 @@ func (s *packageApmInjectSuite) TestDefaultPackageVersion() {
 		envForceInstall("datadog-agent"),
 	)
 	defer s.Purge()
-	s.host.AssertPackagePrefix("datadog-apm-library-python", "2")
+	s.host.AssertPackagePrefix("datadog-apm-library-python", "3")
 }
 
 func (s *packageApmInjectSuite) TestInstallWithUmask() {


Reviews:
user: login: stanistan
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-01T20:17:00Z
user: login: brett0000FF
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-01T21:08:58Z
user: login: brettlangdon
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-07T12:15:03Z
user: login: BaptisteFoy
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-16T07:56:27Z

Review comments:
diff_hunk: @@ -0,0 +1,10 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+enhancements:
+  - |
+    Single Step Instrumentation will now use the Python tracer major version 3 by default.
path: releasenotes-dca/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml
user: login: brett0000FF
body: ```suggestion
    Single Step Instrumentation now uses the Python tracer major version 3 by default.
```
created_at: 2025-05-01T21:08:40Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,10 @@
+# Each section from every release note are combined when the
+# CHANGELOG.rst is rendered. So the text needs to be worded so that
+# it does not depend on any information only available in another
+# section. This may mean repeating some details, but each section
+# must be readable independently of the other.
+#
+# Each section note must be formatted as reStructuredText.
+enhancements:
+  - |
+    Single Step Instrumentation will now use the Python tracer major version 3 by default.
path: releasenotes/notes/python-major-version-3-ssi-28df5632dc49b9f0.yaml
user: login: brett0000FF
body: ```suggestion
    Single Step Instrumentation now uses the Python tracer major version 3 by default.
```
created_at: 2025-05-01T21:08:48Z
author_association: CONTRIBUTOR

PR comments:
user: login: agent-platform-auto-pr[bot]
created_at: 2025-05-01T17:57:10Z
body: ## Uncompressed package size comparison

Comparison with [ancestor](https://github.com/DataDog/datadog-agent/commit/e5293ac82e91820989b1ed0df0444834cb50d62b) `e5293ac82e91820989b1ed0df0444834cb50d62b`


<details>
  <summary> Diff per package </summary>

|package|diff|status|size|ancestor|threshold|
|--|--|--|--|--|--|
|datadog-agent-amd64-deb|0.00MB|✅|774.90MB|774.90MB|0.50MB|
|datadog-agent-x86_64-rpm|0.00MB|✅|783.85MB|783.85MB|0.50MB|
|datadog-agent-x86_64-suse|0.00MB|✅|783.85MB|783.85MB|0.50MB|
|datadog-agent-arm64-deb|0.00MB|✅|764.26MB|764.26MB|0.50MB|
|datadog-agent-aarch64-rpm|0.00MB|✅|773.19MB|773.19MB|0.50MB|
|datadog-dogstatsd-amd64-deb|0.00MB|✅|31.22MB|31.22MB|0.50MB|
|datadog-dogstatsd-x86_64-rpm|0.00MB|✅|31.30MB|31.30MB|0.50MB|
|datadog-dogstatsd-x86_64-suse|0.00MB|✅|31.30MB|31.30MB|0.50MB|
|datadog-dogstatsd-arm64-deb|0.00MB|✅|30.04MB|30.04MB|0.50MB|
|datadog-heroku-agent-amd64-deb|0.00MB|✅|378.33MB|378.33MB|0.50MB|
|datadog-iot-agent-amd64-deb|0.00MB|✅|60.98MB|60.98MB|0.50MB|
|datadog-iot-agent-x86_64-rpm|0.00MB|✅|61.06MB|61.06MB|0.50MB|
|datadog-iot-agent-x86_64-suse|0.00MB|✅|61.06MB|61.06MB|0.50MB|
|datadog-iot-agent-arm64-deb|0.00MB|✅|58.24MB|58.24MB|0.50MB|
|datadog-iot-agent-aarch64-rpm|0.00MB|✅|58.32MB|58.32MB|0.50MB|

</details>

## Decision
✅ Passed



author_association: CONTRIBUTOR
user: login: cit-pr-commenter[bot]
created_at: 2025-05-01T18:21:01Z
body: ## Regression Detector

# Regression Detector Results

[Metrics dashboard](https://app.datadoghq.com/dashboard/ykh-ua8-vcu/SMP-Regression-Detector-Metrics?fromUser=true&refresh_mode=paused&tpl_var_run-id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)  
[Target profiles](https://app.datadoghq.com/profiling/explorer?query=env%3Asingle-machine-performance%20service%3Adatadog-agent%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_t=count&fromUser=false&viz=stream&start=1747318129000&end=1747329529000&paused=true)  
Run ID: 6dc027c2-880c-4148-a8f2-fe6e7d486629

Baseline: e5293ac82e91820989b1ed0df0444834cb50d62b
Comparison: b04e49d4691c165ee451648b3db44b1946881a04
[Diff](e5293ac82e91820989b1ed0df0444834cb50d62b...b04e49d4691c165ee451648b3db44b1946881a04)


## Optimization Goals: ✅ No significant changes detected


<details>
<summary><h2>
Fine details of change detection per experiment
</h2></summary>

| perf | experiment                                   | goal               | Δ mean % | Δ mean % CI    | trials | links                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|------|----------------------------------------------|--------------------|----------|----------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ➖   | docker_containers_cpu                        | % cpu utilization  | +2.79    | [-1.08, +6.65] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Adocker_containers_cpu%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                           |
| ➖   | file_tree                                    | memory utilization | +0.62    | [+0.49, +0.76] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_tree%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                                       |
| ➖   | uds_dogstatsd_to_api_cpu                     | % cpu utilization  | +0.60    | [-0.26, +1.47] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_to_api_cpu%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                        |
| ➖   | quality_gate_idle                            | memory utilization | +0.19    | [+0.14, +0.24] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_idle%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)                           |
| ➖   | ddot_logs                                    | memory utilization | +0.08    | [-0.03, +0.20] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Addot_logs%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                                       |
| ➖   | uds_dogstatsd_20mb_12k_contexts_20_senders   | memory utilization | +0.07    | [+0.02, +0.11] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_20mb_12k_contexts_20_senders%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                      |
| ➖   | file_to_blackhole_0ms_latency_http1          | egress throughput  | +0.06    | [-0.56, +0.68] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency_http1%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                             |
| ➖   | file_to_blackhole_100ms_latency              | egress throughput  | +0.03    | [-0.60, +0.66] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_100ms_latency%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | file_to_blackhole_0ms_latency                | egress throughput  | +0.02    | [-0.62, +0.66] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                   |
| ➖   | file_to_blackhole_0ms_latency_http2          | egress throughput  | +0.02    | [-0.60, +0.63] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_0ms_latency_http2%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                             |
| ➖   | tcp_dd_logs_filter_exclude                   | ingress throughput | +0.01    | [-0.01, +0.03] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Atcp_dd_logs_filter_exclude%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                      |
| ➖   | otlp_ingest_metrics                          | memory utilization | +0.00    | [-0.15, +0.15] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aotlp_ingest_metrics%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                             |
| ➖   | uds_dogstatsd_to_api                         | ingress throughput | -0.01    | [-0.30, +0.27] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Auds_dogstatsd_to_api%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                            |
| ➖   | file_to_blackhole_300ms_latency              | egress throughput  | -0.03    | [-0.68, +0.62] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_300ms_latency%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | file_to_blackhole_1000ms_latency_linear_load | egress throughput  | -0.04    | [-0.27, +0.20] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_1000ms_latency_linear_load%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                    |
| ➖   | file_to_blackhole_500ms_latency              | egress throughput  | -0.05    | [-0.71, +0.61] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_500ms_latency%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                 |
| ➖   | file_to_blackhole_1000ms_latency             | egress throughput  | -0.07    | [-0.67, +0.53] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Afile_to_blackhole_1000ms_latency%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                |
| ➖   | ddot_metrics                                 | memory utilization | -0.29    | [-0.39, -0.19] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Addot_metrics%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                                    |
| ➖   | otlp_ingest_logs                             | memory utilization | -0.29    | [-0.41, -0.18] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aotlp_ingest_logs%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                                |
| ➖   | docker_containers_memory                     | memory utilization | -0.47    | [-0.51, -0.43] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Adocker_containers_memory%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                        |
| ➖   | quality_gate_idle_all_features               | memory utilization | -0.50    | [-0.59, -0.42] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_idle_all_features%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false) |
| ➖   | tcp_syslog_to_blackhole                      | ingress throughput | -0.65    | [-0.71, -0.59] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Atcp_syslog_to_blackhole%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false)                                                                                                                                                                                                                                                                                                         |
| ➖   | quality_gate_logs                            | % cpu utilization  | -1.88    | [-4.61, +0.85] | 1      | [Logs](https://app.datadoghq.com/logs?query=experiment%3Aquality_gate_logs%20job_id%3A6dc027c2-880c-4148-a8f2-fe6e7d486629&agg_m=count&agg_m_source=base&agg_q=%40span.url&agg_q_source=base&agg_t=count&fromUser=true&index=single-machine-performance-target-logs&messageDisplay=inline&refresh_mode=paused&storage=hot&stream_sort=time%2Cdesc&top_n=100&top_o=top&viz=stream&x_missing=true&from_ts=1747318129000&to_ts=1747329529000&live=false) [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)                           |
</details>


<details>
<summary><h2>
Bounds Checks: ✅ Passed
</h2></summary>

| perf | experiment                                   | bounds_check_name  | replicates_passed | links                                                                                                                                                                                                                                                                                            |
|------|----------------------------------------------|--------------------|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ✅   | docker_containers_cpu                        | simple_check_run   | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | docker_containers_memory                     | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | docker_containers_memory                     | simple_check_run   | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency                | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency                | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http1          | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http1          | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http2          | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_0ms_latency_http2          | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_1000ms_latency             | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_1000ms_latency_linear_load | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_100ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_100ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_300ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_300ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_500ms_latency              | lost_bytes         | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | file_to_blackhole_500ms_latency              | memory_usage       | 10/10             |                                                                                                                                                                                                                                                                                                  |
| ✅   | quality_gate_idle                            | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)              |
| ✅   | quality_gate_idle                            | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)              |
| ✅   | quality_gate_idle_all_features               | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false) |
| ✅   | quality_gate_idle_all_features               | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_idle_all_features&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false) |
| ✅   | quality_gate_logs                            | intake_connections | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)              |
| ✅   | quality_gate_logs                            | lost_bytes         | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)              |
| ✅   | quality_gate_logs                            | memory_usage       | 10/10             | [bounds checks dashboard](https://app.datadoghq.com/dashboard/vz3-jd5-bdi?fromUser=true&refresh_mode=paused&tpl_var_experiment%5B0%5D=quality_gate_logs&tpl_var_job_id%5B0%5D=6dc027c2-880c-4148-a8f2-fe6e7d486629&view=spans&from_ts=1747325329000&to_ts=1747325929000&live=false)              |
</details>


<details>
<summary><h2>
Explanation
</h2></summary>

**Confidence level:** 90.00%
**Effect size tolerance:** |Δ mean %| ≥ 5.00%

Performance changes are noted in the **perf** column of each table:

* ✅ = significantly better comparison variant performance
* ❌ = significantly worse comparison variant performance
* ➖ = no significant change in performance

A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".

For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:

1. Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.

2. Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that *if our statistical model is accurate*, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.

3. Its configuration does not mark it "erratic".
</details>

## CI Pass/Fail Decision

✅ **Passed.** All Quality Gates passed.

- **quality_gate_idle_all_features**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle_all_features**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_idle**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **memory_usage**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **intake_connections**: 10/10 replicas passed. Gate passed.
- **quality_gate_logs**, bounds check **lost_bytes**: 10/10 replicas passed. Gate passed.
author_association: NONE
user: login: agent-platform-auto-pr[bot]
created_at: 2025-05-01T18:38:08Z
body: ## Static quality checks

✅ Please find below the results from static quality gates


<details>
<summary>Successful checks</summary>

### Info

|Result|Quality gate|On disk size|On disk size limit|On wire size|On wire size limit|
|----|----|----|----|----|----|
|✅|static_quality_gate_agent_deb_amd64|747.55 MiB|778.06 MiB|185.6 MiB|191.06 MiB|
|✅|static_quality_gate_agent_deb_amd64_fips|745.38 MiB|776.09 MiB|184.89 MiB|190.72 MiB|
|✅|static_quality_gate_agent_heroku_amd64|366.78 MiB|434.99 MiB|98.22 MiB|114.34 MiB|
|✅|static_quality_gate_agent_msi|968.4 MiB|978.45 MiB|146.95 MiB|151.65 MiB|
|✅|static_quality_gate_agent_rpm_amd64|747.54 MiB|778.06 MiB|187.24 MiB|193.42 MiB|
|✅|static_quality_gate_agent_rpm_amd64_fips|745.37 MiB|776.06 MiB|186.75 MiB|192.61 MiB|
|✅|static_quality_gate_agent_rpm_arm64|737.37 MiB|768.33 MiB|169.74 MiB|174.71 MiB|
|✅|static_quality_gate_agent_rpm_arm64_fips|735.43 MiB|766.55 MiB|168.63 MiB|173.92 MiB|
|✅|static_quality_gate_agent_suse_amd64|747.54 MiB|778.08 MiB|187.24 MiB|193.42 MiB|
|✅|static_quality_gate_agent_suse_amd64_fips|745.37 MiB|776.11 MiB|186.75 MiB|192.78 MiB|
|✅|static_quality_gate_agent_suse_arm64|737.37 MiB|768.31 MiB|169.74 MiB|174.71 MiB|
|✅|static_quality_gate_agent_suse_arm64_fips|735.43 MiB|766.5 MiB|168.63 MiB|173.92 MiB|
|✅|static_quality_gate_docker_agent_amd64|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_arm64|856.93 MiB|876.0 MiB|272.58 MiB|278.3 MiB|
|✅|static_quality_gate_docker_agent_jmx_amd64|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_jmx_arm64|856.93 MiB|876.63 MiB|272.58 MiB|278.4 MiB|
|✅|static_quality_gate_docker_agent_windows1809|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_core|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_core_jmx|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows1809_jmx|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_core|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_core_jmx|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_agent_windows2022_jmx|843.94 MiB|862.5 MiB|286.15 MiB|292.0 MiB|
|✅|static_quality_gate_docker_cluster_agent_amd64|256.79 MiB|263.4 MiB|101.91 MiB|104.07 MiB|
|✅|static_quality_gate_docker_cluster_agent_arm64|272.83 MiB|279.38 MiB|96.88 MiB|98.95 MiB|
|✅|static_quality_gate_docker_cws_instrumentation_amd64|6.66 MiB|7.12 MiB|2.82 MiB|3.29 MiB|
|✅|static_quality_gate_docker_cws_instrumentation_arm64|6.44 MiB|6.92 MiB|2.6 MiB|3.07 MiB|
|✅|static_quality_gate_docker_dogstatsd_amd64|37.89 MiB|46.39 MiB|14.61 MiB|17.78 MiB|
|✅|static_quality_gate_docker_dogstatsd_arm64|36.84 MiB|45.05 MiB|13.73 MiB|16.65 MiB|
|✅|static_quality_gate_dogstatsd_deb_amd64|29.85 MiB|38.4 MiB|7.9 MiB|10.26 MiB|
|✅|static_quality_gate_dogstatsd_deb_arm64|28.73 MiB|36.98 MiB|6.88 MiB|8.96 MiB|
|✅|static_quality_gate_dogstatsd_rpm_amd64|29.85 MiB|38.4 MiB|7.91 MiB|10.27 MiB|
|✅|static_quality_gate_dogstatsd_suse_amd64|29.85 MiB|38.4 MiB|7.91 MiB|10.27 MiB|
|✅|static_quality_gate_iot_agent_deb_amd64|58.23 MiB|58.51 MiB|14.66 MiB|15.02 MiB|
|✅|static_quality_gate_iot_agent_deb_arm64|55.61 MiB|55.94 MiB|12.67 MiB|13.05 MiB|
|✅|static_quality_gate_iot_agent_deb_armhf|54.38 MiB|54.65 MiB|12.68 MiB|13.05 MiB|
|✅|static_quality_gate_iot_agent_rpm_amd64|58.23 MiB|58.51 MiB|14.68 MiB|15.04 MiB|
|✅|static_quality_gate_iot_agent_rpm_arm64|55.62 MiB|55.94 MiB|12.69 MiB|13.07 MiB|
|✅|static_quality_gate_iot_agent_suse_amd64|58.23 MiB|58.51 MiB|14.68 MiB|15.04 MiB|

</details>

author_association: CONTRIBUTOR
user: login: datadog-datadog-prod-us1[bot]
created_at: 2025-05-12T19:55:42Z
body: # Datadog Summary

<b>✅&nbsp;Code Quality</b>&nbsp;&nbsp;&nbsp;&nbsp;<b>✅&nbsp;Code Security</b>&nbsp;&nbsp;&nbsp;&nbsp;<b>✅&nbsp;Dependencies</b>



---
Was this helpful? Give us [feedback](https://dd.enterprise.slack.com/archives/C01FA7FASUR)!

author_association: CONTRIBUTOR
user: login: betterengineering
created_at: 2025-05-12T20:42:13Z
body: /merge
author_association: MEMBER
user: login: dd-devflow[bot]
created_at: 2025-05-12T20:42:17Z
body: <!-- "FeedbackWorkflowId":"40735f45-2853-4b9e-bc00-887ca872e699_36" -->
[View all feedbacks in Devflow UI.](https://mosaic.us1.ddbuild.io/devflow/logs/40735f45-2853-4b9e-bc00-887ca872e699_36)

`2025-05-12 20:42:16 UTC` :information_source: Start processing command `/merge`

---
`2025-05-12 20:42:43 UTC` :information_source: **MergeQueue:** waiting for PR to be ready

This merge request is not mergeable yet, because of pending checks/missing approvals. It will be added to the queue as soon as checks pass and/or get approvals.
**Note:** if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with `/remove` command.

---
`2025-05-13 00:43:02 UTC` :warning: **MergeQueue:** This merge request was unqueued

devflow unqueued this merge request: It did not become mergeable within the expected time

author_association: NONE
user: login: betterengineering
created_at: 2025-05-15T19:29:32Z
body: /merge
author_association: MEMBER
user: login: dd-devflow[bot]
created_at: 2025-05-15T19:29:38Z
body: <!-- "FeedbackWorkflowId":"76d422f7-f351-4e74-bbbc-3ba06afa49f1_36" -->
[View all feedbacks in Devflow UI.](https://mosaic.us1.ddbuild.io/devflow/logs/76d422f7-f351-4e74-bbbc-3ba06afa49f1_36)

`2025-05-15 19:29:37 UTC` :information_source: Start processing command `/merge`

---
`2025-05-15 19:29:48 UTC` :information_source: **MergeQueue:** waiting for PR to be ready

This merge request is not mergeable yet, because of pending checks/missing approvals. It will be added to the queue as soon as checks pass and/or get approvals.
**Note:** if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with `/remove` command.

---
`2025-05-15 23:30:03 UTC` :warning: **MergeQueue:** This merge request was unqueued

devflow unqueued this merge request: It did not become mergeable within the expected time

author_association: NONE
user: login: betterengineering
created_at: 2025-05-16T13:30:47Z
body: /merge
author_association: MEMBER
user: login: dd-devflow[bot]
created_at: 2025-05-16T13:30:52Z
body: <!-- "FeedbackWorkflowId":"36c5c4d5-dbf7-4680-9284-b431ef93271e_36" -->
[View all feedbacks in Devflow UI.](https://mosaic.us1.ddbuild.io/devflow/logs/36c5c4d5-dbf7-4680-9284-b431ef93271e_36)

`2025-05-16 13:30:52 UTC` :information_source: Start processing command `/merge`

---
`2025-05-16 13:30:58 UTC` :information_source: **MergeQueue:** pull request added to the queue

The expected merge time in `main` is approximately 1h (p90).

---
`2025-05-16 14:53:23 UTC` :information_source: **MergeQueue:** This merge request was merged

author_association: NONE