Files
open-design/docs/CHANGELOG/README.md
lefarcenandGitHub 5a7bbe5b10 chore(release): stop blocking stable releases on missing release notes (#7886)
A stable release with no docs/CHANGELOG/v<version>/ directory hard-failed at
the very first job. Fixing it mid-release is not "write two markdown files":
the stable promotion gate pins github.commit to the promoted prerelease, so the
changelog commit invalidates that artifact and forces a fresh ~27-minute
prerelease round trip.

Missing notes are now a loud warning instead of a failure. reviewReleaseNotePlanPolicy
returns warnings for a stable release with no notes, or one missing zh-CN, and
prepare-release-note surfaces them as a ::warning:: annotation plus a job
summary entry. Notes that exist but cannot be consumed still throw: a channel
mismatch, or a plan that omits the default locale every consumer falls back to.

publish-metadata carried a second stable gate on the same condition. Removing
only the first would have moved the hard failure past the GitHub draft release
and asset upload, which is strictly worse, so both are gone. The rest of the
chain already treated "absent" as a complete outcome — it is the beta and
prerelease path — so publication, verification, and metadata assembly are
unchanged.

Non-stable channels behave exactly as before.
2026-09-08 08:23:56 +00:00

1.5 KiB

Release note source contract

Release note content is stored under docs/CHANGELOG/v<releaseVersion>/<locale>.md. The directory name must contain the exact full release version, including its channel and counter when present. There is no fallback to a base version.

Each locale file must:

  • use a canonical BCP 47 locale as its filename, such as en.md or zh-CN.md;
  • be valid UTF-8 Markdown no larger than 1 MiB;
  • begin with YAML front matter containing non-empty title and description strings; and
  • contain a non-empty Markdown body after the front matter.

The en locale is required whenever a release-note directory is supplied, because every consumer falls back to it. Everything else is a recommendation, not a gate: any channel may omit the version directory entirely, and a stable release that is missing its notes — or missing zh-CN — still publishes. The gap is reported as a GitHub Actions warning and a job-summary entry on the release run rather than failing it, so an editorial omission never forces a new prerelease round trip. Stable releases are still expected to ship en and zh-CN; treat the warning as a to-do, not as permission to skip them.

tools-release retains the front matter in the uploaded file and publishes it as an immutable object at <channel>/versions/<releaseVersion>/release-notes/<locale>.md. Public release metadata contains only locale transport descriptors (url, mediaType, sha256, and size); render fields are read from the content itself.