{
  "schemaVersion": 3,
  "dataset": {
    "version": 3,
    "date": "2026-08-13",
    "group": {
      "id": "observability",
      "name": "Observability & Reliability"
    },
    "repository": {
      "id": "prometheus",
      "repo": "prometheus/prometheus",
      "name": "Prometheus",
      "keywords": [
        "Prometheus monitoring"
      ]
    },
    "context": {
      "repository": "prometheus/prometheus",
      "url": "https://github.com/prometheus/prometheus",
      "description": "The Prometheus monitoring system and time series database.",
      "homepage": "https://prometheus.io/",
      "language": "Go",
      "topics": [
        "alerting",
        "graphing",
        "hacktoberfest",
        "metrics",
        "monitoring",
        "prometheus",
        "time-series"
      ],
      "license": "Apache-2.0",
      "defaultBranch": "main",
      "stars": 65727,
      "forks": 10774,
      "openIssues": 887,
      "archived": false,
      "collectedAt": "2026-08-13T18:02:01.372754+00:00"
    },
    "news": {
      "repository": "prometheus/prometheus",
      "collectedAt": "2026-08-13T18:02:01.372754+00:00",
      "latestRelease": {
        "repository": "prometheus/prometheus",
        "tag": "v3.13.2",
        "title": "3.13.2 / 2026-07-29",
        "url": "https://github.com/prometheus/prometheus/releases/tag/v3.13.2",
        "publishedAt": "2026-07-30T13:25:26Z",
        "notes": "## What's Changed\r\n\r\n- [SECURITY] Bump golang.org/x/text to v0.39.0 (CVE-2026-56852) and google.golang.org/grpc to v1.82.1 (GHSA-hrxh-6v49-42gf). #19290 by @krajorama\r\n- [BUGFIX] PromQL: Preallocate the active query tracker file to avoid SIGBUS crashes when the data disk is full. #19289 by @akshajrawat\r\n\r\n**Full Changelog**: https://github.com/prometheus/prometheus/compare/v3.13.1...v3.13.2",
        "highlights": [
          "What's Changed",
          "[SECURITY] Bump golang.org/x/text to v0.39.0 (CVE-2026-56852) and google.golang.org/grpc to v1.82.1 (GHSA-hrxh-6v49-42gf). #19290 by @krajorama",
          "[BUGFIX] PromQL: Preallocate the active query tracker file to avoid SIGBUS crashes when the data disk is full. #19289 by @akshajrawat"
        ],
        "prerelease": false
      },
      "upcoming": [
        {
          "repository": "prometheus/prometheus",
          "kind": "prerelease",
          "title": "3.14.0-rc.0 / 2026-08-06",
          "url": "https://github.com/prometheus/prometheus/releases/tag/v3.14.0-rc.0",
          "description": "- [CHANGE] API: Deprecate the `stats` query parameter of `/api/v1/query` and `/api/v1/query_range` for values other than `true` and `all`. Other values still enable basic statistics but now return a deprecation warning; they will be rejected in the next major release. #19124\r\n- [CHANGE] API: `/api/v1/status/config` now correctly shows `separator: \"\"` and `replacement: \"\"` in relabel configs when explicitly set to empty, instead of omitting them. #18653\r\n- [CHANGE] Discovery/Hetzner: Drop the `__meta_hetzner_datacenter` label for `hcloud` targets, following its removal from the Hetzner Cloud API. #19269\r\n- [CHANGE] PromQL: Enable duration expressions by default. The `promql-duration-expr` feature flag is now a no-op. #19033\r\n- [CHANGE] PromQL: Promote `first_over_time` to stable. It no longer requires the `promql-experimental-functions` feature flag. #19093\r\n- [FEATURE] Discovery: Add Oracle Cloud Infrastructure compute service discovery (`oci_sd_configs`). #18919\r\n- [FEATURE] PromQL: A",
          "tag": "v3.14.0-rc.0",
          "publishedAt": "2026-08-11T11:05:32Z"
        },
        {
          "repository": "prometheus/prometheus",
          "kind": "milestone",
          "title": "Native Histograms",
          "url": "https://github.com/prometheus/prometheus/milestone/10",
          "description": "This milestone is mostly about merging the new native histograms (AKA sparse histograms AKA high-res histograms) into the main branch (and hide it behind a feature flag), and only after that about declaring native histograms a stable feature (ultimately no-op'ing the feature flag). Therefore, the priorities have a slightly different meaning (because the issues do not affect the released Prometheus versions before we merge to the main branch):\r\n* **P0:** Prometheus, if built from the sparsehistogram branch, doesn't work properly until this is fixed.\r\n* **P1:** We must fix this before merging to main (e.g. Prometheus might not work properly even if the feature flag is not set)\r\n* **P2:** We can merge to main without this but we need to fix this to declare Histograms stable.\r\n* **P3:** Nice to have. Can be introduced later without a breaking change.\r\n* **P4:** The future! Do not focus on this for now. (Labeled as Pmaybe.)",
          "progress": 90,
          "openIssues": 13,
          "closedIssues": 114
        },
        {
          "repository": "prometheus/prometheus",
          "kind": "milestone",
          "title": "OTEL Support",
          "url": "https://github.com/prometheus/prometheus/milestone/12",
          "description": "",
          "progress": 71,
          "openIssues": 4,
          "closedIssues": 10
        }
      ],
      "communityDiscussions": []
    },
    "runs": [
      {
        "collectedAt": "2026-08-13T12:26:38.318Z",
        "since": "2026-08-12T12:26:38.318Z",
        "observedCount": 40,
        "changedCount": 40
      },
      {
        "collectedAt": "2026-08-13T13:48:00.446149Z",
        "since": "2026-08-12T13:48:00.446149Z",
        "observedCount": 40,
        "changedCount": 40
      },
      {
        "collectedAt": "2026-08-13T16:19:22.035158Z",
        "since": "2026-08-12T16:19:22.035158Z",
        "observedCount": 42,
        "changedCount": 9
      },
      {
        "collectedAt": "2026-08-13T17:43:20.785491Z",
        "since": "2026-08-12T17:43:20.785491Z",
        "observedCount": 43,
        "changedCount": 3
      },
      {
        "collectedAt": "2026-08-13T17:47:07.884300Z",
        "since": "2026-08-12T17:47:07.884300Z",
        "observedCount": 43,
        "changedCount": 0
      },
      {
        "collectedAt": "2026-08-13T18:01:55.420671Z",
        "since": "2026-08-12T18:01:55.420671Z",
        "observedCount": 43,
        "changedCount": 0
      }
    ],
    "signals": [
      {
        "id": "github:prometheus/prometheus:issue:11678",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "__address__ label from pod discovered through kubernetes discovery does not include port when relabelling",
        "text": "### What did you do? If you specify scraping annotation for a kubernetes pod, typically for each container port a target is added (kubernetes/pod.go): https://github.com/prometheus/prometheus/blob/main/discovery/kubernetes/pod.go#L280 If you have a second container in the pod, that does not expose any container ports, then kubernetes/pod.go will add the IP address to the target, but no port value. So the format would be 1.2.3.4 instead of 1.2.3.4:5432: https://github.com/prometheus/prometheus/blob/main/discovery/kubernetes/pod.go#L270 The [documentation for relabel_config states](url): https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config `The __address__ label is set to the <host>:<port> address of the target.` This statement is not correct for the given implementation of kubernetes/pod.go, since targets with no port number are added for that second container. That way the standard kubernetes relabel config will not match: ``` - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace regex: (.+)(?::\\d+);(\\d+) replacement: ${1}:${2} target_label: __address__ ``` Since this rule does not match, if the following annotation is set on the pod: ``` prometheus.io/port: 9090 ``` The behavior now is incorrect. I can think of those two suggestions: - change the docs to reflect, that with certain discovery services the port can be missing - change the implementation of kubernetes/pods.go to not add targets without a port (which is also not really a good option, since the ip address in __address__ is needed to relabel containers where no port was exposed, but scraping should still happen) ### What did you expect to see? I would expect that my relabel config correctly matches the __address__ label. Which is not possible since the __address__ label only contains an ipv4 address and not a colon + port. ### What did you see instead? Under which circumstances? I saw instead an ipv4 address only in the __address__ label. ### System information _No response_ ### Prometheus version ```text current main branch 72a48321dabed43f2cd9e510dda96c50d4a48a58 ``` ### Prometheus configuration file _No response_ ### Alertmanager version _No response_ ### Alertmanager configuration file _No response_ ### Logs _No response_",
        "url": "https://github.com/prometheus/prometheus/issues/11678",
        "createdAt": "2022-12-06T10:50:47Z",
        "updatedAt": "2026-08-13T09:38:51Z",
        "timestamp": "2026-08-13T09:38:51Z",
        "metrics": {
          "reactions": 0,
          "comments": 4
        },
        "labels": [],
        "author": "peterhoneder",
        "state": "closed",
        "assignees": [
          "alexgreenbank"
        ]
      },
      {
        "id": "github:prometheus/prometheus:issue:14398",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "__meta_kubernetes_service_loadbalancer_ip not working as expected",
        "text": "### What did you do? used following config snippet to set LB service external IP as param_target for DNS probes ``` .... relabel_configs: - action: keep regex: powerdns-external;pdns-udp source_labels: - __meta_kubernetes_service_name - __meta_kubernetes_service_port_name - source_labels: - __meta_kubernetes_service_loadbalancer_ip target_label: __param_target ... ``` now with following config __param_target not set, it is empty. If I check powerdns-external service I see that it has loadBalancer IP only under **status.loadBalancer.ingress** so no .spec.loadBalancerIP defined automatically, looks like after 1.24 Kubernetes dropped this [.spec.loadBalancerIP](https://github.com/metallb/metallb/issues/1182) setting. ``` apiVersion: v1 kind: Service metadata: name: powerdns-external ..... status: loadBalancer: ingress: - ip: 192.168.1.15 spec: ports: - name: pdns-udp protocol: UDP port: 53 targetPort: 53 nodePort: 30937 selector: application: powerdns clusterIP: 10.96.26.217 clusterIPs: - 10.96.26.217 type: LoadBalancer sessionAffinity: None externalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack allocateLoadBalancerNodePorts: true internalTrafficPolicy: Cluster ``` Main point if I set .spec.loadBalancerIP manually from service then scrape job starts to work and thus __meta_kubernetes_service_loadbalancer_ip returns loadBalancerIP value. So could it be that __meta_kubernetes_service_loadbalancer_ip relies on .spec.loadBalancerIP and not compatible with latest Kubernetes? ### What did you expect to see? _No response_ ### What did you see instead? Under which circumstances? __meta_kubernetes_service_loadbalancer_ip returned no value ### System information _No response_ ### Prometheus version _No response_ ### Prometheus configuration file _No response_ ### Alertmanager version _No response_ ### Alertmanager configuration file _No response_ ### Logs _No response_",
        "url": "https://github.com/prometheus/prometheus/issues/14398",
        "createdAt": "2024-07-03T13:05:22Z",
        "updatedAt": "2026-08-13T01:13:10Z",
        "timestamp": "2026-08-13T01:13:10Z",
        "metrics": {
          "reactions": 0,
          "comments": 23
        },
        "labels": [
          "help wanted",
          "component/service discovery",
          "good first issue",
          "component/service discovery/kubernetes"
        ],
        "author": "whitepiratebaku",
        "state": "open",
        "assignees": [
          "machine424"
        ]
      },
      {
        "id": "github:prometheus/prometheus:issue:17273",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "alerting: expose activeAt for alert templating",
        "text": "### Proposal Is't possible to use information about metric in alert rule, but it's not possible tu use activeAt information. It will be great to have access to it. The question have already been asked #14713, but the solution of going through the alertmanager is only a palliative and does not meet all needs. is it possible to modify following files to add \"activeAt\" : https://github.com/prometheus/prometheus/blob/v2.54.0/rules/alerting.go#L363 https://github.com/prometheus/prometheus/blob/v2.54.0/template/template.go#L319 thanks Thomas",
        "url": "https://github.com/prometheus/prometheus/issues/17273",
        "createdAt": "2025-10-02T10:21:17Z",
        "updatedAt": "2026-08-13T10:17:23Z",
        "timestamp": "2026-08-13T10:17:23Z",
        "metrics": {
          "reactions": 0,
          "comments": 7
        },
        "labels": [
          "priority/Pmaybe",
          "component/rules",
          "kind/feature"
        ],
        "author": "tguenneguez",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:issue:17691",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "Dependency Dashboard",
        "text": "This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more.<br>[View this repository on the Mend.io Web Portal](https://developer.mend.io/github/prometheus/prometheus). ## Repository Problems These problems occurred while renovating this repository. [View logs](https://developer.mend.io//github/prometheus/prometheus). - ⚠️ WARN: Package lookup failures ## Deprecations / Replacements > [!WARNING] The following dependencies are either deprecated or have replacements available. | Datasource | Package | Replacement PR? | |------------|------|--------------| | npm | [@babel/plugin-proposal-private-property-in-object](https://redirect.github.com/babel/babel-plugin-proposal-private-property-in-object) | ![Unavailable](https://img.shields.io/badge/unavailable-orange?style=flat-square) | | npm | [popper.js](https://redirect.github.com/FezVrasta/popper.js) | ![Unavailable](https://img.shields.io/badge/unavailable-orange?style=flat-square) | ## Awaiting Schedule The following updates are awaiting their schedule. To get an update now, click on a checkbox below. - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-nomad-api-digest -->fix(deps): update github.com/hashicorp/nomad/api digest to 6832f99 - [ ] <!-- unschedule-branch=deps-update/github.com-prometheus-client_golang-exp-digest -->fix(deps): update github.com/prometheus/client_golang/exp digest to 0c5dccd - [ ] <!-- unschedule-branch=deps-update/google.golang.org-genproto-googleapis-api-digest -->fix(deps): update google.golang.org/genproto/googleapis/api digest to ec0a776 - [ ] <!-- unschedule-branch=deps-update/react-app -->chore(deps): update dependency sanitize-html to v2.17.7 - [ ] <!-- unschedule-branch=deps-update/github-codeql-action-4.x -->chore(deps): update github/codeql-action action to v4.37.7 - [ ] <!-- unschedule-branch=deps-update/aws-go-dependencies -->fix(deps): update aws go dependencies (`github.com/aws/aws-sdk-go-v2`, `github.com/aws/aws-sdk-go-v2/credentials`, `github.com/aws/aws-sdk-go-v2/feature/ec2/imds`, `github.com/aws/aws-sdk-go-v2/service/ec2`, `github.com/aws/aws-sdk-go-v2/service/ecs`, `github.com/aws/aws-sdk-go-v2/service/elasticache`, `github.com/aws/aws-sdk-go-v2/service/kafka`, `github.com/aws/aws-sdk-go-v2/service/lightsail`, `github.com/aws/aws-sdk-go-v2/service/rds`, `github.com/aws/aws-sdk-go-v2/service/sts`) - [ ] <!-- unschedule-branch=deps-update/google.golang.org-protobuf-1.x -->fix(deps): update module google.golang.org/protobuf to v1.36.12 - [ ] <!-- unschedule-branch=deps-update/enzyme-cheerio-1.x -->chore(deps): update dependency enzyme>cheerio to v1.2.0 - [ ] <!-- unschedule-branch=deps-update/mantine-ui -->chore(deps): update mantine ui (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`, `eslint-plugin-react-refresh`, `highlight.js`, `sanitize-html`) - [ ] <!-- unschedule-branch=deps-update/modules -->chore(deps): update modules to v8.67.0 (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`) - [ ] <!-- unschedule-branch=deps-update/typescript-eslint-monorepo -->chore(deps): update typescript-eslint monorepo to v8.67.0 (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`) - [ ] <!-- unschedule-branch=deps-update/azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/azcore to v1.23.0 - [ ] <!-- unschedule-branch=deps-update/github.com-digitalocean-godo-1.x -->fix(deps): update module github.com/digitalocean/godo to v1.204.0 - [ ] <!-- unschedule-branch=deps-update/github.com-grpc-ecosystem-grpc-gateway-v2-2.x -->fix(deps): update module github.com/grpc-ecosystem/grpc-gateway/v2 to v2.30.0 - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-consul-api-1.x -->fix(deps): update module github.com/hashicorp/consul/api to v1.34.4 - [ ] <!-- unschedule-branch=deps-update/github.com-open-telemetry-opentelemetry-collector-contrib-processor-deltatocumulativeprocessor-0.x -->fix(deps): update module github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor to v0.158.0 - [ ] <!-- unschedule-branch=deps-update/github.com-oracle-oci-go-sdk-v65-65.x -->fix(deps): update module github.com/oracle/oci-go-sdk/v65 to v65.123.1 - [ ] <!-- unschedule-branch=deps-update/github.com-outscale-osc-sdk-go-v2-2.x -->fix(deps): update module github.com/outscale/osc-sdk-go/v2 to v2.35.0 - [ ] <!-- unschedule-branch=deps-update/github.com-prometheus-prometheus-0.x -->fix(deps): update module github.com/prometheus/prometheus to v0.313.2 - [ ] <!-- unschedule-branch=deps-update/golang.org-x-text-0.x -->fix(deps): update module golang.org/x/text to v0.41.0 - [ ] <!-- unschedule-branch=deps-update/google.golang.org-api-0.x -->fix(deps): update module google.golang.org/api to v0.293.0 - [ ] <!-- unschedule-branch=deps-update/google.golang.org-grpc-1.x -->fix(deps): update module google.golang.org/grpc to v1.83.0 - [ ] <!-- unschedule-branch=deps-update/opentelemetry-go-dependencies -->fix(deps): update opentelemetry go dependencies (`go.opentelemetry.io/collector/component`, `go.opentelemetry.io/collector/consumer`, `go.opentelemetry.io/collector/pdata`, `go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace`, `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp`, `go.opentelemetry.io/otel`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`, `go.opentelemetry.io/otel/metric`, `go.opentelemetry.io/otel/sdk`, `go.opentelemetry.io/otel/trace`) - [ ] <!-- unschedule-branch=deps-update/actions-setup-go-7.x -->chore(deps): update actions/setup-go action to v7 - [ ] <!-- unschedule-branch=deps-update/actions-setup-node-7.x -->chore(deps): update actions/setup-node action to v7 - [ ] <!-- unschedule-branch=deps-update/actions-stale-11.x -->chore(deps): update actions/stale action to v11 - [ ] <!-- unschedule-branch=deps-update/major-30-jest-monorepo -->chore(deps): update dependency @types/jest to v30 - [ ] <!-- unschedule-branch=deps-update/vitejs-plugin-react-5.x -->chore(deps): update dependency @vitejs/plugin-react to v5 - [ ] <!-- unschedule-branch=deps-update/vitejs-plugin-react-6.x -->chore(deps): update dependency @vitejs/plugin-react to v6 - [ ] <!-- unschedule-branch=deps-update/major-9-eslint-monorepo -->chore(deps): update dependency eslint to v9 - [ ] <!-- unschedule-branch=deps-update/major-6-react-monorepo -->chore(deps): update dependency eslint-plugin-react-hooks to v6 - [ ] <!-- unschedule-branch=deps-update/major-7-react-monorepo -->chore(deps): update dependency eslint-plugin-react-hooks to v7 - [ ] <!-- unschedule-branch=deps-update/globals-17.x -->chore(deps): update dependency globals to v17 - [ ] <!-- unschedule-branch=deps-update/jest-fetch-mock-4.x -->chore(deps): update dependency jest-fetch-mock to v4 - [ ] <!-- unschedule-branch=deps-update/jsdom-26.x -->chore(deps): update dependency jsdom to v26 - [ ] <!-- unschedule-branch=deps-update/jsdom-27.x -->chore(deps): update dependency jsdom to v27 - [ ] <!-- unschedule-branch=deps-update/jsdom-28.x -->chore(deps): update dependency jsdom to v28 - [ ] <!-- unschedule-branch=deps-update/jsdom-29.x -->chore(deps): update dependency jsdom to v29 - [ ] <!-- unschedule-branch=deps-update/jsdom-30.x -->chore(deps): update dependency jsdom to v30 - [ ] <!-- unschedule-branch=deps-update/major-8-react-router-monorepo -->chore(deps): update dependency react-router to v8 - [ ] <!-- unschedule-branch=deps-update/sinon-20.x -->chore(deps): update dependency sinon to v20 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/sinon-21.x -->chore(deps): update dependency sinon to v21 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/sinon-22.x -->chore(deps): update dependency sinon to v22 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/typescript-6.x -->chore(deps): update dependency typescript to v6 - [ ] <!-- unschedule-branch=deps-update/typescript-7.x -->chore(deps): update dependency typescript to v7 - [ ] <!-- unschedule-branch=deps-update/vite-7.x -->chore(deps): update dependency vite to v7 - [ ] <!-- unschedule-branch=deps-update/vite-8.x -->chore(deps): update dependency vite to v8 - [ ] <!-- unschedule-branch=deps-update/major-4-vitest-monorepo -->chore(deps): update dependency vitest to v4 - [ ] <!-- unschedule-branch=deps-update/major-10-eslint-monorepo -->chore(deps): update eslint monorepo to v10 (`@eslint/js`, `eslint`) - [ ] <!-- unschedule-branch=deps-update/node-24.x -->chore(deps): update node.js to v24 (`node`, `@types/node`) - [ ] <!-- unschedule-branch=deps-update/major-6-azure-go-dependencies -->fix(deps): update azure go dependencies to v6 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-7-azure-go-dependencies -->fix(deps): update azure go dependencies to v7 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-8-azure-go-dependencies -->fix(deps): update azure go dependencies to v8 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-3-font-awesome -->fix(deps): update dependency @fortawesome/react-fontawesome to v3 - [ ] <!-- unschedule-branch=deps-update/major-7-testing-library-monorepo -->fix(deps): update dependency @testing-library/jest-dom to v7 - [ ] <!-- unschedule-branch=deps-update/bootstrap-5.x -->fix(deps): update dependency bootstrap to v5 - [ ] <!-- unschedule-branch=deps-update/http-proxy-middleware-4.x -->fix(deps): update dependency http-proxy-middleware to v4 - [ ] <!-- unschedule-branch=deps-update/jquery-4.x -->fix(deps): update dependency jquery to v4 (`jquery`, `@types/jquery`) - [ ] <!-- unschedule-branch=deps-update/react-infinite-scroll-component-7.x -->fix(deps): update dependency react-infinite-scroll-component to v7 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-8.x -->fix(deps): update dependency react-resize-detector to v8 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-9.x -->fix(deps): update dependency react-resize-detector to v9 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-10.x -->fix(deps): update dependency react-resize-detector to v10 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-11.x -->fix(deps): update dependency react-resize-detector to v11 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-12.x -->fix(deps): update dependency react-resize-detector to v12 - [ ] <!-- unschedule-branch=deps-update/reactstrap-9.x -->fix(deps): update dependency reactstrap to v9 - [ ] <!-- unschedule-branch=deps-update/major-7-font-awesome -->fix(deps): update font awesome to v7 (`@fortawesome/fontawesome-common-types`, `@fortawesome/fontawesome-svg-core`, `@fortawesome/free-solid-svg-icons`) - [ ] <!-- unschedule-branch=deps-update/major-5-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v5 - [ ] <!-- unschedule-branch=deps-update/major-9-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v9 - [ ] <!-- unschedule-branch=deps-update/major-10-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v10 - [ ] <!-- unschedule-branch=deps-update/github.com-cenkalti-backoff-v5-6.x -->fix(deps): update module github.com/cenkalti/backoff/v5 to v6 - [ ] <!-- unschedule-branch=deps-update/github.com-cenkalti-backoff-v5-7.x -->fix(deps): update module github.com/cenkalti/backoff/v5 to v7 - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-consul-api-2.x -->fix(deps): update module github.com/hashicorp/consul/api to v2 - [ ] <!-- unschedule-branch=deps-update/github.com-linode-linodego-2.x -->fix(deps): update module github.com/linode/linodego to v2 - [ ] <!-- unschedule-branch=deps-update/go.yaml.in-yaml-v2-3.x -->fix(deps): update module go.yaml.in/yaml/v2 to v3 - [ ] <!-- unschedule-branch=deps-update/major-2-kubernetes-go-dependencies -->fix(deps): update module k8s.io/klog to v2 - [ ] <!-- unschedule-branch=deps-update/major-19-react-monorepo -->fix(deps): update react monorepo to v19 (`@types/react`, `@types/react-dom`, `react`, `react-dom`) - [ ] <!-- create-all-awaiting-schedule-prs -->🔐 **Create all awaiting schedule PRs at once** 🔐 --- > [!WARNING] > Renovate failed to look up the following dependencies: `Failed to look up go package github.com/aws/aws-sdk-go-v2/config: no-result`, `Failed to look up go package go.opentelemetry.io/collector/processor: no-result`. > > Files affected: `go.mod` --- ## Open The following updates have all been created. To force a retry/rebase of any, click on a checkbox below. - [ ] <!-- rebase-branch=deps-update/kubernetes-go-dependencies -->[fix(deps): update kubernetes go dependencies to v0.36.3](../pull/18757) (`k8s.io/api`, `k8s.io/apimachinery`, `k8s.io/client-go`) ## PR Closed (Blocked) The following updates are blocked by an existing closed PR. To recreate the PR, click on a checkbox below. - [ ] <!-- recreate-branch=deps-update/github.com-prometheus-compliance-remotewrite-digest -->[fix(deps): update github.com/prometheus/compliance/remotewrite digest to 67b8327](../pull/19349) - [ ] <!-- recreate-branch=deps-update/quay.io-prometheus-golang-builder-1.x -->[chore(deps): update quay.io/prometheus/golang-builder docker tag to v1.26](../pull/18874) ## Detected Dependencies <details><summary>dockerfile (2)</summary> <blockquote> <details><summary>Dockerfile</summary> </details> <details><summary>Dockerfile.distroless</summary> </details> </blockquote> </details> <details><summary>github-actions (16)</summary> <blockquote> <details><summary>.github/workflows/approve-workflows.yml (1)</summary> - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` </details> <details><summary>.github/workflows/automerge-dependabot.yml (1)</summary> - `dependabot/fetch-metadata v3.1.0@25dd0e34f4fe68f24cc83900b1fe3fe149efef98` </details> <details><summary>.github/workflows/buf-lint.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `bufbuild/buf-setup-action v1.50.0@a47c93e0b1648d5651a065437926377d060baa99` - `bufbuild/buf-lint-action v1.1.1@06f9dd823d873146471cfaaf108a993fe00e5325` - `bufbuild/buf-breaking-action v1.1.4@c57b3d842a5c3f3b454756ef65305a50a587c5ba` </details> <details><summary>.github/workflows/buf.yml (5)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `bufbuild/buf-setup-action v1.50.0@a47c93e0b1648d5651a065437926377d060baa99` - `bufbuild/buf-lint-action v1.1.1@06f9dd823d873146471cfaaf108a993fe00e5325` - `bufbuild/buf-breaking-action v1.1.4@c57b3d842a5c3f3b454756ef65305a50a587c5ba` - `bufbuild/buf-push-action v1.2.0@a654ff18effe4641ebea4a4ce242c49800728459` </details> <details><summary>.github/workflows/check_release_notes.yml (1)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` </details> <details><summary>.github/workflows/ci.yml (51)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-node v6.5.0@249970729cb0ef3589644e2896645e5dc5ba9c38` → [Updates: `v7.0.0`] - `pnpm/action-setup v6.0.10@0977fd99725f1db4007ccb2928dbb4e90d06cc86` - `actions/cache v6.1.0@55cc8345863c7cc4c66a329aec7e433d2d1c52a9` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.25-base` → [Updates: `1.26-base`] - `quay.io/prometheus/golang-builder 1.26-base` - `go 1.26.x` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `go 1.26.x` - `pnpm >=11.0.0 <11.12.0 || >11.12.0 <12.0.0` </details> <details><summary>.github/workflows/codeql-analysis.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] </details> <details><summary>.github/workflows/container_description.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `christian-korneck/update-container-description-action v1@d36005551adeaba9698d8d67a296bd16fa91f8e8` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `christian-korneck/update-container-description-action v1@d36005551adeaba9698d8d67a296bd16fa91f8e8` </details> <details><summary>.github/workflows/fuzzing.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `actions/upload-artifact v7.0.1@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a` - `go 1.26.x` </details> <details><summary>.github/workflows/govulncheck.yml (1)</summary> - `golang/govulncheck-action master@032d45514ae346b1db93c04b0c90b841c370344f` </details> <details><summary>.github/workflows/lock.yml (1)</summary> - `dessant/lock-threads v6.0.2@89ae32b08ed1a541efecbab17912962a5e38981c` </details> <details><summary>.github/workflows/prombench.yml</summary> </details> <details><summary>.github/workflows/repo_sync.yml (1)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` </details> <details><summary>.github/workflows/scorecards.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `ossf/scorecard-action v2.4.4@2d1146689b8cda280b9bc96326124645441f03bc` - `actions/upload-artifact v7.0.1@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] </details> <details><summary>.github/workflows/stale.yml (1)</summary> - `actions/stale v10.4.0@1e223db275d687790206a7acac4d1a11bd6fe629` → [Updates: `v11.0.0`] </details> <details><summary>scripts/golangci-lint.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `go 1.26.x` </details> </blockquote> </details> <details><summary>gomod (4)</summary> <blockquote> <details><summary>compliance/go.mod (2)</summary> - `go 1.25.10` - `github.com/prometheus/compliance/remotewrite v0.0.0-20260223092825-818283e1171e@818283e1171e` → [Updates: `v0.0.0-20260223092825-818283e1171e`] </details> <details><summary>go.mod (109)</summary> - `go 1.25.10` - `github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0` → [Updates: `v1.23.0`] - `github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.0` - `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0` → [Updates: `v6.4.0`, `v7.3.0`, `v8.2.0`] - `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0` → [Updates: `v5.2.0`, `v6.2.0`, `v7.2.0`, `v8.0.0`, `v9.0.0`, `v10.0.0`] - `github.com/Code-Hex/go-generics-cache v1.5.1` - `github.com/KimMachineGun/automemlimit v0.7.5` - `github.com/alecthomas/kingpin/v2 v2.4.0` - `github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b@0f3dac36c52b` - `github.com/aws/aws-sdk-go-v2 v1.43.4` → [Updates: `v1.43.5`] - `github.com/aws/aws-sdk-go-v2/config v1.32.35` - `github.com/aws/aws-sdk-go-v2/credentials v1.19.34` → [Updates: `v1.19.35`] - `github.com/aws/aws-sdk-go-v2/service/ec2 v1.321.0` → [Updates: `v1.321.1`] - `github.com/aws/aws-sdk-go-v2/service/ecs v1.90.0` → [Updates: `v1.90.1`] - `github.com/aws/aws-sdk-go-v2/service/elasticache v1.56.4` → [Updates: `v1.56.5`] - `github.com/aws/aws-sdk-go-v2/service/kafka v1.58.0` → [Updates: `v1.58.1`] - `github.com/aws/aws-sdk-go-v2/service/lightsail v1.58.4` → [Updates: `v1.58.5`] - `github.com/aws/aws-sdk-go-v2/service/rds v1.124.1` → [Updates: `v1.124.2`] - `github.com/aws/aws-sdk-go-v2/service/sts v1.45.4` → [Updates: `v1.45.5`] - `github.com/aws/smithy-go v1.27.7` - `github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3@fcc2c21820a3` - `github.com/cespare/xxhash/v2 v2.3.0` - `github.com/dennwc/varint v1.0.0` - `github.com/digitalocean/godo v1.201.0` → [Updates: `v1.204.0`] - `github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd@fad1cd13edbd` - `github.com/envoyproxy/go-control-plane/envoy v1.37.0` - `github.com/envoyproxy/protoc-gen-validate v1.3.3` - `github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb@2cd4dd1e2dcb` - `github.com/felixge/fgprof v0.9.5` - `github.com/go-openapi/strfmt v0.27.0` - `github.com/go-zookeeper/zk v1.0.4` - `github.com/gogo/protobuf v1.3.2` - `github.com/golang/snappy v1.0.0` - `github.com/google/go-cmp v0.7.0` - `github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3@ef3492d7dac3` - `github.com/google/uuid v1.6.0` - `github.com/gophercloud/gophercloud/v2 v2.13.0` - `github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853@f7b3be9d1853` - `github.com/hashicorp/consul/api v1.33.7` → [Updates: `v1.34.4`, `v2.0.0`] - `github.com/hashicorp/nomad/api v0.0.0-20260807203101-d78b9b59529a@d78b9b59529a` → [Updates: `v0.0.0-20260813124048-6832f99bc283`] - `github.com/hetznercloud/hcloud-go/v2 v2.47.0` - `github.com/ionos-cloud/sdk-go/v6 v6.3.11` - `github.com/json-iterator/go v1.1.12` - `github.com/klauspost/compress v1.19.2` - `github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b@a4b6fa1dd06b` - `github.com/linode/linodego v1.69.1` → [Updates: `v2.5.0`] - `github.com/miekg/dns v1.1.72` - `github.com/moby/moby/api v1.55.0` - `github.com/moby/moby/client v0.5.1` - `github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822@a7dc8b61c822` - `github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f@2f068394615f` - `github.com/nsf/jsondiff v0.0.0-20260207060731-8e8d90c4c0ac@8e8d90c4c0ac` - `github.com/oklog/run v1.2.0` - `github.com/oklog/ulid/v2 v2.1.2` - `github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.157.0` → [Updates: `v0.158.0`] - `github.com/outscale/osc-sdk-go/v2 v2.34.0` → [Updates: `v2.35.0`] - `github.com/ovh/go-ovh v1.9.0` - `github.com/pb33f/libopenapi v0.38.7` - `github.com/pb33f/libopenapi-validator v0.14.0` - `github.com/prometheus/alertmanager v0.33.1` - `github.com/prometheus/client_golang v1.24.1` - `github.com/prometheus/client_golang/exp v0.0.0-20260724065723-ecdb8254ba61@ecdb8254ba61` → [Updates: `v0.0.0-20260812154952-0c5dccd910c0`] - `github.com/prometheus/client_model v0.6.2` - `github.com/prometheus/common v0.70.1` - `github.com/prometheus/common/assets v0.2.0` - `github.com/prometheus/exporter-toolkit v0.17.1` - `github.com/prometheus/sigv4 v0.4.1` - `github.com/scaleway/scaleway-sdk-go v1.0.0-beta.37` - `github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c@f1e31cf0ba5c` - `github.com/stackitcloud/stackit-sdk-go/core v0.26.0` - `github.com/stretchr/testify v1.11.1` - `github.com/vultr/govultr/v3 v3.32.0` - `go.opentelemetry.io/collector/component v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/collector/consumer v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/collector/pdata v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/collector/processor v1.63.0` - `go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.69.0` → [Updates: `v0.70.0`] - `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0` → [Updates: `v0.70.0`] - `go.opentelemetry.io/otel v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/metric v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/sdk v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/trace v1.44.0` → [Updates: `v1.45.0`] - `go.uber.org/atomic v1.11.0` - `go.uber.org/automaxprocs v1.6.0` - `go.uber.org/goleak v1.3.0` - `go.yaml.in/yaml/v2 v2.4.4` → [Updates: `v3.0.5`] - `go.yaml.in/yaml/v3 v3.0.5` - `go.yaml.in/yaml/v4 v4.0.0-rc.6` - `golang.org/x/oauth2 v0.36.0` - `golang.org/x/sync v0.22.0` - `golang.org/x/sys v0.47.0` - `golang.org/x/text v0.40.0` → [Updates: `v0.41.0`] - `google.golang.org/api v0.290.0` → [Updates: `v0.293.0`] - `google.golang.org/genproto/googleapis/api v0.0.0-20260807164820-c8921c73eeea@c8921c73eeea` → [Updates: `v0.0.0-20260810153831-ec0a7760b754`] - `google.golang.org/grpc v1.82.1` → [Updates: `v1.83.0`] - `google.golang.org/protobuf v1.36.12-0.20260806062936-644d0267c26e@644d0267c26e` → [Updates: `v1.36.12`] - `k8s.io/api v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/apimachinery v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/client-go v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/klog v1.0.0` → [Updates: `v2.140.0`] - `k8s.io/klog/v2 v2.140.0` - `github.com/oracle/oci-go-sdk/v65 v65.121.1` → [Updates: `v65.123.1`] - `github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.35` → [Updates: `v1.18.36`] - `github.com/cenkalti/backoff/v5 v5.0.3` → [Updates: `v6.0.1`, `v7.0.0`] - `github.com/prometheus/otlptranslator v1.0.0` - `golang.org/x/time v0.15.0` </details> <details><summary>internal/tools/go.mod (5)</summary> - `go 1.25.10` - `github.com/bufbuild/buf v1.72.0` - `github.com/daixiang0/gci v0.14.0` - `github.com/gogo/protobuf v1.3.2` - `github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0` → [Updates: `v2.30.0`] </details> <details><summary>web/ui/mantine-ui/src/promql/tools/go.mod (5)</summary> - `go 1.25.10` - `github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853@f7b3be9d1853` - `github.com/prometheus/prometheus v0.312.0` → [Updates: `v0.313.2`] - `github.com/russross/blackfriday/v2 v2.1.0` - `cloud.google.com/go v0.123.0` </details> </blockquote> </details> <details><summary>jsonnet-bundler (1)</summary> <blockquote> <details><summary>documentation/prometheus-mixin/jsonnetfile.json</summary> </details> </blockquote> </details> <details><summary>npm (7)</summary> <blockquote> <details><summary>web/ui/mantine-ui/package.json (58)</summary> - `@codemirror/autocomplete ^6.20.3` - `@codemirror/commands ^6.10.4` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/search ^6.7.1` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@floating-ui/dom ^1.8.0` - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@mantine/code-highlight ^9.5.0` - `@mantine/core ^9.5.0` - `@mantine/dates ^9.5.0` - `@mantine/hooks ^9.5.0` - `@mantine/notifications ^9.5.0` - `@microsoft/fetch-event-source ^2.0.1` - `@nexucis/fuzzy ^0.5.1` - `@nexucis/kvsearch ^0.9.1` - `@reduxjs/toolkit ^2.12.0` - `@tabler/icons-react ^3.45.0` - `@tanstack/react-query ^5.101.4` - `@testing-library/jest-dom ^6.10.0` → [Updates: `^7.0.0`] - `@testing-library/react ^16.3.2` - `@types/lodash ^4.17.24` - `@types/sanitize-html ^2.16.1` - `@uiw/react-codemirror ^4.25.11` - `clsx ^2.1.1` - `dayjs ^1.11.21` - `highlight.js ^11.11.1` → [Updates: `^11.11.1`] - `lodash ^4.18.1` - `react ^19.2.8` - `react-dom ^19.2.8` - `react-infinite-scroll-component ^6.1.1` → [Updates: `^7.0.0`] - `react-redux ^9.3.0` - `react-router-dom ^7.18.1` - `sanitize-html ^2.17.6` → [Updates: `^2.17.6`] - `uplot ^1.6.32` - `uplot-react ^1.2.4` - `use-query-params ^2.2.2` - `@eslint/compat ^2.0.0` - `@eslint/eslintrc ^3.3.6` - `@eslint/js ^9.39.5` → [Updates: `^10.0.0`] - `@types/react ^19.2.17` - `@types/react-dom ^19.2.3` - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `@vitejs/plugin-react ^4.7.0` → [Updates: `^5.0.0`, `^6.0.0`] - `eslint ^9.39.5` → [Updates: `^10.0.0`] - `eslint-plugin-react-hooks ^5.2.0` → [Updates: `^6.0.0`, `^7.0.0`] - `eslint-plugin-react-refresh ^0.5.3` → [Updates: `^0.5.3`] - `globals ^16.5.0` → [Updates: `^17.0.0`] - `jsdom ^25.0.1` → [Updates: `^26.0.0`, `^27.0.0`, `^28.0.0`, `^29.0.0`, `^30.0.0`] - `postcss ^8.5.23` - `postcss-preset-mantine ^1.18.0` - `postcss-simple-vars ^7.0.1` - `rollup-plugin-license ^3.7.1` - `vite ^6.4.3` → [Updates: `^7.0.0`, `^8.0.0`] - `vitest ^3.2.7` → [Updates: `^4.0.0`] </details> <details><summary>web/ui/module/codemirror-promql/package.json (26)</summary> - `lru-cache ^11.5.2` - `@codemirror/autocomplete ^6.20.3` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@eslint/compat ^2.0.0` - `@eslint/eslintrc ^3.3.6` - `@eslint/js ^9.39.5` → [Updates: `^10.0.0`] - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `eslint ^9.39.5` → [Updates: `^10.0.0`] - `eslint-plugin-prettier ^5.5.6` - `isomorphic-fetch ^3.0.0` - `jest ^30.4.2` - `nock ^14.0.16` - `@codemirror/autocomplete ^6.4.0` - `@codemirror/language ^6.3.0` - `@codemirror/lint ^6.0.0` - `@codemirror/state ^6.1.1` - `@codemirror/view ^6.4.0` - `@lezer/common ^1.0.1` - `node >=12.0.0` </details> <details><summary>web/ui/module/lezer-promql/package.json (8)</summary> - `@lezer/generator ^1.8.0` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@rollup/plugin-node-resolve ^16.0.3` - `jest ^30.4.2` - `rollup ^4.62.3` - `@lezer/highlight ^1.1.2` - `@lezer/lr ^1.2.3` </details> <details><summary>web/ui/package.json (8)</summary> - `@types/jest ^29.5.14` → [Updates: `^30.0.0`] - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `eslint-config-prettier ^10.1.8` - `prettier ^3.9.6` - `ts-jest ^29.4.12` - `typescript ^5.9.3` → [Updates: `^6.0.0`, `^7.0.0`] - `vite ^6.4.3` → [Updates: `^7.0.0`, `^8.0.0`] </details> <details><summary>web/ui/pnpm-workspace.yaml</summary> </details> <details><summary>web/ui/react-app/package.json (67)</summary> - `@codemirror/autocomplete ^6.20.3` - `@codemirror/commands ^6.10.4` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/search ^6.7.1` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@forevolve/bootstrap-dark ^4.0.2` - `@fortawesome/fontawesome-common-types 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/fontawesome-svg-core 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/free-solid-svg-icons 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/react-fontawesome 0.2.6` → [Updates: `3.5.0`] - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@nexucis/fuzzy ^0.5.1` - `@nexucis/kvsearch ^0.9.1` - `bootstrap ^4.6.2` → [Updates: `^5.0.0`] - `css.escape ^1.5.1` - `downshift ^9.4.0` - `http-proxy-middleware ^3.0.7` → [Updates: `^4.0.0`] - `jquery ^3.7.1` → [Updates: `^4.0.0`] - `jquery.flot.tooltip ^0.9.0` - `moment ^2.30.1` - `moment-timezone ^0.6.3` - `popper.js ^1.16.1` - `react ^18.3.1` → [Updates: `^19.0.0`] - `react-copy-to-clipboard ^5.1.1` - `react-dom ^18.3.1` → [Updates: `^19.0.0`] - `react-infinite-scroll-component ^6.1.1` → [Updates: `^7.0.0`] - `react-resize-detector ^7.1.2` → [Updates: `^8.0.0`, `^9.0.0`, `^10.0.0`, `^11.0.0`, `^12.0.0`] - `react-router-dom ^7.0.0` - `reactstrap ^8.10.1` → [Updates: `^9.0.0`] - `sanitize-html ^2.17.6` → [Updates: `^2.17.6`] - `sass 1.102.0` - `tempusdominus-bootstrap-4 ^5.39.2` - `tempusdominus-core ^5.19.3` - `@babel/plugin-proposal-private-property-in-object ^7.21.11` - `@cfaester/enzyme-adapter-react-18 ^0.8.0` - `@testing-library/dom ^10.4.1` - `@testing-library/react ^16.3.2` - `@types/enzyme ^3.10.19` - `@types/flot 0.0.36` - `@types/jest ^29.5.14` → [Updates: `^30.0.0`] - `@types/jquery ^3.5.34` → [Updates: `^4.0.0`] - `@types/node ^22.20.1` → [Updates: `^24.0.0`] - `@types/react ^18.3.31` → [Updates: `^19.0.0`] - `@types/react-copy-to-clipboard ^5.0.7` - `@types/react-dom ^18.3.7` → [Updates: `^19.0.0`] - `@types/sanitize-html ^2.16.1` - `@types/sinon ^17.0.4` → [Updates: `^20.0.0`, `^21.0.0`, `^22.0.0`] - `enzyme ^3.11.0` - `enzyme-to-json ^3.6.2` - `eslint ^8.57.1` → [Updates: `^9.0.0`, `^10.0.0`] - `eslint-config-prettier ^10.1.8` - `eslint-config-react-app ^7.0.1` - `eslint-plugin-prettier ^5.5.6` - `identity-obj-proxy ^3.0.0` - `jest-canvas-mock ^2.5.8` - `jest-fetch-mock ^3.2.0` → [Updates: `^4.0.0`] - `mutationobserver-shim ^0.3.7` - `prettier ^3.9.6` - `react-app-rewired ^2.2.1` - `react-router ^7.0.0` → [Updates: `^8.0.0`] - `react-scripts ^5.0.1` - `sinon ^19.0.5` → [Updates: `^20.0.0`, `^21.0.0`, `^22.0.0`] - `fsevents ^2.3.3` </details> <details><summary>web/ui/react-app/pnpm-workspace.yaml (1)</summary> - `enzyme>cheerio 1.0.0-rc.12` → [Updates: `1.2.0`] </details> </blockquote> </details> <details><summary>nvm (1)</summary> <blockquote> <details><summary>web/ui/.nvmrc (1)</summary> - `node 22.23.2` → [Updates: `24.19.0`] </details> </blockquote> </details> --- - [ ] <!-- manual job -->Check this box to trigger a request for Renovate to run again on this repository",
        "url": "https://github.com/prometheus/prometheus/issues/17691",
        "createdAt": "2025-12-15T09:02:18Z",
        "updatedAt": "2026-08-13T17:13:08Z",
        "timestamp": "2026-08-13T17:13:08Z",
        "metrics": {
          "reactions": 0,
          "comments": 5
        },
        "labels": [],
        "author": "renovate[bot]",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:issue:17857",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "bug(sending RW2): RW2 sends disconnected exemplars without samples",
        "text": "**Current implementation of the RW2 sending does not implement exemplars correctly.** It keeps the RW1 way of exemplars, where they are sent in a separate `TimeSeries` message with series labels, exemplar details and without samples. This represents the way Prometheus V1 Appender looks like and the current exemplar in-mem (and WAL) storage. We could call this model as \"Exemplars per series\". However RW 2.0 spec follows more reliable way of exporting exemplars, so **have exemplar per sample**, similar to how our scrape protocols and OTLP have it. This is reflected in the following statement [in 2.0 spec:](https://prometheus.io/docs/specs/prw/remote_write_spec_2_0/#:~:text=At%20least%20one%20element%20in%20samples%20or%20in%20histograms%20MUST%20be%20provided.%20A%20TimeSeries%20MUST%20NOT%20include%20both%20samples%20and%20histograms.%20For%20series%20which%20(rarely)%20would%20mix%20float%20and%20histogram%20samples%2C%20a%20separate%20TimeSeries%20message%20MUST%20be%20used.) > At least one element in samples or in histograms MUST be provided. A TimeSeries MUST NOT include both samples and histograms. For series which (rarely) would mix float and histogram samples, a separate TimeSeries message MUST be used. However, the [current implementation does not represent this](https://github.com/prometheus/prometheus/blob/e14795bbf4fbd1837a9e3428aafb40b4b1dda99d/storage/remote/queue_manager.go#L2001) logic as it takes incoming exemplars from WAL and send it as it is, in separate `TimeSeries` messages without samples. With sharding this might even mean totally separate RW request vs corresponding samples. Seems this change is something that has been missed during RW2 sending implementation. This won't be easy to implement as well. Feels one solution is to do attack this problem similar to [the metadata problem](https://github.com/prometheus/prometheus/issues/17191) e.g fetch time-relevant exemplars (or simply latest?) from the storage (what if storage is turned off)? ### Acceptance Criteria * [ ] Fix exemplars RW2 sending to match the 2.0 spec * [ ] Update RW 2.0 to be more clear on this important change -- it's easy to miss ### Alternatives This missed change is something that likely current early adopters of RW2 missed too (e.g. Mimir, Otel Collector cc @ArthurSens ). It's late to change spec, but we could consider reverting this change RW 2.0 (make exemplars per series). I would vote for NOT doing this given: * We wanted to limit spec changes at this point especially that big to 2.0 * It gets RW2 back to the stateful receiving for backends that store exemplars per sample (e.g. Google, OTLP). * For receivers that implement per series, switching RW2 implementation to be according to spec (exemplar per sample) should be noop. The risk is that this issue will be for longer, so Prometheus sending RW2 won't support exemplars well until then.",
        "url": "https://github.com/prometheus/prometheus/issues/17857",
        "timestamp": "2026-08-12T13:13:16Z",
        "metrics": {
          "reactions": 1,
          "comments": 9
        },
        "labels": [
          "kind/bug",
          "component/remote storage"
        ],
        "author": "bwplotka",
        "assignees": [],
        "change": "new"
      },
      {
        "id": "github:prometheus/prometheus:issue:18044",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "Incorrect Markdown link formatting due to space between [] and ()",
        "text": "There are a couple of links in the documentation where a space exists between the link text ([]) and the URL (()). This breaks standard Markdown link formatting and prevents the links from rendering correctly. The affected links are: * AirBnB's Nerve in https://prometheus.io/docs/prometheus/latest/configuration/configuration/#nerve_sd_config * Serversets in https://prometheus.io/docs/prometheus/latest/configuration/configuration/#serverset_sd_config Expected behavior: Links should follow standard Markdown syntax without a space between the link text and the URL. `[Link text](url)` Actual behavior: The links currently contain a space between [] and (), which prevents them from being rendered as clickable links.",
        "url": "https://github.com/prometheus/prometheus/issues/18044",
        "createdAt": "2026-02-09T04:32:20Z",
        "updatedAt": "2026-08-12T23:25:07Z",
        "timestamp": "2026-08-12T23:25:07Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "kakabisht",
        "state": "closed",
        "assignees": [
          "kakabisht"
        ]
      },
      {
        "id": "github:prometheus/prometheus:issue:18269",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "discovery/file: Flaky `TestInvalidFileUpdate`  and `TestUpdateFileWithPartialWrites` tests",
        "text": "``` FAIL: TestInvalidFileUpdate (1.10s) file_test.go:400: Error Trace: /__w/prometheus/prometheus/discovery/file/file_test.go:227 /__w/prometheus/prometheus/discovery/file/file_test.go:400 Error: Not equal: expected: \"[{\\\"targets\\\":[\\\"localhost:9090\\\",\\\"example.org:443\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\\\",\\\"foo\\\":\\\"bar\\\"}},{\\\"targets\\\":[\\\"my.domain\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\\\"}}]\" actual : \"[{\\\"targets\\\":[]},{\\\"targets\\\":[]}]\" Diff: --- Expected +++ Actual @@ -1 +1 @@ -[{\"targets\":[\"localhost:9090\",\"example.org:443\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\",\"foo\":\"bar\"}},{\"targets\":[\"my.domain\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\"}}] +[{\"targets\":[]},{\"targets\":[]}] Test: TestInvalidFileUpdate FAIL ``` https://github.com/prometheus/prometheus/actions/runs/22899997735/job/66443837347?pr=18250 ``` --- FAIL: TestUpdateFileWithPartialWrites (1.10s) file_test.go:422: Error Trace: /__w/prometheus/prometheus/discovery/file/file_test.go:227 /__w/prometheus/prometheus/discovery/file/file_test.go:422 Error: Not equal: expected: \"[{\\\"targets\\\":[\\\"localhost:9090\\\",\\\"example.org:443\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\\\",\\\"foo\\\":\\\"bar\\\"}},{\\\"targets\\\":[\\\"my.domain\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\\\"}}]\" actual : \"[{\\\"targets\\\":[]},{\\\"targets\\\":[]}]\" Diff: --- Expected +++ Actual @@ -1 +1 @@ -[{\"targets\":[\"localhost:9090\",\"example.org:443\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\",\"foo\":\"bar\"}},{\"targets\":[\"my.domain\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\"}}] +[{\"targets\":[]},{\"targets\":[]}] Test: TestUpdateFileWithPartialWrites ```",
        "url": "https://github.com/prometheus/prometheus/issues/18269",
        "createdAt": "2026-03-10T11:14:07Z",
        "updatedAt": "2026-08-13T03:10:04Z",
        "timestamp": "2026-08-13T03:10:04Z",
        "metrics": {
          "reactions": 0,
          "comments": 4
        },
        "labels": [],
        "author": "bwplotka",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:issue:18770",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "issue",
        "title": "promql/parser: parentheses around a plain duration literal are lost on round-trip",
        "text": "Note: I've generated this issue with Claude Opus 4.7 after using it to verify the issue. While reviewing #18768 I noticed that `(N)` inside a duration-expression position (offset, range bracket) is dropped on `Expr.String()` round-trip when N reduces to a single `*NumberLiteral`. Wrapping a multi-term `*DurationExpr` survives because `*DurationExpr` has a `Wrapped` field; `*NumberLiteral` has no such field. ### Reproduction With `ExperimentalDurationExpr: true`: #### Cases that lose parentheses | Input | `Expr.String()` | |------------------------|------------------| | `foo offset (5)` | `foo offset 5s` | | `foo offset +(5)` | `foo offset 5s` | | `foo offset -(5)` | `foo offset -5s` | | `foo offset (5m)` | `foo offset 5m` | | `foo[(5s)]` | `foo[5s]` | #### Cases that round-trip correctly (for reference) | Input | `Expr.String()` | |--------------------------|--------------------------| | `(5)` | `(5)` | | `-(5)` | `-(5)` | | `+(5)` | `+(5)` | | `(5) + 1` | `(5) + 1` | | `foo offset (5m + 1m)` | `foo offset (5m + 1m)` | | `foo offset -(5m + 1m)` | `foo offset -(5m + 1m)` | | `foo[(5s + 1s)]` | `foo[(5s + 1s)]` | Pure-scalar contexts use `*ParenExpr`, which prints its own parens. Duration-expression contexts with a `*DurationExpr` payload preserve parens via the `Wrapped` field. The mismatch is only when the payload is a single `*NumberLiteral`. ### Notes This pre-dates #18768. That PR fixes a panic on `foo offset -(5)` but inherits this round-trip limitation, which is why I'm filing it separately.",
        "url": "https://github.com/prometheus/prometheus/issues/18770",
        "createdAt": "2026-05-22T15:57:04Z",
        "updatedAt": "2026-08-13T01:13:07Z",
        "timestamp": "2026-08-13T01:13:07Z",
        "metrics": {
          "reactions": 0,
          "comments": 2
        },
        "labels": [
          "kind/bug",
          "priority/Pmaybe",
          "component/promql"
        ],
        "author": "krajorama",
        "state": "open",
        "assignees": [
          "roidelapluie"
        ]
      },
      {
        "id": "github:prometheus/prometheus:pull_request:17136",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "Populate __meta_kubernetes_service_loadbalancer_ip from status.loadBalancer.ingress with fallback to spec.loadBalancerIP",
        "text": "Fixes #14398 #### Does this PR introduce a user-facing change? <!-- If no, just write \"NONE\" in the release-notes block below. Otherwise, please describe what should be mentioned in the CHANGELOG. Use the following prefixes: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/prometheus/blob/main/CHANGELOG.md If you need help formulating your entries, consult the reviewer(s). --> ```release-notes TO_BE_UPDATED: [ENHANCEMENT] __meta_kubernetes_service_loadbalancer_ip now populated from status.loadBalancer.ingress (with fallback to spec.loadBalancerIP) ```",
        "url": "https://github.com/prometheus/prometheus/pull/17136",
        "createdAt": "2025-09-03T10:53:22Z",
        "updatedAt": "2026-08-13T01:08:28Z",
        "timestamp": "2026-08-13T01:08:28Z",
        "metrics": {
          "reactions": 0,
          "comments": 9
        },
        "labels": [],
        "author": "SamarthBagga",
        "state": "open",
        "assignees": [
          "machine424"
        ]
      },
      {
        "id": "github:prometheus/prometheus:pull_request:17852",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "[BugFix]promql: Reject offset/@ modifiers immediately before subquery range",
        "text": "### Problem The PromQL parser allowed invalid syntax like: ```promql metric offset 5m[2m:10s] # Should error, but was accepted metric @ 123[2m:10s] # Should error, but was accepted ``` While correctly rejecting the same pattern for regular range selectors: ```promql metric offset 5m[2m] # Correctly rejected ``` ### Solution Inline a presence check in both `subquery_expr` grammar rules (same approach as `matrix_selector`) so that offset/@ modifiers on the expression under `$1` are rejected before a subquery range, independent of whitespace. This covers VectorSelector, MatrixSelector, and SubqueryExpr, including offsets set via experimental duration expressions (`OriginalOffsetExpr`). No helper is added in `parse.go`. Examples: - `metric offset 5m[2m:10s]` → **Error** - `metric offset 5m [2m:10s]` → **Error** (whitespace-insensitive, matching matrix_selector) - `metric[2m:10s] offset 5m` → **Valid** (modifier after the subquery) ### Testing - Added test cases covering VectorSelector, MatrixSelector, and SubqueryExpr - Tests both offset and @ modifiers, including spaced forms - Updated prior success cases that incorrectly accepted offset/@ before a subquery range - All parser and promqltest suites pass #### Which issue(s) does the PR fix: Fixes #17060 #### Does this PR introduce a user-facing change? ```release-notes [BUGFIX] PromQL: Reject offset and @ modifiers before subquery range selectors regardless of whitespace (e.g., `metric offset 5m[2m:10s]` and `metric offset 5m [2m:10s]`). Valid syntax places modifiers after the subquery (e.g., `metric[2m:10s] offset 5m`). ```",
        "url": "https://github.com/prometheus/prometheus/pull/17852",
        "createdAt": "2026-01-14T01:58:37Z",
        "updatedAt": "2026-08-13T03:10:18Z",
        "timestamp": "2026-08-13T03:10:18Z",
        "metrics": {
          "reactions": 0,
          "comments": 6
        },
        "labels": [],
        "author": "adity-a34",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:18606",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "model/textparse: implement OM2 scrape format",
        "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [FEATURE] scrape: Implement OM2.0 scrape format ``` ### What this PR does / why we need it: This PR introduces OpenMetrics2Parser from the [specifications](https://github.com/prometheus/OpenMetrics/blob/main/specification/OpenMetrics.md). The implementation is heavily inspired from the OM1 implementation. ## Benchstat Then benchstat are split into 3 categories: - AllTypes: for a generic /metric - CT: to check the created timestamp performance gain - Histogram: to check histograms performance gain ``` goos: linux goarch: amd64 pkg: github.com/prometheus/prometheus/model/textparse cpu: AMD Ryzen 7 3800X 8-Core Processor │ OM1 (old) │ OM2 (new) │ │ sec/op │ sec/op vs base │ ParseOM1VsOM2_AllTypes-16 597.3µ ± 3% 103.3µ ± 2% -82.70% (p=0.000 n=10) ParseOM1VsOM2_CT-16 111.81µ ± 2% 56.47µ ± 2% -49.49% (p=0.000 n=10) ParseOM1VsOM2_Histograms-16 944.5µ ± 2% 113.5µ ± 2% -87.98% (p=0.000 n=10) geomean 398.1µ 87.16µ -78.10% │ OM1 (old) │ OM2 (new) │ │ B/op │ B/op vs base │ ParseOM1VsOM2_AllTypes-16 28.10Ki ± 0% 17.91Ki ± 0% -36.24% (p=0.000 n=10) ParseOM1VsOM2_CT-16 14.00Ki ± 0% 11.54Ki ± 0% -17.53% (p=0.000 n=10) ParseOM1VsOM2_Histograms-16 39.22Ki ± 0% 24.01Ki ± 0% -38.79% (p=0.000 n=10) geomean 24.89Ki 17.06Ki -31.47% │ OM1 (old) │ OM2 (new) │ │ allocs/op │ allocs/op vs base │ ParseOM1VsOM2_AllTypes-16 794.0 ± 0% 437.0 ± 0% -44.96% (p=0.000 n=10) ParseOM1VsOM2_CT-16 409.0 ± 0% 242.0 ± 0% -40.83% (p=0.000 n=10) ParseOM1VsOM2_Histograms-16 935.0 ± 0% 533.0 ± 0% -42.99% (p=0.000 n=10) geomean 672.1 383.4 -42.95% ```",
        "url": "https://github.com/prometheus/prometheus/pull/18606",
        "createdAt": "2026-04-29T10:01:08Z",
        "updatedAt": "2026-08-13T16:10:40Z",
        "timestamp": "2026-08-13T16:10:40Z",
        "metrics": {
          "reactions": 0,
          "comments": 6
        },
        "labels": [],
        "author": "rbizos",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:18757",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "fix(deps): update kubernetes go dependencies to v0.36.3",
        "text": "This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [k8s.io/api](https://redirect.github.com/kubernetes/api) | `v0.35.3` → `v0.36.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fapi/v0.36.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fapi/v0.35.3/v0.36.3?slim=true) | | [k8s.io/apimachinery](https://redirect.github.com/kubernetes/apimachinery) | `v0.35.3` → `v0.36.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fapimachinery/v0.36.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fapimachinery/v0.35.3/v0.36.3?slim=true) | | [k8s.io/client-go](https://redirect.github.com/kubernetes/client-go) | `v0.35.3` → `v0.36.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fclient-go/v0.36.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fclient-go/v0.35.3/v0.36.3?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/17691) for more information. ```release-notes NONE ``` --- ### Release Notes <details> <summary>kubernetes/api (k8s.io/api)</summary> ### [`v0.36.3`](https://redirect.github.com/kubernetes/api/compare/v0.36.2...v0.36.3) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.36.2...v0.36.3) ### [`v0.36.2`](https://redirect.github.com/kubernetes/api/compare/v0.36.1...v0.36.2) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.36.1...v0.36.2) ### [`v0.36.1`](https://redirect.github.com/kubernetes/api/compare/v0.36.0...v0.36.1) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.36.0...v0.36.1) ### [`v0.36.0`](https://redirect.github.com/kubernetes/api/compare/v0.35.4...v0.36.0) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.7...v0.36.0) ### [`v0.35.7`](https://redirect.github.com/kubernetes/api/compare/v0.35.6...v0.35.7) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.6...v0.35.7) ### [`v0.35.6`](https://redirect.github.com/kubernetes/api/compare/v0.35.5...v0.35.6) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.5...v0.35.6) ### [`v0.35.5`](https://redirect.github.com/kubernetes/api/compare/v0.35.4...v0.35.5) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.4...v0.35.5) ### [`v0.35.4`](https://redirect.github.com/kubernetes/api/compare/v0.35.3...v0.35.4) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.3...v0.35.4) </details> <details> <summary>kubernetes/apimachinery (k8s.io/apimachinery)</summary> ### [`v0.36.3`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.2...v0.36.3) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.2...v0.36.3) ### [`v0.36.2`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.1...v0.36.2) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.1...v0.36.2) ### [`v0.36.1`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.0...v0.36.1) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.0...v0.36.1) ### [`v0.36.0`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.4...v0.36.0) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.7...v0.36.0) ### [`v0.35.7`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.6...v0.35.7) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.6...v0.35.7) ### [`v0.35.6`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.5...v0.35.6) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.5...v0.35.6) ### [`v0.35.5`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.4...v0.35.5) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.4...v0.35.5) ### [`v0.35.4`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.3...v0.35.4) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.3...v0.35.4) </details> <details> <summary>kubernetes/client-go (k8s.io/client-go)</summary> ### [`v0.36.3`](https://redirect.github.com/kubernetes/client-go/compare/v0.36.2...v0.36.3) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.36.2...v0.36.3) ### [`v0.36.2`](https://redirect.github.com/kubernetes/client-go/compare/v0.36.1...v0.36.2) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.36.1...v0.36.2) ### [`v0.36.1`](https://redirect.github.com/kubernetes/client-go/compare/v0.36.0...v0.36.1) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.36.0...v0.36.1) ### [`v0.36.0`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.4...v0.36.0) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.7...v0.36.0) ### [`v0.35.7`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.6...v0.35.7) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.6...v0.35.7) ### [`v0.35.6`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.5...v0.35.6) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.5...v0.35.6) ### [`v0.35.5`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.4...v0.35.5) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.4...v0.35.5) ### [`v0.35.4`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.3...v0.35.4) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.3...v0.35.4) </details> --- ### Configuration 📅 **Schedule**: (in timezone UTC) - Branch creation - On day 7 and 21 of the month (`* * 7,21 * *`) - 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 these updates 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/prometheus/prometheus). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xODUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjI0LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->",
        "url": "https://github.com/prometheus/prometheus/pull/18757",
        "createdAt": "2026-05-21T07:09:02Z",
        "updatedAt": "2026-08-13T08:18:32Z",
        "timestamp": "2026-08-13T08:18:32Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "renovate[bot]",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19180",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "discovery/aws: paginate Lightsail GetInstances so all instances are discovered",
        "text": "#### Which issue(s) does the PR fix: There is no dedicated tracking issue for this bug. (The only open Lightsail issue, #17395, is a request to add unit tests, not this pagination bug.) `GetInstances` is a paginated Lightsail API, but the Lightsail client adapter called it exactly once and never followed the returned `NextPageToken`, so on any Lightsail account whose instance list spans more than one API page, every instance beyond the first page was silently dropped from the discovered target set. This change makes the client adapter request each `GetInstances` page in sequence, advancing `PageToken` with the response `NextPageToken`, combining the instances, and stopping when the token is `nil`. This mirrors the manual pagination already used for the other paginated AWS SD list operations in this package (`ecs`, `msk`, `elasticache`, `rds`); unlike EC2, the Lightsail service package ships no `GetInstancesPaginator`, so the caller has to request each page itself. The existing `AuthFailure` / `UnauthorizedOperation` handling is preserved. No configuration or public API changes. A unit test (`discovery/aws/lightsail_test.go`) returns two pages (page one carries a next page token, page two does not) and asserts that both requests are made with the correct page token and that the adapter combines instances from both pages. Without the fix the test fails because only the first page is fetched. #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] Discovery: Paginate AWS Lightsail service discovery so more than one page of instances is discovered. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19180",
        "createdAt": "2026-07-14T06:47:09Z",
        "updatedAt": "2026-08-13T07:24:25Z",
        "timestamp": "2026-08-13T07:24:25Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "anxkhn",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19200",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "storage: add OriginalLabelsHash() method to SeriesSet",
        "text": "Add a way to capture the original hash of labels that is \"out of bound\" of the labels model. This is because even with the best encoding schemes like base 91 storing a hash is wasteful. Also, comparing strings is much slower than comparing uint64s. #### Which issue(s) does the PR fix: NA #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [CHANGE] Add OriginalLabelsHash() uint64 method to storage.SeriesSet interface ```",
        "url": "https://github.com/prometheus/prometheus/pull/19200",
        "createdAt": "2026-07-15T08:11:24Z",
        "updatedAt": "2026-08-13T06:25:16Z",
        "timestamp": "2026-08-13T06:25:16Z",
        "metrics": {
          "reactions": 0,
          "comments": 2
        },
        "labels": [],
        "author": "GiedriusS",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19211",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "promql/parser: fix error position for duration division by zero",
        "text": "Fixes #19206 **What this PR does / why we need it**: This PR fixes an issue where encountering a division or modulo by zero (or an out of range) inside a duration expression correctly evaluates to a dummy `NumberLiteral{Val: 0}` to raise an error, but was failing to capture the `PosRange` of the evaluated expression. Because it lacked a positional range, it defaulted to `0:0`. As it bubbled up to the positive duration check, the parser emitted the `duration must be greater than 0` error at the incorrect `0:0` position. This modifies the duration expression error evaluations in `generated_parser.y` to capture the position correctly using `mergeRanges`, and updates the assertions in `parse_test.go` to match the correct positional boundaries. ```release-notes [BUGFIX] promql/parser: Fix incorrect error position when duration operations result in modulo/division by zero or out of range. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19211",
        "createdAt": "2026-07-15T18:37:38Z",
        "updatedAt": "2026-08-13T03:10:01Z",
        "timestamp": "2026-08-13T03:10:01Z",
        "metrics": {
          "reactions": 0,
          "comments": 6
        },
        "labels": [],
        "author": "oindrilakha12-ui",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19216",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "tsdb: fix OOO chunk ID overflow via modular wrapping",
        "text": "#### Which issue(s) does the PR fix: Ref: https://github.com/grafana/mimir/issues/4541 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] TSDB: Fix out-of-order chunk ID overflow by wrapping `firstOOOChunkID` modulo 2^23 instead of growing unbounded. ``` ## Summary Fix unbounded growth of `firstOOOChunkID` in the OOO chunk path. When a series accumulates enough OOO chunk truncation cycles, the counter eventually overflows the 23-bit ID space, causing a panic in `NewHeadChunkRef` and query failures from index-out-of-range in `oooChunk`. The fix applies modular arithmetic (bitmask wrapping) at the three sites that produce or consume OOO chunk IDs: - `oooHeadChunkID()`: mask the packed position to 23 bits before setting the OOO flag - `oooChunk()`: use modular subtraction (`& (oooChunkIDMask - 1)`) instead of signed subtraction to recover the slice index - `truncateChunksBefore()`: wrap `firstOOOChunkID` with `& (oooChunkIDMask - 1)` after incrementing ### Context The existing guard in `mmapCurrentOOOHeadChunk` caps the number of *active* OOO chunks per series at `oooChunkIDMask - 1`, but it does not prevent `firstOOOChunkID` from growing without bound across repeated truncation cycles. Aliasing safety across the wrap boundary is guaranteed by the OOO isolation mechanism (`oooIsolationState`), which prevents truncation of chunks while a reader holds a reference. A design document with full correctness reasoning, locking invariant diagrams, and the test plan is available here: https://gist.github.com/periklis/f6bbcdd9cdff32a8fbb36f8d09f412d8",
        "url": "https://github.com/prometheus/prometheus/pull/19216",
        "timestamp": "2026-08-12T13:08:21Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "periklis",
        "assignees": [],
        "change": "new"
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19274",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "docs: document NaN behaviour of clamp_max() and clamp_min()",
        "text": "#### Which issue(s) does the PR fix: Fixes #19273 #### What this PR does: `clamp()` documents that float samples come back as `NaN` when either bound is `NaN`: > * Float samples are clamped to `NaN` if `min` or `max` is `NaN` `clamp_max()` and `clamp_min()` route through the same `clamp()` helper in `promql/functions.go`, so they behave the same way, but neither documents it and neither has a test pinning it. `functions.test` covers `clamp(test_clamp, 0, NaN)` and `clamp(test_clamp, NaN, 0)` but not the single-bound variants. So this is docs plus test coverage for existing behaviour, no functional change: * add the special case to both function docs * add the two missing cases next to the existing `clamp()` NaN coverage * regenerate `functionDocs.tsx`, since `docs/querying/functions.md` is the source for it The regeneration is in its own commit so the generated file is easy to skip while reviewing. #### Test plan ``` go test ./promql/ -run TestEvaluations ok github.com/prometheus/prometheus/promql ``` Both new cases execute (`functions.test` lines 652 and 657). I checked they aren't passing vacuously by temporarily changing an expected value to a number, which fails as it should; worth doing here since `NaN` comparisons can pass for the wrong reason. ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19274",
        "createdAt": "2026-07-27T03:09:52Z",
        "updatedAt": "2026-08-12T14:04:10Z",
        "timestamp": "2026-08-12T14:04:10Z",
        "metrics": {
          "reactions": 0,
          "comments": 7
        },
        "labels": [],
        "author": "om7057",
        "state": "open",
        "assignees": [],
        "change": "updated"
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19286",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "TSDB: improve isolation performance",
        "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> isolation holds same data twice, once as a map (appendsOpen) and once as a linked list (appendsOpenList). It seems that the only reason why we have two is that the map allows us to call closeAppend with the ID and get the actual appender via a single lookup, without having to walk the entire linked list looking for it. But there seems to be an easier way - just pass in the appender to closeAppend() and avoid the need for any lookup at all. This change removes appendsOpen map by refactoring the code to pass in the pointer to appender we're closing. It requires that HEAD appender keeps the pointer, rather than just the ID, which might have been seen as a better separation of concerns, but passing only IDs around comes at a cost of needing a map or having slow lookups. Benchmarks (new is all commits from this branch, old is this branch without last commit): ```text goos: linux goarch: amd64 pkg: github.com/prometheus/prometheus/tsdb cpu: 13th Gen Intel(R) Core(TM) i7-13800H │ main.txt │ new.txt │ │ sec/op │ sec/op vs base │ Isolation/10-20 393.0n ± 8% 347.4n ± 4% -11.62% (p=0.000 n=10) Isolation/100-20 434.3n ± 15% 495.1n ± 5% +14.01% (p=0.009 n=10) Isolation/1000-20 573.5n ± 22% 515.4n ± 4% -10.13% (p=0.000 n=10) Isolation/10000-20 557.2n ± 36% 286.5n ± 82% -48.59% (p=0.023 n=10) IsolationWithState/10-20 798.2n ± 3% 568.5n ± 15% -28.78% (p=0.000 n=10) IsolationWithState/100-20 645.5n ± 6% 516.8n ± 3% -19.94% (p=0.000 n=10) IsolationWithState/1000-20 958.2n ± 8% 643.4n ± 7% -32.85% (p=0.000 n=10) IsolationWithState/10000-20 1763.5n ± 10% 687.6n ± 3% -61.01% (p=0.000 n=10) geomean 683.2n 489.6n -28.34% │ main.txt │ new.txt │ │ B/op │ B/op vs base │ Isolation/10-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/100-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/1000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/10000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/10-20 56.000 ± 0% 5.000 ± 0% -91.07% (p=0.000 n=10) IsolationWithState/100-20 49.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10) IsolationWithState/1000-20 445.0 ± 3% 0.0 ± 0% -100.00% (p=0.000 n=10) IsolationWithState/10000-20 2923.500 ± 0% 1.000 ± 0% -99.97% (p=0.000 n=10) geomean ² ? ² ³ ¹ all samples are equal ² summaries must be >0 to compute geomean ³ ratios must be >0 to compute geomean │ main.txt │ new.txt │ │ allocs/op │ allocs/op vs base │ Isolation/10-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/100-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/1000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/10000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/10-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/100-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/1000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/10000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ geomean ² +0.00% ² ¹ all samples are equal ² summaries must be >0 to compute geomean ``` #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [PERF] TSDB: improve isolation performance ```",
        "url": "https://github.com/prometheus/prometheus/pull/19286",
        "createdAt": "2026-07-28T13:48:41Z",
        "updatedAt": "2026-08-13T12:46:48Z",
        "timestamp": "2026-08-13T12:46:48Z",
        "metrics": {
          "reactions": 0,
          "comments": 10
        },
        "labels": [
          "prombench"
        ],
        "author": "prymitive",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19328",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "scrape: keep staleness tracking in sync when the series ref changes",
        "text": "Follow up on #19325. Staleness is tracked in `scrapeCache.seriesCur`/`seriesPrev`, both keyed by `storage.SeriesRef`. When the storage hands out a new reference for a series it already gave one for (e.g. it was garbage collected and had to be recreated), the scrape loop updates the cached reference and tracks the current scrape under the new one, while the previous scrape is still tracked under the old one. The old reference is then missing from the current scrape, so `forEachStale` reports the series as stale even though the target still exposes it. The stale marker is appended for `ce.ref`, i.e. for the *new*, live reference, at the same timestamp as the sample of this scrape. `headAppender.Commit` writes the WAL before applying samples to the head, so while the head itself drops the marker as a duplicate, it is already persisted: ``` StaleNaN append at same t returned err=<nil> WAL sample: ref=1 t=1000 v=1 stale=false WAL sample: ref=1 t=1000 v=NaN stale=true ``` Remote write and agent mode read the WAL, so they ship the marker downstream and the series ends there until the next scrape. This affects appender v2 since the reference was first written back to the cache, and appender v1 since #19325 made it consistent with v2. v2 is what the Prometheus binary runs today (`cmd/prometheus/main.go` passes `nil, fanoutStorage` to `scrape.NewManager`), so the fix is done for both loops. `scrapeCache.updateRef` now re-keys the staleness tracking to the new reference, and both scrape loops go through it. It deliberately *moves* the tracking instead of dropping it: dropping it would suppress the stale marker of a series that is still exposed but stopped being tracked for another reason in the same scrape, which would make staleness depend on whether the reference happened to change. The one case where that is observable is a series that starts carrying an explicit timestamp, which the last two test cases pin down. ### Tests `TestScrapeLoopCacheRefUpdatedOnChange` from #19325 is reworked into the table driven `TestScrapeLoopSeriesRefChange`, which drives a sequence of scrapes and asserts on the samples the scrape loop appends, not only on the cached reference. It reuses the `teststorage.Appendable` mock with an injected reference rather than a purpose built appendable, which is what makes the stale marker visible. All cases run against both scrape loops: | case | before | after | | --- | --- | --- | | reference stays the same | pass | pass | | reference changes while the series is still exposed | stale marker | pass | | reference changes on every scrape | stale marker per change | pass | | series stops being exposed after the reference changed | extra stale marker | pass | | explicit timestamp appears, reference stays the same | pass | pass | | explicit timestamp appears and the reference changes | pass | pass | The last two agree by construction, which is what keeps `updateRef` from turning into a plain delete. Commit 2 adds the test and fails on purpose, commit 3 fixes the bug. ```release-notes [BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19328",
        "createdAt": "2026-08-04T08:43:14Z",
        "updatedAt": "2026-08-13T14:28:19Z",
        "timestamp": "2026-08-13T14:28:19Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "krajorama",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19339",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "tsdb: make panic lock-release test OS agnostic",
        "text": "The old test forced a chunk write failure by removing the **_mmapped_** chunk directory which will not work on Windows, as directories with open files cannot be deleted. This change instead injects a rogue chunk segment with a higher sequence number, causing the next chunk write to fail through the same code path in an OS-independent way. This allows the test to run on Windows while exercising the same panic and lock-release behavior. ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19339",
        "createdAt": "2026-08-05T17:24:40Z",
        "updatedAt": "2026-08-13T08:02:43Z",
        "timestamp": "2026-08-13T08:02:43Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "JustDaile",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19340",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "cmd/prometheus: OS agnostic tests",
        "text": "Allows TestDocumentation to run on windows. The two issues preventing this before were; 1. The test binary name differs between platforms. On non-Windows platforms it is _**prometheus.test**_, while on Windows it is _**prometheus.test.exe**_. Added a platform-specific check to handle the .exe suffix. 2. The loaded _expectedContext_ contained Windows-style line endings (\\r\\n), causing it to not match the expected prometheus.md content. Replaced the line endings before comparison. This could potentially be refactored in the future to avoid platform-specific handling on non-Windows systems. TestFeatureFlagsDocumented also failed on Windows due to the regex requiring exact line anchoring. Normalizing Windows-style line endings resolves the mismatch and allows the existing regex to work correctly. ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19340",
        "createdAt": "2026-08-05T20:26:56Z",
        "updatedAt": "2026-08-12T22:32:09Z",
        "timestamp": "2026-08-12T22:32:09Z",
        "metrics": {
          "reactions": 0,
          "comments": 2
        },
        "labels": [],
        "author": "JustDaile",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19341",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "cmd/prometheus: fix flaky TestRuntimeGOGCConfig",
        "text": "TL;DR; I saw TestRuntimeGOGCConfig fail in a CI. At first I suspected that it cannot be run in parallel due to environment use, but it's only setting sub process env, so that wasn't it. The issue is that it's not waiting long enough for the process, which can take it's time in CI. LLM also noticed another bug with developer settings leaking into the test. Both fixed in this PR. LLM: `TestRuntimeGOGCConfig` gave the spawned Prometheus 5 seconds to serve `/metrics`, the shortest deadline in the package. CI runs this package as `go test --tags=slicelabels -race ./cmd/prometheus`, so both the test binary and the Prometheus processes it spawns in parallel are race-instrumented, and 5 seconds is not always enough to get as far as creating the web listener. Seen on `main`: ``` --- FAIL: TestRuntimeGOGCConfig/empty_config_file_with_GOGC_env_var_set (5.07s) reload_test.go:194: ... msg=\"Starting Prometheus Server\" ... reload_test.go:194: ... msg=\"operational information\" ... main_test.go:918: Error: Condition never satisfied Test: TestRuntimeGOGCConfig/empty_config_file_with_GOGC_env_var_set ``` The captured log stops right after `operational information`, i.e. the process was alive but had not yet reached `webHandler.Listeners()`. ### Changes **Wait for readiness through one helper.** The package had four copies of the same readiness poll with three different deadlines (5s, 5s, 10s, `startupTime`) and two different endpoints. They are replaced by a single `waitForPrometheusReady` with a more generous deadline. `startupTime` could not simply be raised: seven of its eight uses are `case <-time.After(startupTime)` in a select meaning \"if the process is still alive after this long it started successfully, now kill it\", so raising it would add that time to those tests on the success path. **Wait on `/-/ready` rather than `/metrics`.** This closes a second race in `TestRuntimeGOGCConfig` that is independent of the timeout: `/metrics` is served before the initial configuration is applied, so `go_gc_gogc_percent` could still hold the default when first scraped. `/-/ready` only flips after `<-dbOpen` and a successful `reloadConfig`. **Drop an inherited `GOGC` from the spawned process's environment.** The test built the child environment from `os.Environ()`, so a `GOGC` set in the environment leaked into the cases that expect the default or the configured value: ``` $ GOGC=42 go test -run TestRuntimeGOGCConfig ./cmd/prometheus/ --- FAIL: TestRuntimeGOGCConfig/empty_config_file (0.54s) expected: 75 actual : 42 --- FAIL: TestRuntimeGOGCConfig/incomplete_runtime_block (0.58s) expected: 75 actual : 42 ``` That passes with this change. ### Testing `go test --tags=slicelabels -race -run 'TestRuntimeGOGCConfig|TestFeatures|TestAutoReloadConfig|TestRetentionPercentage' ./cmd/prometheus/` passes, as does the run with `GOGC=42` set in the environment. ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19341",
        "createdAt": "2026-08-06T07:58:55Z",
        "updatedAt": "2026-08-13T08:00:11Z",
        "timestamp": "2026-08-13T08:00:11Z",
        "metrics": {
          "reactions": 0,
          "comments": 2
        },
        "labels": [],
        "author": "krajorama",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19370",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "config: fix windows config tests",
        "text": "PR addresses two issues in within `config/config_test.go` and `config/config_windows_test.go` in two separate commits. 1. `DefaultOTLPConfig` was missing from the `ruleFilesExpectedConf` which caused `TestLoadConfigRuleFilesAbsolutePath` to fail on **Windows**. 2. `filepath.FromSlash` is used extensively to handle platform pathing differences, but was missing in various places. This caused several tests to fail due to mismatches in the expected and actual config. ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19370",
        "createdAt": "2026-08-08T11:10:36Z",
        "updatedAt": "2026-08-12T22:30:17Z",
        "timestamp": "2026-08-12T22:30:17Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "JustDaile",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19373",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "docs: Add troubleshooting section with common issues and solutions",
        "text": "## Changes Adds a Troubleshooting section covering: - Common scraping issues and fixes - High memory usage solutions - Alert rule debugging - Useful links to official docs This helps new users debug common problems without searching through issues.",
        "url": "https://github.com/prometheus/prometheus/pull/19373",
        "createdAt": "2026-08-08T18:01:53Z",
        "updatedAt": "2026-08-13T08:28:49Z",
        "timestamp": "2026-08-13T08:28:49Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "Ankitavasudev",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19375",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "fix(discovery/aws): guard nil Placement and ImageId in EC2 discovery",
        "text": "## Summary Fixes #19374 — EC2 service discovery panics when `DescribeInstances` returns instances with a nil `Placement` field (or nil `ImageId`). `discovery/aws/ec2.go` refresh() dereferences `inst.Placement.AvailabilityZone` and `inst.ImageId` with no nil guard. When either is nil, this panics and crashes the entire Prometheus process (there is no `recover()` in `discovery/`). ## Changes - Guard `ec2LabelAMI` behind `inst.ImageId != nil` - Guard `ec2LabelAZ` / `ec2LabelAZID` behind `inst.Placement != nil && inst.Placement.AvailabilityZone != nil` This mirrors the guard pattern already used for every other optional field in this file (e.g. `if inst.PublicIpAddress != nil`), and the recently-fixed MSK case (#19184). ## Testing - `go build ./discovery/aws/...` passes - Existing tests in `discovery/aws/` pass",
        "url": "https://github.com/prometheus/prometheus/pull/19375",
        "createdAt": "2026-08-09T08:25:33Z",
        "updatedAt": "2026-08-13T01:08:11Z",
        "timestamp": "2026-08-13T01:08:11Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "waterWang",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19377",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "feat: add metric analyzer utilities for Prometheus metrics analysis",
        "text": "## What this PR does Adds MetricAnalyzer utility for analyzing Prometheus metrics. ## Changes - metric_analyzer.go: MetricAnalyzer with GetAverage, GetMax, GetMin, GetTrend, DetectAnomalies, GetPercentile, GetSummary - metric_analyzer_test.go: 10 test functions ## Usage analyzer := promql.NewMetricAnalyzer() analyzer.AddMetric(cpu, 50, time.Now(), nil) fmt.Println(analyzer.GetSummary(cpu))",
        "url": "https://github.com/prometheus/prometheus/pull/19377",
        "createdAt": "2026-08-09T17:10:48Z",
        "updatedAt": "2026-08-13T01:07:56Z",
        "timestamp": "2026-08-13T01:07:56Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "Ankitavasudev",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19386",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "docker SD: add Image + ImageID to labels",
        "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: Fixes https://github.com/prometheus/prometheus/issues/19385 <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [FEATURE] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id` ```",
        "url": "https://github.com/prometheus/prometheus/pull/19386",
        "createdAt": "2026-08-10T13:00:33Z",
        "updatedAt": "2026-08-13T12:53:43Z",
        "timestamp": "2026-08-13T12:53:43Z",
        "metrics": {
          "reactions": 0,
          "comments": 2
        },
        "labels": [],
        "author": "Nexxurs",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19387",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "promql: safely derive info series evaluation time",
        "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> PR #19266 made `info()` evaluate info series using the `@` modifier or offset from its input. However, it derived that time from the first vector selector in the expression, which is only correct when every vector-producing path refers to the same effective time. For composite expressions, the first selector may be irrelevant or may not represent the whole input. For example: - In `info(scalar(foo @ 120) * metric)`, the scalar-only selector must not determine when `metric` is enriched. Reordering the operands should not change the result. - In `info(metric @ 120 or other_metric @ 480)`, there is no single timestamp that can correctly represent both vector branches. - A selector-free branch such as `vector(1)` must not inherit the historical timestamp of a sibling selector. This PR uses a selector reference for evaluating info series only when every vector-producing path is backed by a selector with the same effective reference time. Otherwise, `info()` remains step-dependent and evaluates enrichment at each query step. Equivalent references, such as `@ 180 offset 1m` and `@ 120`, remain eligible for step-invariant evaluation. The optional second argument to `info()` remains unwrapped because it is label-selector syntax rather than an evaluated vector. Tests cover scalar-only selectors, mixed and equivalent references, selector-free branches in either operand position, nested `info()` calls, and preprocessing behavior. Most of the large `engine_test.go` diff is mechanical indentation from grouping the preprocessing tests under a common parent test. Follow-up to #19266. #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> N/A #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp ```",
        "url": "https://github.com/prometheus/prometheus/pull/19387",
        "createdAt": "2026-08-10T13:24:25Z",
        "updatedAt": "2026-08-13T13:38:57Z",
        "timestamp": "2026-08-13T13:38:57Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [
          "kind/bug",
          "component/promql"
        ],
        "author": "aknuds1",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19390",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "config: promote retry_on_http_429 to GA",
        "text": "Fixes #19263 This PR promotes `retry_on_http_429` in `remote_write` configuration to GA while keeping default = false (leaving the default behavior change for a separate discussion/PR per maintainer feedback). ### Details - Removed experimental note for `retry_on_http_429` in documentation docs/configuration/configuration.md. - Maintained RetryOnRateLimit default as `false`. ```release-notes [FEATURE] remote_write: promote retry_on_http_429 option to GA. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19390",
        "createdAt": "2026-08-11T06:38:55Z",
        "updatedAt": "2026-08-13T08:52:14Z",
        "timestamp": "2026-08-13T08:52:14Z",
        "metrics": {
          "reactions": 0,
          "comments": 4
        },
        "labels": [],
        "author": "VedantMadane",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19396",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "discovery/aws: don't panic on ECS tasks with absent optional fields",
        "text": "ECS SD dereferences optional task fields without guarding them. Any task missing one panics the refresh goroutine and takes the process down instead of degrading a single target. `types.Task.Group`, `TaskArn`, `LastStatus`, `DesiredStatus`, `AvailabilityZone`, `ClusterArn`, `ClusterName` and `TaskDefinitionArn` are all optional — none carry the SDK's `This member is required.` marker. `Group` is dereferenced twice, including in the `strings.CutPrefix(*task.Group, \"service:\")` added by the recent service-lookup refactor, so a task with no group panics there. The ENI attachment loop is the one that fires first: it switches on `*detail.Name` and `*detail.Value`, and both members of `KeyValuePair` are optional. Changes: - Guard the eight optional fields in the label literal. - `aws.ToString(task.Group)` in the service-name check, and for the three `logger.Debug` sites — the idiom already used throughout `msk.go`. - Guard `*detail.Name` / `*detail.Value` in the ENI loop. Tests fail on main at `ecs.go:879` without the fix. `TestECSDiscoveryRefresh` builds `&ECSDiscovery{...}` directly rather than going through `NewECSDiscovery`, so `d.logger` is nil and any `Debug` call panics; the new cases set `logger: promslog.NewNopLogger()`, which is what the constructor substitutes anyway. Follow-up to #19324, same bug class. `elasticache.go` has it too and is ready as a separate PR. ```release-notes [BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19396",
        "createdAt": "2026-08-12T06:46:41Z",
        "updatedAt": "2026-08-13T08:15:22Z",
        "timestamp": "2026-08-13T08:15:22Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "r0h1tb",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19399",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "scrape: use a dedicated HTTP client per unix socket target",
        "text": "Unix socket scrape support passes the socket path to a shared HTTP client's `DialContext` via the request context. But the transport keys idle connections on scheme and `host:port` only, so two targets sharing the same `__address__` with different `__scrape_unix_socket__` paths can reuse each other's pooled connections and scrape the wrong endpoint. The same applies to a plain TCP target sharing that address. This gives each unix socket path its own scrape client, cached per scrape pool and rebuilt on reload. First commit adds a failing test exposing the mix-up, second one fixes it. <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19399",
        "createdAt": "2026-08-12T09:34:07Z",
        "updatedAt": "2026-08-13T10:14:27Z",
        "timestamp": "2026-08-13T10:14:27Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "roidelapluie",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19400",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "discovery/stackit: add support for postgres targets discovery",
        "text": "This PR extends the STACKIT service discovery (`stackit_sd_configs`) to support discovering STACKIT Postgres Flex instances alongside standard IaaS servers. This PR pretends to add more features started here https://github.com/prometheus/prometheus/pull/16401 . It introduces a new `role` configuration option (`server`, `postgres`, `all`, defaulting to `all`), enabling users to discover IaaS servers, Postgres databases, or both within a STACKIT project. This is tested and actually is being used right now. ### Key Changes - Refactored `server.go` into `client.go` to handle multiple STACKIT service endpoints (IaaS and Postgres Flex). - Added `role` field to `SDConfig` with YAML unmarshaling validation. - Implemented `getPostgresInstances` to query the STACKIT Postgres Flex API and dynamically build metric targets (`__address__`, `__metrics_path__`, and `__meta_stackit_*` labels). - Updated configuration documentation and scrape config examples. - Added comprehensive unit tests for Postgres discovery, role filtering, and YAML unmarshaling. #### Which issue(s) does the PR fix: N/A #### Release notes for end users ```release-notes [FEATURE] discovery/stackit: Add support for Postgres targets discovery.",
        "url": "https://github.com/prometheus/prometheus/pull/19400",
        "createdAt": "2026-08-12T10:49:48Z",
        "updatedAt": "2026-08-12T21:22:03Z",
        "timestamp": "2026-08-12T21:22:03Z",
        "metrics": {
          "reactions": 0,
          "comments": 2
        },
        "labels": [],
        "author": "Dlorite",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19401",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "tsdb: document that OOO chunk IDs are no longer monotonically increasing",
        "text": "Follow-up to #19216: the HeadChunkID doc still promised a monotonically increasing per-series number, which no longer holds for out-of-order chunk IDs now that they wrap modulo 2^23. Also spell out the \"much less than\" relation in the oooHeadChunkID comment, where << is easy to misread as a bit-shift. <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19401",
        "createdAt": "2026-08-12T13:34:22Z",
        "updatedAt": "2026-08-13T12:04:40Z",
        "timestamp": "2026-08-13T12:04:40Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "roidelapluie",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19402",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "[PREVIEW] storage/remote: combine exemplars and samples in same PRW v2 request",
        "text": "Fixes #17857 This PR ensures that samples, exemplars, and histograms belonging to the same series are grouped into the same `TimeSeries` message within a single Prometheus Remote Write v2 request. Previously, these were sent as separate `TimeSeries` messages, which could result in them being split across different batches or flush boundaries. ```release-notes [BUGFIX] Remote Write: Combine exemplars, samples, and histograms of the same series in the same PRW v2 request. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19402",
        "createdAt": "2026-08-12T13:47:41Z",
        "updatedAt": "2026-08-12T15:37:24Z",
        "timestamp": "2026-08-12T15:37:24Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "bwplotka",
        "state": "closed",
        "assignees": [],
        "change": "updated"
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19403",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "promql/parser: preserve parentheses around duration literals",
        "text": "#### Which issue(s) does the PR fix: Fixes #18770 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. ``` `paren_duration_expr` only set `Wrapped` on `*DurationExpr`, so a parenthesised `*NumberLiteral` (`foo offset (5)`, `foo[(5s)]`) was flattened by `Expr.String()`. This wraps a parenthesised number in a unary-plus `*DurationExpr` with `Wrapped: true`, matching how `+(5*2)` already survives. Unary `+(5)` / `-(5)` go through the same path. @krajorama @roidelapluie @vpranckaitis",
        "url": "https://github.com/prometheus/prometheus/pull/19403",
        "createdAt": "2026-08-13T01:35:12Z",
        "updatedAt": "2026-08-13T14:23:41Z",
        "timestamp": "2026-08-13T14:23:41Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "aamoghS",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19404",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "discovery/kubernetes: populate loadbalancer IP from status.ingress",
        "text": "#### Which issue(s) does the PR fix: Fixes #14398 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. ``` Kubernetes 1.24 dropped automatic `spec.loadBalancerIP`. Controllers (MetalLB, AKS, …) now only write IPs to `status.loadBalancer.ingress`, so the meta label was empty. This PR: - Prefers ingress IPs (comma-separated for dual-stack) - Falls back to `spec.loadBalancerIP` when status has no IPs - Leaves hostname-only ingress (EKS) for a follow-up, as discussed on the issue Related: #17136 (stalled on DCO). @machine424 @brancz @rexagod",
        "url": "https://github.com/prometheus/prometheus/pull/19404",
        "createdAt": "2026-08-13T01:35:17Z",
        "updatedAt": "2026-08-13T14:22:41Z",
        "timestamp": "2026-08-13T14:22:41Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "aamoghS",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19405",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "discovery/aws: don't panic on ElastiCache caches with absent optional fields",
        "text": "#### Which issue(s) does the PR fix: Follow-up to #19396 (same nil-deref class in AWS SD). #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] discovery/aws: Don't panic on ElastiCache caches or clusters with absent optional fields. ``` `addServerlessCacheTargets` / `addCacheClusterTargets` dereferenced `ARN`, `ServerlessCacheName`, `Status`, `Engine`, `CacheClusterId`, etc. without nil checks. A cache missing any of those panics the refresh goroutine and takes the process down. Optional fields now omit the label instead of dereferencing. Refresh also skips tag lookup when `ARN` is nil. @matt-gp @sysadmind",
        "url": "https://github.com/prometheus/prometheus/pull/19405",
        "createdAt": "2026-08-13T01:35:23Z",
        "updatedAt": "2026-08-13T14:22:41Z",
        "timestamp": "2026-08-13T14:22:41Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "aamoghS",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19406",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "promql/parser: reject offset expressions and @ start()/end() before range selectors",
        "text": "`matrix_selector` already rejects `foo offset 5m[5m]` and `foo @ 1234[5m]`, but it only looked at `OriginalOffset` and `Timestamp`. Duration-expression offsets and `@ start()` / `@ end()` live in `OriginalOffsetExpr` and `StartOrEnd`, so these still parsed: ```promql foo offset step()[5m] foo @ start()[5m] foo @ end()[5m] ``` The valid forms remain `foo[5m] offset step()` and `foo[5m] @ start()`. This is the range-selector counterpart of #17060 / #17852, which covers the same mistake on subquery selectors. I left subquery productions alone to avoid overlapping that PR; they still need a `StartOrEnd` check there (`foo @ start()[5m:1s]`). cc @roidelapluie @vpranckaitis @bboreham Related to #17060 #### Which issue(s) does the PR fix: Related to #17060 #### Release notes for end users (**ALL** commits must be considered). ```release-notes [BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19406",
        "createdAt": "2026-08-13T03:09:39Z",
        "updatedAt": "2026-08-13T08:43:32Z",
        "timestamp": "2026-08-13T08:43:32Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "aamoghS",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19407",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "discovery/file: wait for a matching snapshot instead of failing on empty updates",
        "text": "#18259 stopped tests from truncating SD files to zero bytes, but `requireUpdate` still treated the first snapshot with the expected *number* of groups as the result. File SD can emit empty groups (`[{\"targets\":[]},{\"targets\":[]}]`) before the file contents are visible, so `TestInvalidFileUpdate` and `TestUpdateFileWithPartialWrites` still flake. Wait until the groups match the expected snapshot (or time out). #18259 can stay; this is the remaining race in the test helper. cc @machine424 @bwplotka @krajorama Fixes #18269 #### Which issue(s) does the PR fix: Fixes #18269 #### Release notes for end users (**ALL** commits must be considered). ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19407",
        "createdAt": "2026-08-13T03:09:41Z",
        "updatedAt": "2026-08-13T14:23:24Z",
        "timestamp": "2026-08-13T14:23:24Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "aamoghS",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19408",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "docs: note that Kubernetes pod __address__ may omit the port",
        "text": "The generic relabel docs say `__address__` is always `<host>:<port>`. Kubernetes pod SD sets `__address__` to the pod IP with no port when a container declares none, so a port can be added via relabeling. That is already described under the `pod` role; this makes the relabel section match. cc @brancz @rexagod @machine424 Fixes #11678 #### Which issue(s) does the PR fix: Fixes #11678 #### Release notes for end users (**ALL** commits must be considered). ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19408",
        "createdAt": "2026-08-13T03:09:43Z",
        "updatedAt": "2026-08-13T09:38:50Z",
        "timestamp": "2026-08-13T09:38:50Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "aamoghS",
        "state": "closed",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19409",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "tsdb: avoid retaining oversized record buffers",
        "text": "Bounds the reusable TSDB record-buffer pool at 1 MB so unusually large OOO/WBL batches can be collected after commit. Buffers at or below the limit remain reusable. Adds a regression test for the retention limit and a benchmark covering both sides of the threshold. In six benchmark runs, the 1 MB case stayed at about 29.5 ns/op with zero allocations. For the oversized case, retained capacity dropped from 976.563 KiB to 1 KiB; a deliberately repeated oversized workload reallocates about 985 KiB/op, which is the intended memory/CPU tradeoff. #### Which issue(s) does the PR fix: Fixes #19397 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] TSDB: Avoid retaining oversized out-of-order record buffers after commit. ``` Validation: `go test ./...`, focused test x100, race-focused test x50, `golangci-lint run --timeout 4m ./tsdb/...`, and benchmark x6 with benchstat.",
        "url": "https://github.com/prometheus/prometheus/pull/19409",
        "createdAt": "2026-08-13T04:27:07Z",
        "updatedAt": "2026-08-13T04:27:08Z",
        "timestamp": "2026-08-13T04:27:08Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "Boulea7",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19410",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "Add more spans to tracing",
        "text": "I was trying to use tracing to debug some rules skipping evaluation and other random slowness but I find current set of spans not really giving me enough information. This adds a bunch more spans all over the place: - engine now shows a span per series selected from tsdb, so a query that's doing a ton of selects shows them all more clearly - rule evaluations now start with the group, so you can lookup a group run and clearly see if rules are running concurrently, which rules are slowing which others etc - there's a span for scheduling delay of rule evaluation, which helps to understand why a rule running time() returns lagging results from queries - if it gets scheduled late (because time() returns time of when it was suppose to run I think) - there are spans for appenders and commits, so it's clear when rules are blocked on isolation and writes - scrape is now broken down more so it's more clear where does all the time go <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations ```",
        "url": "https://github.com/prometheus/prometheus/pull/19410",
        "createdAt": "2026-08-13T11:31:32Z",
        "updatedAt": "2026-08-13T11:33:38Z",
        "timestamp": "2026-08-13T11:33:38Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "prymitive",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19411",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "Add a counter for created appenders",
        "text": "This helps us better understand how many appenders are created per second. There is already prometheus_tsdb_head_active_appenders but it's a gauge, so it only shows active ones. There's also prometheus_tsdb_head_samples_appended_total, but that counts samples. This new counter adds a different view - how many appenders are created per second, combined with prometheus_tsdb_head_samples_appended_total we get average samples per append. <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [ENHANCEMENT] TSDB: add prometheus_tsdb_head_appenders_created_total metric ```",
        "url": "https://github.com/prometheus/prometheus/pull/19411",
        "createdAt": "2026-08-13T12:58:13Z",
        "updatedAt": "2026-08-13T12:59:47Z",
        "timestamp": "2026-08-13T12:59:47Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "prymitive",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19412",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "tsdb: release oversized head-chunk cache for single-chunk series",
        "text": "Range-query and compaction readers cache collected head chunks for sequential access. When a reader moved from a series with more than `headChunksBufMaxCap` head chunks to a different series with zero or one head chunk, the direct-lookup fast path returned before applying the capacity policy. The reader then retained the oversized backing array and its chunk pointers until it closed or visited another multi-chunk series. Release the oversized cache on that series switch, resetting the fingerprint and slice together. Preserve the backing array for the same series so it can still be reused after mmap or truncation. The cache-cap regression now covers both multi-chunk and single-chunk destinations and verifies that caching can repopulate after the release. #### Which issue(s) does the PR fix: Follow-up to #19136. #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] TSDB: Avoid excess memory retention during range queries and head compaction after reading series with many in-memory chunks ```",
        "url": "https://github.com/prometheus/prometheus/pull/19412",
        "createdAt": "2026-08-13T13:17:14Z",
        "updatedAt": "2026-08-13T14:13:26Z",
        "timestamp": "2026-08-13T14:13:26Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [
          "kind/bug",
          "component/tsdb"
        ],
        "author": "aknuds1",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19413",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "promql: preserve name-dropping through the info function",
        "text": "Previously, the info function did not properly implement delayed name removal, and did not propagate the `dropName` flag properly. This PR makes the info function behave more consistently with other functions like `label_replace` with respect to delayed name removal. #### Which issue(s) does the PR fix: N/A Problem found in https://github.com/prometheus/prometheus/pull/19387 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. ```",
        "url": "https://github.com/prometheus/prometheus/pull/19413",
        "createdAt": "2026-08-13T14:02:16Z",
        "updatedAt": "2026-08-13T14:02:17Z",
        "timestamp": "2026-08-13T14:02:17Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "zenador",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19414",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "Agent: replay WAL concurrently",
        "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [PERF] Agent: replay WAL concurrently ```",
        "url": "https://github.com/prometheus/prometheus/pull/19414",
        "createdAt": "2026-08-13T16:06:54Z",
        "updatedAt": "2026-08-13T16:21:00Z",
        "timestamp": "2026-08-13T16:21:00Z",
        "metrics": {
          "reactions": 0,
          "comments": 0
        },
        "labels": [],
        "author": "prymitive",
        "state": "open",
        "assignees": []
      },
      {
        "id": "github:prometheus/prometheus:pull_request:19415",
        "source": "github",
        "group": "observability",
        "project": "prometheus/prometheus",
        "kind": "pull_request",
        "title": "Enforce GitHub Action security across all repositories in the Prometheus org",
        "text": "#### Which issue(s) does the PR fix: This PR adds [Zizmor](https://github.com/zizmorcore/zizmor) for GitHub Actions static analysis and also add the workflow to the repo_sync automation, to ensure the workflow is added to all repositories in the Prometheus and Prometheus-community organizations. #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes NONE ```",
        "url": "https://github.com/prometheus/prometheus/pull/19415",
        "createdAt": "2026-08-13T16:53:10Z",
        "updatedAt": "2026-08-13T17:15:44Z",
        "timestamp": "2026-08-13T17:15:44Z",
        "metrics": {
          "reactions": 0,
          "comments": 1
        },
        "labels": [],
        "author": "ArthurSens",
        "state": "open",
        "assignees": []
      }
    ],
    "events": [
      {
        "id": "event:426e9f5fe43249b1a4c3",
        "signalId": "github:prometheus/prometheus:pull_request:19387",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19387",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "promql: safely derive info series evaluation time",
          "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> PR #19266 made `info()` evaluate info series using the `@` modifier or offset from its input. However, it derived that time from the first vector selector in the expression, which is only correct when every vector-producing path refers to the same effective time. For composite expressions, the first selector may be irrelevant or may not represent the whole input. For example: - In `info(scalar(foo @ 120) * metric)`, the scalar-only selector must not determine when `metric` is enriched. Reordering the operands should not change the result. - In `info(metric @ 120 or other_metric @ 480)`, there is no single timestamp that can correctly represent both vector branches. - A selector-free branch such as `vector(1)` must not inherit the historical timestamp of a sibling selector. This PR uses a selector reference for evaluating info series only when every vector-producing path is backed by a selector with the same effective reference time. Otherwise, `info()` remains step-dependent and evaluates enrichment at each query step. Equivalent references, such as `@ 180 offset 1m` and `@ 120`, remain eligible for step-invariant evaluation. The optional second argument to `info()` remains unwrapped because it is label-selector syntax rather than an evaluated vector. Tests cover scalar-only selectors, mixed and equivalent references, selector-free branches in either operand position, nested `info()` calls, and preprocessing behavior. Most of the large `engine_test.go` diff is mechanical indentation from grouping the preprocessing tests under a common parent test. Follow-up to #19266. #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> N/A #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [BUGFIX] PromQL: Fix `info()` enrichment for composite expressions with mixed `@`/offset references or selector-free vector branches, preventing metadata from being evaluated at an unrelated timestamp ```",
          "url": "https://github.com/prometheus/prometheus/pull/19387",
          "createdAt": "2026-08-10T13:24:25Z",
          "updatedAt": "2026-08-13T13:38:57Z",
          "timestamp": "2026-08-13T13:38:57Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [
            "kind/bug",
            "component/promql"
          ],
          "author": "aknuds1",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:6a1ca78f15a4e0999974",
        "signalId": "github:prometheus/prometheus:pull_request:19412",
        "event": "discovered",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19412",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "tsdb: release oversized head-chunk cache for single-chunk series",
          "text": "Range-query and compaction readers cache collected head chunks for sequential access. When a reader moved from a series with more than `headChunksBufMaxCap` head chunks to a different series with zero or one head chunk, the direct-lookup fast path returned before applying the capacity policy. The reader then retained the oversized backing array and its chunk pointers until it closed or visited another multi-chunk series. Release the oversized cache on that series switch, resetting the fingerprint and slice together. Preserve the backing array for the same series so it can still be reused after mmap or truncation. The cache-cap regression now covers both multi-chunk and single-chunk destinations and verifies that caching can repopulate after the release. #### Which issue(s) does the PR fix: Follow-up to #19136. #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] TSDB: Avoid excess memory retention during range queries and head compaction after reading series with many in-memory chunks ```",
          "url": "https://github.com/prometheus/prometheus/pull/19412",
          "createdAt": "2026-08-13T13:17:14Z",
          "updatedAt": "2026-08-13T13:24:06Z",
          "timestamp": "2026-08-13T13:24:06Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [
            "kind/bug",
            "component/tsdb"
          ],
          "author": "aknuds1",
          "state": "open",
          "assignees": [],
          "change": "new"
        }
      },
      {
        "id": "event:bba3f19972b7f3e382ba",
        "signalId": "github:prometheus/prometheus:pull_request:19411",
        "event": "discovered",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19411",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "Add a counter for created appenders",
          "text": "This helps us better understand how many appenders are created per second. There is already prometheus_tsdb_head_active_appenders but it's a gauge, so it only shows active ones. There's also prometheus_tsdb_head_samples_appended_total, but that counts samples. This new counter adds a different view - how many appenders are created per second, combined with prometheus_tsdb_head_samples_appended_total we get average samples per append. <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [ENHANCEMENT] TSDB: add prometheus_tsdb_head_appenders_created_total metric ```",
          "url": "https://github.com/prometheus/prometheus/pull/19411",
          "createdAt": "2026-08-13T12:58:13Z",
          "updatedAt": "2026-08-13T12:59:47Z",
          "timestamp": "2026-08-13T12:59:47Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "prymitive",
          "state": "open",
          "assignees": [],
          "change": "new"
        }
      },
      {
        "id": "event:33ca61c65acd47e8e9c5",
        "signalId": "github:prometheus/prometheus:pull_request:19386",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19386",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "docker SD: add Image + ImageID to labels",
          "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: Fixes https://github.com/prometheus/prometheus/issues/19385 <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [FEATURE] Docker SD: Add labels `__meta_docker_container_image` and `__meta_docker_container_image_id` ```",
          "url": "https://github.com/prometheus/prometheus/pull/19386",
          "createdAt": "2026-08-10T13:00:33Z",
          "updatedAt": "2026-08-13T12:53:43Z",
          "timestamp": "2026-08-13T12:53:43Z",
          "metrics": {
            "reactions": 0,
            "comments": 2
          },
          "labels": [],
          "author": "Nexxurs",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:e112c4474c5ee9b0ad91",
        "signalId": "github:prometheus/prometheus:pull_request:19286",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19286",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "TSDB: improve isolation performance",
          "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> isolation holds same data twice, once as a map (appendsOpen) and once as a linked list (appendsOpenList). It seems that the only reason why we have two is that the map allows us to call closeAppend with the ID and get the actual appender via a single lookup, without having to walk the entire linked list looking for it. But there seems to be an easier way - just pass in the appender to closeAppend() and avoid the need for any lookup at all. This change removes appendsOpen map by refactoring the code to pass in the pointer to appender we're closing. It requires that HEAD appender keeps the pointer, rather than just the ID, which might have been seen as a better separation of concerns, but passing only IDs around comes at a cost of needing a map or having slow lookups. Benchmarks (new is all commits from this branch, old is this branch without last commit): ```text goos: linux goarch: amd64 pkg: github.com/prometheus/prometheus/tsdb cpu: 13th Gen Intel(R) Core(TM) i7-13800H │ main.txt │ new.txt │ │ sec/op │ sec/op vs base │ Isolation/10-20 393.0n ± 8% 347.4n ± 4% -11.62% (p=0.000 n=10) Isolation/100-20 434.3n ± 15% 495.1n ± 5% +14.01% (p=0.009 n=10) Isolation/1000-20 573.5n ± 22% 515.4n ± 4% -10.13% (p=0.000 n=10) Isolation/10000-20 557.2n ± 36% 286.5n ± 82% -48.59% (p=0.023 n=10) IsolationWithState/10-20 798.2n ± 3% 568.5n ± 15% -28.78% (p=0.000 n=10) IsolationWithState/100-20 645.5n ± 6% 516.8n ± 3% -19.94% (p=0.000 n=10) IsolationWithState/1000-20 958.2n ± 8% 643.4n ± 7% -32.85% (p=0.000 n=10) IsolationWithState/10000-20 1763.5n ± 10% 687.6n ± 3% -61.01% (p=0.000 n=10) geomean 683.2n 489.6n -28.34% │ main.txt │ new.txt │ │ B/op │ B/op vs base │ Isolation/10-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/100-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/1000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/10000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/10-20 56.000 ± 0% 5.000 ± 0% -91.07% (p=0.000 n=10) IsolationWithState/100-20 49.00 ± 0% 0.00 ± 0% -100.00% (p=0.000 n=10) IsolationWithState/1000-20 445.0 ± 3% 0.0 ± 0% -100.00% (p=0.000 n=10) IsolationWithState/10000-20 2923.500 ± 0% 1.000 ± 0% -99.97% (p=0.000 n=10) geomean ² ? ² ³ ¹ all samples are equal ² summaries must be >0 to compute geomean ³ ratios must be >0 to compute geomean │ main.txt │ new.txt │ │ allocs/op │ allocs/op vs base │ Isolation/10-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/100-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/1000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ Isolation/10000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/10-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/100-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/1000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ IsolationWithState/10000-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹ geomean ² +0.00% ² ¹ all samples are equal ² summaries must be >0 to compute geomean ``` #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [PERF] TSDB: improve isolation performance ```",
          "url": "https://github.com/prometheus/prometheus/pull/19286",
          "createdAt": "2026-07-28T13:48:41Z",
          "updatedAt": "2026-08-13T12:46:48Z",
          "timestamp": "2026-08-13T12:46:48Z",
          "metrics": {
            "reactions": 0,
            "comments": 10
          },
          "labels": [
            "prombench"
          ],
          "author": "prymitive",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:f3aad45631d445108bad",
        "signalId": "github:prometheus/prometheus:issue:17691",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:issue:17691",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "Dependency Dashboard",
          "text": "This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more.<br>[View this repository on the Mend.io Web Portal](https://developer.mend.io/github/prometheus/prometheus). ## Repository Problems These problems occurred while renovating this repository. [View logs](https://developer.mend.io//github/prometheus/prometheus). - ⚠️ WARN: Package lookup failures ## Deprecations / Replacements > [!WARNING] The following dependencies are either deprecated or have replacements available. | Datasource | Package | Replacement PR? | |------------|------|--------------| | npm | [@babel/plugin-proposal-private-property-in-object](https://redirect.github.com/babel/babel-plugin-proposal-private-property-in-object) | ![Unavailable](https://img.shields.io/badge/unavailable-orange?style=flat-square) | | npm | [popper.js](https://redirect.github.com/FezVrasta/popper.js) | ![Unavailable](https://img.shields.io/badge/unavailable-orange?style=flat-square) | ## Awaiting Schedule The following updates are awaiting their schedule. To get an update now, click on a checkbox below. - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-nomad-api-digest -->fix(deps): update github.com/hashicorp/nomad/api digest to 84a74d9 - [ ] <!-- unschedule-branch=deps-update/github.com-prometheus-client_golang-exp-digest -->fix(deps): update github.com/prometheus/client_golang/exp digest to 0c5dccd - [ ] <!-- unschedule-branch=deps-update/google.golang.org-genproto-googleapis-api-digest -->fix(deps): update google.golang.org/genproto/googleapis/api digest to ec0a776 - [ ] <!-- unschedule-branch=deps-update/aws-go-dependencies -->fix(deps): update aws go dependencies (`github.com/aws/aws-sdk-go-v2`, `github.com/aws/aws-sdk-go-v2/config`, `github.com/aws/aws-sdk-go-v2/credentials`, `github.com/aws/aws-sdk-go-v2/feature/ec2/imds`, `github.com/aws/aws-sdk-go-v2/service/ec2`, `github.com/aws/aws-sdk-go-v2/service/ecs`, `github.com/aws/aws-sdk-go-v2/service/elasticache`, `github.com/aws/aws-sdk-go-v2/service/kafka`, `github.com/aws/aws-sdk-go-v2/service/lightsail`, `github.com/aws/aws-sdk-go-v2/service/rds`, `github.com/aws/aws-sdk-go-v2/service/sts`) - [ ] <!-- unschedule-branch=deps-update/google.golang.org-protobuf-1.x -->fix(deps): update module google.golang.org/protobuf to v1.36.12 - [ ] <!-- unschedule-branch=deps-update/enzyme-cheerio-1.x -->chore(deps): update dependency enzyme>cheerio to v1.2.0 - [ ] <!-- unschedule-branch=deps-update/mantine-ui -->chore(deps): update mantine ui (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`, `eslint-plugin-react-refresh`, `highlight.js`) - [ ] <!-- unschedule-branch=deps-update/modules -->chore(deps): update modules to v8.67.0 (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`) - [ ] <!-- unschedule-branch=deps-update/typescript-eslint-monorepo -->chore(deps): update typescript-eslint monorepo to v8.67.0 (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`) - [ ] <!-- unschedule-branch=deps-update/azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/azcore to v1.23.0 - [ ] <!-- unschedule-branch=deps-update/github.com-digitalocean-godo-1.x -->fix(deps): update module github.com/digitalocean/godo to v1.204.0 - [ ] <!-- unschedule-branch=deps-update/github.com-grpc-ecosystem-grpc-gateway-v2-2.x -->fix(deps): update module github.com/grpc-ecosystem/grpc-gateway/v2 to v2.30.0 - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-consul-api-1.x -->fix(deps): update module github.com/hashicorp/consul/api to v1.34.4 - [ ] <!-- unschedule-branch=deps-update/github.com-open-telemetry-opentelemetry-collector-contrib-processor-deltatocumulativeprocessor-0.x -->fix(deps): update module github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor to v0.158.0 - [ ] <!-- unschedule-branch=deps-update/github.com-oracle-oci-go-sdk-v65-65.x -->fix(deps): update module github.com/oracle/oci-go-sdk/v65 to v65.123.1 - [ ] <!-- unschedule-branch=deps-update/github.com-outscale-osc-sdk-go-v2-2.x -->fix(deps): update module github.com/outscale/osc-sdk-go/v2 to v2.35.0 - [ ] <!-- unschedule-branch=deps-update/github.com-prometheus-prometheus-0.x -->fix(deps): update module github.com/prometheus/prometheus to v0.313.2 - [ ] <!-- unschedule-branch=deps-update/golang.org-x-text-0.x -->fix(deps): update module golang.org/x/text to v0.41.0 - [ ] <!-- unschedule-branch=deps-update/google.golang.org-api-0.x -->fix(deps): update module google.golang.org/api to v0.293.0 - [ ] <!-- unschedule-branch=deps-update/google.golang.org-grpc-1.x -->fix(deps): update module google.golang.org/grpc to v1.83.0 - [ ] <!-- unschedule-branch=deps-update/opentelemetry-go-dependencies -->fix(deps): update opentelemetry go dependencies (`go.opentelemetry.io/collector/consumer`, `go.opentelemetry.io/collector/processor`, `go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace`, `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp`, `go.opentelemetry.io/otel`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`, `go.opentelemetry.io/otel/metric`, `go.opentelemetry.io/otel/sdk`, `go.opentelemetry.io/otel/trace`) - [ ] <!-- unschedule-branch=deps-update/actions-setup-go-7.x -->chore(deps): update actions/setup-go action to v7 - [ ] <!-- unschedule-branch=deps-update/actions-setup-node-7.x -->chore(deps): update actions/setup-node action to v7 - [ ] <!-- unschedule-branch=deps-update/actions-stale-11.x -->chore(deps): update actions/stale action to v11 - [ ] <!-- unschedule-branch=deps-update/major-30-jest-monorepo -->chore(deps): update dependency @types/jest to v30 - [ ] <!-- unschedule-branch=deps-update/vitejs-plugin-react-5.x -->chore(deps): update dependency @vitejs/plugin-react to v5 - [ ] <!-- unschedule-branch=deps-update/vitejs-plugin-react-6.x -->chore(deps): update dependency @vitejs/plugin-react to v6 - [ ] <!-- unschedule-branch=deps-update/major-9-eslint-monorepo -->chore(deps): update dependency eslint to v9 - [ ] <!-- unschedule-branch=deps-update/major-6-react-monorepo -->chore(deps): update dependency eslint-plugin-react-hooks to v6 - [ ] <!-- unschedule-branch=deps-update/major-7-react-monorepo -->chore(deps): update dependency eslint-plugin-react-hooks to v7 - [ ] <!-- unschedule-branch=deps-update/globals-17.x -->chore(deps): update dependency globals to v17 - [ ] <!-- unschedule-branch=deps-update/jest-fetch-mock-4.x -->chore(deps): update dependency jest-fetch-mock to v4 - [ ] <!-- unschedule-branch=deps-update/jsdom-26.x -->chore(deps): update dependency jsdom to v26 - [ ] <!-- unschedule-branch=deps-update/jsdom-27.x -->chore(deps): update dependency jsdom to v27 - [ ] <!-- unschedule-branch=deps-update/jsdom-28.x -->chore(deps): update dependency jsdom to v28 - [ ] <!-- unschedule-branch=deps-update/jsdom-29.x -->chore(deps): update dependency jsdom to v29 - [ ] <!-- unschedule-branch=deps-update/jsdom-30.x -->chore(deps): update dependency jsdom to v30 - [ ] <!-- unschedule-branch=deps-update/major-8-react-router-monorepo -->chore(deps): update dependency react-router to v8 - [ ] <!-- unschedule-branch=deps-update/sinon-20.x -->chore(deps): update dependency sinon to v20 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/sinon-21.x -->chore(deps): update dependency sinon to v21 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/sinon-22.x -->chore(deps): update dependency sinon to v22 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/typescript-6.x -->chore(deps): update dependency typescript to v6 - [ ] <!-- unschedule-branch=deps-update/typescript-7.x -->chore(deps): update dependency typescript to v7 - [ ] <!-- unschedule-branch=deps-update/vite-7.x -->chore(deps): update dependency vite to v7 - [ ] <!-- unschedule-branch=deps-update/vite-8.x -->chore(deps): update dependency vite to v8 - [ ] <!-- unschedule-branch=deps-update/major-4-vitest-monorepo -->chore(deps): update dependency vitest to v4 - [ ] <!-- unschedule-branch=deps-update/major-10-eslint-monorepo -->chore(deps): update eslint monorepo to v10 (`@eslint/js`, `eslint`) - [ ] <!-- unschedule-branch=deps-update/node-24.x -->chore(deps): update node.js to v24 (`node`, `@types/node`) - [ ] <!-- unschedule-branch=deps-update/major-6-azure-go-dependencies -->fix(deps): update azure go dependencies to v6 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-7-azure-go-dependencies -->fix(deps): update azure go dependencies to v7 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-8-azure-go-dependencies -->fix(deps): update azure go dependencies to v8 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-3-font-awesome -->fix(deps): update dependency @fortawesome/react-fontawesome to v3 - [ ] <!-- unschedule-branch=deps-update/major-7-testing-library-monorepo -->fix(deps): update dependency @testing-library/jest-dom to v7 - [ ] <!-- unschedule-branch=deps-update/bootstrap-5.x -->fix(deps): update dependency bootstrap to v5 - [ ] <!-- unschedule-branch=deps-update/http-proxy-middleware-4.x -->fix(deps): update dependency http-proxy-middleware to v4 - [ ] <!-- unschedule-branch=deps-update/jquery-4.x -->fix(deps): update dependency jquery to v4 (`jquery`, `@types/jquery`) - [ ] <!-- unschedule-branch=deps-update/react-infinite-scroll-component-7.x -->fix(deps): update dependency react-infinite-scroll-component to v7 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-8.x -->fix(deps): update dependency react-resize-detector to v8 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-9.x -->fix(deps): update dependency react-resize-detector to v9 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-10.x -->fix(deps): update dependency react-resize-detector to v10 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-11.x -->fix(deps): update dependency react-resize-detector to v11 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-12.x -->fix(deps): update dependency react-resize-detector to v12 - [ ] <!-- unschedule-branch=deps-update/reactstrap-9.x -->fix(deps): update dependency reactstrap to v9 - [ ] <!-- unschedule-branch=deps-update/major-7-font-awesome -->fix(deps): update font awesome to v7 (`@fortawesome/fontawesome-common-types`, `@fortawesome/fontawesome-svg-core`, `@fortawesome/free-solid-svg-icons`) - [ ] <!-- unschedule-branch=deps-update/major-5-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v5 - [ ] <!-- unschedule-branch=deps-update/major-9-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v9 - [ ] <!-- unschedule-branch=deps-update/major-10-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v10 - [ ] <!-- unschedule-branch=deps-update/github.com-cenkalti-backoff-v5-6.x -->fix(deps): update module github.com/cenkalti/backoff/v5 to v6 - [ ] <!-- unschedule-branch=deps-update/github.com-cenkalti-backoff-v5-7.x -->fix(deps): update module github.com/cenkalti/backoff/v5 to v7 - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-consul-api-2.x -->fix(deps): update module github.com/hashicorp/consul/api to v2 - [ ] <!-- unschedule-branch=deps-update/github.com-linode-linodego-2.x -->fix(deps): update module github.com/linode/linodego to v2 - [ ] <!-- unschedule-branch=deps-update/go.yaml.in-yaml-v2-3.x -->fix(deps): update module go.yaml.in/yaml/v2 to v3 - [ ] <!-- unschedule-branch=deps-update/major-2-kubernetes-go-dependencies -->fix(deps): update module k8s.io/klog to v2 - [ ] <!-- unschedule-branch=deps-update/major-19-react-monorepo -->fix(deps): update react monorepo to v19 (`@types/react`, `@types/react-dom`, `react`, `react-dom`) - [ ] <!-- create-all-awaiting-schedule-prs -->🔐 **Create all awaiting schedule PRs at once** 🔐 --- > [!WARNING] > Renovate failed to look up the following dependencies: `Failed to look up go package github.com/google/go-cmp: no-result`, `Failed to look up go package go.opentelemetry.io/collector/component: no-result`, `Failed to look up go package go.opentelemetry.io/collector/pdata: no-result`. > > Files affected: `go.mod` --- ## Open The following updates have all been created. To force a retry/rebase of any, click on a checkbox below. - [ ] <!-- rebase-branch=deps-update/kubernetes-go-dependencies -->[fix(deps): update kubernetes go dependencies to v0.36.3](../pull/18757) (`k8s.io/api`, `k8s.io/apimachinery`, `k8s.io/client-go`) ## PR Closed (Blocked) The following updates are blocked by an existing closed PR. To recreate the PR, click on a checkbox below. - [ ] <!-- recreate-branch=deps-update/github.com-prometheus-compliance-remotewrite-digest -->[fix(deps): update github.com/prometheus/compliance/remotewrite digest to 67b8327](../pull/19349) - [ ] <!-- recreate-branch=deps-update/quay.io-prometheus-golang-builder-1.x -->[chore(deps): update quay.io/prometheus/golang-builder docker tag to v1.26](../pull/18874) ## Detected Dependencies <details><summary>dockerfile (2)</summary> <blockquote> <details><summary>Dockerfile</summary> </details> <details><summary>Dockerfile.distroless</summary> </details> </blockquote> </details> <details><summary>github-actions (16)</summary> <blockquote> <details><summary>.github/workflows/approve-workflows.yml (1)</summary> - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` </details> <details><summary>.github/workflows/automerge-dependabot.yml (1)</summary> - `dependabot/fetch-metadata v3.1.0@25dd0e34f4fe68f24cc83900b1fe3fe149efef98` </details> <details><summary>.github/workflows/buf-lint.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `bufbuild/buf-setup-action v1.50.0@a47c93e0b1648d5651a065437926377d060baa99` - `bufbuild/buf-lint-action v1.1.1@06f9dd823d873146471cfaaf108a993fe00e5325` - `bufbuild/buf-breaking-action v1.1.4@c57b3d842a5c3f3b454756ef65305a50a587c5ba` </details> <details><summary>.github/workflows/buf.yml (5)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `bufbuild/buf-setup-action v1.50.0@a47c93e0b1648d5651a065437926377d060baa99` - `bufbuild/buf-lint-action v1.1.1@06f9dd823d873146471cfaaf108a993fe00e5325` - `bufbuild/buf-breaking-action v1.1.4@c57b3d842a5c3f3b454756ef65305a50a587c5ba` - `bufbuild/buf-push-action v1.2.0@a654ff18effe4641ebea4a4ce242c49800728459` </details> <details><summary>.github/workflows/check_release_notes.yml (1)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` </details> <details><summary>.github/workflows/ci.yml (51)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-node v6.5.0@249970729cb0ef3589644e2896645e5dc5ba9c38` → [Updates: `v7.0.0`] - `pnpm/action-setup v6.0.10@0977fd99725f1db4007ccb2928dbb4e90d06cc86` - `actions/cache v6.1.0@55cc8345863c7cc4c66a329aec7e433d2d1c52a9` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.25-base` → [Updates: `1.26-base`] - `quay.io/prometheus/golang-builder 1.26-base` - `go 1.26.x` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `go 1.26.x` - `pnpm >=11.0.0 <11.12.0 || >11.12.0 <12.0.0` </details> <details><summary>.github/workflows/codeql-analysis.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` </details> <details><summary>.github/workflows/container_description.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `christian-korneck/update-container-description-action v1@d36005551adeaba9698d8d67a296bd16fa91f8e8` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `christian-korneck/update-container-description-action v1@d36005551adeaba9698d8d67a296bd16fa91f8e8` </details> <details><summary>.github/workflows/fuzzing.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `actions/upload-artifact v7.0.1@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a` - `go 1.26.x` </details> <details><summary>.github/workflows/govulncheck.yml (1)</summary> - `golang/govulncheck-action master@032d45514ae346b1db93c04b0c90b841c370344f` </details> <details><summary>.github/workflows/lock.yml (1)</summary> - `dessant/lock-threads v6.0.2@89ae32b08ed1a541efecbab17912962a5e38981c` </details> <details><summary>.github/workflows/prombench.yml</summary> </details> <details><summary>.github/workflows/repo_sync.yml (1)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` </details> <details><summary>.github/workflows/scorecards.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `ossf/scorecard-action v2.4.4@2d1146689b8cda280b9bc96326124645441f03bc` - `actions/upload-artifact v7.0.1@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` </details> <details><summary>.github/workflows/stale.yml (1)</summary> - `actions/stale v10.4.0@1e223db275d687790206a7acac4d1a11bd6fe629` → [Updates: `v11.0.0`] </details> <details><summary>scripts/golangci-lint.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `go 1.26.x` </details> </blockquote> </details> <details><summary>gomod (4)</summary> <blockquote> <details><summary>compliance/go.mod (2)</summary> - `go 1.25.10` - `github.com/prometheus/compliance/remotewrite v0.0.0-20260223092825-818283e1171e@818283e1171e` → [Updates: `v0.0.0-20260223092825-818283e1171e`] </details> <details><summary>go.mod (109)</summary> - `go 1.25.10` - `github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0` → [Updates: `v1.23.0`] - `github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.0` - `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0` → [Updates: `v6.4.0`, `v7.3.0`, `v8.2.0`] - `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0` → [Updates: `v5.2.0`, `v6.2.0`, `v7.2.0`, `v8.0.0`, `v9.0.0`, `v10.0.0`] - `github.com/Code-Hex/go-generics-cache v1.5.1` - `github.com/KimMachineGun/automemlimit v0.7.5` - `github.com/alecthomas/kingpin/v2 v2.4.0` - `github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b@0f3dac36c52b` - `github.com/aws/aws-sdk-go-v2 v1.43.4` → [Updates: `v1.43.5`] - `github.com/aws/aws-sdk-go-v2/config v1.32.35` → [Updates: `v1.32.36`] - `github.com/aws/aws-sdk-go-v2/credentials v1.19.34` → [Updates: `v1.19.35`] - `github.com/aws/aws-sdk-go-v2/service/ec2 v1.321.0` → [Updates: `v1.321.1`] - `github.com/aws/aws-sdk-go-v2/service/ecs v1.90.0` → [Updates: `v1.90.1`] - `github.com/aws/aws-sdk-go-v2/service/elasticache v1.56.4` → [Updates: `v1.56.5`] - `github.com/aws/aws-sdk-go-v2/service/kafka v1.58.0` → [Updates: `v1.58.1`] - `github.com/aws/aws-sdk-go-v2/service/lightsail v1.58.4` → [Updates: `v1.58.5`] - `github.com/aws/aws-sdk-go-v2/service/rds v1.124.1` → [Updates: `v1.124.2`] - `github.com/aws/aws-sdk-go-v2/service/sts v1.45.4` → [Updates: `v1.45.5`] - `github.com/aws/smithy-go v1.27.7` - `github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3@fcc2c21820a3` - `github.com/cespare/xxhash/v2 v2.3.0` - `github.com/dennwc/varint v1.0.0` - `github.com/digitalocean/godo v1.201.0` → [Updates: `v1.204.0`] - `github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd@fad1cd13edbd` - `github.com/envoyproxy/go-control-plane/envoy v1.37.0` - `github.com/envoyproxy/protoc-gen-validate v1.3.3` - `github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb@2cd4dd1e2dcb` - `github.com/felixge/fgprof v0.9.5` - `github.com/go-openapi/strfmt v0.27.0` - `github.com/go-zookeeper/zk v1.0.4` - `github.com/gogo/protobuf v1.3.2` - `github.com/golang/snappy v1.0.0` - `github.com/google/go-cmp v0.7.0` - `github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3@ef3492d7dac3` - `github.com/google/uuid v1.6.0` - `github.com/gophercloud/gophercloud/v2 v2.13.0` - `github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853@f7b3be9d1853` - `github.com/hashicorp/consul/api v1.33.7` → [Updates: `v1.34.4`, `v2.0.0`] - `github.com/hashicorp/nomad/api v0.0.0-20260807203101-d78b9b59529a@d78b9b59529a` → [Updates: `v0.0.0-20260813020247-84a74d9e92e3`] - `github.com/hetznercloud/hcloud-go/v2 v2.47.0` - `github.com/ionos-cloud/sdk-go/v6 v6.3.11` - `github.com/json-iterator/go v1.1.12` - `github.com/klauspost/compress v1.19.2` - `github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b@a4b6fa1dd06b` - `github.com/linode/linodego v1.69.1` → [Updates: `v2.5.0`] - `github.com/miekg/dns v1.1.72` - `github.com/moby/moby/api v1.55.0` - `github.com/moby/moby/client v0.5.1` - `github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822@a7dc8b61c822` - `github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f@2f068394615f` - `github.com/nsf/jsondiff v0.0.0-20260207060731-8e8d90c4c0ac@8e8d90c4c0ac` - `github.com/oklog/run v1.2.0` - `github.com/oklog/ulid/v2 v2.1.2` - `github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.157.0` → [Updates: `v0.158.0`] - `github.com/outscale/osc-sdk-go/v2 v2.34.0` → [Updates: `v2.35.0`] - `github.com/ovh/go-ovh v1.9.0` - `github.com/pb33f/libopenapi v0.38.7` - `github.com/pb33f/libopenapi-validator v0.14.0` - `github.com/prometheus/alertmanager v0.33.1` - `github.com/prometheus/client_golang v1.24.1` - `github.com/prometheus/client_golang/exp v0.0.0-20260724065723-ecdb8254ba61@ecdb8254ba61` → [Updates: `v0.0.0-20260812154952-0c5dccd910c0`] - `github.com/prometheus/client_model v0.6.2` - `github.com/prometheus/common v0.70.1` - `github.com/prometheus/common/assets v0.2.0` - `github.com/prometheus/exporter-toolkit v0.17.1` - `github.com/prometheus/sigv4 v0.4.1` - `github.com/scaleway/scaleway-sdk-go v1.0.0-beta.37` - `github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c@f1e31cf0ba5c` - `github.com/stackitcloud/stackit-sdk-go/core v0.26.0` - `github.com/stretchr/testify v1.11.1` - `github.com/vultr/govultr/v3 v3.32.0` - `go.opentelemetry.io/collector/component v1.63.0` - `go.opentelemetry.io/collector/consumer v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/collector/pdata v1.63.0` - `go.opentelemetry.io/collector/processor v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.69.0` → [Updates: `v0.70.0`] - `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0` → [Updates: `v0.70.0`] - `go.opentelemetry.io/otel v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/metric v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/sdk v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/trace v1.44.0` → [Updates: `v1.45.0`] - `go.uber.org/atomic v1.11.0` - `go.uber.org/automaxprocs v1.6.0` - `go.uber.org/goleak v1.3.0` - `go.yaml.in/yaml/v2 v2.4.4` → [Updates: `v3.0.5`] - `go.yaml.in/yaml/v3 v3.0.5` - `go.yaml.in/yaml/v4 v4.0.0-rc.6` - `golang.org/x/oauth2 v0.36.0` - `golang.org/x/sync v0.22.0` - `golang.org/x/sys v0.47.0` - `golang.org/x/text v0.40.0` → [Updates: `v0.41.0`] - `google.golang.org/api v0.290.0` → [Updates: `v0.293.0`] - `google.golang.org/genproto/googleapis/api v0.0.0-20260807164820-c8921c73eeea@c8921c73eeea` → [Updates: `v0.0.0-20260810153831-ec0a7760b754`] - `google.golang.org/grpc v1.82.1` → [Updates: `v1.83.0`] - `google.golang.org/protobuf v1.36.12-0.20260806062936-644d0267c26e@644d0267c26e` → [Updates: `v1.36.12`] - `k8s.io/api v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/apimachinery v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/client-go v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/klog v1.0.0` → [Updates: `v2.140.0`] - `k8s.io/klog/v2 v2.140.0` - `github.com/oracle/oci-go-sdk/v65 v65.121.1` → [Updates: `v65.123.1`] - `github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.35` → [Updates: `v1.18.36`] - `github.com/cenkalti/backoff/v5 v5.0.3` → [Updates: `v6.0.1`, `v7.0.0`] - `github.com/prometheus/otlptranslator v1.0.0` - `golang.org/x/time v0.15.0` </details> <details><summary>internal/tools/go.mod (5)</summary> - `go 1.25.10` - `github.com/bufbuild/buf v1.72.0` - `github.com/daixiang0/gci v0.14.0` - `github.com/gogo/protobuf v1.3.2` - `github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0` → [Updates: `v2.30.0`] </details> <details><summary>web/ui/mantine-ui/src/promql/tools/go.mod (5)</summary> - `go 1.25.10` - `github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853@f7b3be9d1853` - `github.com/prometheus/prometheus v0.312.0` → [Updates: `v0.313.2`] - `github.com/russross/blackfriday/v2 v2.1.0` - `cloud.google.com/go v0.123.0` </details> </blockquote> </details> <details><summary>jsonnet-bundler (1)</summary> <blockquote> <details><summary>documentation/prometheus-mixin/jsonnetfile.json</summary> </details> </blockquote> </details> <details><summary>npm (7)</summary> <blockquote> <details><summary>web/ui/mantine-ui/package.json (58)</summary> - `@codemirror/autocomplete ^6.20.3` - `@codemirror/commands ^6.10.4` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/search ^6.7.1` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@floating-ui/dom ^1.8.0` - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@mantine/code-highlight ^9.5.0` - `@mantine/core ^9.5.0` - `@mantine/dates ^9.5.0` - `@mantine/hooks ^9.5.0` - `@mantine/notifications ^9.5.0` - `@microsoft/fetch-event-source ^2.0.1` - `@nexucis/fuzzy ^0.5.1` - `@nexucis/kvsearch ^0.9.1` - `@reduxjs/toolkit ^2.12.0` - `@tabler/icons-react ^3.45.0` - `@tanstack/react-query ^5.101.4` - `@testing-library/jest-dom ^6.10.0` → [Updates: `^7.0.0`] - `@testing-library/react ^16.3.2` - `@types/lodash ^4.17.24` - `@types/sanitize-html ^2.16.1` - `@uiw/react-codemirror ^4.25.11` - `clsx ^2.1.1` - `dayjs ^1.11.21` - `highlight.js ^11.11.1` → [Updates: `^11.11.1`] - `lodash ^4.18.1` - `react ^19.2.8` - `react-dom ^19.2.8` - `react-infinite-scroll-component ^6.1.1` → [Updates: `^7.0.0`] - `react-redux ^9.3.0` - `react-router-dom ^7.18.1` - `sanitize-html ^2.17.6` - `uplot ^1.6.32` - `uplot-react ^1.2.4` - `use-query-params ^2.2.2` - `@eslint/compat ^2.0.0` - `@eslint/eslintrc ^3.3.6` - `@eslint/js ^9.39.5` → [Updates: `^10.0.0`] - `@types/react ^19.2.17` - `@types/react-dom ^19.2.3` - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `@vitejs/plugin-react ^4.7.0` → [Updates: `^5.0.0`, `^6.0.0`] - `eslint ^9.39.5` → [Updates: `^10.0.0`] - `eslint-plugin-react-hooks ^5.2.0` → [Updates: `^6.0.0`, `^7.0.0`] - `eslint-plugin-react-refresh ^0.5.3` → [Updates: `^0.5.3`] - `globals ^16.5.0` → [Updates: `^17.0.0`] - `jsdom ^25.0.1` → [Updates: `^26.0.0`, `^27.0.0`, `^28.0.0`, `^29.0.0`, `^30.0.0`] - `postcss ^8.5.23` - `postcss-preset-mantine ^1.18.0` - `postcss-simple-vars ^7.0.1` - `rollup-plugin-license ^3.7.1` - `vite ^6.4.3` → [Updates: `^7.0.0`, `^8.0.0`] - `vitest ^3.2.7` → [Updates: `^4.0.0`] </details> <details><summary>web/ui/module/codemirror-promql/package.json (26)</summary> - `lru-cache ^11.5.2` - `@codemirror/autocomplete ^6.20.3` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@eslint/compat ^2.0.0` - `@eslint/eslintrc ^3.3.6` - `@eslint/js ^9.39.5` → [Updates: `^10.0.0`] - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `eslint ^9.39.5` → [Updates: `^10.0.0`] - `eslint-plugin-prettier ^5.5.6` - `isomorphic-fetch ^3.0.0` - `jest ^30.4.2` - `nock ^14.0.16` - `@codemirror/autocomplete ^6.4.0` - `@codemirror/language ^6.3.0` - `@codemirror/lint ^6.0.0` - `@codemirror/state ^6.1.1` - `@codemirror/view ^6.4.0` - `@lezer/common ^1.0.1` - `node >=12.0.0` </details> <details><summary>web/ui/module/lezer-promql/package.json (8)</summary> - `@lezer/generator ^1.8.0` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@rollup/plugin-node-resolve ^16.0.3` - `jest ^30.4.2` - `rollup ^4.62.3` - `@lezer/highlight ^1.1.2` - `@lezer/lr ^1.2.3` </details> <details><summary>web/ui/package.json (8)</summary> - `@types/jest ^29.5.14` → [Updates: `^30.0.0`] - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `eslint-config-prettier ^10.1.8` - `prettier ^3.9.6` - `ts-jest ^29.4.12` - `typescript ^5.9.3` → [Updates: `^6.0.0`, `^7.0.0`] - `vite ^6.4.3` → [Updates: `^7.0.0`, `^8.0.0`] </details> <details><summary>web/ui/pnpm-workspace.yaml</summary> </details> <details><summary>web/ui/react-app/package.json (67)</summary> - `@codemirror/autocomplete ^6.20.3` - `@codemirror/commands ^6.10.4` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/search ^6.7.1` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@forevolve/bootstrap-dark ^4.0.2` - `@fortawesome/fontawesome-common-types 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/fontawesome-svg-core 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/free-solid-svg-icons 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/react-fontawesome 0.2.6` → [Updates: `3.5.0`] - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@nexucis/fuzzy ^0.5.1` - `@nexucis/kvsearch ^0.9.1` - `bootstrap ^4.6.2` → [Updates: `^5.0.0`] - `css.escape ^1.5.1` - `downshift ^9.4.0` - `http-proxy-middleware ^3.0.7` → [Updates: `^4.0.0`] - `jquery ^3.7.1` → [Updates: `^4.0.0`] - `jquery.flot.tooltip ^0.9.0` - `moment ^2.30.1` - `moment-timezone ^0.6.3` - `popper.js ^1.16.1` - `react ^18.3.1` → [Updates: `^19.0.0`] - `react-copy-to-clipboard ^5.1.1` - `react-dom ^18.3.1` → [Updates: `^19.0.0`] - `react-infinite-scroll-component ^6.1.1` → [Updates: `^7.0.0`] - `react-resize-detector ^7.1.2` → [Updates: `^8.0.0`, `^9.0.0`, `^10.0.0`, `^11.0.0`, `^12.0.0`] - `react-router-dom ^7.0.0` - `reactstrap ^8.10.1` → [Updates: `^9.0.0`] - `sanitize-html ^2.17.6` - `sass 1.102.0` - `tempusdominus-bootstrap-4 ^5.39.2` - `tempusdominus-core ^5.19.3` - `@babel/plugin-proposal-private-property-in-object ^7.21.11` - `@cfaester/enzyme-adapter-react-18 ^0.8.0` - `@testing-library/dom ^10.4.1` - `@testing-library/react ^16.3.2` - `@types/enzyme ^3.10.19` - `@types/flot 0.0.36` - `@types/jest ^29.5.14` → [Updates: `^30.0.0`] - `@types/jquery ^3.5.34` → [Updates: `^4.0.0`] - `@types/node ^22.20.1` → [Updates: `^24.0.0`] - `@types/react ^18.3.31` → [Updates: `^19.0.0`] - `@types/react-copy-to-clipboard ^5.0.7` - `@types/react-dom ^18.3.7` → [Updates: `^19.0.0`] - `@types/sanitize-html ^2.16.1` - `@types/sinon ^17.0.4` → [Updates: `^20.0.0`, `^21.0.0`, `^22.0.0`] - `enzyme ^3.11.0` - `enzyme-to-json ^3.6.2` - `eslint ^8.57.1` → [Updates: `^9.0.0`, `^10.0.0`] - `eslint-config-prettier ^10.1.8` - `eslint-config-react-app ^7.0.1` - `eslint-plugin-prettier ^5.5.6` - `identity-obj-proxy ^3.0.0` - `jest-canvas-mock ^2.5.8` - `jest-fetch-mock ^3.2.0` → [Updates: `^4.0.0`] - `mutationobserver-shim ^0.3.7` - `prettier ^3.9.6` - `react-app-rewired ^2.2.1` - `react-router ^7.0.0` → [Updates: `^8.0.0`] - `react-scripts ^5.0.1` - `sinon ^19.0.5` → [Updates: `^20.0.0`, `^21.0.0`, `^22.0.0`] - `fsevents ^2.3.3` </details> <details><summary>web/ui/react-app/pnpm-workspace.yaml (1)</summary> - `enzyme>cheerio 1.0.0-rc.12` → [Updates: `1.2.0`] </details> </blockquote> </details> <details><summary>nvm (1)</summary> <blockquote> <details><summary>web/ui/.nvmrc (1)</summary> - `node 22.23.2` → [Updates: `24.19.0`] </details> </blockquote> </details> --- - [ ] <!-- manual job -->Check this box to trigger a request for Renovate to run again on this repository",
          "url": "https://github.com/prometheus/prometheus/issues/17691",
          "createdAt": "2025-12-15T09:02:18Z",
          "updatedAt": "2026-08-13T12:06:21Z",
          "timestamp": "2026-08-13T12:06:21Z",
          "metrics": {
            "reactions": 0,
            "comments": 5
          },
          "labels": [],
          "author": "renovate[bot]",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:c8455d823e4a85d92a53",
        "signalId": "github:prometheus/prometheus:pull_request:19401",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19401",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "tsdb: document that OOO chunk IDs are no longer monotonically increasing",
          "text": "Follow-up to #19216: the HeadChunkID doc still promised a monotonically increasing per-series number, which no longer holds for out-of-order chunk IDs now that they wrap modulo 2^23. Also spell out the \"much less than\" relation in the oooHeadChunkID comment, where << is easy to misread as a bit-shift. <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19401",
          "createdAt": "2026-08-12T13:34:22Z",
          "updatedAt": "2026-08-13T12:04:40Z",
          "timestamp": "2026-08-13T12:04:40Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "roidelapluie",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:663c2375ca507fee954b",
        "signalId": "github:prometheus/prometheus:pull_request:19410",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19410",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "Add more spans to tracing",
          "text": "I was trying to use tracing to debug some rules skipping evaluation and other random slowness but I find current set of spans not really giving me enough information. This adds a bunch more spans all over the place: - engine now shows a span per series selected from tsdb, so a query that's doing a ton of selects shows them all more clearly - rule evaluations now start with the group, so you can lookup a group run and clearly see if rules are running concurrently, which rules are slowing which others etc - there's a span for scheduling delay of rule evaluation, which helps to understand why a rule running time() returns lagging results from queries - if it gets scheduled late (because time() returns time of when it was suppose to run I think) - there are spans for appenders and commits, so it's clear when rules are blocked on isolation and writes - scrape is now broken down more so it's more clear where does all the time go <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [ENHANCEMENT] Tracing: add more spans to scrapes, API queries and rule evaluations ```",
          "url": "https://github.com/prometheus/prometheus/pull/19410",
          "createdAt": "2026-08-13T11:31:32Z",
          "updatedAt": "2026-08-13T11:33:38Z",
          "timestamp": "2026-08-13T11:33:38Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "prymitive",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:3489bbf56638c988cb76",
        "signalId": "github:prometheus/prometheus:issue:17273",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:issue:17273",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "alerting: expose activeAt for alert templating",
          "text": "### Proposal Is't possible to use information about metric in alert rule, but it's not possible tu use activeAt information. It will be great to have access to it. The question have already been asked #14713, but the solution of going through the alertmanager is only a palliative and does not meet all needs. is it possible to modify following files to add \"activeAt\" : https://github.com/prometheus/prometheus/blob/v2.54.0/rules/alerting.go#L363 https://github.com/prometheus/prometheus/blob/v2.54.0/template/template.go#L319 thanks Thomas",
          "url": "https://github.com/prometheus/prometheus/issues/17273",
          "createdAt": "2025-10-02T10:21:17Z",
          "updatedAt": "2026-08-13T10:17:23Z",
          "timestamp": "2026-08-13T10:17:23Z",
          "metrics": {
            "reactions": 0,
            "comments": 7
          },
          "labels": [
            "priority/Pmaybe",
            "component/rules",
            "kind/feature"
          ],
          "author": "tguenneguez",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:6fa535310e6dcc5dc895",
        "signalId": "github:prometheus/prometheus:pull_request:19399",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19399",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "scrape: use a dedicated HTTP client per unix socket target",
          "text": "Unix socket scrape support passes the socket path to a shared HTTP client's `DialContext` via the request context. But the transport keys idle connections on scheme and `host:port` only, so two targets sharing the same `__address__` with different `__scrape_unix_socket__` paths can reuse each other's pooled connections and scrape the wrong endpoint. The same applies to a plain TCP target sharing that address. This gives each unix socket path its own scrape client, cached per scrape pool and rebuilt on reload. First commit adds a failing test exposing the mix-up, second one fixes it. <!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19399",
          "createdAt": "2026-08-12T09:34:07Z",
          "updatedAt": "2026-08-13T10:14:27Z",
          "timestamp": "2026-08-13T10:14:27Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "roidelapluie",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:3a8787fdc94a51653d79",
        "signalId": "github:prometheus/prometheus:issue:11678",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:issue:11678",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "__address__ label from pod discovered through kubernetes discovery does not include port when relabelling",
          "text": "### What did you do? If you specify scraping annotation for a kubernetes pod, typically for each container port a target is added (kubernetes/pod.go): https://github.com/prometheus/prometheus/blob/main/discovery/kubernetes/pod.go#L280 If you have a second container in the pod, that does not expose any container ports, then kubernetes/pod.go will add the IP address to the target, but no port value. So the format would be 1.2.3.4 instead of 1.2.3.4:5432: https://github.com/prometheus/prometheus/blob/main/discovery/kubernetes/pod.go#L270 The [documentation for relabel_config states](url): https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config `The __address__ label is set to the <host>:<port> address of the target.` This statement is not correct for the given implementation of kubernetes/pod.go, since targets with no port number are added for that second container. That way the standard kubernetes relabel config will not match: ``` - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace regex: (.+)(?::\\d+);(\\d+) replacement: ${1}:${2} target_label: __address__ ``` Since this rule does not match, if the following annotation is set on the pod: ``` prometheus.io/port: 9090 ``` The behavior now is incorrect. I can think of those two suggestions: - change the docs to reflect, that with certain discovery services the port can be missing - change the implementation of kubernetes/pods.go to not add targets without a port (which is also not really a good option, since the ip address in __address__ is needed to relabel containers where no port was exposed, but scraping should still happen) ### What did you expect to see? I would expect that my relabel config correctly matches the __address__ label. Which is not possible since the __address__ label only contains an ipv4 address and not a colon + port. ### What did you see instead? Under which circumstances? I saw instead an ipv4 address only in the __address__ label. ### System information _No response_ ### Prometheus version ```text current main branch 72a48321dabed43f2cd9e510dda96c50d4a48a58 ``` ### Prometheus configuration file _No response_ ### Alertmanager version _No response_ ### Alertmanager configuration file _No response_ ### Logs _No response_",
          "url": "https://github.com/prometheus/prometheus/issues/11678",
          "createdAt": "2022-12-06T10:50:47Z",
          "updatedAt": "2026-08-13T09:38:51Z",
          "timestamp": "2026-08-13T09:38:51Z",
          "metrics": {
            "reactions": 0,
            "comments": 4
          },
          "labels": [],
          "author": "peterhoneder",
          "state": "closed",
          "assignees": [
            "alexgreenbank"
          ],
          "change": "updated"
        }
      },
      {
        "id": "event:53df405b1c839456c058",
        "signalId": "github:prometheus/prometheus:pull_request:19408",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19408",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "docs: note that Kubernetes pod __address__ may omit the port",
          "text": "The generic relabel docs say `__address__` is always `<host>:<port>`. Kubernetes pod SD sets `__address__` to the pod IP with no port when a container declares none, so a port can be added via relabeling. That is already described under the `pod` role; this makes the relabel section match. cc @brancz @rexagod @machine424 Fixes #11678 #### Which issue(s) does the PR fix: Fixes #11678 #### Release notes for end users (**ALL** commits must be considered). ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19408",
          "createdAt": "2026-08-13T03:09:43Z",
          "updatedAt": "2026-08-13T09:38:50Z",
          "timestamp": "2026-08-13T09:38:50Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "aamoghS",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:0794761cb0c51713e19f",
        "signalId": "github:prometheus/prometheus:pull_request:19407",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19407",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/file: wait for a matching snapshot instead of failing on empty updates",
          "text": "#18259 stopped tests from truncating SD files to zero bytes, but `requireUpdate` still treated the first snapshot with the expected *number* of groups as the result. File SD can emit empty groups (`[{\"targets\":[]},{\"targets\":[]}]`) before the file contents are visible, so `TestInvalidFileUpdate` and `TestUpdateFileWithPartialWrites` still flake. Wait until the groups match the expected snapshot (or time out). #18259 can stay; this is the remaining race in the test helper. cc @machine424 @bwplotka @krajorama Fixes #18269 #### Which issue(s) does the PR fix: Fixes #18269 #### Release notes for end users (**ALL** commits must be considered). ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19407",
          "createdAt": "2026-08-13T03:09:41Z",
          "updatedAt": "2026-08-13T09:33:50Z",
          "timestamp": "2026-08-13T09:33:50Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:7ed58d78402595ebc400",
        "signalId": "github:prometheus/prometheus:pull_request:19403",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19403",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "promql/parser: preserve parentheses around duration literals",
          "text": "#### Which issue(s) does the PR fix: Fixes #18770 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. ``` `paren_duration_expr` only set `Wrapped` on `*DurationExpr`, so a parenthesised `*NumberLiteral` (`foo offset (5)`, `foo[(5s)]`) was flattened by `Expr.String()`. This wraps a parenthesised number in a unary-plus `*DurationExpr` with `Wrapped: true`, matching how `+(5*2)` already survives. Unary `+(5)` / `-(5)` go through the same path. @krajorama @roidelapluie @vpranckaitis",
          "url": "https://github.com/prometheus/prometheus/pull/19403",
          "createdAt": "2026-08-13T01:35:12Z",
          "updatedAt": "2026-08-13T09:00:24Z",
          "timestamp": "2026-08-13T09:00:24Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:b0ca9c80698fa1809c68",
        "signalId": "github:prometheus/prometheus:pull_request:19390",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19390",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "config: promote retry_on_http_429 to GA",
          "text": "Fixes #19263 This PR promotes `retry_on_http_429` in `remote_write` configuration to GA while keeping default = false (leaving the default behavior change for a separate discussion/PR per maintainer feedback). ### Details - Removed experimental note for `retry_on_http_429` in documentation docs/configuration/configuration.md. - Maintained RetryOnRateLimit default as `false`. ```release-notes [FEATURE] remote_write: promote retry_on_http_429 option to GA. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19390",
          "createdAt": "2026-08-11T06:38:55Z",
          "updatedAt": "2026-08-13T08:52:14Z",
          "timestamp": "2026-08-13T08:52:14Z",
          "metrics": {
            "reactions": 0,
            "comments": 4
          },
          "labels": [],
          "author": "VedantMadane",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:2070273a2f0e29a6988a",
        "signalId": "github:prometheus/prometheus:pull_request:19406",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19406",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "promql/parser: reject offset expressions and @ start()/end() before range selectors",
          "text": "`matrix_selector` already rejects `foo offset 5m[5m]` and `foo @ 1234[5m]`, but it only looked at `OriginalOffset` and `Timestamp`. Duration-expression offsets and `@ start()` / `@ end()` live in `OriginalOffsetExpr` and `StartOrEnd`, so these still parsed: ```promql foo offset step()[5m] foo @ start()[5m] foo @ end()[5m] ``` The valid forms remain `foo[5m] offset step()` and `foo[5m] @ start()`. This is the range-selector counterpart of #17060 / #17852, which covers the same mistake on subquery selectors. I left subquery productions alone to avoid overlapping that PR; they still need a `StartOrEnd` check there (`foo @ start()[5m:1s]`). cc @roidelapluie @vpranckaitis @bboreham Related to #17060 #### Which issue(s) does the PR fix: Related to #17060 #### Release notes for end users (**ALL** commits must be considered). ```release-notes [BUGFIX] PromQL: Reject duration-expression offsets and `@ start()` / `@ end()` before range selectors, matching the existing rejection of literal offsets and `@ <timestamp>`. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19406",
          "createdAt": "2026-08-13T03:09:39Z",
          "updatedAt": "2026-08-13T08:43:32Z",
          "timestamp": "2026-08-13T08:43:32Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "aamoghS",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:e5993eb17f4041a3fb3c",
        "signalId": "github:prometheus/prometheus:pull_request:19373",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19373",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "docs: Add troubleshooting section with common issues and solutions",
          "text": "## Changes Adds a Troubleshooting section covering: - Common scraping issues and fixes - High memory usage solutions - Alert rule debugging - Useful links to official docs This helps new users debug common problems without searching through issues.",
          "url": "https://github.com/prometheus/prometheus/pull/19373",
          "createdAt": "2026-08-08T18:01:53Z",
          "updatedAt": "2026-08-13T08:28:49Z",
          "timestamp": "2026-08-13T08:28:49Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "Ankitavasudev",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:800963cf9ea68bf3e27b",
        "signalId": "github:prometheus/prometheus:pull_request:18757",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:18757",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "fix(deps): update kubernetes go dependencies to v0.36.3",
          "text": "This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [k8s.io/api](https://redirect.github.com/kubernetes/api) | `v0.35.3` → `v0.36.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fapi/v0.36.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fapi/v0.35.3/v0.36.3?slim=true) | | [k8s.io/apimachinery](https://redirect.github.com/kubernetes/apimachinery) | `v0.35.3` → `v0.36.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fapimachinery/v0.36.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fapimachinery/v0.35.3/v0.36.3?slim=true) | | [k8s.io/client-go](https://redirect.github.com/kubernetes/client-go) | `v0.35.3` → `v0.36.3` | ![age](https://developer.mend.io/api/mc/badges/age/go/k8s.io%2fclient-go/v0.36.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/go/k8s.io%2fclient-go/v0.35.3/v0.36.3?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/17691) for more information. ```release-notes NONE ``` --- ### Release Notes <details> <summary>kubernetes/api (k8s.io/api)</summary> ### [`v0.36.3`](https://redirect.github.com/kubernetes/api/compare/v0.36.2...v0.36.3) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.36.2...v0.36.3) ### [`v0.36.2`](https://redirect.github.com/kubernetes/api/compare/v0.36.1...v0.36.2) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.36.1...v0.36.2) ### [`v0.36.1`](https://redirect.github.com/kubernetes/api/compare/v0.36.0...v0.36.1) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.36.0...v0.36.1) ### [`v0.36.0`](https://redirect.github.com/kubernetes/api/compare/v0.35.4...v0.36.0) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.7...v0.36.0) ### [`v0.35.7`](https://redirect.github.com/kubernetes/api/compare/v0.35.6...v0.35.7) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.6...v0.35.7) ### [`v0.35.6`](https://redirect.github.com/kubernetes/api/compare/v0.35.5...v0.35.6) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.5...v0.35.6) ### [`v0.35.5`](https://redirect.github.com/kubernetes/api/compare/v0.35.4...v0.35.5) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.4...v0.35.5) ### [`v0.35.4`](https://redirect.github.com/kubernetes/api/compare/v0.35.3...v0.35.4) [Compare Source](https://redirect.github.com/kubernetes/api/compare/v0.35.3...v0.35.4) </details> <details> <summary>kubernetes/apimachinery (k8s.io/apimachinery)</summary> ### [`v0.36.3`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.2...v0.36.3) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.2...v0.36.3) ### [`v0.36.2`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.1...v0.36.2) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.1...v0.36.2) ### [`v0.36.1`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.0...v0.36.1) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.36.0...v0.36.1) ### [`v0.36.0`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.4...v0.36.0) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.7...v0.36.0) ### [`v0.35.7`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.6...v0.35.7) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.6...v0.35.7) ### [`v0.35.6`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.5...v0.35.6) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.5...v0.35.6) ### [`v0.35.5`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.4...v0.35.5) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.4...v0.35.5) ### [`v0.35.4`](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.3...v0.35.4) [Compare Source](https://redirect.github.com/kubernetes/apimachinery/compare/v0.35.3...v0.35.4) </details> <details> <summary>kubernetes/client-go (k8s.io/client-go)</summary> ### [`v0.36.3`](https://redirect.github.com/kubernetes/client-go/compare/v0.36.2...v0.36.3) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.36.2...v0.36.3) ### [`v0.36.2`](https://redirect.github.com/kubernetes/client-go/compare/v0.36.1...v0.36.2) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.36.1...v0.36.2) ### [`v0.36.1`](https://redirect.github.com/kubernetes/client-go/compare/v0.36.0...v0.36.1) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.36.0...v0.36.1) ### [`v0.36.0`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.4...v0.36.0) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.7...v0.36.0) ### [`v0.35.7`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.6...v0.35.7) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.6...v0.35.7) ### [`v0.35.6`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.5...v0.35.6) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.5...v0.35.6) ### [`v0.35.5`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.4...v0.35.5) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.4...v0.35.5) ### [`v0.35.4`](https://redirect.github.com/kubernetes/client-go/compare/v0.35.3...v0.35.4) [Compare Source](https://redirect.github.com/kubernetes/client-go/compare/v0.35.3...v0.35.4) </details> --- ### Configuration 📅 **Schedule**: (in timezone UTC) - Branch creation - On day 7 and 21 of the month (`* * 7,21 * *`) - 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 these updates 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/prometheus/prometheus). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xODUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjI0LjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->",
          "url": "https://github.com/prometheus/prometheus/pull/18757",
          "createdAt": "2026-05-21T07:09:02Z",
          "updatedAt": "2026-08-13T08:18:32Z",
          "timestamp": "2026-08-13T08:18:32Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "renovate[bot]",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:3db99e1fb58ae831c902",
        "signalId": "github:prometheus/prometheus:pull_request:19396",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19396",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/aws: don't panic on ECS tasks with absent optional fields",
          "text": "ECS SD dereferences optional task fields without guarding them. Any task missing one panics the refresh goroutine and takes the process down instead of degrading a single target. `types.Task.Group`, `TaskArn`, `LastStatus`, `DesiredStatus`, `AvailabilityZone`, `ClusterArn`, `ClusterName` and `TaskDefinitionArn` are all optional — none carry the SDK's `This member is required.` marker. `Group` is dereferenced twice, including in the `strings.CutPrefix(*task.Group, \"service:\")` added by the recent service-lookup refactor, so a task with no group panics there. The ENI attachment loop is the one that fires first: it switches on `*detail.Name` and `*detail.Value`, and both members of `KeyValuePair` are optional. Changes: - Guard the eight optional fields in the label literal. - `aws.ToString(task.Group)` in the service-name check, and for the three `logger.Debug` sites — the idiom already used throughout `msk.go`. - Guard `*detail.Name` / `*detail.Value` in the ENI loop. Tests fail on main at `ecs.go:879` without the fix. `TestECSDiscoveryRefresh` builds `&ECSDiscovery{...}` directly rather than going through `NewECSDiscovery`, so `d.logger` is nil and any `Debug` call panics; the new cases set `logger: promslog.NewNopLogger()`, which is what the constructor substitutes anyway. Follow-up to #19324, same bug class. `elasticache.go` has it too and is ready as a separate PR. ```release-notes [BUGFIX] discovery/aws: Don't panic on ECS tasks with absent optional fields. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19396",
          "createdAt": "2026-08-12T06:46:41Z",
          "updatedAt": "2026-08-13T08:15:22Z",
          "timestamp": "2026-08-13T08:15:22Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "r0h1tb",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:7f89fa4e4a05ad70069a",
        "signalId": "github:prometheus/prometheus:pull_request:19339",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19339",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "tsdb: make panic lock-release test OS agnostic",
          "text": "The old test forced a chunk write failure by removing the **_mmapped_** chunk directory which will not work on Windows, as directories with open files cannot be deleted. This change instead injects a rogue chunk segment with a higher sequence number, causing the next chunk write to fail through the same code path in an OS-independent way. This allows the test to run on Windows while exercising the same panic and lock-release behavior. ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19339",
          "createdAt": "2026-08-05T17:24:40Z",
          "updatedAt": "2026-08-13T08:02:43Z",
          "timestamp": "2026-08-13T08:02:43Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "JustDaile",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:0a7ad66a4d753229c4cf",
        "signalId": "github:prometheus/prometheus:pull_request:19341",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19341",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "cmd/prometheus: fix flaky TestRuntimeGOGCConfig",
          "text": "TL;DR; I saw TestRuntimeGOGCConfig fail in a CI. At first I suspected that it cannot be run in parallel due to environment use, but it's only setting sub process env, so that wasn't it. The issue is that it's not waiting long enough for the process, which can take it's time in CI. LLM also noticed another bug with developer settings leaking into the test. Both fixed in this PR. LLM: `TestRuntimeGOGCConfig` gave the spawned Prometheus 5 seconds to serve `/metrics`, the shortest deadline in the package. CI runs this package as `go test --tags=slicelabels -race ./cmd/prometheus`, so both the test binary and the Prometheus processes it spawns in parallel are race-instrumented, and 5 seconds is not always enough to get as far as creating the web listener. Seen on `main`: ``` --- FAIL: TestRuntimeGOGCConfig/empty_config_file_with_GOGC_env_var_set (5.07s) reload_test.go:194: ... msg=\"Starting Prometheus Server\" ... reload_test.go:194: ... msg=\"operational information\" ... main_test.go:918: Error: Condition never satisfied Test: TestRuntimeGOGCConfig/empty_config_file_with_GOGC_env_var_set ``` The captured log stops right after `operational information`, i.e. the process was alive but had not yet reached `webHandler.Listeners()`. ### Changes **Wait for readiness through one helper.** The package had four copies of the same readiness poll with three different deadlines (5s, 5s, 10s, `startupTime`) and two different endpoints. They are replaced by a single `waitForPrometheusReady` with a more generous deadline. `startupTime` could not simply be raised: seven of its eight uses are `case <-time.After(startupTime)` in a select meaning \"if the process is still alive after this long it started successfully, now kill it\", so raising it would add that time to those tests on the success path. **Wait on `/-/ready` rather than `/metrics`.** This closes a second race in `TestRuntimeGOGCConfig` that is independent of the timeout: `/metrics` is served before the initial configuration is applied, so `go_gc_gogc_percent` could still hold the default when first scraped. `/-/ready` only flips after `<-dbOpen` and a successful `reloadConfig`. **Drop an inherited `GOGC` from the spawned process's environment.** The test built the child environment from `os.Environ()`, so a `GOGC` set in the environment leaked into the cases that expect the default or the configured value: ``` $ GOGC=42 go test -run TestRuntimeGOGCConfig ./cmd/prometheus/ --- FAIL: TestRuntimeGOGCConfig/empty_config_file (0.54s) expected: 75 actual : 42 --- FAIL: TestRuntimeGOGCConfig/incomplete_runtime_block (0.58s) expected: 75 actual : 42 ``` That passes with this change. ### Testing `go test --tags=slicelabels -race -run 'TestRuntimeGOGCConfig|TestFeatures|TestAutoReloadConfig|TestRetentionPercentage' ./cmd/prometheus/` passes, as does the run with `GOGC=42` set in the environment. ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19341",
          "createdAt": "2026-08-06T07:58:55Z",
          "updatedAt": "2026-08-13T08:00:11Z",
          "timestamp": "2026-08-13T08:00:11Z",
          "metrics": {
            "reactions": 0,
            "comments": 2
          },
          "labels": [],
          "author": "krajorama",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:6f131228adc074ae2323",
        "signalId": "github:prometheus/prometheus:pull_request:19180",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19180",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/aws: paginate Lightsail GetInstances so all instances are discovered",
          "text": "#### Which issue(s) does the PR fix: There is no dedicated tracking issue for this bug. (The only open Lightsail issue, #17395, is a request to add unit tests, not this pagination bug.) `GetInstances` is a paginated Lightsail API, but the Lightsail client adapter called it exactly once and never followed the returned `NextPageToken`, so on any Lightsail account whose instance list spans more than one API page, every instance beyond the first page was silently dropped from the discovered target set. This change makes the client adapter request each `GetInstances` page in sequence, advancing `PageToken` with the response `NextPageToken`, combining the instances, and stopping when the token is `nil`. This mirrors the manual pagination already used for the other paginated AWS SD list operations in this package (`ecs`, `msk`, `elasticache`, `rds`); unlike EC2, the Lightsail service package ships no `GetInstancesPaginator`, so the caller has to request each page itself. The existing `AuthFailure` / `UnauthorizedOperation` handling is preserved. No configuration or public API changes. A unit test (`discovery/aws/lightsail_test.go`) returns two pages (page one carries a next page token, page two does not) and asserts that both requests are made with the correct page token and that the adapter combines instances from both pages. Without the fix the test fails because only the first page is fetched. #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] Discovery: Paginate AWS Lightsail service discovery so more than one page of instances is discovered. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19180",
          "createdAt": "2026-07-14T06:47:09Z",
          "updatedAt": "2026-08-13T07:24:25Z",
          "timestamp": "2026-08-13T07:24:25Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "anxkhn",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:c92972a56d55125e1b52",
        "signalId": "github:prometheus/prometheus:pull_request:19200",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19200",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "storage: add OriginalLabelsHash() method to SeriesSet",
          "text": "Add a way to capture the original hash of labels that is \"out of bound\" of the labels model. This is because even with the best encoding schemes like base 91 storing a hash is wasteful. Also, comparing strings is much slower than comparing uint64s. #### Which issue(s) does the PR fix: NA #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [CHANGE] Add OriginalLabelsHash() uint64 method to storage.SeriesSet interface ```",
          "url": "https://github.com/prometheus/prometheus/pull/19200",
          "createdAt": "2026-07-15T08:11:24Z",
          "updatedAt": "2026-08-13T06:25:16Z",
          "timestamp": "2026-08-13T06:25:16Z",
          "metrics": {
            "reactions": 0,
            "comments": 2
          },
          "labels": [],
          "author": "GiedriusS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:a53aa3caa32e55234aa6",
        "signalId": "github:prometheus/prometheus:pull_request:19409",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19409",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "tsdb: avoid retaining oversized record buffers",
          "text": "Bounds the reusable TSDB record-buffer pool at 1 MB so unusually large OOO/WBL batches can be collected after commit. Buffers at or below the limit remain reusable. Adds a regression test for the retention limit and a benchmark covering both sides of the threshold. In six benchmark runs, the 1 MB case stayed at about 29.5 ns/op with zero allocations. For the oversized case, retained capacity dropped from 976.563 KiB to 1 KiB; a deliberately repeated oversized workload reallocates about 985 KiB/op, which is the intended memory/CPU tradeoff. #### Which issue(s) does the PR fix: Fixes #19397 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] TSDB: Avoid retaining oversized out-of-order record buffers after commit. ``` Validation: `go test ./...`, focused test x100, race-focused test x50, `golangci-lint run --timeout 4m ./tsdb/...`, and benchmark x6 with benchstat.",
          "url": "https://github.com/prometheus/prometheus/pull/19409",
          "createdAt": "2026-08-13T04:27:07Z",
          "updatedAt": "2026-08-13T04:27:08Z",
          "timestamp": "2026-08-13T04:27:08Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "Boulea7",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:1ee982b0c58091ccf185",
        "signalId": "github:prometheus/prometheus:pull_request:17852",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:17852",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "[BugFix]promql: Reject offset/@ modifiers immediately before subquery range",
          "text": "### Problem The PromQL parser allowed invalid syntax like: ```promql metric offset 5m[2m:10s] # Should error, but was accepted metric @ 123[2m:10s] # Should error, but was accepted ``` While correctly rejecting the same pattern for regular range selectors: ```promql metric offset 5m[2m] # Correctly rejected ``` ### Solution Inline a presence check in both `subquery_expr` grammar rules (same approach as `matrix_selector`) so that offset/@ modifiers on the expression under `$1` are rejected before a subquery range, independent of whitespace. This covers VectorSelector, MatrixSelector, and SubqueryExpr, including offsets set via experimental duration expressions (`OriginalOffsetExpr`). No helper is added in `parse.go`. Examples: - `metric offset 5m[2m:10s]` → **Error** - `metric offset 5m [2m:10s]` → **Error** (whitespace-insensitive, matching matrix_selector) - `metric[2m:10s] offset 5m` → **Valid** (modifier after the subquery) ### Testing - Added test cases covering VectorSelector, MatrixSelector, and SubqueryExpr - Tests both offset and @ modifiers, including spaced forms - Updated prior success cases that incorrectly accepted offset/@ before a subquery range - All parser and promqltest suites pass #### Which issue(s) does the PR fix: Fixes #17060 #### Does this PR introduce a user-facing change? ```release-notes [BUGFIX] PromQL: Reject offset and @ modifiers before subquery range selectors regardless of whitespace (e.g., `metric offset 5m[2m:10s]` and `metric offset 5m [2m:10s]`). Valid syntax places modifiers after the subquery (e.g., `metric[2m:10s] offset 5m`). ```",
          "url": "https://github.com/prometheus/prometheus/pull/17852",
          "createdAt": "2026-01-14T01:58:37Z",
          "updatedAt": "2026-08-13T03:10:18Z",
          "timestamp": "2026-08-13T03:10:18Z",
          "metrics": {
            "reactions": 0,
            "comments": 6
          },
          "labels": [],
          "author": "adity-a34",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:dfcf1eb8fc84bd43f23d",
        "signalId": "github:prometheus/prometheus:issue:18269",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:issue:18269",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "discovery/file: Flaky `TestInvalidFileUpdate`  and `TestUpdateFileWithPartialWrites` tests",
          "text": "``` FAIL: TestInvalidFileUpdate (1.10s) file_test.go:400: Error Trace: /__w/prometheus/prometheus/discovery/file/file_test.go:227 /__w/prometheus/prometheus/discovery/file/file_test.go:400 Error: Not equal: expected: \"[{\\\"targets\\\":[\\\"localhost:9090\\\",\\\"example.org:443\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\\\",\\\"foo\\\":\\\"bar\\\"}},{\\\"targets\\\":[\\\"my.domain\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\\\"}}]\" actual : \"[{\\\"targets\\\":[]},{\\\"targets\\\":[]}]\" Diff: --- Expected +++ Actual @@ -1 +1 @@ -[{\"targets\":[\"localhost:9090\",\"example.org:443\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\",\"foo\":\"bar\"}},{\"targets\":[\"my.domain\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestInvalidFileUpdate505692747/001/valid.yml\"}}] +[{\"targets\":[]},{\"targets\":[]}] Test: TestInvalidFileUpdate FAIL ``` https://github.com/prometheus/prometheus/actions/runs/22899997735/job/66443837347?pr=18250 ``` --- FAIL: TestUpdateFileWithPartialWrites (1.10s) file_test.go:422: Error Trace: /__w/prometheus/prometheus/discovery/file/file_test.go:227 /__w/prometheus/prometheus/discovery/file/file_test.go:422 Error: Not equal: expected: \"[{\\\"targets\\\":[\\\"localhost:9090\\\",\\\"example.org:443\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\\\",\\\"foo\\\":\\\"bar\\\"}},{\\\"targets\\\":[\\\"my.domain\\\"],\\\"labels\\\":{\\\"__meta_filepath\\\":\\\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\\\"}}]\" actual : \"[{\\\"targets\\\":[]},{\\\"targets\\\":[]}]\" Diff: --- Expected +++ Actual @@ -1 +1 @@ -[{\"targets\":[\"localhost:9090\",\"example.org:443\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\",\"foo\":\"bar\"}},{\"targets\":[\"my.domain\"],\"labels\":{\"__meta_filepath\":\"/tmp/TestUpdateFileWithPartialWrites2210457790/001/valid.yml\"}}] +[{\"targets\":[]},{\"targets\":[]}] Test: TestUpdateFileWithPartialWrites ```",
          "url": "https://github.com/prometheus/prometheus/issues/18269",
          "createdAt": "2026-03-10T11:14:07Z",
          "updatedAt": "2026-08-13T03:10:04Z",
          "timestamp": "2026-08-13T03:10:04Z",
          "metrics": {
            "reactions": 0,
            "comments": 4
          },
          "labels": [],
          "author": "bwplotka",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:6951eaafa6a49fdccb76",
        "signalId": "github:prometheus/prometheus:pull_request:19211",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19211",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "promql/parser: fix error position for duration division by zero",
          "text": "Fixes #19206 **What this PR does / why we need it**: This PR fixes an issue where encountering a division or modulo by zero (or an out of range) inside a duration expression correctly evaluates to a dummy `NumberLiteral{Val: 0}` to raise an error, but was failing to capture the `PosRange` of the evaluated expression. Because it lacked a positional range, it defaulted to `0:0`. As it bubbled up to the positive duration check, the parser emitted the `duration must be greater than 0` error at the incorrect `0:0` position. This modifies the duration expression error evaluations in `generated_parser.y` to capture the position correctly using `mergeRanges`, and updates the assertions in `parse_test.go` to match the correct positional boundaries. ```release-notes [BUGFIX] promql/parser: Fix incorrect error position when duration operations result in modulo/division by zero or out of range. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19211",
          "createdAt": "2026-07-15T18:37:38Z",
          "updatedAt": "2026-08-13T03:10:01Z",
          "timestamp": "2026-08-13T03:10:01Z",
          "metrics": {
            "reactions": 0,
            "comments": 6
          },
          "labels": [],
          "author": "oindrilakha12-ui",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:ca7ac8356a4bd23c6b1c",
        "signalId": "github:prometheus/prometheus:pull_request:19405",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19405",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/aws: don't panic on ElastiCache caches with absent optional fields",
          "text": "#### Which issue(s) does the PR fix: Follow-up to #19396 (same nil-deref class in AWS SD). #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] discovery/aws: Don't panic on ElastiCache caches or clusters with absent optional fields. ``` `addServerlessCacheTargets` / `addCacheClusterTargets` dereferenced `ARN`, `ServerlessCacheName`, `Status`, `Engine`, `CacheClusterId`, etc. without nil checks. A cache missing any of those panics the refresh goroutine and takes the process down. Optional fields now omit the label instead of dereferencing. Refresh also skips tag lookup when `ARN` is nil. @matt-gp @sysadmind",
          "url": "https://github.com/prometheus/prometheus/pull/19405",
          "createdAt": "2026-08-13T01:35:23Z",
          "updatedAt": "2026-08-13T01:35:24Z",
          "timestamp": "2026-08-13T01:35:24Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:111a6e8dbb4358534ae5",
        "signalId": "github:prometheus/prometheus:pull_request:19404",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19404",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/kubernetes: populate loadbalancer IP from status.ingress",
          "text": "#### Which issue(s) does the PR fix: Fixes #14398 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. ``` Kubernetes 1.24 dropped automatic `spec.loadBalancerIP`. Controllers (MetalLB, AKS, …) now only write IPs to `status.loadBalancer.ingress`, so the meta label was empty. This PR: - Prefers ingress IPs (comma-separated for dual-stack) - Falls back to `spec.loadBalancerIP` when status has no IPs - Leaves hostname-only ingress (EKS) for a follow-up, as discussed on the issue Related: #17136 (stalled on DCO). @machine424 @brancz @rexagod",
          "url": "https://github.com/prometheus/prometheus/pull/19404",
          "createdAt": "2026-08-13T01:35:17Z",
          "updatedAt": "2026-08-13T01:35:18Z",
          "timestamp": "2026-08-13T01:35:18Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:301fcd03fcc79146563a",
        "signalId": "github:prometheus/prometheus:issue:14398",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:issue:14398",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "__meta_kubernetes_service_loadbalancer_ip not working as expected",
          "text": "### What did you do? used following config snippet to set LB service external IP as param_target for DNS probes ``` .... relabel_configs: - action: keep regex: powerdns-external;pdns-udp source_labels: - __meta_kubernetes_service_name - __meta_kubernetes_service_port_name - source_labels: - __meta_kubernetes_service_loadbalancer_ip target_label: __param_target ... ``` now with following config __param_target not set, it is empty. If I check powerdns-external service I see that it has loadBalancer IP only under **status.loadBalancer.ingress** so no .spec.loadBalancerIP defined automatically, looks like after 1.24 Kubernetes dropped this [.spec.loadBalancerIP](https://github.com/metallb/metallb/issues/1182) setting. ``` apiVersion: v1 kind: Service metadata: name: powerdns-external ..... status: loadBalancer: ingress: - ip: 192.168.1.15 spec: ports: - name: pdns-udp protocol: UDP port: 53 targetPort: 53 nodePort: 30937 selector: application: powerdns clusterIP: 10.96.26.217 clusterIPs: - 10.96.26.217 type: LoadBalancer sessionAffinity: None externalTrafficPolicy: Cluster ipFamilies: - IPv4 ipFamilyPolicy: SingleStack allocateLoadBalancerNodePorts: true internalTrafficPolicy: Cluster ``` Main point if I set .spec.loadBalancerIP manually from service then scrape job starts to work and thus __meta_kubernetes_service_loadbalancer_ip returns loadBalancerIP value. So could it be that __meta_kubernetes_service_loadbalancer_ip relies on .spec.loadBalancerIP and not compatible with latest Kubernetes? ### What did you expect to see? _No response_ ### What did you see instead? Under which circumstances? __meta_kubernetes_service_loadbalancer_ip returned no value ### System information _No response_ ### Prometheus version _No response_ ### Prometheus configuration file _No response_ ### Alertmanager version _No response_ ### Alertmanager configuration file _No response_ ### Logs _No response_",
          "url": "https://github.com/prometheus/prometheus/issues/14398",
          "createdAt": "2024-07-03T13:05:22Z",
          "updatedAt": "2026-08-13T01:13:10Z",
          "timestamp": "2026-08-13T01:13:10Z",
          "metrics": {
            "reactions": 0,
            "comments": 23
          },
          "labels": [
            "help wanted",
            "component/service discovery",
            "good first issue",
            "component/service discovery/kubernetes"
          ],
          "author": "whitepiratebaku",
          "state": "open",
          "assignees": [
            "machine424"
          ],
          "change": "updated"
        }
      },
      {
        "id": "event:976594f21808b012dc56",
        "signalId": "github:prometheus/prometheus:issue:18770",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:issue:18770",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "promql/parser: parentheses around a plain duration literal are lost on round-trip",
          "text": "Note: I've generated this issue with Claude Opus 4.7 after using it to verify the issue. While reviewing #18768 I noticed that `(N)` inside a duration-expression position (offset, range bracket) is dropped on `Expr.String()` round-trip when N reduces to a single `*NumberLiteral`. Wrapping a multi-term `*DurationExpr` survives because `*DurationExpr` has a `Wrapped` field; `*NumberLiteral` has no such field. ### Reproduction With `ExperimentalDurationExpr: true`: #### Cases that lose parentheses | Input | `Expr.String()` | |------------------------|------------------| | `foo offset (5)` | `foo offset 5s` | | `foo offset +(5)` | `foo offset 5s` | | `foo offset -(5)` | `foo offset -5s` | | `foo offset (5m)` | `foo offset 5m` | | `foo[(5s)]` | `foo[5s]` | #### Cases that round-trip correctly (for reference) | Input | `Expr.String()` | |--------------------------|--------------------------| | `(5)` | `(5)` | | `-(5)` | `-(5)` | | `+(5)` | `+(5)` | | `(5) + 1` | `(5) + 1` | | `foo offset (5m + 1m)` | `foo offset (5m + 1m)` | | `foo offset -(5m + 1m)` | `foo offset -(5m + 1m)` | | `foo[(5s + 1s)]` | `foo[(5s + 1s)]` | Pure-scalar contexts use `*ParenExpr`, which prints its own parens. Duration-expression contexts with a `*DurationExpr` payload preserve parens via the `Wrapped` field. The mismatch is only when the payload is a single `*NumberLiteral`. ### Notes This pre-dates #18768. That PR fixes a panic on `foo offset -(5)` but inherits this round-trip limitation, which is why I'm filing it separately.",
          "url": "https://github.com/prometheus/prometheus/issues/18770",
          "createdAt": "2026-05-22T15:57:04Z",
          "updatedAt": "2026-08-13T01:13:07Z",
          "timestamp": "2026-08-13T01:13:07Z",
          "metrics": {
            "reactions": 0,
            "comments": 2
          },
          "labels": [
            "kind/bug",
            "priority/Pmaybe",
            "component/promql"
          ],
          "author": "krajorama",
          "state": "open",
          "assignees": [
            "roidelapluie"
          ],
          "change": "updated"
        }
      },
      {
        "id": "event:39a1f70b06b164e53beb",
        "signalId": "github:prometheus/prometheus:pull_request:17136",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:17136",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "Populate __meta_kubernetes_service_loadbalancer_ip from status.loadBalancer.ingress with fallback to spec.loadBalancerIP",
          "text": "Fixes #14398 #### Does this PR introduce a user-facing change? <!-- If no, just write \"NONE\" in the release-notes block below. Otherwise, please describe what should be mentioned in the CHANGELOG. Use the following prefixes: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/prometheus/blob/main/CHANGELOG.md If you need help formulating your entries, consult the reviewer(s). --> ```release-notes TO_BE_UPDATED: [ENHANCEMENT] __meta_kubernetes_service_loadbalancer_ip now populated from status.loadBalancer.ingress (with fallback to spec.loadBalancerIP) ```",
          "url": "https://github.com/prometheus/prometheus/pull/17136",
          "createdAt": "2025-09-03T10:53:22Z",
          "updatedAt": "2026-08-13T01:08:28Z",
          "timestamp": "2026-08-13T01:08:28Z",
          "metrics": {
            "reactions": 0,
            "comments": 9
          },
          "labels": [],
          "author": "SamarthBagga",
          "state": "open",
          "assignees": [
            "machine424"
          ],
          "change": "updated"
        }
      },
      {
        "id": "event:5ebd85e00baa6bc7ebe3",
        "signalId": "github:prometheus/prometheus:pull_request:19375",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19375",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "fix(discovery/aws): guard nil Placement and ImageId in EC2 discovery",
          "text": "## Summary Fixes #19374 — EC2 service discovery panics when `DescribeInstances` returns instances with a nil `Placement` field (or nil `ImageId`). `discovery/aws/ec2.go` refresh() dereferences `inst.Placement.AvailabilityZone` and `inst.ImageId` with no nil guard. When either is nil, this panics and crashes the entire Prometheus process (there is no `recover()` in `discovery/`). ## Changes - Guard `ec2LabelAMI` behind `inst.ImageId != nil` - Guard `ec2LabelAZ` / `ec2LabelAZID` behind `inst.Placement != nil && inst.Placement.AvailabilityZone != nil` This mirrors the guard pattern already used for every other optional field in this file (e.g. `if inst.PublicIpAddress != nil`), and the recently-fixed MSK case (#19184). ## Testing - `go build ./discovery/aws/...` passes - Existing tests in `discovery/aws/` pass",
          "url": "https://github.com/prometheus/prometheus/pull/19375",
          "createdAt": "2026-08-09T08:25:33Z",
          "updatedAt": "2026-08-13T01:08:11Z",
          "timestamp": "2026-08-13T01:08:11Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "waterWang",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:d96740b6c188e6b0e8f6",
        "signalId": "github:prometheus/prometheus:pull_request:19377",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19377",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "feat: add metric analyzer utilities for Prometheus metrics analysis",
          "text": "## What this PR does Adds MetricAnalyzer utility for analyzing Prometheus metrics. ## Changes - metric_analyzer.go: MetricAnalyzer with GetAverage, GetMax, GetMin, GetTrend, DetectAnomalies, GetPercentile, GetSummary - metric_analyzer_test.go: 10 test functions ## Usage analyzer := promql.NewMetricAnalyzer() analyzer.AddMetric(cpu, 50, time.Now(), nil) fmt.Println(analyzer.GetSummary(cpu))",
          "url": "https://github.com/prometheus/prometheus/pull/19377",
          "createdAt": "2026-08-09T17:10:48Z",
          "updatedAt": "2026-08-13T01:07:56Z",
          "timestamp": "2026-08-13T01:07:56Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "Ankitavasudev",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:69f6dcb62641e8478fee",
        "signalId": "github:prometheus/prometheus:issue:18044",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:issue:18044",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "Incorrect Markdown link formatting due to space between [] and ()",
          "text": "There are a couple of links in the documentation where a space exists between the link text ([]) and the URL (()). This breaks standard Markdown link formatting and prevents the links from rendering correctly. The affected links are: * AirBnB's Nerve in https://prometheus.io/docs/prometheus/latest/configuration/configuration/#nerve_sd_config * Serversets in https://prometheus.io/docs/prometheus/latest/configuration/configuration/#serverset_sd_config Expected behavior: Links should follow standard Markdown syntax without a space between the link text and the URL. `[Link text](url)` Actual behavior: The links currently contain a space between [] and (), which prevents them from being rendered as clickable links.",
          "url": "https://github.com/prometheus/prometheus/issues/18044",
          "createdAt": "2026-02-09T04:32:20Z",
          "updatedAt": "2026-08-12T23:25:07Z",
          "timestamp": "2026-08-12T23:25:07Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "kakabisht",
          "state": "closed",
          "assignees": [
            "kakabisht"
          ],
          "change": "updated"
        }
      },
      {
        "id": "event:71d6ff76cc029a9d1a6a",
        "signalId": "github:prometheus/prometheus:pull_request:19340",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19340",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "cmd/prometheus: OS agnostic tests",
          "text": "Allows TestDocumentation to run on windows. The two issues preventing this before were; 1. The test binary name differs between platforms. On non-Windows platforms it is _**prometheus.test**_, while on Windows it is _**prometheus.test.exe**_. Added a platform-specific check to handle the .exe suffix. 2. The loaded _expectedContext_ contained Windows-style line endings (\\r\\n), causing it to not match the expected prometheus.md content. Replaced the line endings before comparison. This could potentially be refactored in the future to avoid platform-specific handling on non-Windows systems. TestFeatureFlagsDocumented also failed on Windows due to the regex requiring exact line anchoring. Normalizing Windows-style line endings resolves the mismatch and allows the existing regex to work correctly. ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19340",
          "createdAt": "2026-08-05T20:26:56Z",
          "updatedAt": "2026-08-12T22:32:09Z",
          "timestamp": "2026-08-12T22:32:09Z",
          "metrics": {
            "reactions": 0,
            "comments": 2
          },
          "labels": [],
          "author": "JustDaile",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:2c1ebea03649534796be",
        "signalId": "github:prometheus/prometheus:pull_request:19370",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19370",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "config: fix windows config tests",
          "text": "PR addresses two issues in within `config/config_test.go` and `config/config_windows_test.go` in two separate commits. 1. `DefaultOTLPConfig` was missing from the `ruleFilesExpectedConf` which caused `TestLoadConfigRuleFilesAbsolutePath` to fail on **Windows**. 2. `filepath.FromSlash` is used extensively to handle platform pathing differences, but was missing in various places. This caused several tests to fail due to mismatches in the expected and actual config. ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19370",
          "createdAt": "2026-08-08T11:10:36Z",
          "updatedAt": "2026-08-12T22:30:17Z",
          "timestamp": "2026-08-12T22:30:17Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "JustDaile",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:3df38606ace6669025e7",
        "signalId": "github:prometheus/prometheus:pull_request:19400",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19400",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/stackit: add support for postgres targets discovery",
          "text": "This PR extends the STACKIT service discovery (`stackit_sd_configs`) to support discovering STACKIT Postgres Flex instances alongside standard IaaS servers. This PR pretends to add more features started here https://github.com/prometheus/prometheus/pull/16401 . It introduces a new `role` configuration option (`server`, `postgres`, `all`, defaulting to `all`), enabling users to discover IaaS servers, Postgres databases, or both within a STACKIT project. This is tested and actually is being used right now. ### Key Changes - Refactored `server.go` into `client.go` to handle multiple STACKIT service endpoints (IaaS and Postgres Flex). - Added `role` field to `SDConfig` with YAML unmarshaling validation. - Implemented `getPostgresInstances` to query the STACKIT Postgres Flex API and dynamically build metric targets (`__address__`, `__metrics_path__`, and `__meta_stackit_*` labels). - Updated configuration documentation and scrape config examples. - Added comprehensive unit tests for Postgres discovery, role filtering, and YAML unmarshaling. #### Which issue(s) does the PR fix: N/A #### Release notes for end users ```release-notes [FEATURE] discovery/stackit: Add support for Postgres targets discovery.",
          "url": "https://github.com/prometheus/prometheus/pull/19400",
          "createdAt": "2026-08-12T10:49:48Z",
          "updatedAt": "2026-08-12T21:22:03Z",
          "timestamp": "2026-08-12T21:22:03Z",
          "metrics": {
            "reactions": 0,
            "comments": 2
          },
          "labels": [],
          "author": "Dlorite",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:47c1c28e669e4752f283",
        "signalId": "github:prometheus/prometheus:pull_request:19402",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19402",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "[PREVIEW] storage/remote: combine exemplars and samples in same PRW v2 request",
          "text": "Fixes #17857 This PR ensures that samples, exemplars, and histograms belonging to the same series are grouped into the same `TimeSeries` message within a single Prometheus Remote Write v2 request. Previously, these were sent as separate `TimeSeries` messages, which could result in them being split across different batches or flush boundaries. ```release-notes [BUGFIX] Remote Write: Combine exemplars, samples, and histograms of the same series in the same PRW v2 request. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19402",
          "createdAt": "2026-08-12T13:47:41Z",
          "updatedAt": "2026-08-12T15:37:24Z",
          "timestamp": "2026-08-12T15:37:24Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "bwplotka",
          "state": "closed",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:37305543f6961fe4b66a",
        "signalId": "github:prometheus/prometheus:pull_request:19274",
        "event": "changed",
        "observedAt": "2026-08-13T13:48:00.446149Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19274",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "docs: document NaN behaviour of clamp_max() and clamp_min()",
          "text": "#### Which issue(s) does the PR fix: Fixes #19273 #### What this PR does: `clamp()` documents that float samples come back as `NaN` when either bound is `NaN`: > * Float samples are clamped to `NaN` if `min` or `max` is `NaN` `clamp_max()` and `clamp_min()` route through the same `clamp()` helper in `promql/functions.go`, so they behave the same way, but neither documents it and neither has a test pinning it. `functions.test` covers `clamp(test_clamp, 0, NaN)` and `clamp(test_clamp, NaN, 0)` but not the single-bound variants. So this is docs plus test coverage for existing behaviour, no functional change: * add the special case to both function docs * add the two missing cases next to the existing `clamp()` NaN coverage * regenerate `functionDocs.tsx`, since `docs/querying/functions.md` is the source for it The regeneration is in its own commit so the generated file is easy to skip while reviewing. #### Test plan ``` go test ./promql/ -run TestEvaluations ok github.com/prometheus/prometheus/promql ``` Both new cases execute (`functions.test` lines 652 and 657). I checked they aren't passing vacuously by temporarily changing an expected value to a number, which fails as it should; worth doing here since `NaN` comparisons can pass for the wrong reason. ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19274",
          "createdAt": "2026-07-27T03:09:52Z",
          "updatedAt": "2026-08-12T14:04:10Z",
          "timestamp": "2026-08-12T14:04:10Z",
          "metrics": {
            "reactions": 0,
            "comments": 7
          },
          "labels": [],
          "author": "om7057",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:a07fae3d0260e3d17b28",
        "signalId": "github:prometheus/prometheus:pull_request:18606",
        "event": "discovered",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:18606",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "model/textparse: implement OM2 scrape format",
          "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [FEATURE] scrape: Implement OM2.0 scrape format ``` ### What this PR does / why we need it: This PR introduces OpenMetrics2Parser from the [specifications](https://github.com/prometheus/OpenMetrics/blob/main/specification/OpenMetrics.md). The implementation is heavily inspired from the OM1 implementation. ## Benchstat Then benchstat are split into 3 categories: - AllTypes: for a generic /metric - CT: to check the created timestamp performance gain - Histogram: to check histograms performance gain ``` goos: linux goarch: amd64 pkg: github.com/prometheus/prometheus/model/textparse cpu: AMD Ryzen 7 3800X 8-Core Processor │ OM1 (old) │ OM2 (new) │ │ sec/op │ sec/op vs base │ ParseOM1VsOM2_AllTypes-16 597.3µ ± 3% 103.3µ ± 2% -82.70% (p=0.000 n=10) ParseOM1VsOM2_CT-16 111.81µ ± 2% 56.47µ ± 2% -49.49% (p=0.000 n=10) ParseOM1VsOM2_Histograms-16 944.5µ ± 2% 113.5µ ± 2% -87.98% (p=0.000 n=10) geomean 398.1µ 87.16µ -78.10% │ OM1 (old) │ OM2 (new) │ │ B/op │ B/op vs base │ ParseOM1VsOM2_AllTypes-16 28.10Ki ± 0% 17.91Ki ± 0% -36.24% (p=0.000 n=10) ParseOM1VsOM2_CT-16 14.00Ki ± 0% 11.54Ki ± 0% -17.53% (p=0.000 n=10) ParseOM1VsOM2_Histograms-16 39.22Ki ± 0% 24.01Ki ± 0% -38.79% (p=0.000 n=10) geomean 24.89Ki 17.06Ki -31.47% │ OM1 (old) │ OM2 (new) │ │ allocs/op │ allocs/op vs base │ ParseOM1VsOM2_AllTypes-16 794.0 ± 0% 437.0 ± 0% -44.96% (p=0.000 n=10) ParseOM1VsOM2_CT-16 409.0 ± 0% 242.0 ± 0% -40.83% (p=0.000 n=10) ParseOM1VsOM2_Histograms-16 935.0 ± 0% 533.0 ± 0% -42.99% (p=0.000 n=10) geomean 672.1 383.4 -42.95% ```",
          "url": "https://github.com/prometheus/prometheus/pull/18606",
          "createdAt": "2026-04-29T10:01:08Z",
          "updatedAt": "2026-08-13T16:10:40Z",
          "timestamp": "2026-08-13T16:10:40Z",
          "metrics": {
            "reactions": 0,
            "comments": 6
          },
          "labels": [],
          "author": "rbizos",
          "state": "open",
          "assignees": [],
          "change": "new"
        }
      },
      {
        "id": "event:619adda21fab3b70ec00",
        "signalId": "github:prometheus/prometheus:pull_request:19414",
        "event": "discovered",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19414",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "Agent wal",
          "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [PERF] Agent: replay WAL concurrently ```",
          "url": "https://github.com/prometheus/prometheus/pull/19414",
          "createdAt": "2026-08-13T16:06:54Z",
          "updatedAt": "2026-08-13T16:08:05Z",
          "timestamp": "2026-08-13T16:08:05Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "prymitive",
          "state": "open",
          "assignees": [],
          "change": "new"
        }
      },
      {
        "id": "event:77cbd61cb8930d320649",
        "signalId": "github:prometheus/prometheus:pull_request:19328",
        "event": "discovered",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19328",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "scrape: keep staleness tracking in sync when the series ref changes",
          "text": "Follow up on #19325. Staleness is tracked in `scrapeCache.seriesCur`/`seriesPrev`, both keyed by `storage.SeriesRef`. When the storage hands out a new reference for a series it already gave one for (e.g. it was garbage collected and had to be recreated), the scrape loop updates the cached reference and tracks the current scrape under the new one, while the previous scrape is still tracked under the old one. The old reference is then missing from the current scrape, so `forEachStale` reports the series as stale even though the target still exposes it. The stale marker is appended for `ce.ref`, i.e. for the *new*, live reference, at the same timestamp as the sample of this scrape. `headAppender.Commit` writes the WAL before applying samples to the head, so while the head itself drops the marker as a duplicate, it is already persisted: ``` StaleNaN append at same t returned err=<nil> WAL sample: ref=1 t=1000 v=1 stale=false WAL sample: ref=1 t=1000 v=NaN stale=true ``` Remote write and agent mode read the WAL, so they ship the marker downstream and the series ends there until the next scrape. This affects appender v2 since the reference was first written back to the cache, and appender v1 since #19325 made it consistent with v2. v2 is what the Prometheus binary runs today (`cmd/prometheus/main.go` passes `nil, fanoutStorage` to `scrape.NewManager`), so the fix is done for both loops. `scrapeCache.updateRef` now re-keys the staleness tracking to the new reference, and both scrape loops go through it. It deliberately *moves* the tracking instead of dropping it: dropping it would suppress the stale marker of a series that is still exposed but stopped being tracked for another reason in the same scrape, which would make staleness depend on whether the reference happened to change. The one case where that is observable is a series that starts carrying an explicit timestamp, which the last two test cases pin down. ### Tests `TestScrapeLoopCacheRefUpdatedOnChange` from #19325 is reworked into the table driven `TestScrapeLoopSeriesRefChange`, which drives a sequence of scrapes and asserts on the samples the scrape loop appends, not only on the cached reference. It reuses the `teststorage.Appendable` mock with an injected reference rather than a purpose built appendable, which is what makes the stale marker visible. All cases run against both scrape loops: | case | before | after | | --- | --- | --- | | reference stays the same | pass | pass | | reference changes while the series is still exposed | stale marker | pass | | reference changes on every scrape | stale marker per change | pass | | series stops being exposed after the reference changed | extra stale marker | pass | | explicit timestamp appears, reference stays the same | pass | pass | | explicit timestamp appears and the reference changes | pass | pass | The last two agree by construction, which is what keeps `updateRef` from turning into a plain delete. Commit 2 adds the test and fails on purpose, commit 3 fixes the bug. ```release-notes [BUGFIX] Scrape: Do not append a stale marker for a series that is still exposed when the storage returns a new series reference for it. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19328",
          "createdAt": "2026-08-04T08:43:14Z",
          "updatedAt": "2026-08-13T14:28:19Z",
          "timestamp": "2026-08-13T14:28:19Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "krajorama",
          "state": "open",
          "assignees": [],
          "change": "new"
        }
      },
      {
        "id": "event:b2948b4606aecc13f51a",
        "signalId": "github:prometheus/prometheus:pull_request:19403",
        "event": "changed",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [
          "updatedAt",
          "metrics"
        ],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19403",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "promql/parser: preserve parentheses around duration literals",
          "text": "#### Which issue(s) does the PR fix: Fixes #18770 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] PromQL: Preserve parentheses around duration literals on Expr.String() round-trip. ``` `paren_duration_expr` only set `Wrapped` on `*DurationExpr`, so a parenthesised `*NumberLiteral` (`foo offset (5)`, `foo[(5s)]`) was flattened by `Expr.String()`. This wraps a parenthesised number in a unary-plus `*DurationExpr` with `Wrapped: true`, matching how `+(5*2)` already survives. Unary `+(5)` / `-(5)` go through the same path. @krajorama @roidelapluie @vpranckaitis",
          "url": "https://github.com/prometheus/prometheus/pull/19403",
          "createdAt": "2026-08-13T01:35:12Z",
          "updatedAt": "2026-08-13T14:23:41Z",
          "timestamp": "2026-08-13T14:23:41Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:d2f85e363e89fa3be3b4",
        "signalId": "github:prometheus/prometheus:pull_request:19407",
        "event": "changed",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [
          "updatedAt",
          "metrics"
        ],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19407",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/file: wait for a matching snapshot instead of failing on empty updates",
          "text": "#18259 stopped tests from truncating SD files to zero bytes, but `requireUpdate` still treated the first snapshot with the expected *number* of groups as the result. File SD can emit empty groups (`[{\"targets\":[]},{\"targets\":[]}]`) before the file contents are visible, so `TestInvalidFileUpdate` and `TestUpdateFileWithPartialWrites` still flake. Wait until the groups match the expected snapshot (or time out). #18259 can stay; this is the remaining race in the test helper. cc @machine424 @bwplotka @krajorama Fixes #18269 #### Which issue(s) does the PR fix: Fixes #18269 #### Release notes for end users (**ALL** commits must be considered). ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19407",
          "createdAt": "2026-08-13T03:09:41Z",
          "updatedAt": "2026-08-13T14:23:24Z",
          "timestamp": "2026-08-13T14:23:24Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:f9390a628bce786d9fd2",
        "signalId": "github:prometheus/prometheus:pull_request:19405",
        "event": "changed",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [
          "updatedAt"
        ],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19405",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/aws: don't panic on ElastiCache caches with absent optional fields",
          "text": "#### Which issue(s) does the PR fix: Follow-up to #19396 (same nil-deref class in AWS SD). #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] discovery/aws: Don't panic on ElastiCache caches or clusters with absent optional fields. ``` `addServerlessCacheTargets` / `addCacheClusterTargets` dereferenced `ARN`, `ServerlessCacheName`, `Status`, `Engine`, `CacheClusterId`, etc. without nil checks. A cache missing any of those panics the refresh goroutine and takes the process down. Optional fields now omit the label instead of dereferencing. Refresh also skips tag lookup when `ARN` is nil. @matt-gp @sysadmind",
          "url": "https://github.com/prometheus/prometheus/pull/19405",
          "createdAt": "2026-08-13T01:35:23Z",
          "updatedAt": "2026-08-13T14:22:41Z",
          "timestamp": "2026-08-13T14:22:41Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:c986370de88390159a45",
        "signalId": "github:prometheus/prometheus:pull_request:19404",
        "event": "changed",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [
          "updatedAt"
        ],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19404",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "discovery/kubernetes: populate loadbalancer IP from status.ingress",
          "text": "#### Which issue(s) does the PR fix: Fixes #14398 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] discovery/kubernetes: Populate `__meta_kubernetes_service_loadbalancer_ip` from `status.loadBalancer.ingress`, falling back to deprecated `spec.loadBalancerIP`. ``` Kubernetes 1.24 dropped automatic `spec.loadBalancerIP`. Controllers (MetalLB, AKS, …) now only write IPs to `status.loadBalancer.ingress`, so the meta label was empty. This PR: - Prefers ingress IPs (comma-separated for dual-stack) - Falls back to `spec.loadBalancerIP` when status has no IPs - Leaves hostname-only ingress (EKS) for a follow-up, as discussed on the issue Related: #17136 (stalled on DCO). @machine424 @brancz @rexagod",
          "url": "https://github.com/prometheus/prometheus/pull/19404",
          "createdAt": "2026-08-13T01:35:17Z",
          "updatedAt": "2026-08-13T14:22:41Z",
          "timestamp": "2026-08-13T14:22:41Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "aamoghS",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:30c8b46d0c2a82665894",
        "signalId": "github:prometheus/prometheus:pull_request:19412",
        "event": "changed",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [
          "updatedAt"
        ],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19412",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "tsdb: release oversized head-chunk cache for single-chunk series",
          "text": "Range-query and compaction readers cache collected head chunks for sequential access. When a reader moved from a series with more than `headChunksBufMaxCap` head chunks to a different series with zero or one head chunk, the direct-lookup fast path returned before applying the capacity policy. The reader then retained the oversized backing array and its chunk pointers until it closed or visited another multi-chunk series. Release the oversized cache on that series switch, resetting the fingerprint and slice together. Preserve the backing array for the same series so it can still be reused after mmap or truncation. The cache-cap regression now covers both multi-chunk and single-chunk destinations and verifies that caching can repopulate after the release. #### Which issue(s) does the PR fix: Follow-up to #19136. #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] TSDB: Avoid excess memory retention during range queries and head compaction after reading series with many in-memory chunks ```",
          "url": "https://github.com/prometheus/prometheus/pull/19412",
          "createdAt": "2026-08-13T13:17:14Z",
          "updatedAt": "2026-08-13T14:13:26Z",
          "timestamp": "2026-08-13T14:13:26Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [
            "kind/bug",
            "component/tsdb"
          ],
          "author": "aknuds1",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:2484d7673a602254e42e",
        "signalId": "github:prometheus/prometheus:pull_request:19413",
        "event": "discovered",
        "observedAt": "2026-08-13T16:19:22.035158Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19413",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "promql: preserve name-dropping through the info function",
          "text": "Previously, the info function did not properly implement delayed name removal, and did not propagate the `dropName` flag properly. This PR makes the info function behave more consistently with other functions like `label_replace` with respect to delayed name removal. #### Which issue(s) does the PR fix: N/A Problem found in https://github.com/prometheus/prometheus/pull/19387 #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* ```release-notes [BUGFIX] PromQL: Preserve metric-name dropping through the info function when delayed name removal is enabled. ```",
          "url": "https://github.com/prometheus/prometheus/pull/19413",
          "createdAt": "2026-08-13T14:02:16Z",
          "updatedAt": "2026-08-13T14:02:17Z",
          "timestamp": "2026-08-13T14:02:17Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "zenador",
          "state": "open",
          "assignees": [],
          "change": "new"
        }
      },
      {
        "id": "event:690b6e4e44569906d62a",
        "signalId": "github:prometheus/prometheus:pull_request:19415",
        "event": "discovered",
        "observedAt": "2026-08-13T17:43:20.785491Z",
        "changedFields": [],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19415",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "Enforce GitHub Action security across all repositories in the Prometheus org",
          "text": "#### Which issue(s) does the PR fix: This PR adds [Zizmor](https://github.com/zizmorcore/zizmor) for GitHub Actions static analysis and also add the workflow to the repo_sync automation, to ensure the workflow is added to all repositories in the Prometheus and Prometheus-community organizations. #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes NONE ```",
          "url": "https://github.com/prometheus/prometheus/pull/19415",
          "createdAt": "2026-08-13T16:53:10Z",
          "updatedAt": "2026-08-13T17:15:44Z",
          "timestamp": "2026-08-13T17:15:44Z",
          "metrics": {
            "reactions": 0,
            "comments": 1
          },
          "labels": [],
          "author": "ArthurSens",
          "state": "open",
          "assignees": [],
          "change": "new"
        }
      },
      {
        "id": "event:a68c49a99e0178398494",
        "signalId": "github:prometheus/prometheus:issue:17691",
        "event": "changed",
        "observedAt": "2026-08-13T17:43:20.785491Z",
        "changedFields": [
          "text",
          "updatedAt"
        ],
        "signal": {
          "id": "github:prometheus/prometheus:issue:17691",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "issue",
          "title": "Dependency Dashboard",
          "text": "This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more.<br>[View this repository on the Mend.io Web Portal](https://developer.mend.io/github/prometheus/prometheus). ## Repository Problems These problems occurred while renovating this repository. [View logs](https://developer.mend.io//github/prometheus/prometheus). - ⚠️ WARN: Package lookup failures ## Deprecations / Replacements > [!WARNING] The following dependencies are either deprecated or have replacements available. | Datasource | Package | Replacement PR? | |------------|------|--------------| | npm | [@babel/plugin-proposal-private-property-in-object](https://redirect.github.com/babel/babel-plugin-proposal-private-property-in-object) | ![Unavailable](https://img.shields.io/badge/unavailable-orange?style=flat-square) | | npm | [popper.js](https://redirect.github.com/FezVrasta/popper.js) | ![Unavailable](https://img.shields.io/badge/unavailable-orange?style=flat-square) | ## Awaiting Schedule The following updates are awaiting their schedule. To get an update now, click on a checkbox below. - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-nomad-api-digest -->fix(deps): update github.com/hashicorp/nomad/api digest to 6832f99 - [ ] <!-- unschedule-branch=deps-update/github.com-prometheus-client_golang-exp-digest -->fix(deps): update github.com/prometheus/client_golang/exp digest to 0c5dccd - [ ] <!-- unschedule-branch=deps-update/google.golang.org-genproto-googleapis-api-digest -->fix(deps): update google.golang.org/genproto/googleapis/api digest to ec0a776 - [ ] <!-- unschedule-branch=deps-update/react-app -->chore(deps): update dependency sanitize-html to v2.17.7 - [ ] <!-- unschedule-branch=deps-update/github-codeql-action-4.x -->chore(deps): update github/codeql-action action to v4.37.7 - [ ] <!-- unschedule-branch=deps-update/aws-go-dependencies -->fix(deps): update aws go dependencies (`github.com/aws/aws-sdk-go-v2`, `github.com/aws/aws-sdk-go-v2/credentials`, `github.com/aws/aws-sdk-go-v2/feature/ec2/imds`, `github.com/aws/aws-sdk-go-v2/service/ec2`, `github.com/aws/aws-sdk-go-v2/service/ecs`, `github.com/aws/aws-sdk-go-v2/service/elasticache`, `github.com/aws/aws-sdk-go-v2/service/kafka`, `github.com/aws/aws-sdk-go-v2/service/lightsail`, `github.com/aws/aws-sdk-go-v2/service/rds`, `github.com/aws/aws-sdk-go-v2/service/sts`) - [ ] <!-- unschedule-branch=deps-update/google.golang.org-protobuf-1.x -->fix(deps): update module google.golang.org/protobuf to v1.36.12 - [ ] <!-- unschedule-branch=deps-update/enzyme-cheerio-1.x -->chore(deps): update dependency enzyme>cheerio to v1.2.0 - [ ] <!-- unschedule-branch=deps-update/mantine-ui -->chore(deps): update mantine ui (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`, `eslint-plugin-react-refresh`, `highlight.js`, `sanitize-html`) - [ ] <!-- unschedule-branch=deps-update/modules -->chore(deps): update modules to v8.67.0 (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`) - [ ] <!-- unschedule-branch=deps-update/typescript-eslint-monorepo -->chore(deps): update typescript-eslint monorepo to v8.67.0 (`@typescript-eslint/eslint-plugin`, `@typescript-eslint/parser`) - [ ] <!-- unschedule-branch=deps-update/azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/azcore to v1.23.0 - [ ] <!-- unschedule-branch=deps-update/github.com-digitalocean-godo-1.x -->fix(deps): update module github.com/digitalocean/godo to v1.204.0 - [ ] <!-- unschedule-branch=deps-update/github.com-grpc-ecosystem-grpc-gateway-v2-2.x -->fix(deps): update module github.com/grpc-ecosystem/grpc-gateway/v2 to v2.30.0 - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-consul-api-1.x -->fix(deps): update module github.com/hashicorp/consul/api to v1.34.4 - [ ] <!-- unschedule-branch=deps-update/github.com-open-telemetry-opentelemetry-collector-contrib-processor-deltatocumulativeprocessor-0.x -->fix(deps): update module github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor to v0.158.0 - [ ] <!-- unschedule-branch=deps-update/github.com-oracle-oci-go-sdk-v65-65.x -->fix(deps): update module github.com/oracle/oci-go-sdk/v65 to v65.123.1 - [ ] <!-- unschedule-branch=deps-update/github.com-outscale-osc-sdk-go-v2-2.x -->fix(deps): update module github.com/outscale/osc-sdk-go/v2 to v2.35.0 - [ ] <!-- unschedule-branch=deps-update/github.com-prometheus-prometheus-0.x -->fix(deps): update module github.com/prometheus/prometheus to v0.313.2 - [ ] <!-- unschedule-branch=deps-update/golang.org-x-text-0.x -->fix(deps): update module golang.org/x/text to v0.41.0 - [ ] <!-- unschedule-branch=deps-update/google.golang.org-api-0.x -->fix(deps): update module google.golang.org/api to v0.293.0 - [ ] <!-- unschedule-branch=deps-update/google.golang.org-grpc-1.x -->fix(deps): update module google.golang.org/grpc to v1.83.0 - [ ] <!-- unschedule-branch=deps-update/opentelemetry-go-dependencies -->fix(deps): update opentelemetry go dependencies (`go.opentelemetry.io/collector/component`, `go.opentelemetry.io/collector/consumer`, `go.opentelemetry.io/collector/pdata`, `go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace`, `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp`, `go.opentelemetry.io/otel`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`, `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp`, `go.opentelemetry.io/otel/metric`, `go.opentelemetry.io/otel/sdk`, `go.opentelemetry.io/otel/trace`) - [ ] <!-- unschedule-branch=deps-update/actions-setup-go-7.x -->chore(deps): update actions/setup-go action to v7 - [ ] <!-- unschedule-branch=deps-update/actions-setup-node-7.x -->chore(deps): update actions/setup-node action to v7 - [ ] <!-- unschedule-branch=deps-update/actions-stale-11.x -->chore(deps): update actions/stale action to v11 - [ ] <!-- unschedule-branch=deps-update/major-30-jest-monorepo -->chore(deps): update dependency @types/jest to v30 - [ ] <!-- unschedule-branch=deps-update/vitejs-plugin-react-5.x -->chore(deps): update dependency @vitejs/plugin-react to v5 - [ ] <!-- unschedule-branch=deps-update/vitejs-plugin-react-6.x -->chore(deps): update dependency @vitejs/plugin-react to v6 - [ ] <!-- unschedule-branch=deps-update/major-9-eslint-monorepo -->chore(deps): update dependency eslint to v9 - [ ] <!-- unschedule-branch=deps-update/major-6-react-monorepo -->chore(deps): update dependency eslint-plugin-react-hooks to v6 - [ ] <!-- unschedule-branch=deps-update/major-7-react-monorepo -->chore(deps): update dependency eslint-plugin-react-hooks to v7 - [ ] <!-- unschedule-branch=deps-update/globals-17.x -->chore(deps): update dependency globals to v17 - [ ] <!-- unschedule-branch=deps-update/jest-fetch-mock-4.x -->chore(deps): update dependency jest-fetch-mock to v4 - [ ] <!-- unschedule-branch=deps-update/jsdom-26.x -->chore(deps): update dependency jsdom to v26 - [ ] <!-- unschedule-branch=deps-update/jsdom-27.x -->chore(deps): update dependency jsdom to v27 - [ ] <!-- unschedule-branch=deps-update/jsdom-28.x -->chore(deps): update dependency jsdom to v28 - [ ] <!-- unschedule-branch=deps-update/jsdom-29.x -->chore(deps): update dependency jsdom to v29 - [ ] <!-- unschedule-branch=deps-update/jsdom-30.x -->chore(deps): update dependency jsdom to v30 - [ ] <!-- unschedule-branch=deps-update/major-8-react-router-monorepo -->chore(deps): update dependency react-router to v8 - [ ] <!-- unschedule-branch=deps-update/sinon-20.x -->chore(deps): update dependency sinon to v20 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/sinon-21.x -->chore(deps): update dependency sinon to v21 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/sinon-22.x -->chore(deps): update dependency sinon to v22 (`sinon`, `@types/sinon`) - [ ] <!-- unschedule-branch=deps-update/typescript-6.x -->chore(deps): update dependency typescript to v6 - [ ] <!-- unschedule-branch=deps-update/typescript-7.x -->chore(deps): update dependency typescript to v7 - [ ] <!-- unschedule-branch=deps-update/vite-7.x -->chore(deps): update dependency vite to v7 - [ ] <!-- unschedule-branch=deps-update/vite-8.x -->chore(deps): update dependency vite to v8 - [ ] <!-- unschedule-branch=deps-update/major-4-vitest-monorepo -->chore(deps): update dependency vitest to v4 - [ ] <!-- unschedule-branch=deps-update/major-10-eslint-monorepo -->chore(deps): update eslint monorepo to v10 (`@eslint/js`, `eslint`) - [ ] <!-- unschedule-branch=deps-update/node-24.x -->chore(deps): update node.js to v24 (`node`, `@types/node`) - [ ] <!-- unschedule-branch=deps-update/major-6-azure-go-dependencies -->fix(deps): update azure go dependencies to v6 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-7-azure-go-dependencies -->fix(deps): update azure go dependencies to v7 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-8-azure-go-dependencies -->fix(deps): update azure go dependencies to v8 (`github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5`, `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4`) - [ ] <!-- unschedule-branch=deps-update/major-3-font-awesome -->fix(deps): update dependency @fortawesome/react-fontawesome to v3 - [ ] <!-- unschedule-branch=deps-update/major-7-testing-library-monorepo -->fix(deps): update dependency @testing-library/jest-dom to v7 - [ ] <!-- unschedule-branch=deps-update/bootstrap-5.x -->fix(deps): update dependency bootstrap to v5 - [ ] <!-- unschedule-branch=deps-update/http-proxy-middleware-4.x -->fix(deps): update dependency http-proxy-middleware to v4 - [ ] <!-- unschedule-branch=deps-update/jquery-4.x -->fix(deps): update dependency jquery to v4 (`jquery`, `@types/jquery`) - [ ] <!-- unschedule-branch=deps-update/react-infinite-scroll-component-7.x -->fix(deps): update dependency react-infinite-scroll-component to v7 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-8.x -->fix(deps): update dependency react-resize-detector to v8 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-9.x -->fix(deps): update dependency react-resize-detector to v9 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-10.x -->fix(deps): update dependency react-resize-detector to v10 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-11.x -->fix(deps): update dependency react-resize-detector to v11 - [ ] <!-- unschedule-branch=deps-update/react-resize-detector-12.x -->fix(deps): update dependency react-resize-detector to v12 - [ ] <!-- unschedule-branch=deps-update/reactstrap-9.x -->fix(deps): update dependency reactstrap to v9 - [ ] <!-- unschedule-branch=deps-update/major-7-font-awesome -->fix(deps): update font awesome to v7 (`@fortawesome/fontawesome-common-types`, `@fortawesome/fontawesome-svg-core`, `@fortawesome/free-solid-svg-icons`) - [ ] <!-- unschedule-branch=deps-update/major-5-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v5 - [ ] <!-- unschedule-branch=deps-update/major-9-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v9 - [ ] <!-- unschedule-branch=deps-update/major-10-azure-go-dependencies -->fix(deps): update module github.com/azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 to v10 - [ ] <!-- unschedule-branch=deps-update/github.com-cenkalti-backoff-v5-6.x -->fix(deps): update module github.com/cenkalti/backoff/v5 to v6 - [ ] <!-- unschedule-branch=deps-update/github.com-cenkalti-backoff-v5-7.x -->fix(deps): update module github.com/cenkalti/backoff/v5 to v7 - [ ] <!-- unschedule-branch=deps-update/github.com-hashicorp-consul-api-2.x -->fix(deps): update module github.com/hashicorp/consul/api to v2 - [ ] <!-- unschedule-branch=deps-update/github.com-linode-linodego-2.x -->fix(deps): update module github.com/linode/linodego to v2 - [ ] <!-- unschedule-branch=deps-update/go.yaml.in-yaml-v2-3.x -->fix(deps): update module go.yaml.in/yaml/v2 to v3 - [ ] <!-- unschedule-branch=deps-update/major-2-kubernetes-go-dependencies -->fix(deps): update module k8s.io/klog to v2 - [ ] <!-- unschedule-branch=deps-update/major-19-react-monorepo -->fix(deps): update react monorepo to v19 (`@types/react`, `@types/react-dom`, `react`, `react-dom`) - [ ] <!-- create-all-awaiting-schedule-prs -->🔐 **Create all awaiting schedule PRs at once** 🔐 --- > [!WARNING] > Renovate failed to look up the following dependencies: `Failed to look up go package github.com/aws/aws-sdk-go-v2/config: no-result`, `Failed to look up go package go.opentelemetry.io/collector/processor: no-result`. > > Files affected: `go.mod` --- ## Open The following updates have all been created. To force a retry/rebase of any, click on a checkbox below. - [ ] <!-- rebase-branch=deps-update/kubernetes-go-dependencies -->[fix(deps): update kubernetes go dependencies to v0.36.3](../pull/18757) (`k8s.io/api`, `k8s.io/apimachinery`, `k8s.io/client-go`) ## PR Closed (Blocked) The following updates are blocked by an existing closed PR. To recreate the PR, click on a checkbox below. - [ ] <!-- recreate-branch=deps-update/github.com-prometheus-compliance-remotewrite-digest -->[fix(deps): update github.com/prometheus/compliance/remotewrite digest to 67b8327](../pull/19349) - [ ] <!-- recreate-branch=deps-update/quay.io-prometheus-golang-builder-1.x -->[chore(deps): update quay.io/prometheus/golang-builder docker tag to v1.26](../pull/18874) ## Detected Dependencies <details><summary>dockerfile (2)</summary> <blockquote> <details><summary>Dockerfile</summary> </details> <details><summary>Dockerfile.distroless</summary> </details> </blockquote> </details> <details><summary>github-actions (16)</summary> <blockquote> <details><summary>.github/workflows/approve-workflows.yml (1)</summary> - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` </details> <details><summary>.github/workflows/automerge-dependabot.yml (1)</summary> - `dependabot/fetch-metadata v3.1.0@25dd0e34f4fe68f24cc83900b1fe3fe149efef98` </details> <details><summary>.github/workflows/buf-lint.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `bufbuild/buf-setup-action v1.50.0@a47c93e0b1648d5651a065437926377d060baa99` - `bufbuild/buf-lint-action v1.1.1@06f9dd823d873146471cfaaf108a993fe00e5325` - `bufbuild/buf-breaking-action v1.1.4@c57b3d842a5c3f3b454756ef65305a50a587c5ba` </details> <details><summary>.github/workflows/buf.yml (5)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `bufbuild/buf-setup-action v1.50.0@a47c93e0b1648d5651a065437926377d060baa99` - `bufbuild/buf-lint-action v1.1.1@06f9dd823d873146471cfaaf108a993fe00e5325` - `bufbuild/buf-breaking-action v1.1.4@c57b3d842a5c3f3b454756ef65305a50a587c5ba` - `bufbuild/buf-push-action v1.2.0@a654ff18effe4641ebea4a4ce242c49800728459` </details> <details><summary>.github/workflows/check_release_notes.yml (1)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` </details> <details><summary>.github/workflows/ci.yml (51)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-artifacts v0.1.1@9ca3252d07f230d5f923452b4df5697eba4a5bee` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `prometheus/promci-setup v0.2.2@55bd31fe92710532260eb57c554f2697363285c5` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `prometheus/promci v0.9.0@370e8c15dcec50043cbe66f2f34633d9efc0a190` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-node v6.5.0@249970729cb0ef3589644e2896645e5dc5ba9c38` → [Updates: `v7.0.0`] - `pnpm/action-setup v6.0.10@0977fd99725f1db4007ccb2928dbb4e90d06cc86` - `actions/cache v6.1.0@55cc8345863c7cc4c66a329aec7e433d2d1c52a9` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.25-base` → [Updates: `1.26-base`] - `quay.io/prometheus/golang-builder 1.26-base` - `go 1.26.x` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `quay.io/prometheus/golang-builder 1.26-base` - `go 1.26.x` - `pnpm >=11.0.0 <11.12.0 || >11.12.0 <12.0.0` </details> <details><summary>.github/workflows/codeql-analysis.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] </details> <details><summary>.github/workflows/container_description.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `christian-korneck/update-container-description-action v1@d36005551adeaba9698d8d67a296bd16fa91f8e8` - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `christian-korneck/update-container-description-action v1@d36005551adeaba9698d8d67a296bd16fa91f8e8` </details> <details><summary>.github/workflows/fuzzing.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `actions/upload-artifact v7.0.1@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a` - `go 1.26.x` </details> <details><summary>.github/workflows/govulncheck.yml (1)</summary> - `golang/govulncheck-action master@032d45514ae346b1db93c04b0c90b841c370344f` </details> <details><summary>.github/workflows/lock.yml (1)</summary> - `dessant/lock-threads v6.0.2@89ae32b08ed1a541efecbab17912962a5e38981c` </details> <details><summary>.github/workflows/prombench.yml</summary> </details> <details><summary>.github/workflows/repo_sync.yml (1)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` </details> <details><summary>.github/workflows/scorecards.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `ossf/scorecard-action v2.4.4@2d1146689b8cda280b9bc96326124645441f03bc` - `actions/upload-artifact v7.0.1@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a` - `github/codeql-action v4.37.6@5595ccaf912efad79be6eef63a5619ff05969be3` → [Updates: `v4.37.7`] </details> <details><summary>.github/workflows/stale.yml (1)</summary> - `actions/stale v10.4.0@1e223db275d687790206a7acac4d1a11bd6fe629` → [Updates: `v11.0.0`] </details> <details><summary>scripts/golangci-lint.yml (4)</summary> - `actions/checkout v7.0.1@3d3c42e5aac5ba805825da76410c181273ba90b1` - `actions/setup-go v6.5.0@924ae3a1cded613372ab5595356fb5720e22ba16` → [Updates: `v7.0.0`] - `golangci/golangci-lint-action v9.3.0@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a` - `go 1.26.x` </details> </blockquote> </details> <details><summary>gomod (4)</summary> <blockquote> <details><summary>compliance/go.mod (2)</summary> - `go 1.25.10` - `github.com/prometheus/compliance/remotewrite v0.0.0-20260223092825-818283e1171e@818283e1171e` → [Updates: `v0.0.0-20260223092825-818283e1171e`] </details> <details><summary>go.mod (109)</summary> - `go 1.25.10` - `github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0` → [Updates: `v1.23.0`] - `github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.0` - `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0` → [Updates: `v6.4.0`, `v7.3.0`, `v8.2.0`] - `github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0` → [Updates: `v5.2.0`, `v6.2.0`, `v7.2.0`, `v8.0.0`, `v9.0.0`, `v10.0.0`] - `github.com/Code-Hex/go-generics-cache v1.5.1` - `github.com/KimMachineGun/automemlimit v0.7.5` - `github.com/alecthomas/kingpin/v2 v2.4.0` - `github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b@0f3dac36c52b` - `github.com/aws/aws-sdk-go-v2 v1.43.4` → [Updates: `v1.43.5`] - `github.com/aws/aws-sdk-go-v2/config v1.32.35` - `github.com/aws/aws-sdk-go-v2/credentials v1.19.34` → [Updates: `v1.19.35`] - `github.com/aws/aws-sdk-go-v2/service/ec2 v1.321.0` → [Updates: `v1.321.1`] - `github.com/aws/aws-sdk-go-v2/service/ecs v1.90.0` → [Updates: `v1.90.1`] - `github.com/aws/aws-sdk-go-v2/service/elasticache v1.56.4` → [Updates: `v1.56.5`] - `github.com/aws/aws-sdk-go-v2/service/kafka v1.58.0` → [Updates: `v1.58.1`] - `github.com/aws/aws-sdk-go-v2/service/lightsail v1.58.4` → [Updates: `v1.58.5`] - `github.com/aws/aws-sdk-go-v2/service/rds v1.124.1` → [Updates: `v1.124.2`] - `github.com/aws/aws-sdk-go-v2/service/sts v1.45.4` → [Updates: `v1.45.5`] - `github.com/aws/smithy-go v1.27.7` - `github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3@fcc2c21820a3` - `github.com/cespare/xxhash/v2 v2.3.0` - `github.com/dennwc/varint v1.0.0` - `github.com/digitalocean/godo v1.201.0` → [Updates: `v1.204.0`] - `github.com/edsrzf/mmap-go v1.2.1-0.20241212181136-fad1cd13edbd@fad1cd13edbd` - `github.com/envoyproxy/go-control-plane/envoy v1.37.0` - `github.com/envoyproxy/protoc-gen-validate v1.3.3` - `github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb@2cd4dd1e2dcb` - `github.com/felixge/fgprof v0.9.5` - `github.com/go-openapi/strfmt v0.27.0` - `github.com/go-zookeeper/zk v1.0.4` - `github.com/gogo/protobuf v1.3.2` - `github.com/golang/snappy v1.0.0` - `github.com/google/go-cmp v0.7.0` - `github.com/google/pprof v0.0.0-20260802141513-ef3492d7dac3@ef3492d7dac3` - `github.com/google/uuid v1.6.0` - `github.com/gophercloud/gophercloud/v2 v2.13.0` - `github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853@f7b3be9d1853` - `github.com/hashicorp/consul/api v1.33.7` → [Updates: `v1.34.4`, `v2.0.0`] - `github.com/hashicorp/nomad/api v0.0.0-20260807203101-d78b9b59529a@d78b9b59529a` → [Updates: `v0.0.0-20260813124048-6832f99bc283`] - `github.com/hetznercloud/hcloud-go/v2 v2.47.0` - `github.com/ionos-cloud/sdk-go/v6 v6.3.11` - `github.com/json-iterator/go v1.1.12` - `github.com/klauspost/compress v1.19.2` - `github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b@a4b6fa1dd06b` - `github.com/linode/linodego v1.69.1` → [Updates: `v2.5.0`] - `github.com/miekg/dns v1.1.72` - `github.com/moby/moby/api v1.55.0` - `github.com/moby/moby/client v0.5.1` - `github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822@a7dc8b61c822` - `github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f@2f068394615f` - `github.com/nsf/jsondiff v0.0.0-20260207060731-8e8d90c4c0ac@8e8d90c4c0ac` - `github.com/oklog/run v1.2.0` - `github.com/oklog/ulid/v2 v2.1.2` - `github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.157.0` → [Updates: `v0.158.0`] - `github.com/outscale/osc-sdk-go/v2 v2.34.0` → [Updates: `v2.35.0`] - `github.com/ovh/go-ovh v1.9.0` - `github.com/pb33f/libopenapi v0.38.7` - `github.com/pb33f/libopenapi-validator v0.14.0` - `github.com/prometheus/alertmanager v0.33.1` - `github.com/prometheus/client_golang v1.24.1` - `github.com/prometheus/client_golang/exp v0.0.0-20260724065723-ecdb8254ba61@ecdb8254ba61` → [Updates: `v0.0.0-20260812154952-0c5dccd910c0`] - `github.com/prometheus/client_model v0.6.2` - `github.com/prometheus/common v0.70.1` - `github.com/prometheus/common/assets v0.2.0` - `github.com/prometheus/exporter-toolkit v0.17.1` - `github.com/prometheus/sigv4 v0.4.1` - `github.com/scaleway/scaleway-sdk-go v1.0.0-beta.37` - `github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c@f1e31cf0ba5c` - `github.com/stackitcloud/stackit-sdk-go/core v0.26.0` - `github.com/stretchr/testify v1.11.1` - `github.com/vultr/govultr/v3 v3.32.0` - `go.opentelemetry.io/collector/component v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/collector/consumer v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/collector/pdata v1.63.0` → [Updates: `v1.64.0`] - `go.opentelemetry.io/collector/processor v1.63.0` - `go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.69.0` → [Updates: `v0.70.0`] - `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0` → [Updates: `v0.70.0`] - `go.opentelemetry.io/otel v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/metric v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/sdk v1.44.0` → [Updates: `v1.45.0`] - `go.opentelemetry.io/otel/trace v1.44.0` → [Updates: `v1.45.0`] - `go.uber.org/atomic v1.11.0` - `go.uber.org/automaxprocs v1.6.0` - `go.uber.org/goleak v1.3.0` - `go.yaml.in/yaml/v2 v2.4.4` → [Updates: `v3.0.5`] - `go.yaml.in/yaml/v3 v3.0.5` - `go.yaml.in/yaml/v4 v4.0.0-rc.6` - `golang.org/x/oauth2 v0.36.0` - `golang.org/x/sync v0.22.0` - `golang.org/x/sys v0.47.0` - `golang.org/x/text v0.40.0` → [Updates: `v0.41.0`] - `google.golang.org/api v0.290.0` → [Updates: `v0.293.0`] - `google.golang.org/genproto/googleapis/api v0.0.0-20260807164820-c8921c73eeea@c8921c73eeea` → [Updates: `v0.0.0-20260810153831-ec0a7760b754`] - `google.golang.org/grpc v1.82.1` → [Updates: `v1.83.0`] - `google.golang.org/protobuf v1.36.12-0.20260806062936-644d0267c26e@644d0267c26e` → [Updates: `v1.36.12`] - `k8s.io/api v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/apimachinery v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/client-go v0.35.3` → [Updates: `v0.36.3`] - `k8s.io/klog v1.0.0` → [Updates: `v2.140.0`] - `k8s.io/klog/v2 v2.140.0` - `github.com/oracle/oci-go-sdk/v65 v65.121.1` → [Updates: `v65.123.1`] - `github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.35` → [Updates: `v1.18.36`] - `github.com/cenkalti/backoff/v5 v5.0.3` → [Updates: `v6.0.1`, `v7.0.0`] - `github.com/prometheus/otlptranslator v1.0.0` - `golang.org/x/time v0.15.0` </details> <details><summary>internal/tools/go.mod (5)</summary> - `go 1.25.10` - `github.com/bufbuild/buf v1.72.0` - `github.com/daixiang0/gci v0.14.0` - `github.com/gogo/protobuf v1.3.2` - `github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0` → [Updates: `v2.30.0`] </details> <details><summary>web/ui/mantine-ui/src/promql/tools/go.mod (5)</summary> - `go 1.25.10` - `github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853@f7b3be9d1853` - `github.com/prometheus/prometheus v0.312.0` → [Updates: `v0.313.2`] - `github.com/russross/blackfriday/v2 v2.1.0` - `cloud.google.com/go v0.123.0` </details> </blockquote> </details> <details><summary>jsonnet-bundler (1)</summary> <blockquote> <details><summary>documentation/prometheus-mixin/jsonnetfile.json</summary> </details> </blockquote> </details> <details><summary>npm (7)</summary> <blockquote> <details><summary>web/ui/mantine-ui/package.json (58)</summary> - `@codemirror/autocomplete ^6.20.3` - `@codemirror/commands ^6.10.4` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/search ^6.7.1` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@floating-ui/dom ^1.8.0` - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@mantine/code-highlight ^9.5.0` - `@mantine/core ^9.5.0` - `@mantine/dates ^9.5.0` - `@mantine/hooks ^9.5.0` - `@mantine/notifications ^9.5.0` - `@microsoft/fetch-event-source ^2.0.1` - `@nexucis/fuzzy ^0.5.1` - `@nexucis/kvsearch ^0.9.1` - `@reduxjs/toolkit ^2.12.0` - `@tabler/icons-react ^3.45.0` - `@tanstack/react-query ^5.101.4` - `@testing-library/jest-dom ^6.10.0` → [Updates: `^7.0.0`] - `@testing-library/react ^16.3.2` - `@types/lodash ^4.17.24` - `@types/sanitize-html ^2.16.1` - `@uiw/react-codemirror ^4.25.11` - `clsx ^2.1.1` - `dayjs ^1.11.21` - `highlight.js ^11.11.1` → [Updates: `^11.11.1`] - `lodash ^4.18.1` - `react ^19.2.8` - `react-dom ^19.2.8` - `react-infinite-scroll-component ^6.1.1` → [Updates: `^7.0.0`] - `react-redux ^9.3.0` - `react-router-dom ^7.18.1` - `sanitize-html ^2.17.6` → [Updates: `^2.17.6`] - `uplot ^1.6.32` - `uplot-react ^1.2.4` - `use-query-params ^2.2.2` - `@eslint/compat ^2.0.0` - `@eslint/eslintrc ^3.3.6` - `@eslint/js ^9.39.5` → [Updates: `^10.0.0`] - `@types/react ^19.2.17` - `@types/react-dom ^19.2.3` - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `@vitejs/plugin-react ^4.7.0` → [Updates: `^5.0.0`, `^6.0.0`] - `eslint ^9.39.5` → [Updates: `^10.0.0`] - `eslint-plugin-react-hooks ^5.2.0` → [Updates: `^6.0.0`, `^7.0.0`] - `eslint-plugin-react-refresh ^0.5.3` → [Updates: `^0.5.3`] - `globals ^16.5.0` → [Updates: `^17.0.0`] - `jsdom ^25.0.1` → [Updates: `^26.0.0`, `^27.0.0`, `^28.0.0`, `^29.0.0`, `^30.0.0`] - `postcss ^8.5.23` - `postcss-preset-mantine ^1.18.0` - `postcss-simple-vars ^7.0.1` - `rollup-plugin-license ^3.7.1` - `vite ^6.4.3` → [Updates: `^7.0.0`, `^8.0.0`] - `vitest ^3.2.7` → [Updates: `^4.0.0`] </details> <details><summary>web/ui/module/codemirror-promql/package.json (26)</summary> - `lru-cache ^11.5.2` - `@codemirror/autocomplete ^6.20.3` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@eslint/compat ^2.0.0` - `@eslint/eslintrc ^3.3.6` - `@eslint/js ^9.39.5` → [Updates: `^10.0.0`] - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `eslint ^9.39.5` → [Updates: `^10.0.0`] - `eslint-plugin-prettier ^5.5.6` - `isomorphic-fetch ^3.0.0` - `jest ^30.4.2` - `nock ^14.0.16` - `@codemirror/autocomplete ^6.4.0` - `@codemirror/language ^6.3.0` - `@codemirror/lint ^6.0.0` - `@codemirror/state ^6.1.1` - `@codemirror/view ^6.4.0` - `@lezer/common ^1.0.1` - `node >=12.0.0` </details> <details><summary>web/ui/module/lezer-promql/package.json (8)</summary> - `@lezer/generator ^1.8.0` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@rollup/plugin-node-resolve ^16.0.3` - `jest ^30.4.2` - `rollup ^4.62.3` - `@lezer/highlight ^1.1.2` - `@lezer/lr ^1.2.3` </details> <details><summary>web/ui/package.json (8)</summary> - `@types/jest ^29.5.14` → [Updates: `^30.0.0`] - `@typescript-eslint/eslint-plugin ^8.65.0` → [Updates: `^8.65.0`] - `@typescript-eslint/parser ^8.65.0` → [Updates: `^8.65.0`] - `eslint-config-prettier ^10.1.8` - `prettier ^3.9.6` - `ts-jest ^29.4.12` - `typescript ^5.9.3` → [Updates: `^6.0.0`, `^7.0.0`] - `vite ^6.4.3` → [Updates: `^7.0.0`, `^8.0.0`] </details> <details><summary>web/ui/pnpm-workspace.yaml</summary> </details> <details><summary>web/ui/react-app/package.json (67)</summary> - `@codemirror/autocomplete ^6.20.3` - `@codemirror/commands ^6.10.4` - `@codemirror/language ^6.12.4` - `@codemirror/lint ^6.9.7` - `@codemirror/search ^6.7.1` - `@codemirror/state ^6.7.1` - `@codemirror/view ^6.43.6` - `@forevolve/bootstrap-dark ^4.0.2` - `@fortawesome/fontawesome-common-types 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/fontawesome-svg-core 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/free-solid-svg-icons 6.7.2` → [Updates: `7.3.1`] - `@fortawesome/react-fontawesome 0.2.6` → [Updates: `3.5.0`] - `@lezer/common ^1.5.2` - `@lezer/highlight ^1.2.3` - `@lezer/lr ^1.4.10` - `@nexucis/fuzzy ^0.5.1` - `@nexucis/kvsearch ^0.9.1` - `bootstrap ^4.6.2` → [Updates: `^5.0.0`] - `css.escape ^1.5.1` - `downshift ^9.4.0` - `http-proxy-middleware ^3.0.7` → [Updates: `^4.0.0`] - `jquery ^3.7.1` → [Updates: `^4.0.0`] - `jquery.flot.tooltip ^0.9.0` - `moment ^2.30.1` - `moment-timezone ^0.6.3` - `popper.js ^1.16.1` - `react ^18.3.1` → [Updates: `^19.0.0`] - `react-copy-to-clipboard ^5.1.1` - `react-dom ^18.3.1` → [Updates: `^19.0.0`] - `react-infinite-scroll-component ^6.1.1` → [Updates: `^7.0.0`] - `react-resize-detector ^7.1.2` → [Updates: `^8.0.0`, `^9.0.0`, `^10.0.0`, `^11.0.0`, `^12.0.0`] - `react-router-dom ^7.0.0` - `reactstrap ^8.10.1` → [Updates: `^9.0.0`] - `sanitize-html ^2.17.6` → [Updates: `^2.17.6`] - `sass 1.102.0` - `tempusdominus-bootstrap-4 ^5.39.2` - `tempusdominus-core ^5.19.3` - `@babel/plugin-proposal-private-property-in-object ^7.21.11` - `@cfaester/enzyme-adapter-react-18 ^0.8.0` - `@testing-library/dom ^10.4.1` - `@testing-library/react ^16.3.2` - `@types/enzyme ^3.10.19` - `@types/flot 0.0.36` - `@types/jest ^29.5.14` → [Updates: `^30.0.0`] - `@types/jquery ^3.5.34` → [Updates: `^4.0.0`] - `@types/node ^22.20.1` → [Updates: `^24.0.0`] - `@types/react ^18.3.31` → [Updates: `^19.0.0`] - `@types/react-copy-to-clipboard ^5.0.7` - `@types/react-dom ^18.3.7` → [Updates: `^19.0.0`] - `@types/sanitize-html ^2.16.1` - `@types/sinon ^17.0.4` → [Updates: `^20.0.0`, `^21.0.0`, `^22.0.0`] - `enzyme ^3.11.0` - `enzyme-to-json ^3.6.2` - `eslint ^8.57.1` → [Updates: `^9.0.0`, `^10.0.0`] - `eslint-config-prettier ^10.1.8` - `eslint-config-react-app ^7.0.1` - `eslint-plugin-prettier ^5.5.6` - `identity-obj-proxy ^3.0.0` - `jest-canvas-mock ^2.5.8` - `jest-fetch-mock ^3.2.0` → [Updates: `^4.0.0`] - `mutationobserver-shim ^0.3.7` - `prettier ^3.9.6` - `react-app-rewired ^2.2.1` - `react-router ^7.0.0` → [Updates: `^8.0.0`] - `react-scripts ^5.0.1` - `sinon ^19.0.5` → [Updates: `^20.0.0`, `^21.0.0`, `^22.0.0`] - `fsevents ^2.3.3` </details> <details><summary>web/ui/react-app/pnpm-workspace.yaml (1)</summary> - `enzyme>cheerio 1.0.0-rc.12` → [Updates: `1.2.0`] </details> </blockquote> </details> <details><summary>nvm (1)</summary> <blockquote> <details><summary>web/ui/.nvmrc (1)</summary> - `node 22.23.2` → [Updates: `24.19.0`] </details> </blockquote> </details> --- - [ ] <!-- manual job -->Check this box to trigger a request for Renovate to run again on this repository",
          "url": "https://github.com/prometheus/prometheus/issues/17691",
          "createdAt": "2025-12-15T09:02:18Z",
          "updatedAt": "2026-08-13T17:13:08Z",
          "timestamp": "2026-08-13T17:13:08Z",
          "metrics": {
            "reactions": 0,
            "comments": 5
          },
          "labels": [],
          "author": "renovate[bot]",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      },
      {
        "id": "event:3deb32ee073212f801d9",
        "signalId": "github:prometheus/prometheus:pull_request:19414",
        "event": "changed",
        "observedAt": "2026-08-13T17:43:20.785491Z",
        "changedFields": [
          "title",
          "updatedAt"
        ],
        "signal": {
          "id": "github:prometheus/prometheus:pull_request:19414",
          "source": "github",
          "group": "observability",
          "project": "prometheus/prometheus",
          "kind": "pull_request",
          "title": "Agent: replay WAL concurrently",
          "text": "<!-- - Please give your PR a title in the form \"area: short description\". For example \"tsdb: reduce disk usage by 95%\" - Please sign CNCF's Developer Certificate of Origin and sign-off your commits by adding the -s / --signoff flag to `git commit`. See https://github.com/apps/dco for more information. - If the PR adds or changes a behaviour or fixes a bug of an exported API it would need a unit/e2e test. - Where possible use only exported APIs for tests to simplify the review and make it as close as possible to an actual library usage. - Performance improvements would need a benchmark test to prove it. - All exposed objects should have a comment. - All comments should start with a capital letter and end with a full stop. --> #### Which issue(s) does the PR fix: <!-- If it applies. Automatically closes linked issue when PR is merged. Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`. More at https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword --> #### Release notes for end users (**ALL** commits must be considered). *Reviewers should verify clarity and quality.* <!-- Write NONE only if there is no user-facing change. Otherwise use one of: [FEATURE] [ENHANCEMENT] [PERF] [BUGFIX] [SECURITY] [CHANGE] Following the pattern `[TYPE] Component: description.` Example: [FEATURE] API: Add `/api/v1/features` endpoint. Refer to the existing CHANGELOG for inspiration: https://github.com/prometheus/ prometheus/blob/main/CHANGELOG.md --> ```release-notes [PERF] Agent: replay WAL concurrently ```",
          "url": "https://github.com/prometheus/prometheus/pull/19414",
          "createdAt": "2026-08-13T16:06:54Z",
          "updatedAt": "2026-08-13T16:21:00Z",
          "timestamp": "2026-08-13T16:21:00Z",
          "metrics": {
            "reactions": 0,
            "comments": 0
          },
          "labels": [],
          "author": "prymitive",
          "state": "open",
          "assignees": [],
          "change": "updated"
        }
      }
    ]
  }
}
