Skip to content

Set the Serverless product pair on every release serverless entry - #4378

Merged
theletterf merged 2 commits into
mainfrom
fix/serverless-release-products
Oct 9, 2026
Merged

theletterf merged 2 commits into
mainfrom
fix/serverless-release-products

Conversation

@theletterf

Copy link
Copy Markdown
Member

docs-builder release serverless now sets cloud-serverless and the service's own product (kibana or elasticsearch) on every entry it builds, whatever the PR's team labels say.

Affects: Release notes

Prompt summary: Fix the products of the entries in the first real automated Kibana Serverless bundle, and change the command so the next bundle comes out right. Track the work in a docs-eng-team issue on the release-notes board.

Why

An entry took the product that the repository's changelog.yml maps its labels to. In the first real Kibana bundle (elastic/docs-internal-workflows#1033), 13 of 38 entries carried only observability or security, because of Team: labels. They lacked cloud-serverless, so the Serverless release notes page may not show them. The manual skills avoid this with --products "cloud-serverless, kibana" (--products "cloud-serverless, elasticsearch" for Elasticsearch). The command had no such override.

What

Forced entry products

BundleChangelogsArguments and GitRangeEntryResolutionOptions get an EntryProducts list. When it is set, ResolveProducts returns it for every entry that the resolver builds from PR metadata, in place of the label-derived and profile products. Label-derived products still decide the label blockers. Entries from the changelog pool keep their own products. Nothing changes for callers that leave the list empty.

Serverless command

ServerlessPromotion.EntryProductIds returns cloud-serverless and the service ID. ServerlessReleaseCommand passes them for each bundle, including the elasticsearch submodule bundle. The entries then read - product: cloud-serverless and - product: kibana, as in the Oct 6 manual bundle. They no longer carry the versions and lifecycle that the profile's output_products added. The bundle header still carries them.

Verify

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

InferredEntry_EntryProducts_ReplaceLabelDerivedProducts fails when the override is disabled. It bundles the same PR with and without EntryProducts.

Out of scope: Kibana's changelog.yml maps release_note:fix but not release_note:bug, so one entry in #1033 came out as other. That mapping is Kibana's to change.

Risk: the command's output goes to the private S3 bucket and then the public CDN. A bundle published before this merges keeps the old products, and a code revert does not change it. The #1033 bundle is corrected by hand.

Related to elastic/docs-eng-team#1017

🤖 Generated with Claude Code

https://claude.ai/code/session_01RyiyHmDHcUFt8rjMNR8TBm

An entry that carries a Team label such as Team:Cloud Security took the
product that Kibana's changelog.yml maps that label to, and lost
cloud-serverless. The manual flow forces "cloud-serverless, kibana" and
the automated command now does the same, for both Elasticsearch bundles
too.

Related to elastic/docs-eng-team#1017

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RyiyHmDHcUFt8rjMNR8TBm
@theletterf theletterf added the bug label Oct 9, 2026
@theletterf
theletterf requested a review from a team as a code owner October 9, 2026 08:45
@theletterf
theletterf requested a review from reakaleek October 9, 2026 08:45
@theletterf
theletterf enabled auto-merge (squash) October 9, 2026 08:53
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Docs preview (local build)

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

The YAML writer uses the platform line ending, so the multi-line
assertion failed on Windows.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RyiyHmDHcUFt8rjMNR8TBm
@theletterf
theletterf merged commit 2005cba into main Oct 9, 2026
32 checks passed
@theletterf
theletterf deleted the fix/serverless-release-products branch October 9, 2026 09:28
skynetigor pushed a commit to skynetigor/kibana that referenced this pull request Oct 15, 2026
…tic#298020)

## Summary

Adds `products.implies` to `docs/changelog.yml`, so a PR whose team
label maps to `observability` or `security` also gets the `kibana` and
`cloud-serverless` products.

```yaml
  implies:
    observability: [kibana, cloud-serverless]
    security: [kibana, cloud-serverless]
```

## Background

A team label names a solution, not a deployment target. Today it makes
an entry observability-only or security-only, and the per-product
`rules.bundle` check then drops that entry from the Kibana and
Serverless bundles. `release serverless` works around this by forcing
`kibana` and `cloud-serverless` onto every entry
(elastic/docs-builder#4378).

elastic/docs-builder#4469 adds `products.implies`, so the config can say
this instead and the override can go (elastic/docs-builder#4461). The
work is tracked in elastic/docs-eng-team#1059.

With this block, an entry built from a PR gets:

| PR labels | Products |
|---|---|
| `Team:obs-ux-logs` | `observability`, `kibana`, `cloud-serverless` |
| `Team:SecuritySolution` | `security`, `kibana`, `cloud-serverless` |
| no product label | `kibana`, `cloud-serverless` (the defaults) |

## Do not merge yet

The config loader is strict. `docs-builder` 1.64.0, the current release,
rejects the new key:

```
YAML parsing error in changelog configuration: Property 'implies' not found on type 'Elastic.Documentation.Configuration.Changelog.ProductsConfigYaml'.
```

Kibana's changelog workflows run the released binary, so this PR stays a
draft until elastic/docs-builder#4469 is merged and released, and the
workflows pick up that release.

## Verify

Ran against this file:

- `docs-builder` 1.64.0: `changelog validate-labels --config
docs/changelog.yml --pr-labels
"release_note:feature,Team:SecuritySolution"` fails with the error
above.
- A build of elastic/docs-builder#4469: the same command gives
`products=security, kibana, cloud-serverless`. Before this change it
gives `products=security`. With `release_note:feature,Team:Docs` it
gives no product and no error; the defaults apply when the entry is
written.

Related to elastic/docs-eng-team#1059

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01RyiyHmDHcUFt8rjMNR8TBm

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
crespocarlos pushed a commit to crespocarlos/kibana that referenced this pull request Oct 16, 2026
…tic#298020)

## Summary

Adds `products.implies` to `docs/changelog.yml`, so a PR whose team
label maps to `observability` or `security` also gets the `kibana` and
`cloud-serverless` products.

```yaml
  implies:
    observability: [kibana, cloud-serverless]
    security: [kibana, cloud-serverless]
```

## Background

A team label names a solution, not a deployment target. Today it makes
an entry observability-only or security-only, and the per-product
`rules.bundle` check then drops that entry from the Kibana and
Serverless bundles. `release serverless` works around this by forcing
`kibana` and `cloud-serverless` onto every entry
(elastic/docs-builder#4378).

elastic/docs-builder#4469 adds `products.implies`, so the config can say
this instead and the override can go (elastic/docs-builder#4461). The
work is tracked in elastic/docs-eng-team#1059.

With this block, an entry built from a PR gets:

| PR labels | Products |
|---|---|
| `Team:obs-ux-logs` | `observability`, `kibana`, `cloud-serverless` |
| `Team:SecuritySolution` | `security`, `kibana`, `cloud-serverless` |
| no product label | `kibana`, `cloud-serverless` (the defaults) |

## Do not merge yet

The config loader is strict. `docs-builder` 1.64.0, the current release,
rejects the new key:

```
YAML parsing error in changelog configuration: Property 'implies' not found on type 'Elastic.Documentation.Configuration.Changelog.ProductsConfigYaml'.
```

Kibana's changelog workflows run the released binary, so this PR stays a
draft until elastic/docs-builder#4469 is merged and released, and the
workflows pick up that release.

## Verify

Ran against this file:

- `docs-builder` 1.64.0: `changelog validate-labels --config
docs/changelog.yml --pr-labels
"release_note:feature,Team:SecuritySolution"` fails with the error
above.
- A build of elastic/docs-builder#4469: the same command gives
`products=security, kibana, cloud-serverless`. Before this change it
gives `products=security`. With `release_note:feature,Team:Docs` it
gives no product and no error; the defaults apply when the entry is
written.

Related to elastic/docs-eng-team#1059

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01RyiyHmDHcUFt8rjMNR8TBm

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants