Skip to content

release serverless: let the configuration decide the products of an entry - #4481

Open
theletterf wants to merge 1 commit into
mainfrom
feat/remove-entry-products
Open

theletterf wants to merge 1 commit into
mainfrom
feat/remove-entry-products

Conversation

@theletterf

@theletterf theletterf commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Affects: Release notes

Prompt summary: Remove the EntryProducts override from release serverless now that the product configuration of Kibana and Elasticsearch decides the products of an entry. Last step of the order agreed in #4461; keep the PR a draft until the production refs include the new configs.

Context

#4378 made release serverless stamp cloud-serverless plus the service product on every synthesized entry, after 13 Kibana entries came out with the wrong product: a team label routed them to security or observability alone. #4469 solved that in configuration instead: one shared product resolver and products.implies. Kibana now sets implies for its team labels (elastic/kibana#298020) and Elasticsearch maps stateful and serverless to products with both products as default (elastic/elasticsearch#162051). Both are merged.

This PR removes the override, which is what was left of #4461.

What

  • release serverless no longer passes EntryProducts; ServerlessPromotion.EntryProductIds and ServerlessProduct are gone.
  • BundleChangelogsArguments.EntryProducts and GitRangeEntryResolutionOptions.EntryProducts are gone. A synthesized entry gets the products of the configuration: labels (with implies), else products.default, else the profile's output products. The require-a-label rule is unchanged.

Effect at the next promotion

  • Kibana: a Team:* PR gets its solution product plus kibana and cloud-serverless through implies; a PR without a team label gets the defaults kibana and cloud-serverless.
  • Elasticsearch: a stateful PR gets elasticsearch only and the per-product rules.bundle drops it from the cloud-serverless bundle as disjoint; a serverless PR gets cloud-serverless; a PR with neither gets both defaults. That is the behaviour Pete asked for in elastic/docs-eng-team#1039.

Do not merge before

The promotion reads each service's docs/changelog.yml at the promoted ref, and main is live on the edge image at the next promotion. Merge only after the production refs of Kibana and Elasticsearch include elastic/kibana@6cf1ebfd4 and elastic/elasticsearch@04a5c187d, or a promotion of an older ref drops the team-labelled Kibana PRs. Review can start now; the merge waits for those refs.

Verify

dotnet test --project tests/Elastic.Changelog.Tests

Removed the two tests that pinned the override (EntryProductIds_AreTheServerlessProductAndTheServiceProduct, InferredEntry_EntryProducts_ReplaceLabelDerivedProducts). The resulting behaviour is covered by the range-bundle tests #4469 added, which already ran without the override: InferredEntry_Products_LabelsWinThenImpliesThenDefaults, InferredEntry_Products_AStackOnlyLabelKeepsThePullRequestOutOfTheServerlessBundle, InferredEntry_Products_DefaultsCarryTheirLifecycleAndNoVersion.

Docs: no change. "Product resolution order" in configure-ref.md already describes this order and names no exception for release serverless.

Not run against a real promotion.

Fixes elastic/docs-eng-team#1039. Related to elastic/docs-eng-team#1059.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RyiyHmDHcUFt8rjMNR8TBm

…ntry

Remove the EntryProducts override that stamped cloud-serverless and the service product on every synthesized entry. Kibana now sets products.implies for its team labels and Elasticsearch maps stateful and serverless to products with both as default, so the shared resolver gives each entry the right products: labels with implies, else products.default, else the profile's output products. A stateful Elasticsearch PR gets elasticsearch only and the per-product rules.bundle drops it from the Serverless bundle.

Fixes elastic/docs-eng-team#1039

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RyiyHmDHcUFt8rjMNR8TBm
var arguments = new BundleChangelogsArguments
{
Profile = svc.Profile,
EntryProducts = [.. ServerlessPromotion.EntryProductIds(svc).Select(id => new ProductArgument { Product = id })],

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Severity: P3 (Low)

Handle an intentionally empty serverless bundle when removing this override. If the Elasticsearch submodule range contains only stateful PRs, its entries are now correctly excluded, but BuildAndWriteBundle treats that empty result as an error. Serverless then exits with code 1 before setting the bundle outputs, preventing publication even if the primary repository produced valid release notes. Treat a fully excluded range as a successful skip in this automation path, while preserving genuine bundling errors.

Generated by Libra. React with 👍 or 👎 to give feedback on this comment.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Known and decided on #4461: Martijn asked to keep "No changelog entries remained after applying rules.bundle filter" as an error rather than a warning, so this PR does not change it. A range of the Elasticsearch submodule with only stateful PRs would fail the run today, and that was the case before this PR too whenever the filter emptied a bundle. If we want the automation to treat a fully excluded range as a skip, that is a separate change to release serverless, and I would rather take it with Martijn than fold it in here.

@github-actions

Copy link
Copy Markdown
Contributor

Docs preview (local build)

Handbook preview: https://docs-v3-preview.elastic.dev/elastic/docs-builder/pull/4481/

@theletterf

Copy link
Copy Markdown
Member Author

@Mpdreamz PTAL

This branch was successfully deployed

2 active deployments
docs-preview — 963bffdf Deployed Oct 15, 2026 by github-actions[bot]
assembler-preview — 963bffdf Deployed Oct 15, 2026 by github-actions[bot]
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.

1 participant