Skip to content

fix(data-race): lock ntmConfig.GetNode for concurrent access (#55389) - #55434

Draft
usamasaqib wants to merge 1011 commits into
usama.saqib/wib-demofrom
main
Draft

usamasaqib wants to merge 1011 commits into
usama.saqib/wib-demofrom
main

Conversation

@usamasaqib

Copy link
Copy Markdown
Contributor

What does this PR do?

Adds c.RLock() / defer c.RUnlock() to ntmConfig.GetNode().

Motivation

GetNode() reads c.root and traverses the tree without the read lock, racing with Set() which modifies the tree under the write lock.

WARNING: DATA RACE
Read at ... by goroutine A:
  (*ntmConfig).GetNode()  config.go:894   // curr.GetChild(part)
  ... configstreamconsumer.streamLoop -> applyUpdate -> IsSetting
Previous write at ... by goroutine B:
  (*ntmConfig).Set()  config.go:265   // c.root.Merge(newTree)
  ... configstreamconsumer.applyUpdate

Describe how you validated your changes

CI

Additional Notes

GetNode is only called from IsSetting() (no lock held), so adding RLock introduces no deadlock risk.

What does this PR do?

Motivation

Describe how you validated your changes

Additional Notes

@dd-octo-sts

dd-octo-sts Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Static quality checks

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

33 successful checks with minimal change (< 2 KiB)
Quality gate Current Size
✅ agent_deb_amd64 761.706 MiB
✅ agent_deb_amd64_fips 713.963 MiB
✅ agent_heroku_amd64 312.986 MiB
✅ agent_msi 648.383 MiB
✅ agent_rpm_amd64 761.690 MiB
✅ agent_rpm_amd64_fips 713.947 MiB
✅ agent_rpm_arm64 737.583 MiB
✅ agent_rpm_arm64_fips 693.178 MiB
✅ agent_suse_amd64 761.690 MiB
✅ agent_suse_amd64_fips 713.947 MiB
✅ agent_suse_arm64 737.583 MiB
✅ agent_suse_arm64_fips 693.178 MiB
✅ docker_agent_amd64 820.722 MiB
✅ docker_agent_arm64 821.651 MiB
✅ docker_agent_jmx_amd64 1011.634 MiB
✅ docker_agent_jmx_arm64 1001.343 MiB
✅ docker_cluster_agent_amd64 211.261 MiB
✅ docker_cluster_agent_arm64 224.398 MiB
✅ docker_cws_instrumentation_amd64 7.439 MiB
✅ docker_cws_instrumentation_arm64 6.877 MiB
✅ docker_dogstatsd_amd64 39.553 MiB
✅ docker_dogstatsd_arm64 37.623 MiB
✅ docker_host_profiler_amd64 306.872 MiB
✅ docker_host_profiler_arm64 318.169 MiB
✅ dogstatsd_deb_amd64 30.290 MiB
✅ dogstatsd_deb_arm64 28.302 MiB
✅ dogstatsd_rpm_amd64 30.290 MiB
✅ dogstatsd_suse_amd64 30.290 MiB
✅ iot_agent_deb_amd64 46.568 MiB
✅ iot_agent_deb_arm64 43.208 MiB
✅ iot_agent_deb_armhf 44.015 MiB
✅ iot_agent_rpm_amd64 46.568 MiB
✅ iot_agent_suse_amd64 46.567 MiB

vitkyrka and others added 30 commits September 25, 2026 16:10
### What does this PR do?

Prevents `process_log` paths from following symlinks. The paths are read from `/proc/PID/fd` and initially do not contain any symlinks. If some component in the path is replaced with a symbolic link later, it should be rejected.

To do this, introduce an internal-only `NoFollow` field and wire that through the readability checks, fingerprinting, initial tailing, and rotation/reopen, including privileged-log access. The field is only set for file sources generated by `process_log`.

### Motivation

[DSCVR-475](https://datadoghq.atlassian.net/browse/DSCVR-475)

### Describe how you validated your changes

Tests added.


[DSCVR-475]: https://datadoghq.atlassian.net/browse/DSCVR-475?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: vincent.whitchurch <vincent.whitchurch@datadoghq.com>
### What does this PR do?

Adds source mapping for Cloud Run services and Cloud Run functions (Functions v2) in the Agent-owned OpenTelemetry mapping modules.

| OTel platform | Running metric |
| --- | --- |
| `gcp_cloud_run` | `otel.datadog_exporter.metrics.running.cloudrun` |
| `gcp_cloud_functions` | `otel.datadog_exporter.metrics.running.cloudrunfunctions` |

Both produce hostless running series with `instance`, `service_name`, `project_id`, and `location`. Identity requires nonempty string values for `faas.instance`, `faas.name`, `cloud.account.id`, and `cloud.region`.

### Motivation

[SVLS-9414](https://datadoghq.atlassian.net/browse/SVLS-9414): the GCP detector already emits the required resource identity, but the Datadog exporter does not recognize these serverless sources. This follows the structured-source pattern from #55558 and the subsequent SourceIdentifier migration.

### Describe how you validated your changes

- Live validation in `datadog-serverless-gcp-dev/us-central1`, using the the ddserverless organization and cloud Run service `gcp-otel-otsdd-pyth-pr56663-755b335f41` and source-built Python 3.12 function `gcp-otel-otsdd-pyth-v2-pr56663-755b335f41`.
- Collector resources show `gcp_cloud_run` / `gcp_cloud_functions` respectively, with the expected project, region, workload, and instance. `faas.version` matches the actual ready revision (`00001-8d7` / `00005-lfw`).
- Both running metrics reached ddserverless with value 1 when grouped by the four identity tags. Their current instance identities match indexed `hello_world_handler` traces from the same workloads.

Evidence window: 2026-09-21 15:03:21–15:26:16 UTC. 

[Cloud Run running metric](https://ddserverless.datadoghq.com/metric/explorer?start=1790003001000&end=1790004376000&paused=true&live=false&exp_metric=otel.datadog_exporter.metrics.running.cloudrun&exp_scope=service_name%3Agcp-otel-otsdd-pyth-pr56663-755b335f41&exp_agg=avg) · 
<img width="918" height="596" alt="Screenshot 2026-09-21 at 1 00 31 PM" src="https://github.com/user-attachments/assets/5f792176-5f8e-4443-93cf-4b23941336fc" />

[Cloud Functions running metric](https://ddserverless.datadoghq.com/metric/explorer?start=1790003001000&end=1790004376000&paused=true&live=false&exp_metric=otel.datadog_exporter.metrics.running.cloudrunfunctions&exp_scope=service_name%3Agcp-otel-otsdd-pyth-v2-pr56663-755b335f41&exp_agg=avg).
<img width="1018" height="580" alt="Screenshot 2026-09-21 at 1 00 58 PM" src="https://github.com/user-attachments/assets/79cee9a4-0e87-4074-98de-7c34d3cccb3c" />

### Additional Notes

- Functions v1 is deferred. The upstream detector does not expose generation and v1 is a legacy google product being deprecated one runtime at a time. 


[SVLS-9414]: https://datadoghq.atlassian.net/browse/SVLS-9414?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: lewis.lewis <lewis.lewis@datadoghq.com>
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [github.com/twmb/franz-go](https://redirect.github.com/twmb/franz-go) | `v1.21.7` → `v1.22.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2ftwmb%2ffranz-go/v1.22.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2ftwmb%2ffranz-go/v1.22.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2ftwmb%2ffranz-go/v1.21.7/v1.22.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2ftwmb%2ffranz-go/v1.21.7/v1.22.0?slim=true) |
| [github.com/twmb/franz-go/pkg/kadm](https://redirect.github.com/twmb/franz-go) | `v1.18.0` → `v1.19.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2ftwmb%2ffranz-go%2fpkg%2fkadm/v1.19.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2ftwmb%2ffranz-go%2fpkg%2fkadm/v1.19.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2ftwmb%2ffranz-go%2fpkg%2fkadm/v1.18.0/v1.19.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2ftwmb%2ffranz-go%2fpkg%2fkadm/v1.18.0/v1.19.0?slim=true) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>twmb/franz-go (github.com/twmb/franz-go)</summary>

### [`v1.22.0`](https://redirect.github.com/twmb/franz-go/blob/HEAD/CHANGELOG.md#v1220)

[Compare Source](https://redirect.github.com/twmb/franz-go/compare/v1.21.7...v1.22.0)

\===

This release supports Kafka 4.3 and 4.4, has a few new APIs, and has a few
big internal improvements. In particular, I recommend checking out the new
`StreamingCompression` option, as well as evaluating if you'd like to use
`RackAwarePartitioning`. There are some behavior changes that you should read
about below. The "next gen" rebalancer is now usable via the new
`ServerSideBalancer` option. It's had a few releases to shake out bugs
internally (via integration tests and LLM audits), but if you do experience a
bug, please open an issue straightaway.

Some minor bug fixes (that were never reported) were found during the
implementation that are not worth mentioning.

kfake has also been significantly extended and I recommend checking out the
new APIs, in particular:

- A new Fault type to make it easier to inject errors without Control functions
- Group introspection cluster APIs
- BlackholeProduce and SyntheticFetch APIs for benchmarking / play testing

My `kcl` CLI has been *significantly* expanded as well and is worth checking
out. It supports essentially everything you can do with a cluster, and now
allows you to run a full broker locally via `kcl fake` (in memory or a dumb
disk backed localhost broker) - as well as setup the fake broker with fault
injection. I've been running LLM audits and extensions to `kcl` in particular
to try to shape it up to a "finalized" CLI shape. If you use it and have ideas
for improvements, please open an issue.

#### Behavior changes

- **Rack aware group partition assignment (KIP-881) now requires `BalanceRacks`.**
  v1.21.0 enabled group balancers to assign partitions based on the rack that
  members were in if you used the range or sticky/cooperative-sticky balancers.
  Well, `Rack` is also used to opt into preferred read replica assignment
  when fetching by the broker itself. These two decisions conflict with each
  other. Now, `BalanceRacks()` is required to opt into group balancers using
  the rack while balancing. The client warns when balancing if `BalanceRacks`
  is on and the brokers have preferred read replicas enabled.

- **`ConsumeResetOffset` defaults to `RewindOffset(time.Minute)`** rather
  than `NewOffset().AtStart()`. **Setting only `ConsumeStartOffset` no longer
  sets `ConsumeResetOffset`**. I introduced `ConsumeStartOffset` a while back
  because it was really weird IMO to use a reset offset for both how a consumer
  starts *and* for how it recovers in the event of data loss or falling behind.
  They were bidirectional since introduction, but since start is newer and much
  less commonly used and you often don't want to recover from the start, I've
  removed the start -> reset mapping when you only set the start. I recommend
  reading the docs on both options for an updated understanding of when and
  how they apply. As well, I've introduced `RewindOffset(d)` which is *only*
  relevant to the reset offset (rewind by `d` duration from the last consumed
  offset on data loss we cannot exactly recover from) and `LookbackOffset(d)`
  which is relevant to both options but more useful for the start offset
  (start consuming `d` before the newest record; before Kafka 3.0 it is `d`
  before the current time). If a committed offset has fallen below the log
  start, the first fetch answers `OFFSET_OUT_OF_RANGE` and the reset offset
  decides where to resume. Before, a start offset of `AtEnd` was copied into
  the reset offset, so the consumer skipped to the end. Now, with the
  defaults, it resumes at the log start.

- **Topic recreation is now a hard failure.** The client always
  produces to and consumes from the first instance of a topic. If you delete
  and recreate a topic, the client refuses the new version: buffered records
  fail with `UNKNOWN_TOPIC_ID`, fetches stop, offsets from the old topic cannot
  be committed to the new one, and transactions on the old topic fail. This
  needs a broker that reports topic IDs (Kafka 2.8+). Previously, some things
  in the client continued to accidentally work, and the behavior was
  unreliable and usually not good. If you want your application to stay alive
  across topic recreations, you can `PurgeTopicsFromClient` and, for
  consumers, `AddConsumeTopics`. More details about topic recreation are now in
  a new section in the README.

- **`MaxDecompressBatchBytes` now blocks decompression if a batch would
  decompress too large (default 1GiB)**. Fetches when consuming can only
  specify to the broker "give me X bytes of batches", but they cannot control
  how large those batches decompress into. A hostile or buggy batch could OOM
  your program. Now, a batch over the limit causes the partition to enter
  a fatal state and return `ErrDecompressTooLarge` once from polling.
  The application can recover by manually skipping the batch with `SetOffsets`
  (with the fields in the error; see the docs), or by restarting the client
  with a higher limit. This option does not apply to custom decompressors,
  but, custom decompressors can still return `ErrMaxDecompress` to stop
  the partition. This option is also closely related to streaming compression,
  which is described below.

#### Improvements

- **gzip now uses klauspost/compress** (same format). Its default level is
  1.7x faster than stdlib's with a slightly better ratio; klauspost's default
  maps to its level 5 where stdlib's mapped to 6, and level for level it is
  1.1x to 1.2x faster. `WithLevel(n)` now selects klauspost's level `n`, so
  the bytes a given level produces differ from before.

- **The sticky balancers are now exactly optimal** on balance, then rack
  placement (with `BalanceRacks`), then stickiness. Balancing was already
  load optimal but had some very niche edge cases where maximal stickiness
  was not preserved, especially if balancing used racks. Rack placement
  outranks stickiness: turning `BalanceRacks` on in a running group
  reassigns, at its next rebalance, every partition held by a member in a
  different zone from the partition's leader.

- Sticky balancing is much faster, most of all on rejoins and on groups whose
  members subscribe to different topics. Against v1.21.7: a rejoin of 100
  members over 1600 topics of 100 partitions goes from 351ms to 24ms; a regex
  shaped group of 500 members over 20,000 topics from 176ms and 810MB to 12ms
  and 9MB; 2001 members over 500 topics of 2000 partitions with one narrow
  subscriber from 3.4s to 0.3s. Fresh uniform balances are unchanged.

#### Features

##### Streaming compression

`StreamingCompression` is an opt-in producer option that compresses a
partition's backlog of batches together, bounded by their *compressed* size.
By default a batch is cut at `ProducerBatchMaxBytes` measured on uncompressed
records. Streaming compression will help reduce traffic to the broker and
increase how effective compression actually is (by pulling more data in at
once). A custom compressor makes this option a no-op.

The client is implemented such that each compression codec's worst case
overhead is tracked internally, which should avoid a compressed batch ever
exceeding `ProducerBatchMaxBytes`. If this ever does happen, the client
discards the merge, logs a warning, disables streaming compression for the
client going forward (records are still compressed batch by batch), and asks
you to file an issue.

The client has a new option `MaxDecompressBatchBytes` to bound both (a) how
much the producer can stuff into a merged batch (i.e. how much it will
decompress into), and (b) the maximum size a consumer will decompress a batch
to; the consumer never decompresses past the bound (preventing a zip bomb).
The default is 1GiB.

##### Rack aware producer partitioning (KIP-1123)

`RackAwarePartitioning` sends unkeyed records to partitions whose leader is in
the client's `Rack` (which must also be set), falling back to all partitions
when no leader is. Keyed records are never affected. Unlike the Java client,
this works with any partitioner, since the eligible-broker filtering happens
before your partitioner is consulted. Note that this option skews which
partitions receive records if your producers are not spread across racks in
proportion to partition leaders.

##### ServerSideBalancer (KIP-848)

`ServerSideBalancer` opts into KIP-848 "next-gen" consumer groups, where the
broker's group coordinator assigns partitions rather than the client. This
requires Kafka 4.0+ and either a range or sticky / cooperative-sticky
balancer. This replaces the hidden `opt_in_kafka_next_gen_balancer_beta`
context key from v1.19.0; the key still works in this release but will be removed
in the next. The default remains the classic protocol, matching the Java
client. I still think the classic client side balancers are better (and this
client's implementation is way faster than the Java client), but if you want
to use server side balancing, it is strongly recommended to only use it if
your cluster is Kafka 4.3+. Before 4.3 (before KIP-1251), an offset commit
that races with a heartbeat epoch bump can fail with `STALE_MEMBER_EPOCH`,
which the client cannot detect nor handle.

##### BalanceInfo for custom balancers

A balancer that implements `GroupMemberBalancerInfo` receives a `BalanceInfo`
before balancing: the group, generation, leader member ID, and lazily built
topic and broker metadata. `ConsumerBalancer` implements it, so balancers
built on `NewConsumerBalancer` can call `Info()`. This allows, for example, a
balancer that assigns every partition to the leader with the other members as
hot standbys. Thanks [@&#8203;michaelwilner](https://redirect.github.com/michaelwilner)!

#### API additions

```go
// Producing
func StreamingCompression() ProducerOpt
func RackAwarePartitioning() ProducerOpt

// Consuming
func BalanceRacks() ConsumerOpt
func ServerSideBalancer() GroupOpt
func RewindOffset(d time.Duration) Offset
func LookbackOffset(d time.Duration) Offset

// Decompression bound
func MaxDecompressBatchBytes(n int) Opt
var ErrMaxDecompress error
type ErrDecompressTooLarge struct {
    Topic      string
    Partition  int32
    Offset     int64
    Epoch      int32
    NextOffset int64
}

// Custom balancers
type BalanceInfo struct {
    Group      string
    Generation int32
    LeaderID   string
    Topics     func() map[string]TopicMetadata
    Brokers    func() map[int32]BrokerMetadata
}
type GroupMemberBalancerInfo interface {
    GroupMemberBalancer
    SetBalanceInfo(BalanceInfo)
}
func (*ConsumerBalancer) Info() BalanceInfo
type TopicMetadata struct { ... }
type PartitionMetadata struct { ... }

// Records
type RecordAttrsOpts struct {
    Codec         CompressionCodecType
    TimestampType int8
    Transactional bool
    Control       bool
}
func NewRecordAttrs(RecordAttrsOpts) RecordAttrs

// kversion
func (*Versions) EachSupportedFeature(fn func(name string, min, max int16))
func (*Versions) EachFinalizedFeature(fn func(name string, level int16))
func FeatureLevelDescription(name string, level int16) string
```

#### Relevant commits

There are many commits, but some of the more notable ones:

- [`27d11286`](https://redirect.github.com/twmb/franz-go/commit/27d11286) **feature** kversion: FeatureLevelDescription
- [`73358f62`](https://redirect.github.com/twmb/franz-go/commit/73358f62) **feature** kversion: supported and finalized feature levels per release
- [`7be0be16`](https://redirect.github.com/twmb/franz-go/commit/7be0be16) **behavior change** kgo: add MaxDecompressedBatchBytes
- [`b37f1041`](https://redirect.github.com/twmb/franz-go/commit/b37f1041) **feature** kgo: add ServerSideBalancer to opt into KIP-848
- [`033a46c7`](https://redirect.github.com/twmb/franz-go/commit/033a46c7) **improvement** kgo: begin ApiVersions at the max a broker told us, for an hour
- [`46a9b2ad`](https://redirect.github.com/twmb/franz-go/commit/46a9b2ad) **behavior change** kgo: use ConsumeResetOffset when the broker loses data we cannot locate
- [`8b33e43d`](https://redirect.github.com/twmb/franz-go/commit/8b33e43d) **improvement** kgo: speed up compression on both the legacy and the merge path
- [`9de0fa36`](https://redirect.github.com/twmb/franz-go/commit/9de0fa36) **feature** kgo: add StreamingCompression, compressed-size-bound batch merging
- [`de7327e6`](https://redirect.github.com/twmb/franz-go/commit/de7327e6) **feature** kgo: detect misrouted connections (KIP-1242)
- [`8ad36ec7`](https://redirect.github.com/twmb/franz-go/commit/8ad36ec7) **feature** kgo: support TxnOffsetCommit v6
- [`e4f7bc43`](https://redirect.github.com/twmb/franz-go/commit/e4f7bc43) **feature** kgo: add rack-aware producer partitioning (KIP-1123)
- [`123f2ffa`](https://redirect.github.com/twmb/franz-go/commit/123f2ffa) **improvement** kgo: repair the sticky plan to the best balance, rack, and stickiness
- [`23ab9a0e`](https://redirect.github.com/twmb/franz-go/commit/23ab9a0e) **behavior change** kgo: add BalanceRacks, gate rack aware balancing behind it
- [`d4f6db2f`](https://redirect.github.com/twmb/franz-go/commit/d4f6db2f) **improvement** kgo: drop reassigned partitions in one pass in AdjustCooperative
- [`35efafc8`](https://redirect.github.com/twmb/franz-go/commit/35efafc8) **behavior change** kgo: fail records for a recreated topic instead of producing by name
- [`4f10346a`](https://redirect.github.com/twmb/franz-go/commit/4f10346a) **feature** kgo: expose BalanceInfo for custom balancer implementations (thanks [@&#8203;michaelwilner](https://redirect.github.com/michaelwilner)!)
- [`cd7f9b4e`](https://redirect.github.com/twmb/franz-go/commit/cd7f9b4e) **feature** kgo: add NewRecordAttrs constructor (thanks [@&#8203;pracucci](https://redirect.github.com/pracucci)!)

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
…ncies (#56913)

## What does this PR do?

- Adds package_metadata declarations to some dependencies.
- This is done in batches to make reviews smaller. There are a few more to come.
- buildifier reorganized some files.

## Motivation

- This is the preferred way to send the URL of the source to the supply_chain sbom generator.
- The current supply_chain sbom generation tools ignore stand alone license() targets without an associated wrapper.

### Describe how you validated your changes

- `bazel build //packages/agent/linux:debian_spdx`
- examine the before and after debian_spdx.yml to see the references to the purls appear

### Additional Notes
An independent line of work will fix the sbom generator to merge the license attributes.

Co-authored-by: tony.aiuto <tony.aiuto@datadoghq.com>
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [go.uber.org/atomic](https://redirect.github.com/uber-go/atomic) | `v1.11.0` → `v1.12.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/go.uber.org%2fatomic/v1.12.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/go.uber.org%2fatomic/v1.12.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/go.uber.org%2fatomic/v1.11.0/v1.12.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/go.uber.org%2fatomic/v1.11.0/v1.12.0?slim=true) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>uber-go/atomic (go.uber.org/atomic)</summary>

### [`v1.12.0`](https://redirect.github.com/uber-go/atomic/releases/tag/v1.12.0)

[Compare Source](https://redirect.github.com/uber-go/atomic/compare/v1.11.0...v1.12.0)

##### Added

- Add `MarshalJSON` and `UnmarshalJSON` method to `atomic.Pointer[T]` type
  allowing users to use pointer with json.
- Add `MarshalJSON` and `UnmarshalJSON` methods to `atomic.Time` so it
  encodes and decodes the wrapped `time.Time` instead of an empty struct.

##### Updated

- Bumped <https://github.com/stretchr/testify> to v1.12.1.

**Full Changelog**: <uber-go/atomic@v1.11.0...v1.12.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [github.com/pulumi/pulumi-aws/sdk/v7](https://redirect.github.com/pulumi/pulumi-aws) | `v7.46.0` → `v7.47.0` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fpulumi%2fpulumi-aws%2fsdk%2fv7/v7.47.0?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fpulumi%2fpulumi-aws%2fsdk%2fv7/v7.47.0?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fpulumi%2fpulumi-aws%2fsdk%2fv7/v7.46.0/v7.47.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fpulumi%2fpulumi-aws%2fsdk%2fv7/v7.46.0/v7.47.0?slim=true) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>pulumi/pulumi-aws (github.com/pulumi/pulumi-aws/sdk/v7)</summary>

### [`v7.47.0`](https://redirect.github.com/pulumi/pulumi-aws/releases/tag/v7.47.0)

[Compare Source](https://redirect.github.com/pulumi/pulumi-aws/compare/v7.46.0...v7.47.0)

#### What's Changed

- Update GitHub Actions workflows. by [@&#8203;pulumi-provider-automation](https://redirect.github.com/pulumi-provider-automation)\[bot] in [#&#8203;6653](https://redirect.github.com/pulumi/pulumi-aws/pull/6653)
- provider: apply go fix (maps.Copy for explicit map loop) by [@&#8203;eon-pulumi-agent](https://redirect.github.com/eon-pulumi-agent)\[bot] in [#&#8203;6654](https://redirect.github.com/pulumi/pulumi-aws/pull/6654)
- Upgrade terraform-provider-aws to v6.65.0 by [@&#8203;pulumi-bot](https://redirect.github.com/pulumi-bot) in [#&#8203;6656](https://redirect.github.com/pulumi/pulumi-aws/pull/6656)

**Full Changelog**: <pulumi/pulumi-aws@v7.46.0...v7.47.0>

#### What's Changed

- Update GitHub Actions workflows. by [@&#8203;pulumi-provider-automation](https://redirect.github.com/pulumi-provider-automation)\[bot] in [#&#8203;6653](https://redirect.github.com/pulumi/pulumi-aws/pull/6653)
- provider: apply go fix (maps.Copy for explicit map loop) by [@&#8203;eon-pulumi-agent](https://redirect.github.com/eon-pulumi-agent)\[bot] in [#&#8203;6654](https://redirect.github.com/pulumi/pulumi-aws/pull/6654)
- Upgrade terraform-provider-aws to v6.65.0 by [@&#8203;pulumi-bot](https://redirect.github.com/pulumi-bot) in [#&#8203;6656](https://redirect.github.com/pulumi/pulumi-aws/pull/6656)

**Full Changelog**: <pulumi/pulumi-aws@v7.46.0...v7.47.0>

#### What's Changed

- Update GitHub Actions workflows. by [@&#8203;pulumi-provider-automation](https://redirect.github.com/pulumi-provider-automation)\[bot] in [#&#8203;6653](https://redirect.github.com/pulumi/pulumi-aws/pull/6653)
- provider: apply go fix (maps.Copy for explicit map loop) by [@&#8203;eon-pulumi-agent](https://redirect.github.com/eon-pulumi-agent)\[bot] in [#&#8203;6654](https://redirect.github.com/pulumi/pulumi-aws/pull/6654)
- Upgrade terraform-provider-aws to v6.65.0 by [@&#8203;pulumi-bot](https://redirect.github.com/pulumi-bot) in [#&#8203;6656](https://redirect.github.com/pulumi/pulumi-aws/pull/6656)

**Full Changelog**: <pulumi/pulumi-aws@v7.46.0...v7.47.0>

#### What's Changed

- Update GitHub Actions workflows. by [@&#8203;pulumi-provider-automation](https://redirect.github.com/pulumi-provider-automation)\[bot] in [#&#8203;6653](https://redirect.github.com/pulumi/pulumi-aws/pull/6653)
- provider: apply go fix (maps.Copy for explicit map loop) by [@&#8203;eon-pulumi-agent](https://redirect.github.com/eon-pulumi-agent)\[bot] in [#&#8203;6654](https://redirect.github.com/pulumi/pulumi-aws/pull/6654)
- Upgrade terraform-provider-aws to v6.65.0 by [@&#8203;pulumi-bot](https://redirect.github.com/pulumi-bot) in [#&#8203;6656](https://redirect.github.com/pulumi/pulumi-aws/pull/6656)

**Full Changelog**: <pulumi/pulumi-aws@v7.46.0...v7.47.0>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [cloud.google.com/go/compute/metadata](https://redirect.github.com/googleapis/google-cloud-go) | `v0.9.0` → `v0.9.1` | ![age](https://developer.mend.io/api/mc/badges/age/go/cloud.google.com%2fgo%2fcompute%2fmetadata/v0.9.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/cloud.google.com%2fgo%2fcompute%2fmetadata/v0.9.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/cloud.google.com%2fgo%2fcompute%2fmetadata/v0.9.0/v0.9.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/cloud.google.com%2fgo%2fcompute%2fmetadata/v0.9.0/v0.9.1?slim=true) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>googleapis/google-cloud-go (cloud.google.com/go/compute/metadata)</summary>

### [`v0.9.1`](https://redirect.github.com/googleapis/google-cloud-go/releases/tag/compute/metadata/v0.9.1): compute/metadata: v0.9.1

##### Bug Fixes

- **compute/metadata:** Timeout initial metadata subscriber GET request ([#&#8203;20488](https://redirect.github.com/googleapis/google-cloud-go/issues/20488)) ([f06f6b3](https://redirect.github.com/googleapis/google-cloud-go/commit/f06f6b35e4b7ae8b48a3f9d1715229fe81cb2ebd)), refs [#&#8203;20487](https://redirect.github.com/googleapis/google-cloud-go/issues/20487)

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
https://datadoghq.atlassian.net/browse/ACIX-2049
https://datadoghq.atlassian.net/browse/ACIX-2091
### What does this PR do?

Points the `suse/15-4` descriptor at the pre-baked AMI (built by `ami-builder`'s `provision-e2e-suse.sh`, now including gcc/glibc-devel) instead of the old bare AMI, and removes the runtime `zypper install` calls for gcc, ansible, and python311 that duplicated what the AMI now bakes in. There is no more separate `-e2e`-suffixed descriptor/AMI — `suse/15-4` (Go: `e2eos.Suse15`) always means the pre-baked image now, in `platforms.json` and CI descriptor strings alike.

### Motivation

The pre-baked `suse/15-4-e2e` AMI already existed and was built in CI, but nothing in this repo pointed at it, so SUSE e2e tests kept installing Docker/jq/python/ansible/gcc at runtime on every run. Baking them in shaves that install time off every SUSE e2e job. Folding it into plain `15-4` (rather than keeping a parallel `-e2e` name) avoids a permanent split between a "basic" and "baked" variant when only one should ever be used.

### Describe how you validated your changes
[Full ci pipeline](https://gitlab.ddbuild.io/DataDog/datadog-agent/-/pipelines/139382958) ✅ 

### Additional Notes

Co-authored-by: nicolas.schweitzer <nicolas.schweitzer@datadoghq.com>
…gr-service (#56849)

### What does this PR do?

Starts `dd-procmgr-service` in `TestProcmgrSmokeWindowsSuite`'s `SetupSuite` with `windowsCommon.StartService` instead of a one-shot `Start-Service` command.

### Motivation

Hardening: a one-shot service start panics the suite on a transient SCM error, while the helper retries and treats still-Running as success.

### Describe how you validated your changes

CI

Co-authored-by: pierre.gimalac <pierre.gimalac@datadoghq.com>
<!--Please give us some feedback on your experience writing this PR ! https://app.datadoghq.com/forms/43db4c02-6837-400c-8083-692e141b1b88 !-->

### What does this PR do?

- Masks the regex (`pattern`) of each SDS rule in the `datasecurity` check `scanning_rules` wherever the Agent scrubs configs. Other rule fields are kept, and `pattern` keys outside `scanning_rules` (e.g. `log_processing_rules`) are left untouched.
- Fixes an existing leak: connection passwords (`password`, `ssl_password`) were not scrubbed in the trace-level scheduling log, because the Data Security check instance was scheduled as compact JSON instead of YAML, so the Agent's YAML-based scrubbers never applied.

#### Details

- **Data Security provider schedules YAML** (`checkInstance.toYAML`): marshals through JSON (rules are raw JSON, forwarded as-is), then round-trips to YAML like other providers. Rules decode identically in the check (checked on the full RC rule set).
- **Two default replacers** in `pkg/util/scrubber/default.go`:
  - `scanningRulesYaml` (object-based): exercised by the reported integration config (`instance_config`), `agent configcheck` and flare YAML files. Masks every `pattern` under `scanning_rules`.
    ```yaml
    scanning_rules:
      - id: rule-1
        pattern: "********"   # was '\d+'
    ```
  - `scanningRulesPatternReplacer` (text): exercised by the trace-level scheduling log, which prints the instance as single-line YAML via `conf.Dump(false)` ([autoconfig.go#L820-L829](https://github.com/DataDog/datadog-agent/blob/248a7560bd93f26260639533be4af4ae3819aca9/comp/core/autodiscovery/impl/autoconfig.go#L820-L829)). On lines containing `scanning_rules`, masks from `pattern:` to the end of the line.
    ```
    ...scanning_rules:\n    - id: rule-1\n      pattern: '\\d{6}'\ntask_id: t\n")  ->  ...scanning_rules:\n    - id: rule-1\n      pattern: "********"
    ```

### Motivation

SDS scanning rule patterns are Datadog IP. They are sent to the Agent through Remote Config to run the Data Security scan, but they must never be output or shown: not in logs, not in the CLI, and not reported back as part of the integration config.

### Describe how you validated your changes

Tested with the CI-generated Agent Docker image from this PR (i[mage registry.ddbuild.io/ci/datadog-agent/agent:v139460438-2db1d6e0-7-amd64](https://mosaic.us1.ddbuild.io/change-request/repository/DataDog/datadog-agent/pull/56761/request/3550189085209251792?owner=DataDog&repository=datadog-agent&taskExecutionId=2071663348&taskId=gitlab&utm_content=gitlab_task_check&utm_source=github_pr_page)), with a Data Security scan task sent through Remote Config against a Postgres instance.

#### `agent configcheck`

```
agent configcheck datasecurity
```

Each rule `pattern` is replaced by `"********"` (alongside the already-scrubbed `password`/`ssl_password`), while the other rule fields and the rest of the instance config are still shown.

<details>
<summary>Resulting <code>agent configcheck datasecurity</code> output</summary>

```yaml
=== datasecurity check ===
Configuration provider: file
Configuration source: file:/etc/datadog-agent/conf.d/datasecurity.d/conf.yaml
Config for instance ID: datasecurity:367ed38a1d347940
min_collection_interval: 0
scan_data:
  - connection:
      dbname: dbm
      host: dbm-postgres
      password: "********"
      port: 5432
      ssl: verify-full
      ssl_cert: /etc/datadog-agent/certs/client.crt
      ssl_key: /etc/datadog-agent/certs/client.key
      ssl_password: "********"
      ssl_root_cert: /etc/datadog-agent/certs/ca.crt
      username: datadog
    entity:
      database: dbm
      database_cluster_name: local-dev-cluster
      database_instance_name: local-dev-instance
      platform: postgres
      schema: public
      table: users
    query: SELECT * FROM users
    sub_task_id: jKb-Dpc-DwU
    timeout_seconds: 30
  - connection:
      dbname: dbm
      host: dbm-postgres
      password: "********"
      port: 5432
      ssl: verify-full
      ssl_cert: /etc/datadog-agent/certs/client.crt
      ssl_key: /etc/datadog-agent/certs/client.key
      ssl_password: "********"
      ssl_root_cert: /etc/datadog-agent/certs/ca.crt
      username: datadog
    entity:
      database: dbm
      database_cluster_name: local-dev-cluster
      database_instance_name: local-dev-instance
      platform: postgres
      schema: public
      table: movies
    query: SELECT * FROM movies
    sub_task_id: 6ND-xzm-d3M
    timeout_seconds: 30
scanning_rules:
  - id: 2b9d78a5-f32d-5ecf-9d97-8fb8f0bb0392
    license: Datadog Confidential and Proprietary, subject to End User License Agreement athttps://www.datadoghq.com/legal/eula  (Copyright 2026 Datadog)
    pattern: '********'
    suppressions:
      starts_with:
        - alice
  - id: 581ae10c-56e7-51a8-afd0-091dfa4a1df7
    pattern: '********'
task_id: fIk-jnc-jaz
~
===
```

</details>

#### Trace log

With `DD_LOG_LEVEL=TRACE`, the Remote Config scheduling log (`conf.Dump(false)`) shows every rule with its `pattern` scrubbed, while the other rule fields are kept.

<details>
<summary>Resulting trace log (excerpt)</summary>

```
data-security-agent-pr-56761  | 2026-09-23 14:29:39 UTC | CORE | TRACE | (comp/core/autodiscovery/impl/autoconfig.go:829 in applyChanges) | Scheduling integration.Config = { Name: "datasecurity", Instances: { []byte("min_collection_interval: 0\nscan_data:\n    - connection:\n        dbname: dbm\n        host: dbm-postgres\n        password: "********"
```

</details>

#### Fleet Automation

The data security config shown in Fleet Automation has each `pattern` scrubbed.

<details> 
<summary> Fleet Automation shown data security config check -- pattern scrubbed </summary>
<img width="1332" height="839" alt="image" src="https://github.com/user-attachments/assets/c95c97ce-1715-439a-a468-69412a7470a3" />


</details>













Co-authored-by: aimene.belfodil <aimene.belfodil@datadoghq.com>
### What does this PR do?

Purges `passwd` from the agent's release Docker image, alongside the `adduser` package that was already being purged.

### Motivation

`passwd` only provides admin CLI tools (`useradd`, `usermod`, `chpasswd`, etc.) used once at build time; nothing in the shipped image needs them afterward.

### Describe how you validated your changes

Verified via `apt-get purge --simulate` against the built image that removing this package has no cascading effect on other installed packages (no essential-package warnings, no unmet dependencies).

Co-authored-by: hugo.beauzee <hugo.beauzee@datadoghq.com>
### What does this PR do?

Makes Fleet's Windows installer use the correct MSI filename and Windows product name for FIPS Agents.

- Uses `datadog-fips-agent-...msi` and `Datadog FIPS Agent` for installation, uninstall, MSI extraction, and repair-source registration.
- Preserves the FIPS filename when saving the local MSI. This uses the existing storage mechanism; Fleet's package name remains `datadog-agent`.
- Accepts older FIPS rollback files named `datadog-agent-...msi` only after checking that the MSI's internal product name is `Datadog FIPS Agent`.
- Checks the rollback MSI before changing upgrade state and again before uninstalling the running Agent.

### Motivation

#56739 added the Windows FIPS OCI package, but the installer still assumed regular-Agent filenames and product names.

Testing also exposed a rollback failure from FIPS 7.83.2: its installer saved the rollback MSI under the older filename. The initial version of this PR could uninstall the new Agent and then fail to find that file. This change recognizes the older name without accepting a non-FIPS MSI.

Related: [WINA-2077](https://datadoghq.atlassian.net/browse/WINA-2077).

### Describe how you validated your changes

<details>
<summary>QA — Windows</summary>

Tested on two clean Windows Server 2022 AMD64 VMs, one FIPS and one regular Agent.

1. **Fresh installation:** ran the signed Fleet installer with `setup --flavor default`, downloading `agent-package:pipeline-139907932` from `installtesting.datad0g.com`. Both installed the correct Agent variant.
2. **Upgrade, downgrade, and rollback:** used `daemon start-experiment`, `daemon promote-experiment`, and `daemon stop-experiment`. Both variants passed, including finalized upgrades/downgrades. FIPS transitions used the signed CI upgrade-test MSI, not a released 7.85.1; regular-Agent transitions used released 7.83.3.
3. **Original rollback regression:** installed released Windows FIPS 7.83.2, upgraded through Fleet to the PR build, then rolled back. The actual 7.83.2 Agent was restored using its older-named rollback MSI. Repeated the upgrade, promoted it, and repaired successfully.
4. **Missing rollback MSI:** temporarily removed the file. Rollback was rejected with `invalid rollback MSI`, without changing package state or removing the running Agent. Restoring it allowed rollback to succeed.
5. **Other lifecycle checks:** forced MSI bootstrap, MSI repair (`msiexec /fvomus`), FIPS reboot persistence, and Fleet uninstall (`purge`) passed. Both VMs and their disks were deleted afterward.

Checked installed product/version, Agent and installer services, and stable/experiment state after transitions. FIPS stayed FIPS, including OpenSSL provider verification; the regular Agent stayed non-FIPS.

**Gov scope:** these were local installer operations with a dummy API key, not dashboard/RC-driven deployments. Explicit `remote_configuration.enabled: true` was required because setup persisted only remote updates. The current Gov catalog lacks Windows FIPS targets; its pinned 7.83.1 package returned `no matching image found in the index` without changing the installed Agent. Gov end-to-end validation remains outstanding.

</details>

[WINA-2077]: https://datadoghq.atlassian.net/browse/WINA-2077?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ


Co-authored-by: saad.naji <saad.naji@datadoghq.com>
### What does this PR do?

Moves the Observer tap’s tag copying and sorting for metric observations off the metrics pipeline. Metric producers still filter metrics before sending them to the Observer, but only using allocation-free name/source/host checks so metrics we already know we’ll reject don’t fill the Observer channel. 

Tag-dependent filtering, muting, and tag canonicalization happen in the Observer after the non-blocking handoff.

### Motivation

Before this change, every admitted metric synchronously copied and sorted tags before the non-blocking channel send. A 16-tag benchmark measured the producer path at approximately 356 ns/op, 336 B/op, and 2 allocs/op.

The new producer path uses 0 B/op and 0 allocations, measuring approximately 66–142 ns/op for admitted metrics depending on rule position and 96 ns/op for an obvious catch-all rejection. Accepted metrics defer approximately 320 ns and 336 B of tag preparation to the Observer.

### Describe how you validated your changes
Benchmarked change and added test coverage. 

### Additional Notes
This PR is stacked on #55500, which supplies the immutable resolved tag composites used by the handoff.

Co-authored-by: eman.okyere <eman.okyere@datadoghq.com>
…fore publishing results (#56836)

### What does this PR do?

Clears the partition/usage in-flight gates *before* publishing the result instead of in a defer running after the send, so back-to-back enumerations (physical + all-partitions when `tag_by_physical_storage`/`collect_physical_metrics` is enabled) aren't intermittently rejected as "still in progress".

### Motivation

The defer-based gate clear came from a [review comment](#55965 (comment)) but introduced a race that has been flaking the diskv2 physical-storage tests on main, and affects the agent itself by silently dropping non-physical partitions.

### Describe how you validated your changes

CI


Co-authored-by: pierre.gimalac <pierre.gimalac@datadoghq.com>
#56966)

This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [github.com/containerd/containerd/v2](https://redirect.github.com/containerd/containerd) | `v2.2.8` → `v2.2.9` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fcontainerd%2fcontainerd%2fv2/v2.2.9?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fcontainerd%2fcontainerd%2fv2/v2.2.9?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fcontainerd%2fcontainerd%2fv2/v2.2.8/v2.2.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fcontainerd%2fcontainerd%2fv2/v2.2.8/v2.2.9?slim=true) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Containerd has image-pull DoS via crafted OCI index graph amplification
[CVE-2026-53493](https://nvd.nist.gov/vuln/detail/CVE-2026-53493) / [GHSA-pg57-6jwg-q645](https://redirect.github.com/advisories/GHSA-pg57-6jwg-q645)

<details>
<summary>More information</summary>

#### Details
##### Impact

A vulnerability exists in containerd's image pull handlers where a crafted OCI image index containing deeply nested or heavily fanned-out descriptor graphs can cause unbounded CPU and memory consumption. During the `PullImage` operation, the recursive traversal and processing of child descriptors lack sufficient depth and breadth limits, and fail to adequately deduplicate identical descriptors. This unbounded traversal leads to excessive resource allocation.

Consequently, pulling a malicious image reference can result in prolonged stalls during container creation and significant resource pressure on the host system. This issue occurs entirely during the image pull phase, prior to any container execution.

##### Patches

This bug has been fixed in containerd 2.4.1, 2.3.6, 2.2.9, 2.0.13, and 1.7.36. Users should update to these versions to resolve the issue.

##### Workarounds

There are no known workarounds for this issue. Users are advised to only pull trusted images from known registries until the patch can be applied.

##### Credits

The containerd project would like to thank Jakub Ciolek at ElevenLabs and @&#8203;jlgore who independently discovered and responsibly disclosed this issue in accordance with the [containerd security policy](https://redirect.github.com/containerd/project/blob/main/SECURITY.md).

##### For more information

If you have any questions or comments about this advisory:

* Open an issue in [containerd](https://redirect.github.com/containerd/containerd/issues/new/choose)
* Email us at [security@containerd.io](mailto:security@containerd.io)

To report a security issue in containerd:
* [Report a new vulnerability](https://redirect.github.com/containerd/containerd/security/advisories/new)
* Email us at [security@containerd.io](mailto:security@containerd.io)

#### Severity
- CVSS Score: 6.9 / 10 (Medium)
- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N`

#### References
- [https://github.com/containerd/containerd/security/advisories/GHSA-pg57-6jwg-q645](https://redirect.github.com/containerd/containerd/security/advisories/GHSA-pg57-6jwg-q645)
- [https://nvd.nist.gov/vuln/detail/CVE-2026-53493](https://nvd.nist.gov/vuln/detail/CVE-2026-53493)
- [https://github.com/containerd/containerd/commit/4f5f32636d47f051751065cf824a10da70c619fe](https://redirect.github.com/containerd/containerd/commit/4f5f32636d47f051751065cf824a10da70c619fe)
- [https://github.com/containerd/containerd/commit/94e83c14c8aac963e24e28105dab9c9af812a2a8](https://redirect.github.com/containerd/containerd/commit/94e83c14c8aac963e24e28105dab9c9af812a2a8)
- [https://github.com/containerd/containerd/releases/tag/v1.7.36](https://redirect.github.com/containerd/containerd/releases/tag/v1.7.36)
- [https://github.com/containerd/containerd/releases/tag/v2.0.13](https://redirect.github.com/containerd/containerd/releases/tag/v2.0.13)
- [https://github.com/containerd/containerd/releases/tag/v2.2.9](https://redirect.github.com/containerd/containerd/releases/tag/v2.2.9)
- [https://github.com/containerd/containerd/releases/tag/v2.3.6](https://redirect.github.com/containerd/containerd/releases/tag/v2.3.6)
- [https://github.com/containerd/containerd/releases/tag/v2.4.1](https://redirect.github.com/containerd/containerd/releases/tag/v2.4.1)
- [https://github.com/advisories/GHSA-pg57-6jwg-q645](https://redirect.github.com/advisories/GHSA-pg57-6jwg-q645)

This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-pg57-6jwg-q645) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Release Notes

<details>
<summary>containerd/containerd (github.com/containerd/containerd/v2)</summary>

### [`v2.2.9`](https://redirect.github.com/containerd/containerd/releases/tag/v2.2.9): containerd 2.2.9

[Compare Source](https://redirect.github.com/containerd/containerd/compare/v2.2.8...v2.2.9)

Welcome to the v2.2.9 release of containerd!

The ninth patch release for containerd 2.2 contains various fixes
and updates including a security patch.

##### Security Updates

- **containerd**
  - [**CVE-2026-53493**](https://redirect.github.com/containerd/containerd/security/advisories/GHSA-pg57-6jwg-q645)

##### Highlights

##### Container Runtime Interface (CRI)

- Fix bug where container creation failed when SELinux relabeling was unsupported by the filesystem ([#&#8203;14210](https://redirect.github.com/containerd/containerd/pull/14210))
- Enable mount manager for image mounts in CRI ([#&#8203;14148](https://redirect.github.com/containerd/containerd/pull/14148))

##### Image Storage

- Ensure all layers are fetched when multiple manifests in an index share a config descriptor ([#&#8203;14140](https://redirect.github.com/containerd/containerd/pull/14140))

##### Runtime

- Mask /proc/interrupts and CPU thermal throttle sysfs paths in Linux containers by default ([#&#8203;14182](https://redirect.github.com/containerd/containerd/pull/14182))

Please try out the release binaries and report any issues at
<https://github.com/containerd/containerd/issues>.

##### Contributors

- Samuel Karp
- Chris Henzie
- Maksym Pavlenko
- Wei Fu
- Gao Xiang
- Nan Liu

##### Changes

<details><summary>13 commits</summary>
<p>

- [`60acf78bc5`](https://redirect.github.com/containerd/containerd/commit/60acf78bc5fef52160db2fdbcef6d2cfe5fc8e12) Prepare release notes for v2.2.9
- [`253f9cc140`](https://redirect.github.com/containerd/containerd/commit/253f9cc14079b16aa50beb7d3a4e6309cb78718b) Merge commit from fork
- [`053c0cc412`](https://redirect.github.com/containerd/containerd/commit/053c0cc412f2a36c77a973d0b62ff4fa4815a9bb) Bound Walk references
- [`efd11fc9c2`](https://redirect.github.com/containerd/containerd/commit/efd11fc9c2935f1a7ce6626b348d1461bac34acf) Bound Dispatch concurrency and references
- cri: tolerate wrapped ENOTSUP during relabel ([#&#8203;14210](https://redirect.github.com/containerd/containerd/pull/14210))
  - [`39d0dd4b43`](https://redirect.github.com/containerd/containerd/commit/39d0dd4b438524984290e17912c31dee90b29866) cri: tolerate wrapped ENOTSUP during relabel
- pkg/oci: mask thermal interrupt info ([#&#8203;14182](https://redirect.github.com/containerd/containerd/pull/14182))
  - [`baffef9669`](https://redirect.github.com/containerd/containerd/commit/baffef966984d14e77a5cf18b7e7e86bced235fd) pkg/oci: mask thermal interrupt info
- core/unpack: fetch layers of every config-sharing manifest ([#&#8203;14140](https://redirect.github.com/containerd/containerd/pull/14140))
  - [`9e1ae6a9e9`](https://redirect.github.com/containerd/containerd/commit/9e1ae6a9e9363836d3a2856f47ed84f63f520eb9) core/unpack: fetch layers of every config-sharing manifest
- cri: Backport image mount fixes 2.2 ([#&#8203;14148](https://redirect.github.com/containerd/containerd/pull/14148))
  - [`2cdf8d80cc`](https://redirect.github.com/containerd/containerd/commit/2cdf8d80cc5aa408ce956c6b216d15f9de4e6099) cri: only unmount image volumes when mounting fails
  - [`2e1dcc5da0`](https://redirect.github.com/containerd/containerd/commit/2e1dcc5da0acd26e3c729c659993ea9fb75a3d79) cri: enable mount manager for image mounts

</p>
</details>

##### Dependency Changes

This release has no dependency changes

Previous release can be found at [v2.2.8](https://redirect.github.com/containerd/containerd/releases/tag/v2.2.8)

##### Which file should I download?

- `containerd-<VERSION>-<OS>-<ARCH>.tar.gz`:         ✅Recommended. Dynamically linked with glibc 2.35 (Ubuntu 22.04).
- `containerd-static-<VERSION>-<OS>-<ARCH>.tar.gz`:  Statically linked. Expected to be used on Linux distributions that do not use glibc >= 2.35. Not position-independent.

In addition to containerd, typically you will have to install [runc](https://redirect.github.com/opencontainers/runc/releases)
and [CNI plugins](https://redirect.github.com/containernetworking/plugins/releases) from their official sites too.

See also the [Getting Started](https://redirect.github.com/containerd/containerd/blob/main/docs/getting-started.md) documentation.

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
…56870)

### What does this PR do?

Adds a shared zombie check (`kernel.IsZombiePid`) and uses it to skip PIDs that are already zombies before attempting namespace-scoped procfs reads in `pkg/network/port.go`, `pkg/util/kernel/netns/netns.go`, and `pkg/network/tracer/cached_conntrack.go`.

### Motivation

A zombie process has already released its network namespace, so `/proc/<pid>/ns/net` reads for it always fail with a permission error — this isn't intermittent, it's guaranteed. These three sites logged that failure at `ERROR` on every scan for every zombie PID encountered, producing high-volume, unactionable log noise on hosts with long-lived zombies (AGENT-17234).

This gate is intentionally unconditional rather than config-gated, unlike `process_config.ignore_zombie_processes` in the process check (which is opt-in because some customers want zombie visibility for parent-leak detection). There's no equivalent trade-off here — a network-namespace lookup for a zombie can never succeed under any configuration, so there's nothing to make optional.

### Describe how you validated your changes

Added `TestIsZombiePid` covering running/sleeping/zombie states and a missing PID. Ran `dda inv test --targets=./pkg/util/kernel,./pkg/network,./pkg/network/tracer` — all passing.

Co-authored-by: ian.bucad <ian.bucad@datadoghq.com>
<!--Please give us some feedback on your experience writing this PR ! https://app.datadoghq.com/forms/43db4c02-6837-400c-8083-692e141b1b88 !-->

### What does this PR do?

Updates the memory bounds for five SMP Quality Gate experiments to account for the accepted memory overhead from enabling Agent config streaming by default.

It also updates each experiment’s `memory_allotment` to preserve the documented 30% buffer above its memory bound.

| Experiment | Memory bound | Memory allotment |
|---|---:|---:|
| `quality_gate_idle` | 179 MiB → 181 MiB | 233 MiB → 236 MiB |
| `quality_gate_idle_all_features` | 537 MiB → 542 MiB | 698 MiB → 705 MiB |
| `quality_gate_security_idle` | 355 MiB → 357 MiB | 461 MiB → 465 MiB |
| `quality_gate_security_mean_fs_load` | 335 MiB → 337 MiB | 436 MiB → 439 MiB |
| `quality_gate_security_no_fs_load` | 345 MiB → 348 MiB | 449 MiB → 453 MiB |

### Motivation

Agent config streaming was re-enabled by default in #55903. This makes the core Agent the source of truth for configuration consumed by remote Agent processes.

During the investigation into [incident-60539](https://app.datadoghq.com/incidents/60539), we found evidence of a small total-PSS regression associated with that change. The regression was too small to identify reliably with the Quality Gate’s normal 10 replicates.

A follow-up SMP comparison using 1,000 replicates per experiment showed experiment-specific distribution shifts:

- Approximately 5 MiB for `quality_gate_idle_all_features`
- Approximately 1–2 MiB for `quality_gate_idle`
- Approximately 2–3 MiB for the security experiments

The size of the shift varies with the enabled config-streaming consumers and with workload-dependent process peak overlap.

No consistent distribution shift was observed for `quality_gate_logs`, `quality_gate_metrics_logs`, or `quality_gate_private_action_runner`, so this PR leaves those experiments unchanged.

Investigation notebook: https://app.datadoghq.com/notebook/15648569/investigating-ir-60539

Limit adjustment documentation: https://datadoghq.atlassian.net/wiki/spaces/agent/pages/4490494034/Limit+Adjustments

### Describe how you validated your changes

The bounds were selected from the distributions in SMP job `1f1d2bb6-d030-4e02-af31-8aaa7a985539`:

- Baseline: `main-10b45f55-full`
- Comparison: `main-f1e765e0-full`
- 1,000 replicates per experiment

Co-authored-by: gregoire.roussel <gregoire.roussel@datadoghq.com>
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [anthropics/claude-code-action](https://redirect.github.com/anthropics/claude-code-action) | action | patch | `v1.0.227` → `v1.0.230` | `v1.0.235` (+4) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>anthropics/claude-code-action (anthropics/claude-code-action)</summary>

### [`v1.0.230`](https://redirect.github.com/anthropics/claude-code-action/releases/tag/v1.0.230)

[Compare Source](https://redirect.github.com/anthropics/claude-code-action/compare/v1.0.229...v1.0.230)

**Full Changelog**: <anthropics/claude-code-action@v1.0.229...v1.0.230>

### [`v1.0.229`](https://redirect.github.com/anthropics/claude-code-action/releases/tag/v1.0.229)

[Compare Source](https://redirect.github.com/anthropics/claude-code-action/compare/v1.0.228...v1.0.229)

**Full Changelog**: <anthropics/claude-code-action@v1.0.228...v1.0.229>

### [`v1.0.228`](https://redirect.github.com/anthropics/claude-code-action/releases/tag/v1.0.228)

[Compare Source](https://redirect.github.com/anthropics/claude-code-action/compare/v1.0.227...v1.0.228)

**Full Changelog**: <anthropics/claude-code-action@v1.0.227...v1.0.228>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - "before 9am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdpdGh1Yi1hY3Rpb25zIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| linux-images ([changelog](https://redirect.github.com/DataDog/datadog-agent-buildimages/commits/main)) | major | `v139769367-4cd68bc1` → `v140122430-fb04a759` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - Between 02:00 AM and 06:59 AM, Monday through Friday (`* 2-6 * * 1-5`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| DataDog/dd-apm-inject | patch | `0.71.1-1` → `0.71.2-1` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
### What does this PR do?

Skip `TestExecuteCommand_ReapsProcessGroup` on AIX.

### Motivation

The test relies on a background process disappearing from the process table within one second. That assumption is flaky on AIX and causes unrelated `tests_aix-ppc64` failures.

### Describe how you validated your changes

Ran `dda inv test --targets=./pkg/privateactionrunner/bundle-support/authoredscripts --build-exclude=python`.

Co-authored-by: pierre.gimalac <pierre.gimalac@datadoghq.com>
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [anthropics/claude-code-action](https://redirect.github.com/anthropics/claude-code-action) | action | patch | `v1.0.230` → `v1.0.231` | `v1.0.235` (+3) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>anthropics/claude-code-action (anthropics/claude-code-action)</summary>

### [`v1.0.231`](https://redirect.github.com/anthropics/claude-code-action/releases/tag/v1.0.231)

[Compare Source](https://redirect.github.com/anthropics/claude-code-action/compare/v1.0.230...v1.0.231)

**Full Changelog**: <anthropics/claude-code-action@v1.0.230...v1.0.231>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - "before 9am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdpdGh1Yi1hY3Rpb25zIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
### What does this PR do?

Stops forwarding raw postgres errors from the data security check. Errors are translated in `backend/postgres/error.rs` into a `PostgresError`:
- `Server(SqlState)`: SQLSTATE code only, with a readable label for common cases (e.g. `postgres server error: permission denied, the user lacks the required privileges (SQLSTATE 42501)`).
- `Client(String)`: top-level `postgres::Error` message only, without its cause (e.g. `postgres client error: error performing TLS handshake`).

The original error is dropped and never logged.

### Motivation

Postgres error messages can echo scanned values (e.g. `invalid input syntax for type integer: "<value>"`), which were logged and sent in the payload `failure_reason`.

### Describe how you validated your changes

Ran the CI-built image `registry.ddbuild.io/ci/datadog-agent/agent:v140089586-83b4d5fc-7-amd64` (after) against the previous build (before), with one sub task per error case.

<details>
<summary>Check config: wrong password, wrong port, non-existing table, failed cast, write query, bad TLS</summary>

```yaml
init_config:

instances:
  - min_collection_interval: 0
    task_id: fIk-jnc-jaz

    scanning_rules:
      - id: 2b9d78a5-f32d-5ecf-9d97-8fb8f0bb0392
        pattern: '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]+'
        suppressions:
          starts_with: ["alice"]
      - id: 581ae10c-56e7-51a8-afd0-091dfa4a1df7
        pattern: '(?:\d{1,3}\.){3}\d{1,3}'

    scan_data:
      - sub_task_id: jKb-Dpc-DwU
        connection:
          host: dbm-postgres
          port: 5432
          dbname: dbm
          username: datadog
          password: datadog
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: users
        query: "SELECT * FROM users"
        timeout_seconds: 30
      - sub_task_id: 6ND-xzm-d3M
        connection:
          host: dbm-postgres
          port: 5432
          dbname: dbm
          username: datadog
          password: datadog2  # wrong password
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: movies
        query: "SELECT * FROM movies"
        timeout_seconds: 30
      - sub_task_id: Qw7-mTv-Rb2
        connection:
          host: dbm-postgres
          port: 5432
          dbname: dbm
          username: datadog
          password: datadog
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: sample_data
        query: "SELECT * FROM sample_data"
        timeout_seconds: 30
      - sub_task_id: 6ND-xzm-d3L
        connection:
          host: dbm-postgres
          port: 5433  # wrong port
          dbname: dbm
          username: datadog
          password: datadog
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: movies
        query: "SELECT * FROM movies"
        timeout_seconds: 30
      - sub_task_id: 6ND-xzm-d3F
        connection:
          host: dbm-postgres
          port: 5432
          dbname: dbm
          username: datadog
          password: datadog
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: movies
        query: "SELECT * FROM movies2"  # table does not exist
        timeout_seconds: 30
      - sub_task_id: Zt4-Cst-Eml
        connection:
          host: dbm-postgres
          port: 5432
          dbname: dbm
          username: datadog
          password: datadog
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: users
        query: "SELECT email::uuid FROM users"  # email cannot be cast to uuid
        timeout_seconds: 30
      - sub_task_id: Yp9-Ins-Usr
        connection:
          host: dbm-postgres
          port: 5432
          dbname: dbm
          username: datadog
          password: datadog
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: users
        query: "INSERT INTO users (name, email, created_at, updated_at) VALUES ('Mallory', 'mallory@example.com', now(), now())"  # write query
        timeout_seconds: 30
      - sub_task_id: Kd3-Bad-Tls
        connection:
          host: dbm-postgres
          port: 5432
          dbname: dbm
          username: datadog
          password: datadog
          ssl: verify-full  # server cert is self-signed
        entity:
          platform: postgres
          database_cluster_name: local-dev-cluster
          database_instance_name: local-dev-instance
          database: dbm
          schema: public
          table: users
        query: "SELECT * FROM users"
        timeout_seconds: 30
```

</details>

> [!IMPORTANT]
> Before, the failed cast (`Zt4-Cst-Eml`) leaked a scanned value in the log and the payload `failure_reason`: `invalid input syntax for type uuid: "alice@example.com"`. Now only the SQLSTATE is reported: `postgres server error:  (SQLSTATE 22P02)`.

Before:

```
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: check started (task_id=fIk-jnc-jaz, 2 rule(s), 8 sub task(s))
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=jKb-Dpc-DwU, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: sub task succeeded (1 match(es))
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=6ND-xzm-d3M, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task 6ND-xzm-d3M failed: fetching sub task data: connecting to postgres: db error: FATAL: password authentication failed for user "datadog"
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Qw7-mTv-Rb2, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: sub task succeeded (0 match(es))
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=6ND-xzm-d3L, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task 6ND-xzm-d3L failed: fetching sub task data: connecting to postgres: error connecting to server: Connection refused (os error 111)
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=6ND-xzm-d3F, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task 6ND-xzm-d3F failed: fetching sub task data: preparing postgres query: db error: ERROR: relation "movies2" does not exist
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Zt4-Cst-Eml, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task Zt4-Cst-Eml failed: fetching sub task data: running postgres query: db error: ERROR: invalid input syntax for type uuid: "alice@example.com"
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Yp9-Ins-Usr, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task Yp9-Ins-Usr failed: fetching sub task data: running postgres query: db error: ERROR: cannot execute INSERT in a read-only transaction
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Kd3-Bad-Tls, platform=postgres)
2026-09-25 12:28:04 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task Kd3-Bad-Tls failed: fetching sub task data: connecting to postgres: error performing TLS handshake: error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed::0:: self-signed certificate in certificate chain: error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed::0:: error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed::0:
2026-09-25 12:28:04 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: check completed
```

After:

```
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: check started (task_id=fIk-jnc-jaz, 2 rule(s), 8 sub task(s))
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=jKb-Dpc-DwU, platform=postgres)
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: sub task succeeded (1 match(es))
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=6ND-xzm-d3M, platform=postgres)
2026-09-25 12:23:20 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task 6ND-xzm-d3M failed: fetching sub task data: connecting to postgres: postgres server error: authentication failed (check username, password and pg_hba) (SQLSTATE 28P01)
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Qw7-mTv-Rb2, platform=postgres)
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: sub task succeeded (0 match(es))
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=6ND-xzm-d3L, platform=postgres)
2026-09-25 12:23:20 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task 6ND-xzm-d3L failed: fetching sub task data: connecting to postgres: postgres client error: error connecting to server
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=6ND-xzm-d3F, platform=postgres)
2026-09-25 12:23:20 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task 6ND-xzm-d3F failed: fetching sub task data: preparing postgres query: postgres server error: table does not exist (SQLSTATE 42P01)
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Zt4-Cst-Eml, platform=postgres)
2026-09-25 12:23:20 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task Zt4-Cst-Eml failed: fetching sub task data: running postgres query: postgres server error:  (SQLSTATE 22P02)
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Yp9-Ins-Usr, platform=postgres)
2026-09-25 12:23:20 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task Yp9-Ins-Usr failed: fetching sub task data: running postgres query: postgres server error: write attempted in a read-only transaction (SQLSTATE 25006)
2026-09-25 12:23:20 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: running sub task (sub_task_id=Kd3-Bad-Tls, platform=postgres)
2026-09-25 12:23:21 UTC | CORE | ERROR | (pkg/collector/aggregator/aggregator.go:178 in LogMsg) | datasecurity: sub task Kd3-Bad-Tls failed: fetching sub task data: connecting to postgres: postgres client error: error performing TLS handshake
2026-09-25 12:23:21 UTC | CORE | INFO | (pkg/collector/aggregator/aggregator.go:182 in LogMsg) | datasecurity: check completed
```

### Additional Notes

Diff stats (+139 / -1):

| | Lines |
|---|---|
| Code (`postgres.rs`, `postgres/error.rs`) | +70 / -1 |
| Tests (`postgres/error.rs` test module) | +63 |
| Release note | +6 |


Co-authored-by: aimene.belfodil <aimene.belfodil@datadoghq.com>
## What this does

Add a --time option to dda inv tidy.

Results from the new worktree where this change was created.
```
$ dda inv tidy --time
1.44s  bazel run //tasks:write_agent_payload_version
 30.90s  bazel run //:go_mod_tidy_all
 49.60s  bazel run //:go work sync
 44.99s  bazel run //:gazelle
  5.48s  bazel mod tidy (prune)
  0.54s  bazel mod tidy
```

## Motivation
Make it easy to find the hot spots.

🤖 Generated with claude

Co-authored-by: tony.aiuto <tony.aiuto@datadoghq.com>
### What does this PR do?

- Runs buildifier on some overlay.BUILD.bazel files.
- There is no behavior change.

### Motivation

AI created PRs tend to run buildifier on build files that they touch. This creates changes that are hard to review because they have extra non-functional parts to look at.  Running buildifier first helps makes those PR easier to understand.

### Describe how you validated your changes
N/A

Co-authored-by: tony.aiuto <tony.aiuto@datadoghq.com>
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| integrations-core ([changelog](https://redirect.github.com/DataDog/integrations-core/compare/cd216b386aba22d0e5817d2f3aea1b4542bccbaa..026a23c50fa9955635d629f7bb8fba129eaa45bb)) | digest | `cd216b3` → `026a23c` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - Between 02:00 AM and 06:59 AM, only on Monday and Wednesday (`* 2-6 * * 1,3`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [saphyr-parser](https://redirect.github.com/saphyr-rs/saphyr) | workspace.dependencies | minor | `0.0.12` → `0.1.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>saphyr-rs/saphyr (saphyr-parser)</summary>

### [`v0.1.0`](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.12...v0.1.0)

[Compare Source](https://redirect.github.com/saphyr-rs/saphyr/compare/v0.0.12...v0.1.0)

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWNhcmdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [github.com/godror/godror](https://redirect.github.com/godror/godror) | `v0.51.4` → `v0.51.5` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgodror%2fgodror/v0.51.5?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgodror%2fgodror/v0.51.5?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgodror%2fgodror/v0.51.4/v0.51.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgodror%2fgodror/v0.51.4/v0.51.5?slim=true) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>godror/godror (github.com/godror/godror)</summary>

### [`v0.51.5`](https://redirect.github.com/godror/godror/compare/v0.51.4...v0.51.5)

[Compare Source](https://redirect.github.com/godror/godror/compare/v0.51.4...v0.51.5)

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Adoption](https://docs.renovatebot.com/merge-confidence/) | [Passing](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [github.com/bmatcuk/doublestar/v4](https://redirect.github.com/bmatcuk/doublestar) | `v4.10.0` → `v4.10.1` | ![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fbmatcuk%2fdoublestar%2fv4/v4.10.1?slim=true) | ![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fbmatcuk%2fdoublestar%2fv4/v4.10.1?slim=true) | ![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fbmatcuk%2fdoublestar%2fv4/v4.10.0/v4.10.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fbmatcuk%2fdoublestar%2fv4/v4.10.0/v4.10.1?slim=true) |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Release Notes

<details>
<summary>bmatcuk/doublestar (github.com/bmatcuk/doublestar/v4)</summary>

### [`v4.10.1`](https://redirect.github.com/bmatcuk/doublestar/releases/tag/v4.10.1): Fixed issue with alternatives and character classes

[Compare Source](https://redirect.github.com/bmatcuk/doublestar/compare/v4.10.0...v4.10.1)

There was an issue where commas or ending curly brackets inside a character class would cause code looking for the next alternative (commas) or the end of alternatives (ending curly brackets) to erroneously match those characters inside the character classes.

Thanks to [@&#8203;sidsri14](https://redirect.github.com/sidsri14) for the fix!

#### What's Changed

- fix brace alternation scanning with character classes by [@&#8203;sidsri14](https://redirect.github.com/sidsri14) in [#&#8203;115](https://redirect.github.com/bmatcuk/doublestar/pull/115)

#### New Contributors

- [@&#8203;sidsri14](https://redirect.github.com/sidsri14) made their first contribution in [#&#8203;115](https://redirect.github.com/bmatcuk/doublestar/pull/115)

**Full Changelog**: <bmatcuk/doublestar@v4.10.0...v4.10.1>

</details>

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - At 12:00 AM through 04:59 AM and 10:00 PM through 11:59 PM, Monday through Friday (`* 0-4,22-23 * * 1-5`)
  - Only on Sunday and Saturday (`* * * * 0,6`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jaWVzLWdvIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: dd-octo-sts[bot] <200755185+dd-octo-sts[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| linux-images-devcontainer ([changelog](https://redirect.github.com/DataDog/datadog-agent-buildimages/commits/main)) | major | `v137515717-cbd951c9` → `v140122430-fb04a759` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/33469) for more information.

---

### Configuration

📅 **Schedule**: (in timezone Europe/Paris)

- Branch creation
  - Between 02:00 AM and 06:59 AM, Monday through Friday (`* 2-6 * * 1-5`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/DataDog/datadog-agent).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTIuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjExMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJjaGFuZ2Vsb2cvbm8tY2hhbmdlbG9nIiwiZGVwZW5kZW5jaWVzIiwicWEvbm8tY29kZS1jaGFuZ2UiXX0=-->


Co-authored-by: gh-worker-campaigns-3e9aa4[bot] <244854796+gh-worker-campaigns-3e9aa4[bot]@users.noreply.github.com>
Co-authored-by: devflow.devflow-routing-intake <devflow.devflow-routing-intake@kubernetes.us1.ddbuild.io>

This branch was successfully deployed

1 active deployment
main — c2beaccc Deployed Sep 27, 2026 by chouetz via stale #1014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.