Skip to content

[8.19][ML] Add per-PR changelog YAML entries with schema validation (#2920)#3039

Merged
edsavage merged 1 commit intoelastic:8.19from
edsavage:backport-2920-8.19
May 5, 2026
Merged

[8.19][ML] Add per-PR changelog YAML entries with schema validation (#2920)#3039
edsavage merged 1 commit intoelastic:8.19from
edsavage:backport-2920-8.19

Conversation

@edsavage
Copy link
Copy Markdown
Contributor

@edsavage edsavage commented May 5, 2026

Replace the monolithic CHANGELOG.md with per-PR YAML changelog files in docs/changelog/. Each PR that changes user-visible behaviour adds a small YAML file (<PR_NUMBER>.yaml) with structured metadata (area, type, summary). This eliminates merge conflicts in CHANGELOG.md and simplifies backports.

Includes:

  • JSON schema for validating changelog entries
  • Python validation script (validate_changelogs.py)
  • Python bundler script (bundle_changelogs.py) for release notes
  • Gradle tasks: validateChangelogs, bundleChangelogs
  • Buildkite CI step (soft-fail during rollout)
  • Skip validation via >test, >refactoring, >docs, >build labels

Replaces the ml-cpp-specific changelog schema with the exact Elasticsearch changelog schema so that entries can be consumed directly by the ES release notes pipeline (Phase 2 Option A).

Key changes:

  • area enum: ES-wide values (most entries use "Machine Learning")
  • type enum: adds breaking-java, known-issue, new-aggregation, security, upgrade
  • Adds highlight, breaking, and deprecation sub-objects
  • pr/area not required for known-issue and security types
  • Validator allows descriptive filenames for entries without a pr
  • Bundler handles all new types and entries without pr/area
  • AsciiDoc output uses {ml-pull} macros for consistency

Made-with: Cursor


Backports #2920

…c#2920)

Replace the monolithic CHANGELOG.md with per-PR YAML changelog files
in docs/changelog/. Each PR that changes user-visible behaviour adds
a small YAML file (<PR_NUMBER>.yaml) with structured metadata (area,
type, summary). This eliminates merge conflicts in CHANGELOG.md and
simplifies backports.

Includes:
- JSON schema for validating changelog entries
- Python validation script (validate_changelogs.py)
- Python bundler script (bundle_changelogs.py) for release notes
- Gradle tasks: validateChangelogs, bundleChangelogs
- Buildkite CI step (soft-fail during rollout)
- Skip validation via >test, >refactoring, >docs, >build labels

Replaces the ml-cpp-specific changelog schema with the exact
Elasticsearch changelog schema so that entries can be consumed
directly by the ES release notes pipeline (Phase 2 Option A).

Key changes:
- area enum: ES-wide values (most entries use "Machine Learning")
- type enum: adds breaking-java, known-issue, new-aggregation,
  security, upgrade
- Adds highlight, breaking, and deprecation sub-objects
- pr/area not required for known-issue and security types
- Validator allows descriptive filenames for entries without a pr
- Bundler handles all new types and entries without pr/area
- AsciiDoc output uses {ml-pull} macros for consistency

Made-with: Cursor

---------

Co-authored-by: elasticsearchmachine <infra-root+elasticsearchmachine@elastic.co>
Co-authored-by: Cursor <cursoragent@cursor.com>
@prodsecmachine
Copy link
Copy Markdown

prodsecmachine commented May 5, 2026

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@edsavage edsavage merged commit 7d05cd0 into elastic:8.19 May 5, 2026
13 checks passed
edsavage added a commit that referenced this pull request May 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants