Skip to content

Upgrade Kubernetes dependencies to v0.35.3#48796

Open
L3n41c wants to merge 30 commits intomainfrom
lenaic/upgrade-k8s-deps-v0.35.3
Open

Upgrade Kubernetes dependencies to v0.35.3#48796
L3n41c wants to merge 30 commits intomainfrom
lenaic/upgrade-k8s-deps-v0.35.3

Conversation

@L3n41c
Copy link
Copy Markdown
Member

@L3n41c L3n41c commented Apr 2, 2026

What does this PR do?

Upgrade all Kubernetes Go module dependencies from v0.34.1 to v0.35.3 (Kubernetes 1.35 patch 3), along with related ecosystem modules.

Core k8s.io modules (v0.34.1 → v0.35.3): api, apimachinery, client-go, apiserver, apiextensions-apiserver, component-base, cli-runtime, cri-api, cri-client, kube-aggregator, kubectl, kubelet, metrics, kms, cloud-provider, component-helpers, csi-translation-lib, sample-controller, controller-manager, code-generator.

Ecosystem modules:

  • k8s.io/autoscaler/vertical-pod-autoscaler: v1.2.2 → v1.6.0
  • sigs.k8s.io/custom-metrics-apiserver: v1.33.0 → v1.35.0
  • sigs.k8s.io/karpenter: v1.8.2 → v1.9.0 (max for Go 1.25.x; v1.10+ requires Go 1.26.1)
  • github.com/aws/karpenter-provider-aws: v1.8.6 → v1.9.0
  • sigs.k8s.io/gateway-api: v1.3.1-pseudo → v1.5.1
  • github.com/envoyproxy/gateway: v1.5.7 → v1.7.1 (for gateway-api v1.5.1 compatibility)

Removed replace directives: The replace block that pinned 7 core k8s.io modules to v0.34.1 has been removed. It existed because karpenter-provider-aws v1.8.6 required alpha k8s.io versions; v1.9.0 now uses stable releases.

Code fixes for breaking API changes:

  • Migrated tablewriter usage from v0 to v1 API (NewTable with options pattern) — pulled in transitively by karpenter-provider-aws v1.9.0
  • Adapted to karpenter v1.9.0 NodeSelectorRequirementWithMinValues struct change: the embedded corev1.NodeSelectorRequirement field was flattened to direct Key/Operator/Values fields

Motivation

Keep Kubernetes client libraries current (Kubernetes 1.35) and eliminate the version inconsistency where some k8s.io modules were at v0.35.x in require but overridden to v0.34.1 via replace directives.

Describe how you validated your changes

  • dda inv agent.build — passed
  • dda inv cluster-agent.build — passed
  • Unit tests passed: karpenter model (12), KSM (86), kubernetes utils (291), admission controllers (683)

Additional Notes

  • Go version is preserved at 1.25.7 (go.mod) / 1.25.8 (go.work) — not upgraded
  • The otelgrpc replace directive is kept (apiserver v0.35.3 still needs otelgrpc v0.60.0)
  • The kube-state-metrics/v2 fork replace directive is unchanged

🤖 Generated with Claude Code

@github-actions github-actions bot added the long review PR is complex, plan time to review it label Apr 2, 2026
@L3n41c L3n41c added changelog/no-changelog No changelog entry needed qa/done QA done before merge and regressions are covered by tests labels Apr 2, 2026
@L3n41c L3n41c added this to the 7.79.0 milestone Apr 2, 2026
@L3n41c L3n41c force-pushed the lenaic/upgrade-k8s-deps-v0.35.3 branch from 22dba65 to a0d0aa8 Compare April 2, 2026 12:53
@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr bot commented Apr 2, 2026

Go Package Import Differences

Baseline: b17213f
Comparison: 5b6a1d5

binaryosarchchange
agentlinuxamd64
+12, -9
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/informers/storagemigration/v1alpha1
+k8s.io/client-go/informers/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
-k8s.io/client-go/listers/storagemigration/v1alpha1
+k8s.io/client-go/listers/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
agentlinuxarm64
+12, -9
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/informers/storagemigration/v1alpha1
+k8s.io/client-go/informers/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
-k8s.io/client-go/listers/storagemigration/v1alpha1
+k8s.io/client-go/listers/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
agentwindowsamd64
+12, -11
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/informers/storagemigration/v1alpha1
+k8s.io/client-go/informers/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
-k8s.io/client-go/listers/storagemigration/v1alpha1
+k8s.io/client-go/listers/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
agentdarwinamd64
+12, -11
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/informers/storagemigration/v1alpha1
+k8s.io/client-go/informers/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
-k8s.io/client-go/listers/storagemigration/v1alpha1
+k8s.io/client-go/listers/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
agentdarwinarm64
+12, -11
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/informers/storagemigration/v1alpha1
+k8s.io/client-go/informers/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
-k8s.io/client-go/listers/storagemigration/v1alpha1
+k8s.io/client-go/listers/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
iot-agentlinuxamd64
+1, -3
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
iot-agentlinuxarm64
+1, -3
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
heroku-agentlinuxamd64
+4, -6
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
cluster-agentlinuxamd64
+21, -17
-github.com/clipperhouse/uax29/v2/graphemes
+github.com/go-logr/logr/slogr
+github.com/go-logr/zapr
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/util/sort
+k8s.io/apiserver/pkg/endpoints/filters/impersonation
+k8s.io/apiserver/pkg/server/flagz
+k8s.io/apiserver/pkg/server/flagz/api/v1alpha1
+k8s.io/apiserver/pkg/server/flagz/negotiate
+k8s.io/apiserver/pkg/server/statusz
+k8s.io/apiserver/pkg/server/statusz/api/v1alpha1
+k8s.io/apiserver/pkg/server/statusz/negotiate
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/informers/storagemigration/v1alpha1
+k8s.io/client-go/informers/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1/fake
-k8s.io/client-go/listers/storagemigration/v1alpha1
+k8s.io/client-go/listers/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
-k8s.io/component-base/zpages/flagz
-k8s.io/component-base/zpages/httputil
-k8s.io/component-base/zpages/statusz
-sigs.k8s.io/gateway-api/apis/v1alpha2
-sigs.k8s.io/gateway-api/apis/v1alpha3
+sigs.k8s.io/karpenter/pkg/operator/logging
cluster-agentlinuxarm64
+21, -17
-github.com/clipperhouse/uax29/v2/graphemes
+github.com/go-logr/logr/slogr
+github.com/go-logr/zapr
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+github.com/prometheus/prometheus/util/kahansum
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/util/sort
+k8s.io/apiserver/pkg/endpoints/filters/impersonation
+k8s.io/apiserver/pkg/server/flagz
+k8s.io/apiserver/pkg/server/flagz/api/v1alpha1
+k8s.io/apiserver/pkg/server/flagz/negotiate
+k8s.io/apiserver/pkg/server/statusz
+k8s.io/apiserver/pkg/server/statusz/api/v1alpha1
+k8s.io/apiserver/pkg/server/statusz/negotiate
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/informers/storagemigration/v1alpha1
+k8s.io/client-go/informers/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1/fake
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1/fake
-k8s.io/client-go/listers/storagemigration/v1alpha1
+k8s.io/client-go/listers/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
-k8s.io/component-base/zpages/flagz
-k8s.io/component-base/zpages/httputil
-k8s.io/component-base/zpages/statusz
-sigs.k8s.io/gateway-api/apis/v1alpha2
-sigs.k8s.io/gateway-api/apis/v1alpha3
+sigs.k8s.io/karpenter/pkg/operator/logging
cluster-agent-cloudfoundrylinuxamd64
+3, -3
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
cluster-agent-cloudfoundrylinuxarm64
+3, -3
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
dogstatsdlinuxamd64
+4, -6
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/gogo/protobuf/sortkeys
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
dogstatsdlinuxarm64
+4, -6
-github.com/clipperhouse/uax29/v2/graphemes
-github.com/gogo/protobuf/sortkeys
-github.com/mattn/go-runewidth
-github.com/olekukonko/tablewriter
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
process-agentlinuxamd64
+4, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
process-agentlinuxarm64
+4, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
process-agentwindowsamd64
+4, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
process-agentdarwinamd64
+3, -0
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
process-agentdarwinarm64
+3, -0
+k8s.io/apimachinery/pkg/api/validate/constraints
+k8s.io/apimachinery/pkg/api/validate/content
+k8s.io/kube-openapi/pkg/util
security-agentlinuxamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
security-agentlinuxarm64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
security-agentwindowsamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
sbomgenlinuxamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
sbomgenlinuxarm64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
system-probelinuxamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
system-probelinuxarm64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
system-probedarwinamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
system-probedarwinarm64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
trace-agentlinuxamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
trace-agentlinuxarm64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
trace-agentwindowsamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
trace-agentdarwinamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
trace-agentdarwinarm64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
heroku-trace-agentlinuxamd64
+1, -2
-go.opentelemetry.io/otel/semconv/v1.39.0
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
otel-agentlinuxamd64
+65, -14
+github.com/aws/aws-sdk-go-v2/service/kafka
+github.com/aws/aws-sdk-go-v2/service/kafka/types
+github.com/bahlo/generic-list-go
+github.com/basgys/goxml2json
+github.com/buger/jsonparser
+github.com/felixge/fgprof
-github.com/golang/protobuf/proto
-github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter
-github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr
+github.com/pb33f/jsonpath/pkg/jsonpath
+github.com/pb33f/jsonpath/pkg/jsonpath/config
+github.com/pb33f/jsonpath/pkg/jsonpath/token
+github.com/pb33f/libopenapi
+github.com/pb33f/libopenapi-validator
+github.com/pb33f/libopenapi-validator/cache
+github.com/pb33f/libopenapi-validator/config
+github.com/pb33f/libopenapi-validator/errors
+github.com/pb33f/libopenapi-validator/helpers
+github.com/pb33f/libopenapi-validator/openapi_vocabulary
+github.com/pb33f/libopenapi-validator/parameters
+github.com/pb33f/libopenapi-validator/paths
+github.com/pb33f/libopenapi-validator/requests
+github.com/pb33f/libopenapi-validator/responses
+github.com/pb33f/libopenapi-validator/schema_validation
+github.com/pb33f/libopenapi-validator/strict
+github.com/pb33f/libopenapi/datamodel
+github.com/pb33f/libopenapi/datamodel/high
+github.com/pb33f/libopenapi/datamodel/high/base
+github.com/pb33f/libopenapi/datamodel/high/nodes
+github.com/pb33f/libopenapi/datamodel/high/overlay
+github.com/pb33f/libopenapi/datamodel/high/v2
+github.com/pb33f/libopenapi/datamodel/high/v3
+github.com/pb33f/libopenapi/datamodel/low
+github.com/pb33f/libopenapi/datamodel/low/base
+github.com/pb33f/libopenapi/datamodel/low/overlay
+github.com/pb33f/libopenapi/datamodel/low/v2
+github.com/pb33f/libopenapi/datamodel/low/v3
+github.com/pb33f/libopenapi/index
+github.com/pb33f/libopenapi/json
+github.com/pb33f/libopenapi/orderedmap
+github.com/pb33f/libopenapi/overlay
+github.com/pb33f/libopenapi/utils
+github.com/pb33f/libopenapi/what-changed
+github.com/pb33f/libopenapi/what-changed/model
+github.com/pb33f/ordered-map/v2
+github.com/prometheus/prometheus/promql/promqltest
-github.com/prometheus/prometheus/tsdb/errors
+github.com/prometheus/prometheus/util/kahansum
+github.com/prometheus/prometheus/util/teststorage
+github.com/prometheus/prometheus/web/api/testhelpers
+github.com/santhosh-tekuri/jsonschema/v6
+github.com/santhosh-tekuri/jsonschema/v6/kind
-github.com/signalfx/sapm-proto/client
-github.com/signalfx/sapm-proto/gen
+github.com/stackitcloud/stackit-sdk-go/core/oidcadapters
+github.com/stackitcloud/stackit-sdk-go/core/utils
-go.opentelemetry.io/collector/semconv/v1.6.1
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.37.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
+go.yaml.in/yaml/v4
+golang.org/x/sync/singleflight
+golang.org/x/text/feature/plural
+golang.org/x/text/message
+golang.org/x/text/message/catalog
-google.golang.org/protobuf/reflect/protodesc
-google.golang.org/protobuf/types/gofeaturespb
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
otel-agentlinuxarm64
+65, -14
+github.com/aws/aws-sdk-go-v2/service/kafka
+github.com/aws/aws-sdk-go-v2/service/kafka/types
+github.com/bahlo/generic-list-go
+github.com/basgys/goxml2json
+github.com/buger/jsonparser
+github.com/felixge/fgprof
-github.com/golang/protobuf/proto
-github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sapmexporter
-github.com/open-telemetry/opentelemetry-collector-contrib/pkg/batchperresourceattr
+github.com/pb33f/jsonpath/pkg/jsonpath
+github.com/pb33f/jsonpath/pkg/jsonpath/config
+github.com/pb33f/jsonpath/pkg/jsonpath/token
+github.com/pb33f/libopenapi
+github.com/pb33f/libopenapi-validator
+github.com/pb33f/libopenapi-validator/cache
+github.com/pb33f/libopenapi-validator/config
+github.com/pb33f/libopenapi-validator/errors
+github.com/pb33f/libopenapi-validator/helpers
+github.com/pb33f/libopenapi-validator/openapi_vocabulary
+github.com/pb33f/libopenapi-validator/parameters
+github.com/pb33f/libopenapi-validator/paths
+github.com/pb33f/libopenapi-validator/requests
+github.com/pb33f/libopenapi-validator/responses
+github.com/pb33f/libopenapi-validator/schema_validation
+github.com/pb33f/libopenapi-validator/strict
+github.com/pb33f/libopenapi/datamodel
+github.com/pb33f/libopenapi/datamodel/high
+github.com/pb33f/libopenapi/datamodel/high/base
+github.com/pb33f/libopenapi/datamodel/high/nodes
+github.com/pb33f/libopenapi/datamodel/high/overlay
+github.com/pb33f/libopenapi/datamodel/high/v2
+github.com/pb33f/libopenapi/datamodel/high/v3
+github.com/pb33f/libopenapi/datamodel/low
+github.com/pb33f/libopenapi/datamodel/low/base
+github.com/pb33f/libopenapi/datamodel/low/overlay
+github.com/pb33f/libopenapi/datamodel/low/v2
+github.com/pb33f/libopenapi/datamodel/low/v3
+github.com/pb33f/libopenapi/index
+github.com/pb33f/libopenapi/json
+github.com/pb33f/libopenapi/orderedmap
+github.com/pb33f/libopenapi/overlay
+github.com/pb33f/libopenapi/utils
+github.com/pb33f/libopenapi/what-changed
+github.com/pb33f/libopenapi/what-changed/model
+github.com/pb33f/ordered-map/v2
+github.com/prometheus/prometheus/promql/promqltest
-github.com/prometheus/prometheus/tsdb/errors
+github.com/prometheus/prometheus/util/kahansum
+github.com/prometheus/prometheus/util/teststorage
+github.com/prometheus/prometheus/web/api/testhelpers
+github.com/santhosh-tekuri/jsonschema/v6
+github.com/santhosh-tekuri/jsonschema/v6/kind
-github.com/signalfx/sapm-proto/client
-github.com/signalfx/sapm-proto/gen
+github.com/stackitcloud/stackit-sdk-go/core/oidcadapters
+github.com/stackitcloud/stackit-sdk-go/core/utils
-go.opentelemetry.io/collector/semconv/v1.6.1
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.37.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
+go.yaml.in/yaml/v4
+golang.org/x/sync/singleflight
+golang.org/x/text/feature/plural
+golang.org/x/text/message
+golang.org/x/text/message/catalog
-google.golang.org/protobuf/reflect/protodesc
-google.golang.org/protobuf/types/gofeaturespb
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
host-profilerlinuxamd64
+65, -7
+github.com/aws/aws-sdk-go-v2/service/kafka
+github.com/aws/aws-sdk-go-v2/service/kafka/types
+github.com/bahlo/generic-list-go
+github.com/basgys/goxml2json
+github.com/buger/jsonparser
+github.com/felixge/fgprof
+github.com/pb33f/jsonpath/pkg/jsonpath
+github.com/pb33f/jsonpath/pkg/jsonpath/config
+github.com/pb33f/jsonpath/pkg/jsonpath/token
+github.com/pb33f/libopenapi
+github.com/pb33f/libopenapi-validator
+github.com/pb33f/libopenapi-validator/cache
+github.com/pb33f/libopenapi-validator/config
+github.com/pb33f/libopenapi-validator/errors
+github.com/pb33f/libopenapi-validator/helpers
+github.com/pb33f/libopenapi-validator/openapi_vocabulary
+github.com/pb33f/libopenapi-validator/parameters
+github.com/pb33f/libopenapi-validator/paths
+github.com/pb33f/libopenapi-validator/requests
+github.com/pb33f/libopenapi-validator/responses
+github.com/pb33f/libopenapi-validator/schema_validation
+github.com/pb33f/libopenapi-validator/strict
+github.com/pb33f/libopenapi/datamodel
+github.com/pb33f/libopenapi/datamodel/high
+github.com/pb33f/libopenapi/datamodel/high/base
+github.com/pb33f/libopenapi/datamodel/high/nodes
+github.com/pb33f/libopenapi/datamodel/high/overlay
+github.com/pb33f/libopenapi/datamodel/high/v2
+github.com/pb33f/libopenapi/datamodel/high/v3
+github.com/pb33f/libopenapi/datamodel/low
+github.com/pb33f/libopenapi/datamodel/low/base
+github.com/pb33f/libopenapi/datamodel/low/overlay
+github.com/pb33f/libopenapi/datamodel/low/v2
+github.com/pb33f/libopenapi/datamodel/low/v3
+github.com/pb33f/libopenapi/index
+github.com/pb33f/libopenapi/json
+github.com/pb33f/libopenapi/orderedmap
+github.com/pb33f/libopenapi/overlay
+github.com/pb33f/libopenapi/utils
+github.com/pb33f/libopenapi/what-changed
+github.com/pb33f/libopenapi/what-changed/model
+github.com/pb33f/ordered-map/v2
+github.com/prometheus/prometheus/promql/promqltest
-github.com/prometheus/prometheus/tsdb/errors
+github.com/prometheus/prometheus/util/kahansum
+github.com/prometheus/prometheus/util/teststorage
+github.com/prometheus/prometheus/web/api/testhelpers
+github.com/santhosh-tekuri/jsonschema/v6
+github.com/santhosh-tekuri/jsonschema/v6/kind
+github.com/stackitcloud/stackit-sdk-go/core/oidcadapters
+github.com/stackitcloud/stackit-sdk-go/core/utils
-go.opentelemetry.io/collector/semconv/v1.6.1
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.37.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
+go.yaml.in/yaml/v4
+golang.org/x/sync/singleflight
+golang.org/x/text/feature/plural
+golang.org/x/text/message
+golang.org/x/text/message/catalog
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
host-profilerlinuxarm64
+65, -7
+github.com/aws/aws-sdk-go-v2/service/kafka
+github.com/aws/aws-sdk-go-v2/service/kafka/types
+github.com/bahlo/generic-list-go
+github.com/basgys/goxml2json
+github.com/buger/jsonparser
+github.com/felixge/fgprof
+github.com/pb33f/jsonpath/pkg/jsonpath
+github.com/pb33f/jsonpath/pkg/jsonpath/config
+github.com/pb33f/jsonpath/pkg/jsonpath/token
+github.com/pb33f/libopenapi
+github.com/pb33f/libopenapi-validator
+github.com/pb33f/libopenapi-validator/cache
+github.com/pb33f/libopenapi-validator/config
+github.com/pb33f/libopenapi-validator/errors
+github.com/pb33f/libopenapi-validator/helpers
+github.com/pb33f/libopenapi-validator/openapi_vocabulary
+github.com/pb33f/libopenapi-validator/parameters
+github.com/pb33f/libopenapi-validator/paths
+github.com/pb33f/libopenapi-validator/requests
+github.com/pb33f/libopenapi-validator/responses
+github.com/pb33f/libopenapi-validator/schema_validation
+github.com/pb33f/libopenapi-validator/strict
+github.com/pb33f/libopenapi/datamodel
+github.com/pb33f/libopenapi/datamodel/high
+github.com/pb33f/libopenapi/datamodel/high/base
+github.com/pb33f/libopenapi/datamodel/high/nodes
+github.com/pb33f/libopenapi/datamodel/high/overlay
+github.com/pb33f/libopenapi/datamodel/high/v2
+github.com/pb33f/libopenapi/datamodel/high/v3
+github.com/pb33f/libopenapi/datamodel/low
+github.com/pb33f/libopenapi/datamodel/low/base
+github.com/pb33f/libopenapi/datamodel/low/overlay
+github.com/pb33f/libopenapi/datamodel/low/v2
+github.com/pb33f/libopenapi/datamodel/low/v3
+github.com/pb33f/libopenapi/index
+github.com/pb33f/libopenapi/json
+github.com/pb33f/libopenapi/orderedmap
+github.com/pb33f/libopenapi/overlay
+github.com/pb33f/libopenapi/utils
+github.com/pb33f/libopenapi/what-changed
+github.com/pb33f/libopenapi/what-changed/model
+github.com/pb33f/ordered-map/v2
+github.com/prometheus/prometheus/promql/promqltest
-github.com/prometheus/prometheus/tsdb/errors
+github.com/prometheus/prometheus/util/kahansum
+github.com/prometheus/prometheus/util/teststorage
+github.com/prometheus/prometheus/web/api/testhelpers
+github.com/santhosh-tekuri/jsonschema/v6
+github.com/santhosh-tekuri/jsonschema/v6/kind
+github.com/stackitcloud/stackit-sdk-go/core/oidcadapters
+github.com/stackitcloud/stackit-sdk-go/core/utils
-go.opentelemetry.io/collector/semconv/v1.6.1
+go.opentelemetry.io/otel/exporters/prometheus/internal
-go.opentelemetry.io/otel/semconv/v1.37.0/httpconv
-go.opentelemetry.io/otel/semconv/v1.39.0/otelconv
+go.opentelemetry.io/otel/semconv/v1.40.0/httpconv
+go.opentelemetry.io/otel/semconv/v1.40.0/otelconv
+go.yaml.in/yaml/v4
+golang.org/x/sync/singleflight
+golang.org/x/text/feature/plural
+golang.org/x/text/message
+golang.org/x/text/message/catalog
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/apis/meta/internalversion/validation
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/client-go/util/watchlist
+k8s.io/kube-openapi/pkg/util
privateactionrunnerlinuxamd64
+5, -3
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/kube-openapi/pkg/util
privateactionrunnerlinuxarm64
+5, -3
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/kube-openapi/pkg/util
privateactionrunnerwindowsamd64
+5, -3
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/kube-openapi/pkg/util
privateactionrunnerdarwinamd64
+5, -3
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/kube-openapi/pkg/util
privateactionrunnerdarwinarm64
+5, -3
-k8s.io/api/storagemigration/v1alpha1
+k8s.io/api/storagemigration/v1beta1
+k8s.io/apimachinery/pkg/util/version
-k8s.io/client-go/applyconfigurations/storagemigration/v1alpha1
+k8s.io/client-go/applyconfigurations/storagemigration/v1beta1
-k8s.io/client-go/kubernetes/typed/storagemigration/v1alpha1
+k8s.io/client-go/kubernetes/typed/storagemigration/v1beta1
+k8s.io/kube-openapi/pkg/util

Upgrade all k8s.io/* modules from v0.34.1 to v0.35.3 (Kubernetes 1.35
patch 3). Remove the replace directives that pinned core k8s.io modules
to v0.34.1 — they were needed because karpenter-provider-aws v1.8.6
required alpha k8s.io versions, but v1.9.0 uses stable releases.

Ecosystem module upgrades:
- k8s.io/autoscaler/vertical-pod-autoscaler: v1.2.2 → v1.6.0
- sigs.k8s.io/custom-metrics-apiserver: v1.33.0 → v1.35.0
- sigs.k8s.io/karpenter: v1.8.2 → v1.9.0
- github.com/aws/karpenter-provider-aws: v1.8.6 → v1.9.0
- sigs.k8s.io/gateway-api: v1.3.1-pseudo → v1.5.1
- github.com/envoyproxy/gateway: v1.5.7 → v1.7.1

Code fixes for breaking API changes:
- Adapt to tablewriter v0 → v1 API (NewTable with options)
- Adapt to karpenter v1.9.0 NodeSelectorRequirementWithMinValues
  struct change (embedded corev1.NodeSelectorRequirement → flat fields)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@L3n41c L3n41c force-pushed the lenaic/upgrade-k8s-deps-v0.35.3 branch from a0d0aa8 to ec4016c Compare April 7, 2026 19:24
L3n41c and others added 2 commits April 7, 2026 21:38
containerd v1.7.30 (latest v1.x) is incompatible with runtime-spec
v1.3.0 which changed some struct fields from int64 to *int64. Pin
runtime-spec to v1.2.1 via a replace directive until containerd v1
is replaced by v2 or the incompatibility is resolved upstream.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous commit only pinned runtime-spec to v1.2.1 (int64 Limit),
but containerd/cgroups/v3 v3.1.2 expects *int64 (runtime-spec v1.3.0).
Pin cgroups/v3 to v3.0.5 which uses int64, and use runtime-spec v1.2.0
(matching cgroups v3.0.5's declared dependency) to ensure both containerd
v1.7.30 and cgroups compile correctly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr bot commented Apr 7, 2026

Files inventory check summary

File checks results against ancestor b17213fd:

Results for datadog-agent_7.79.0~devel.git.528.5b6a1d5.pipeline.106898637-1_amd64.deb:

No change detected

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr bot commented Apr 7, 2026

Static quality checks

✅ Please find below the results from static quality gates
Comparison made with ancestor b17213f
📊 Static Quality Gates Dashboard
🔗 SQG Job

Successful checks

Info

Quality gate Change Size (prev → curr → max)
agent_deb_amd64 -3.82 MiB (0.51% reduction) 753.363 → 749.542 → 753.380
agent_deb_amd64_fips -2.07 MiB (0.29% reduction) 710.267 → 708.194 → 713.900
agent_heroku_amd64 -10.91 KiB (0.00% reduction) 313.475 → 313.464 → 320.580
agent_msi -3.86 MiB (0.64% reduction) 605.254 → 601.392 → 651.440
agent_rpm_amd64 -3.82 MiB (0.51% reduction) 753.346 → 749.526 → 753.350
agent_rpm_amd64_fips -2.07 MiB (0.29% reduction) 710.250 → 708.178 → 713.880
agent_rpm_arm64 -3.73 MiB (0.51% reduction) 731.709 → 727.979 → 735.290
agent_rpm_arm64_fips -2.04 MiB (0.29% reduction) 691.673 → 689.637 → 696.840
agent_suse_amd64 -3.82 MiB (0.51% reduction) 753.346 → 749.526 → 753.350
agent_suse_amd64_fips -2.07 MiB (0.29% reduction) 710.250 → 708.178 → 713.880
agent_suse_arm64 -3.73 MiB (0.51% reduction) 731.709 → 727.979 → 735.290
agent_suse_arm64_fips -2.04 MiB (0.29% reduction) 691.673 → 689.637 → 696.840
docker_agent_amd64 -3.81 MiB (0.47% reduction) 813.635 → 809.820 → 815.700
docker_agent_arm64 -3.73 MiB (0.46% reduction) 816.799 → 813.071 → 821.970
docker_agent_jmx_amd64 -3.81 MiB (0.38% reduction) 1004.550 → 1000.736 → 1006.580
docker_agent_jmx_arm64 -3.73 MiB (0.37% reduction) 996.493 → 992.765 → 1001.570
docker_cluster_agent_amd64 -318.83 KiB (0.15% reduction) 204.111 → 203.800 → 206.270
docker_cluster_agent_arm64 -402.86 KiB (0.18% reduction) 218.547 → 218.153 → 220.000
docker_dogstatsd_amd64 -288.09 KiB (0.72% reduction) 39.270 → 38.988 → 39.380
docker_dogstatsd_arm64 -264.09 KiB (0.69% reduction) 37.507 → 37.250 → 37.940
dogstatsd_deb_amd64 -292.09 KiB (0.95% reduction) 29.917 → 29.632 → 30.610
dogstatsd_deb_arm64 -280.09 KiB (0.97% reduction) 28.066 → 27.792 → 29.110
dogstatsd_rpm_amd64 -292.09 KiB (0.95% reduction) 29.917 → 29.632 → 30.610
dogstatsd_suse_amd64 -292.09 KiB (0.95% reduction) 29.917 → 29.632 → 30.610
iot_agent_deb_amd64 -78.44 KiB (0.18% reduction) 43.305 → 43.229 → 44.290
iot_agent_deb_arm64 -74.41 KiB (0.18% reduction) 40.352 → 40.279 → 41.920
iot_agent_deb_armhf -78.19 KiB (0.19% reduction) 41.100 → 41.023 → 42.100
iot_agent_rpm_amd64 -78.44 KiB (0.18% reduction) 43.306 → 43.229 → 44.290
iot_agent_suse_amd64 -78.44 KiB (0.18% reduction) 43.306 → 43.229 → 44.290
2 successful checks with minimal change (< 2 KiB)
Quality gate Current Size
docker_cws_instrumentation_amd64 7.142 MiB
docker_cws_instrumentation_arm64 6.689 MiB
On-wire sizes (compressed)
Quality gate Change Size (prev → curr → max)
agent_deb_amd64 -508.41 KiB (0.28% reduction) 174.883 → 174.387 → 178.360
agent_deb_amd64_fips -372.02 KiB (0.22% reduction) 165.431 → 165.068 → 172.790
agent_heroku_amd64 -9.94 KiB (0.01% reduction) 75.046 → 75.037 → 79.970
agent_msi -620.0 KiB (0.44% reduction) 138.504 → 137.898 → 146.220
agent_rpm_amd64 -661.73 KiB (0.36% reduction) 177.624 → 176.977 → 181.830
agent_rpm_amd64_fips -593.16 KiB (0.35% reduction) 167.725 → 167.146 → 173.370
agent_rpm_arm64 -43.5 KiB (0.03% reduction) 159.638 → 159.595 → 163.060
agent_rpm_arm64_fips -299.38 KiB (0.19% reduction) 151.514 → 151.221 → 156.170
agent_suse_amd64 -661.73 KiB (0.36% reduction) 177.624 → 176.977 → 181.830
agent_suse_amd64_fips -593.16 KiB (0.35% reduction) 167.725 → 167.146 → 173.370
agent_suse_arm64 -43.5 KiB (0.03% reduction) 159.638 → 159.595 → 163.060
agent_suse_arm64_fips -299.38 KiB (0.19% reduction) 151.514 → 151.221 → 156.170
docker_agent_amd64 -936.97 KiB (0.34% reduction) 268.275 → 267.360 → 272.480
docker_agent_arm64 -897.77 KiB (0.34% reduction) 255.461 → 254.584 → 261.060
docker_agent_jmx_amd64 -945.49 KiB (0.27% reduction) 336.925 → 336.001 → 341.100
docker_agent_jmx_arm64 -897.51 KiB (0.27% reduction) 320.102 → 319.225 → 325.620
docker_cluster_agent_amd64 -77.14 KiB (0.11% reduction) 71.420 → 71.345 → 72.920
docker_cluster_agent_arm64 -108.63 KiB (0.16% reduction) 67.051 → 66.945 → 68.220
docker_cws_instrumentation_amd64 neutral 2.999 MiB → 3.330
docker_cws_instrumentation_arm64 neutral 2.729 MiB → 3.090
docker_dogstatsd_amd64 -81.85 KiB (0.53% reduction) 15.180 → 15.100 → 15.820
docker_dogstatsd_arm64 -79.07 KiB (0.53% reduction) 14.506 → 14.429 → 14.830
dogstatsd_deb_amd64 -51.75 KiB (0.64% reduction) 7.901 → 7.850 → 8.790
dogstatsd_deb_arm64 -45.76 KiB (0.66% reduction) 6.784 → 6.740 → 7.710
dogstatsd_rpm_amd64 -51.18 KiB (0.63% reduction) 7.912 → 7.862 → 8.800
dogstatsd_suse_amd64 -51.18 KiB (0.63% reduction) 7.912 → 7.862 → 8.800
iot_agent_deb_amd64 -24.04 KiB (0.21% reduction) 11.411 → 11.387 → 13.040
iot_agent_deb_arm64 -17.99 KiB (0.18% reduction) 9.729 → 9.711 → 11.450
iot_agent_deb_armhf -15.91 KiB (0.16% reduction) 9.945 → 9.930 → 11.620
iot_agent_rpm_amd64 -25.8 KiB (0.22% reduction) 11.429 → 11.404 → 13.060
iot_agent_suse_amd64 -25.8 KiB (0.22% reduction) 11.429 → 11.404 → 13.060

@cit-pr-commenter-54b7da
Copy link
Copy Markdown

cit-pr-commenter-54b7da bot commented Apr 7, 2026

Regression Detector

Regression Detector Results

Metrics dashboard
Target profiles
Run ID: b4dff80c-96bd-40c0-ad0b-57d3a31b6f9d

Baseline: b17213f
Comparison: 5b6a1d5
Diff

Optimization Goals: ✅ No significant changes detected

Experiments ignored for regressions

Regressions in experiments with settings containing erratic: true are ignored.

perf experiment goal Δ mean % Δ mean % CI trials links
docker_containers_cpu % cpu utilization -1.07 [-4.08, +1.93] 1 Logs

Fine details of change detection per experiment

perf experiment goal Δ mean % Δ mean % CI trials links
quality_gate_logs % cpu utilization +2.88 [+1.26, +4.50] 1 Logs bounds checks dashboard
ddot_metrics memory utilization +2.87 [+2.68, +3.07] 1 Logs
ddot_metrics_sum_cumulative memory utilization +2.39 [+2.24, +2.54] 1 Logs
ddot_metrics_sum_delta memory utilization +2.35 [+2.16, +2.53] 1 Logs
ddot_metrics_sum_cumulativetodelta_exporter memory utilization +1.62 [+1.39, +1.84] 1 Logs
ddot_logs memory utilization +0.61 [+0.55, +0.67] 1 Logs
otlp_ingest_logs memory utilization +0.38 [+0.29, +0.48] 1 Logs
quality_gate_idle_all_features memory utilization +0.30 [+0.26, +0.34] 1 Logs bounds checks dashboard
tcp_syslog_to_blackhole ingress throughput +0.10 [-0.10, +0.30] 1 Logs
otlp_ingest_metrics memory utilization +0.06 [-0.10, +0.22] 1 Logs
file_to_blackhole_100ms_latency egress throughput +0.04 [-0.08, +0.17] 1 Logs
uds_dogstatsd_to_api_v3 ingress throughput +0.02 [-0.17, +0.21] 1 Logs
file_to_blackhole_1000ms_latency egress throughput +0.00 [-0.43, +0.43] 1 Logs
tcp_dd_logs_filter_exclude ingress throughput +0.00 [-0.09, +0.09] 1 Logs
uds_dogstatsd_to_api ingress throughput -0.00 [-0.20, +0.19] 1 Logs
file_to_blackhole_500ms_latency egress throughput -0.02 [-0.42, +0.38] 1 Logs
file_to_blackhole_0ms_latency egress throughput -0.07 [-0.59, +0.45] 1 Logs
quality_gate_metrics_logs memory utilization -0.19 [-0.42, +0.05] 1 Logs bounds checks dashboard
docker_containers_memory memory utilization -0.23 [-0.32, -0.14] 1 Logs
quality_gate_idle memory utilization -0.45 [-0.51, -0.40] 1 Logs bounds checks dashboard
file_tree memory utilization -0.75 [-0.81, -0.69] 1 Logs
uds_dogstatsd_20mb_12k_contexts_20_senders memory utilization -0.95 [-1.01, -0.89] 1 Logs
docker_containers_cpu % cpu utilization -1.07 [-4.08, +1.93] 1 Logs

Bounds Checks: ✅ Passed

perf experiment bounds_check_name replicates_passed observed_value links
docker_containers_cpu simple_check_run 10/10 702 ≥ 26
docker_containers_memory memory_usage 10/10 273.25MiB ≤ 370MiB
docker_containers_memory simple_check_run 10/10 599 ≥ 26
file_to_blackhole_0ms_latency memory_usage 10/10 0.19GiB ≤ 1.20GiB
file_to_blackhole_0ms_latency missed_bytes 10/10 0B = 0B
file_to_blackhole_1000ms_latency memory_usage 10/10 0.23GiB ≤ 1.20GiB
file_to_blackhole_1000ms_latency missed_bytes 10/10 0B = 0B
file_to_blackhole_100ms_latency memory_usage 10/10 0.19GiB ≤ 1.20GiB
file_to_blackhole_100ms_latency missed_bytes 10/10 0B = 0B
file_to_blackhole_500ms_latency memory_usage 10/10 0.22GiB ≤ 1.20GiB
file_to_blackhole_500ms_latency missed_bytes 10/10 0B = 0B
quality_gate_idle intake_connections 10/10 3 = 3 bounds checks dashboard
quality_gate_idle memory_usage 10/10 171.37MiB ≤ 181MiB bounds checks dashboard
quality_gate_idle_all_features intake_connections 10/10 3 = 3 bounds checks dashboard
quality_gate_idle_all_features memory_usage 10/10 488.11MiB ≤ 550MiB bounds checks dashboard
quality_gate_logs intake_connections 10/10 3 ≤ 6 bounds checks dashboard
quality_gate_logs memory_usage 10/10 199.95MiB ≤ 220MiB bounds checks dashboard
quality_gate_logs missed_bytes 10/10 0B = 0B bounds checks dashboard
quality_gate_metrics_logs cpu_usage 10/10 358.63 ≤ 2000 bounds checks dashboard
quality_gate_metrics_logs intake_connections 10/10 3 ≤ 6 bounds checks dashboard
quality_gate_metrics_logs memory_usage 10/10 404.22MiB ≤ 475MiB bounds checks dashboard
quality_gate_metrics_logs missed_bytes 10/10 0B = 0B bounds checks dashboard

Explanation

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".

CI Pass/Fail Decision

Passed. All Quality Gates passed.

  • quality_gate_metrics_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check missed_bytes: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
  • quality_gate_metrics_logs, 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 missed_bytes: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, bounds check intake_connections: 10/10 replicas passed. Gate passed.
  • quality_gate_idle_all_features, 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_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.

L3n41c and others added 7 commits April 7, 2026 23:17
spf13/viper v1.21.0 (pulled in by go work sync via envoyproxy/gateway
v1.7.1) uses cast.ToUintSlice and cast.ToFloat64Slice which do not
exist in the DataDog/cast v1.8.0 fork. Downgrade to v1.20.1 which
does not require these functions.

Also re-run go work sync / dda inv tidy to ensure all modules are
fully synchronized.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
spf13/viper v1.21.0 (pulled transitively by envoyproxy/gateway) uses
cast.ToUintSlice and cast.ToFloat64Slice from cast v1.10.0, but the
workspace replace directive forces DataDog/cast v1.8.0 which lacks
these functions. Pin viper to v1.20.1 which only needs cast v1.7.1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The tablewriter v1 API's Bulk, Render, and Append methods return
errors, unlike the v0 API. Discard them explicitly to satisfy the
errcheck linter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- VPA UpdateModeAuto: add nolint + new UpdateModeInPlaceOrRecreate mode
- VPA NewSimpleClientset: add nolint (NewClientset not yet generated)
- k8serrors.NewGone: add nolint (test needs StatusReasonGone specifically)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove 4 config fields from OTel ddflareextension test data that were
dropped from the Datadog exporter defaults in the transitive dependency
update (send_count_sum_metrics, traces endpoint, peer_service_aggregation,
trace_buffer).

Also fix gofmt whitespace in vpa.go nolint comment.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Resolve go.mod/go.sum conflicts after merge with main. Take newer
go-jose/v3 v3.0.5 from main, keep go-logr/zapr from our branch,
and add missing pkg/config/buildschema replace directive.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@L3n41c L3n41c requested review from a team as code owners April 9, 2026 12:15
table.SetTablePadding("\t")

table.AppendBulk(data)
table.Render()
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

These changes do not seem to be related to dependency update. Are these expected?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

These changes are directly caused by the dependency update. Here's the chain:

Root cause: github.com/aws/karpenter-provider-aws v1.9.0 (upgraded from v1.8.6 for k8s v0.35.3 compatibility) requires github.com/olekukonko/tablewriter v1.1.0. The previous version was v0.0.5. Go's MVS selects v1.1.0 for the whole module, including our code that uses it.

Problem: tablewriter v1.1.0 is a complete rewrite of the library. The module was split into multiple sub-packages (olekukonko/errors, olekukonko/ll, olekukonko/ts, olekukonko/tablewriter/tw, olekukonko/tablewriter/renderer). These new transitive dependencies increased binary size for all agent flavors, including IoT and Heroku which don't use Kubernetes features at all.

Impact: The Static Quality Gates job failed with 5 gates breached (per-PR threshold: 600 KiB on-disk increase):

Gate On-disk increase
Heroku Agent (AMD64) 884.82 KiB
IoT Agent DEB (AMD64) 817.75 KiB
IoT Agent DEB (ARM64) 753.72 KiB
IoT Agent RPM (AMD64) 817.75 KiB
IoT Agent SUSE (AMD64) 817.75 KiB

Note that the main agent, cluster agent, and Docker images all passed their gates — the size increase only exceeded the threshold for the lightweight IoT (~44 MiB total) and Heroku (~320 MiB) flavors where the relative impact is larger.

Fix: Since our two usages (pkg/aggregator/demultiplexer_agent_printer.go and test/fakeintake/cmd/client/cmd/routestats.go) only need simple tab-aligned table output, replacing olekukonko/tablewriter with Go's stdlib text/tabwriter was the straightforward fix: zero external dependencies, same functionality. See commit bb23684812.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@vickenty I extracted this change in this dedicated PR: #49165.

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a5f7901cd

ℹ️ About Codex in GitHub

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

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

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

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

func testCollectEvent(t *testing.T, createResource func(*fake.Clientset) error, newStore storeGenerator, expected workloadmeta.EventBundle) {
// Disable WatchListClient: fake.NewSimpleClientset does not support the watch-list protocol
// (it never sends the required initial bookmark event), causing the reflector to hang.
clientfeaturestesting.SetFeatureDuringTest(t, clientfeatures.WatchListClient, false)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Avoid shared feature-gate override in parallel test helper

Calling clientfeaturestesting.SetFeatureDuringTest inside this shared helper introduces a cross-test conflict because this API tracks one active override per feature and fails when a different concurrent test tries to set the same feature. Several callers run with t.Parallel() (for example pod_test.go, metadata_test.go, and parallel subtests in deployments_test.go), so this change can cause those tests to fail with feature-override errors instead of exercising the reflector behavior.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Good catch — the callers do use t.Parallel(). Fixed in e9a0370: moved the feature gate disable to TestMain using os.Setenv("KUBE_FEATURE_WatchListClient", "false") which runs once before all tests and avoids the cross-test conflict.


# Install and configure OCB
OCB_VERSION="0.147.0"
OCB_VERSION="0.149.0"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Unfortunately there is a bug in OTel 0.149.0 so we don't want to upgrade and are waiting for 0.150.0. Should be released next week

cc @RiantZ

SetFeatureDuringTest tracks one active override per feature globally
and fails when a different concurrent test sets the same feature.
Since callers (pod_test, metadata_test, deployments_test) use
t.Parallel(), the per-helper call would cause cross-test conflicts.

Use an env var in TestMain instead, which runs once before all tests
and is safe with parallel execution.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@L3n41c
Copy link
Copy Markdown
Member Author

L3n41c commented Apr 9, 2026

@codex review

Copy link
Copy Markdown
Member

@davidor davidor left a comment

Choose a reason for hiding this comment

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

👍 for container-platform files

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e9a03705a8

ℹ️ About Codex in GitHub

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

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

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

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

Comment on lines +42 to +44
func TestMain(m *testing.M) {
os.Setenv("KUBE_FEATURE_WatchListClient", "false")
os.Exit(m.Run())
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Move TestMain into a _test.go file

TestMain is declared in test_helpers.go, which is not a _test.go file, so go test will compile this function but not execute it as the package test entrypoint. That means KUBE_FEATURE_WatchListClient is never forced to false, so the fake client path this change is trying to protect can still hang under client-go v0.35.3 when these tests run (especially in parallel). Put this TestMain in a _test.go file so the feature gate override is actually applied.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Good catch — moved TestMain to main_test.go in 07a9aa4. The test_helpers.go file (despite having //go:build test) is not a _test.go file, so go test wouldn't recognize it as the package test entrypoint.

TestMain must be in a _test.go file to be recognized by go test as the
package test entrypoint. In test_helpers.go (a regular .go file with
//go:build test), it was just a regular function that was never called.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@L3n41c
Copy link
Copy Markdown
Member Author

L3n41c commented Apr 9, 2026

@codex review

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

ℹ️ About Codex in GitHub

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

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

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

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

L3n41c added a commit that referenced this pull request Apr 10, 2026
Replace the external github.com/olekukonko/tablewriter dependency with
Go's standard library text/tabwriter. The two usages
(demultiplexer_agent_printer.go and routestats.go) only need simple
tab-aligned table output, which text/tabwriter handles natively with
zero external dependencies.

Cell values are sanitized to replace tabs, newlines and carriage returns
with spaces to prevent free-form text fields from corrupting the
tabwriter column alignment.

This change was originally part of the Kubernetes dependencies upgrade
PR (#48796) and has been extracted into a standalone PR as suggested
during code review.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
gh-worker-dd-mergequeue-cf854d bot pushed a commit that referenced this pull request Apr 10, 2026
### What does this PR do?

Replaces the external `github.com/olekukonko/tablewriter` dependency with Go's standard library `text/tabwriter`. The two usages (`demultiplexer_agent_printer.go` and `routestats.go`) only need simple tab-aligned table output, which `text/tabwriter` handles natively with zero external dependencies.

Cell values are sanitized to replace tabs, newlines and carriage returns with spaces to prevent free-form text fields (e.g., service check messages) from corrupting the tabwriter column alignment.

### Motivation

This change was originally part of the Kubernetes dependencies upgrade PR (#48796) and has been extracted into a standalone PR as [suggested during code review](#48796 (comment)).

The `tablewriter` v1.1.0 upgrade (pulled transitively by `karpenter-provider-aws`) introduced several new transitive dependencies (`olekukonko/errors`, `olekukonko/ll`, `olekukonko/ts`) that increased binary size beyond the static quality gate threshold (600 KiB) for IoT and Heroku agent flavors. Replacing with the stdlib equivalent removes the dependency entirely, regardless of which version is pulled transitively.

### Describe how you validated your changes

- `dda inv test --targets=./pkg/aggregator/...` — all 138 tests pass
- `dda inv tidy` — go.mod/go.sum files are clean
- Verified that `olekukonko/tablewriter` is no longer imported anywhere in the codebase

### Additional Notes

The `mattn/go-runewidth` and `clipperhouse/uax29` indirect dependencies in `test/fakeintake/go.mod` were also removed as they were only needed by `tablewriter`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: lenaic.huard <lenaic.huard@datadoghq.com>
dd-octo-sts-98cdbc bot pushed a commit that referenced this pull request Apr 10, 2026
…r` (#49165)

### What does this PR do?

Replaces the external `github.com/olekukonko/tablewriter` dependency with Go's standard library `text/tabwriter`. The two usages (`demultiplexer_agent_printer.go` and `routestats.go`) only need simple tab-aligned table output, which `text/tabwriter` handles natively with zero external dependencies.

Cell values are sanitized to replace tabs, newlines and carriage returns with spaces to prevent free-form text fields (e.g., service check messages) from corrupting the tabwriter column alignment.

### Motivation

This change was originally part of the Kubernetes dependencies upgrade PR (#48796) and has been extracted into a standalone PR as [suggested during code review](#48796 (comment)).

The `tablewriter` v1.1.0 upgrade (pulled transitively by `karpenter-provider-aws`) introduced several new transitive dependencies (`olekukonko/errors`, `olekukonko/ll`, `olekukonko/ts`) that increased binary size beyond the static quality gate threshold (600 KiB) for IoT and Heroku agent flavors. Replacing with the stdlib equivalent removes the dependency entirely, regardless of which version is pulled transitively.

### Describe how you validated your changes

- `dda inv test --targets=./pkg/aggregator/...` — all 138 tests pass
- `dda inv tidy` — go.mod/go.sum files are clean
- Verified that `olekukonko/tablewriter` is no longer imported anywhere in the codebase

### Additional Notes

The `mattn/go-runewidth` and `clipperhouse/uax29` indirect dependencies in `test/fakeintake/go.mod` were also removed as they were only needed by `tablewriter`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: lenaic.huard <lenaic.huard@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/no-changelog No changelog entry needed component/system-probe internal Identify a non-fork PR long review PR is complex, plan time to review it qa/done QA done before merge and regressions are covered by tests team/action-platform team/agent-build team/agent-devx team/agent-metric-pipelines team/agent-runtimes team/container-platform The Container Platform Team team/kubernetes-experiences

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants