Skip to content

Add commit-range bundling to changelog bundle (--start-git-ref/--end-git-ref) - #3848

Merged
cotti merged 3 commits into
mainfrom
feature/changelog-commit-range-bundling
Aug 13, 2026
Merged

Add commit-range bundling to changelog bundle (--start-git-ref/--end-git-ref)#3848
cotti merged 3 commits into
mainfrom
feature/changelog-commit-range-bundling

Conversation

@cotti

@cotti cotti commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Why

Converts elastic/cloud-style date promotions from "unblocked manually" (#3783) to "automated": the promotion event hands off two commit hashes from a protected branch, and changelog bundle derives the PR list itself instead of consuming an externally staged list (rejected in docs-actions#235). This is the git-ref bundling core from the release-notes onboarding RFC (docs-eng-team#698) and the docs-builder half of the changelog-promotion-bundle workflow contract (docs-actions#266).

What

changelog bundle <profile> <version> --start-git-ref A --end-git-ref B (both refs always required together — the start ref is never inferred, per the RFC review):

  • The PR list comes from the range via GitHubCommitRangeService (previous PR in this stack).
  • Per-PR entry sourcing follows the RFC precedence: a checked-in entry from the pool wins — matched by file-name-derived PR numbers (file names survive scrubbing, so this works for private repos whose prs references are scrubbed from public copies, sidestepping docs-eng-team#734 for discovery) or by prs references — otherwise the entry is synthesized from PR metadata through the same extraction path as changelog add (release-note text from the PR body, pivot.* label mappings, rules.create). PRs whose metadata cannot be fetched are reported as missing, never silently dropped.
  • The bundle records --end-git-ref as its git_ref metadata.
  • --dry-run prints the run report (resolved PR list with per-PR source: pool / inferred / missing, plus commits without a PR) as Markdown suitable for a release PR body; --plan reports needs_network/needs_github_token.
  • In profile mode the profile contributes output metadata only (output_products, repo/owner, rules); filter-producing shapes (products pattern, source: github_release) are rejected. Without an explicit output: pattern the bundle is named {product}-{version}.yaml by convention — deliberately not building on output:, which B2: Validate that bundle profile output: is not set; emit hard error at bundle time #3774 (B2) is phasing out.
  • Re-running the same range produces the same bundle; bundling never overwrites changelog entries.

Stack: 2/3 — based on the commit-range resolution service PR; followed by a GitHub HTTP transport refactor.

Base automatically changed from feature/changelog-commit-range-resolver to main August 13, 2026 09:22
cotti and others added 2 commits August 13, 2026 06:22
…git-ref)

Date-promotion systems (serverless, Cloud ECH/ECE) hand off two commit
hashes from a protected branch instead of an externally staged PR list,
which was rejected for cache-poisoning and repeatability reasons
(docs-actions#235). The bundle command now derives the PR list from the
range via GitHubCommitRangeService, sources each PR's entry pool-first
with changelog-add-style PR-metadata fallback, records the end ref as the
bundle's git_ref metadata, and can print a per-PR run report with
--dry-run. Implements the git-ref bundling core from the release-notes
onboarding RFC (docs-eng-team#698).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
The bundle-create CI action locates the generated bundle via --plan's
output_path, so a git-ref profile without an explicit output pattern must
plan the same {product}-{version}.yaml path the real run writes.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@cotti
cotti force-pushed the feature/changelog-commit-range-bundling branch from 643f00c to f63fed0 Compare August 13, 2026 09:22
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@cotti
cotti merged commit 0e1bfc9 into main Aug 13, 2026
34 of 35 checks passed
@cotti
cotti deleted the feature/changelog-commit-range-bundling branch August 13, 2026 11:49
Mpdreamz pushed a commit that referenced this pull request Aug 14, 2026
…git-ref) (#3848)

* Add commit-range bundling to changelog bundle (--start-git-ref/--end-git-ref)

Date-promotion systems (serverless, Cloud ECH/ECE) hand off two commit
hashes from a protected branch instead of an externally staged PR list,
which was rejected for cache-poisoning and repeatability reasons
(docs-actions#235). The bundle command now derives the PR list from the
range via GitHubCommitRangeService, sources each PR's entry pool-first
with changelog-add-style PR-metadata fallback, records the end ref as the
bundle's git_ref metadata, and can print a per-PR run report with
--dry-run. Implements the git-ref bundling core from the release-notes
onboarding RFC (docs-eng-team#698).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

* Mirror the commit-range output naming convention in bundle --plan

The bundle-create CI action locates the generated bundle via --plan's
output_path, so a git-ref profile without an explicit output pattern must
plan the same {product}-{version}.yaml path the real run writes.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

* Drop unnecessary null-forgiving operators flagged by IDE0370

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 (1M context) <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