Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
f5643b6
feat(releasing): add deprecation.d fragment system with vdev check/sh…
thomasqueirozb May 15, 2026
6d0e0c0
chore(ci): wire deprecation check into changelog.yaml via bash script
thomasqueirozb May 15, 2026
411a957
Revert "chore(ci): wire deprecation check into changelog.yaml via bas…
thomasqueirozb May 15, 2026
f2b55c2
chore(ci): use changes.yml and setup action for deprecation fragment …
thomasqueirozb May 15, 2026
a42c0a4
chore(ci): remove stale comment from deprecation workflow
thomasqueirozb May 15, 2026
9e5a2eb
chore(internal docs): add deprecations and planned_deprecations to re…
thomasqueirozb May 15, 2026
1196d69
chore(internal docs): fix deprecation fragments to use deprecation_ve…
thomasqueirozb May 15, 2026
d7b55a2
chore(internal docs): restore announcement_version to deprecation fra…
thomasqueirozb May 15, 2026
a0b1f0f
feat(releasing): make announcement_version required, add next version…
thomasqueirozb May 15, 2026
37eba35
chore(internal docs): update deprecation docs and release template fo…
thomasqueirozb May 15, 2026
9659a52
feat(releasing): sort deprecation show output by version
thomasqueirozb May 15, 2026
5ae8acd
chore(internal docs): fix announcement versions for azure_monitor_log…
thomasqueirozb May 15, 2026
0b535c6
feat(releasing): refine deprecation show output with grouped sections…
thomasqueirozb May 15, 2026
d1eff3a
feat(releasing): add color and styling to deprecation show output
thomasqueirozb May 15, 2026
a2928a7
fix(releasing): fix label alignment in deprecation show output
thomasqueirozb May 15, 2026
b575eb9
feat(releasing): colour concrete next-minor version red same as next …
thomasqueirozb May 15, 2026
0c6d247
chore(internal docs): correct deprecation versions in fragments
thomasqueirozb May 15, 2026
986bc32
feat(releasing): expose generate-cue as standalone release subcommand
thomasqueirozb May 15, 2026
4ccc8cf
feat(external docs): render deprecations and planned_deprecations on …
thomasqueirozb May 15, 2026
0723a0d
feat(releasing): split deprecations into three buckets: enacted, anno…
thomasqueirozb May 15, 2026
8643b9e
fix(releasing): fix clippy warnings in deprecation utils
thomasqueirozb May 15, 2026
55fc56d
feat(releasing): in dry-run mode, create branches from current branch…
thomasqueirozb May 15, 2026
99f0cf1
fix(releasing): resolve next to concrete version before rendering CUE…
thomasqueirozb May 15, 2026
5336798
chore(vdev): rename VersionOrTbd->DeprecationVersion
thomasqueirozb May 15, 2026
923269d
feat(external docs): hide TBD removal date on release deprecation sec…
thomasqueirozb May 15, 2026
9bc543d
chore(internal docs): remove leading 'The' from deprecation what fields
thomasqueirozb May 15, 2026
a0d2606
chore(external docs): Add fake deprecation + generated cue file
thomasqueirozb May 15, 2026
12c78d3
chore(internal docs): fix nested code fences in deprecation.d README
thomasqueirozb May 15, 2026
fd52722
chore(website): delete generated files
thomasqueirozb May 15, 2026
8eb5b42
fix(releasing): fix insert_block_after_changelog to target the change…
thomasqueirozb May 15, 2026
9dabc01
chore(internal docs): fix markdown table separator spacing in depreca…
thomasqueirozb May 15, 2026
3b2a6f0
chore(releasing): use gh CLI to fetch VRL release notes instead of un…
thomasqueirozb May 15, 2026
62479c0
chore(website): add generated files
thomasqueirozb May 15, 2026
0bc71cc
Revert "chore(releasing): use gh CLI to fetch VRL release notes inste…
thomasqueirozb May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/minor-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ Automated steps include:
- [ ] Ensure any deprecations are highlighted in the release upgrade guide.
- [ ] Review generated changelog entries to ensure they are understandable to end-users.
- [ ] Ensure the date matches the scheduled release date.
- [ ] Add a link to pending deprecation items from [DEPRECATIONS.md](https://github.com/vectordotdev/vector/blob/master/docs/DEPRECATIONS.md).
- [ ] Run `cargo vdev deprecation show --version "${NEW_VECTOR_VERSION}"` to review enacted deprecations and verify the release notes reflect them correctly.
- [ ] PR review & approval.

# On the day of release
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ on:
value: ${{ jobs.source.outputs.dependencies }}
deny:
value: ${{ jobs.source.outputs.deny }}
deprecations:
value: ${{ jobs.source.outputs.deprecations }}
internal_events:
value: ${{ jobs.source.outputs.internal_events }}
cue:
Expand Down Expand Up @@ -170,6 +172,7 @@ jobs:
source: ${{ steps.filter.outputs.source }}
dependencies: ${{ steps.filter.outputs.dependencies }}
deny: ${{ steps.filter.outputs.deny }}
deprecations: ${{ steps.filter.outputs.deprecations }}
internal_events: ${{ steps.filter.outputs.internal_events }}
cue: ${{ steps.filter.outputs.cue }}
component_docs: ${{ steps.filter.outputs.component_docs }}
Expand Down Expand Up @@ -223,6 +226,11 @@ jobs:
- '**/Cargo.toml'
- 'Cargo.lock'
- ".github/workflows/deny.yml"
deprecations:
- 'deprecation.d/**'
- "vdev/**"
- ".github/workflows/deprecation.yaml"
- ".github/workflows/changes.yml"
cue:
- 'website/cue/**'
- "vdev/**"
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/deprecation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Deprecation Fragments

on:
workflow_call:
inputs:
ref:
description: "Git ref to checkout"
required: false
type: string

workflow_dispatch:
inputs:
ref:
description: "Git ref to checkout"
required: false
type: string

pull_request:
merge_group:
types: [checks_requested]

concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
cancel-in-progress: true

permissions:
contents: read

jobs:
changes:
if: ${{ github.event_name == 'pull_request' }}
uses: ./.github/workflows/changes.yml
secrets: inherit

check-deprecations:
runs-on: ubuntu-24.04
timeout-minutes: 10
if: ${{ always() && (github.event_name != 'pull_request' || needs.changes.outputs.deprecations == 'true') }}
needs: [changes]
steps:
- name: Checkout branch
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ inputs.ref }}

- uses: ./.github/actions/setup
with:
vdev: true
mold: false

- name: Check deprecation fragments
run: vdev check deprecations
63 changes: 63 additions & 0 deletions deprecation.d/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# deprecation.d

This directory contains deprecation notices for Vector.

Each file describes a feature, configuration option, or behavior that is being deprecated.
These notices are collected during the release process and rendered into two sections of the
release notes:

- **`deprecations`** – items whose removal version matches the current release (enacted now).
- **`planned_deprecations`** – items scheduled for removal in a future release.

## File format

Each file must be named `<unique_slug>.md` and begin with YAML frontmatter:

````markdown
---
announcement_version: next
deprecation_version: 0.57.0
what: "`legacy_auth` configuration option"
---

The `legacy_auth` option has been replaced by the new `auth` block.

Migrate by replacing:

```yaml
legacy_auth: "my_token"
```

with:

```yaml
auth:
token: "my_token"
```
````

### Frontmatter fields

| Field | Required | Description |
| ----- | -------- | ----------- |
| `what` | Yes | Short one-line description of what is deprecated. |
| `deprecation_version` | Yes | Version when the item will be removed. Accepts a semver string (`0.56`, `0.56.0`), `TBD` (unknown), or `next` (the very next release). |
| `announcement_version` | Yes | Version when the deprecation was first announced. Accepts the same values as `deprecation_version`. Use `next` (recommended) when opening the PR — the release tooling will replace it with the concrete version automatically. |

### Body

The body of the file is an optional Markdown explanation: migration instructions, rationale,
or links to further documentation. It is rendered verbatim in the release notes.

## Lifecycle

1. **Announce** – a PR adds a file to this directory when the deprecation is first introduced.
2. **Planned** – every subsequent release lists the entry under `planned_deprecations`.
3. **Enacted** – when the release version equals `deprecation_version`, the entry moves to
`deprecations` in the release notes and the file is removed from this directory.

## Validation

Run `cargo vdev check deprecations` to validate all files in this directory.

To preview the current deprecation state, run `cargo vdev deprecation show`.
11 changes: 11 additions & 0 deletions deprecation.d/azure-monitor-logs-sink.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
what: "`azure_monitor_logs` sink"
announcement_version: 0.54.0
deprecation_version: 0.58.0
---

The `azure_monitor_logs` sink is deprecated in favor of the new `azure_logs_ingestion` sink,
which uses the Azure Monitor Logs Ingestion API.

Users should migrate before Microsoft ends support for the old Data Collector API (scheduled
for September 2026).
10 changes: 10 additions & 0 deletions deprecation.d/bool-or-vector-compression.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
what: "Boolean syntax for the `compression` field in the `vector` sink"
announcement_version: next
deprecation_version: next
Comment thread
thomasqueirozb marked this conversation as resolved.
---

The boolean syntax (`compression: true` / `compression: false`) is deprecated.
Use the string syntax instead: `compression: "gzip"`, `compression: "zstd"`, or `compression: "none"`.

The `bool_or_vector_compression` deserializer will be removed once the boolean syntax is no longer supported.
8 changes: 8 additions & 0 deletions deprecation.d/buffer-bytes-events-metrics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
what: "`buffer_byte_size` and `buffer_events` gauge metrics"
announcement_version: 0.53.0
deprecation_version: TBD
---

The `buffer_byte_size` and `buffer_events` gauges are deprecated in favor of the
`buffer_size_bytes` and `buffer_size_events` metrics described in `docs/specs/buffer.md`.
10 changes: 10 additions & 0 deletions deprecation.d/datadog-metrics-series-v1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
what: "`series_api_version: v1` option on the `datadog_metrics` sink"
announcement_version: 0.55.0
deprecation_version: 0.58.0
---

The `series_api_version: v1` option is deprecated in favor of `v2` (the default).
The v1 series endpoint (`/api/v1/series`) is a legacy endpoint.

Users should remove `series_api_version: v1` from their configuration or set it to `v2`.
7 changes: 7 additions & 0 deletions deprecation.d/example-fake-deprecation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
what: "FAKE EXAMPLE — `fake_option` on the `fake_sink` sink [remove before merging]"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Remove the fake deprecation fragment before merge

This file is parsed as a real deprecation entry (the loader includes all .md files except README.md), so it is emitted into release metadata and user-facing notes; the generated 0.56.0.cue in this same commit already includes this fake item under deprecation_announcements. Leaving it in deprecation.d will pollute future release outputs with test-only content.

Useful? React with 👍 / 👎.

announcement_version: next
deprecation_version: 0.58
---

This is a fake deprecation entry used to test the Deprecation Announcements section on the release page. Remove this file before merging.
8 changes: 8 additions & 0 deletions deprecation.d/greptimedb-v0-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
what: "GreptimeDB v0.x support in `greptimedb_metrics` and `greptimedb_logs` sinks"
announcement_version: 0.55.0
deprecation_version: 0.56.0
---

The `greptimedb_metrics` and `greptimedb_logs` sinks drop support for GreptimeDB v0.x.
Users must upgrade their GreptimeDB instance to v1.x before upgrading Vector.
7 changes: 7 additions & 0 deletions deprecation.d/http-server-encoding.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
what: "`encoding` field on HTTP server sources"
announcement_version: 0.50.0
deprecation_version: TBD
---

The `encoding` field will be removed. Use `decoding` and `framing` instead.
11 changes: 9 additions & 2 deletions docs/DEPRECATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,13 @@ When introducing a deprecation into Vector, the pull request introducing the dep
the new name will be appended with the text `(formerly OldName)`.
- Add a log message to Vector that is logged at the `WARN` level starting with the word `DEPRECATION` if Vector detects
the deprecated configuration or feature being used (when possible).
- Add the deprecation to [docs/DEPRECATIONS.md](../docs/DEPRECATIONS.md) to track migration (if applicable) and removal
- Add a deprecation notice file to [`deprecation.d/`](../deprecation.d/) following the format described in
[`deprecation.d/README.md`](../deprecation.d/README.md). Both `announcement_version` and `deprecation_version`
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Do we need announcement_version? We can incorporate to the release process like we do for the changelog.d fragments.

Also, let's remove the TBD and next from the accepted values for deprecation_version. We should always set a version number.

One more concern, setting the deprecation_version is a new commitment now, we could keep it like this for now but I wouldn't want to delay a release for this. I think the simplest way to workaround this is to bump deprecation_version before a release.

Copy link
Copy Markdown
Member Author

@thomasqueirozb thomasqueirozb May 19, 2026

Choose a reason for hiding this comment

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

Do we need announcement_version? We can incorporate to the release process like we do for the changelog.d fragments.

Useful since I added a planned_deprecations section to the release, which gets rendered at the bottom. It is fully incorporated into the release process.

Also, let's remove the TBD and next from the accepted values for deprecation_version. We should always set a version number.

OK with removing TBD, but keeping next is a good idea so that PRs don't need to hard code deprecation versions. Hypothetical scenario: PR opened after 0.55 release set the deprecation_version to 0.56 but the PR only got merged after the 0.56 release. The deprecation version would then be in the past

One more concern, setting the deprecation_version is a new commitment now, we could keep it like this for now but I wouldn't want to delay a release for this. I think the simplest way to workaround this is to bump deprecation_version before a release.

Agreed. I added the deprecation vdev command helper to help us keep track of this a little better. Worst case scenario we just bump the version before the release.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Useful since I added a planned_deprecations section to the release, which gets rendered at the bottom. It is fully incorporated into the release process.

My goal is to simplify this process as much as possible. I believe we can drop this version completely and bundle this in the deprecation policy. We can state that once the deprecation fragment is merged, it will be announced with the next release.

The deprecation version would then be in the past

I believe that's fine since we don't promise to actually delete the deprecated functionality. The intention is to communicate that we will not remove functionality before a version X.

are required. Set `announcement_version` to `next` (recommended) or the current release version if known. Set
`deprecation_version` to the planned removal version, `TBD` if not yet decided, or `next` if removal is intended
for the very next release. The release tooling will replace any `next` values with the concrete version when the
release is cut. Run
`cargo vdev check deprecations` to validate the file.

When removing a deprecation in a subsequent release, the pull request should:

Expand All @@ -90,4 +96,5 @@ When removing a deprecation in a subsequent release, the pull request should:
for transitioning if applicable.
- Copy the same note from the previous step, to a changelog fragment, with type="breaking". See the changelog
fragment [README.md](../changelog.d/README.md) for details.
- Remove the deprecation from [docs/DEPRECATIONS.md](../docs/DEPRECATIONS.md)
- Remove the file from [`deprecation.d/`](../deprecation.d/) (the release tooling does this automatically when
`deprecation_version` matches the release being cut)
34 changes: 12 additions & 22 deletions docs/DEPRECATIONS.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,17 @@
See [DEPRECATION.md](/docs/DEPRECATION.md#process) for the process for updating this file.
Comment thread
thomasqueirozb marked this conversation as resolved.
Deprecation notices are now tracked in [`deprecation.d/`](../deprecation.d/) at the root of
the repository.

The format for each entry should be: `<version> <identifier> <description>`.
Each file in that directory is a self-contained deprecation notice with YAML frontmatter.
See [`deprecation.d/README.md`](../deprecation.d/README.md) for the file format and lifecycle.

- `<version>` should be the version of Vector in which to take the action (deprecate, migrate, or
remove)
- `<identifier>` should be a unique identifier that can also be used in the code to easily find the
places to modify
- `<description>` should be a longer form description of the change to be made
To view all current notices, run:

For example:
```shell
cargo vdev deprecation show
```

- v0.34.0 legacy_openssl_provider OpenSSL legacy provider flag should be removed
To validate the directory, run:

## To be deprecated

- `v0.50.0` | `http-server-encoding` | The `encoding` field will be removed. Use `decoding` and `framing` instead.
- `v0.53.0` | `buffer-bytes-events-metrics` | The `buffer_byte_size` and `buffer_events` gauges are deprecated in favor of the `buffer_size_bytes`/`buffer_size_events` metrics described in `docs/specs/buffer.md`.
- `v0.58.0` | `azure-monitor-logs-sink` | The `azure_monitor_logs` sink is deprecated in favor of the new `azure_logs_ingestion` sink, which uses the Azure Monitor Logs Ingestion API. Users should migrate before Microsoft ends support for the old Data Collector API (scheduled for September 2026).
- `v0.57.0` | `bool-or-vector-compression` | The boolean syntax for the `compression` field in the `vector` sink (`compression: true`/`compression: false`) is deprecated. Use the string syntax instead (`compression: "gzip"`, `compression: "zstd"`, or `compression: "none"`). The `bool_or_vector_compression` deserializer should be removed once the boolean syntax is no longer supported.
- `v0.58.0` | `datadog-metrics-series-v1` | The `series_api_version: v1` option on the `datadog_metrics` sink is deprecated in favor of `v2` (the default). The v1 series endpoint (`/api/v1/series`) is a legacy endpoint; users should remove `series_api_version: v1` from their configuration or set it to `v2`.

## To be migrated

## To be removed

- `v0.56.0` | `greptimedb-v0-support` | The `greptimedb_metrics` and `greptimedb_logs` sinks drop support for GreptimeDB v0.x. Users must upgrade their GreptimeDB instance to v1.x before upgrading Vector.
```shell
cargo vdev check deprecations
```
39 changes: 39 additions & 0 deletions vdev/src/commands/check/deprecations.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#![allow(clippy::print_stdout)]

use anyhow::Result;

use crate::utils::{deprecation, paths};

/// Check that all deprecation.d fragments are valid
#[derive(clap::Args, Debug)]
#[command()]
pub struct Cli {}

impl Cli {
pub fn exec(self) -> Result<()> {
let repo_root = paths::find_repo_root()?;
let dir = repo_root.join(deprecation::DEPRECATION_DIR);

if !dir.is_dir() {
println!(
"No {dir} directory found; nothing to validate.",
dir = dir.display()
);
return Ok(());
}

let entries = deprecation::read_deprecation_fragments(&dir)?;

if entries.is_empty() {
println!("No deprecation fragments found in {}.", dir.display());
return Ok(());
}

for entry in &entries {
println!(" ok {}", entry.filename);
}
println!("{} deprecation fragment(s) are valid.", entries.len());

Ok(())
}
}
2 changes: 2 additions & 0 deletions vdev/src/commands/check/mod.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
mod component_features;
mod deny;
mod deprecations;
mod events;
mod examples;
mod fmt;
Expand All @@ -14,6 +15,7 @@ crate::cli_subcommands! {
generated_docs,
component_features,
deny,
deprecations,
docs,
events,
examples,
Expand Down
6 changes: 6 additions & 0 deletions vdev/src/commands/deprecation/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
mod show;

crate::cli_subcommands! {
"Manage and inspect deprecation notices..."
show,
}
Loading
Loading