Repository navigation
docs: document the Pages environment ref policy in the release runbook - #1203
Merged
Alexandre Zollinger Chohfi (azchohfi) merged 1 commit intoSep 11, 2026
Merged
Conversation
A release tag publishes the versioned docs site, so the `github-pages` environment's deployment-branch policy has to admit both `main` (branch) and `v*` (tag). That policy lives in repository settings rather than in the repo, so nothing in `docs.yml` reveals it -- and the failure it causes is easy to misread: `publish` goes green and only `deploy` goes red, leaving the live site stale while `gh-pages` is already correct. Add a "Which refs may deploy" subsection under "Versioned documentation site" covering the policy, the verification and add commands (the latter needs repo admin), the split-failure signature, and the recovery step of dispatching `Publish docs` on `main`. Cross-reference it from step 3 of the "Monitor and publish" checklist. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Alexandre Zollinger Chohfi (azchohfi)
requested a review
from Chris Anderson (codemonkeychris)
as a code owner
September 11, 2026 08:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A release tag publishes the versioned docs site, so the
github-pagesenvironment's deployment-branch policy has to admit bothmain(branch) andv*(tag). That policy lives in repository settings rather than in this repo, so nothing indocs.ymlreveals it — and the failure it causes is easy to misread. This adds a Which refs may deploy subsection todocs/contributing/release-runbook.mddocumenting the requirement, the failure signature, and the recovery step.The prompt for writing it down: when
v0.1.0-preview.15was pushed, the environment had exactly one policy,{"name": "main", "type": "branch"}— correct back whenmainwas the only publisher — so the tag was rejected withTag "v0.1.0-preview.15" is not allowed to deploy to github-pages due to environment protection rules. The run then reportspublish: successanddeploy: failure, which reads like a partial success but isn't:gh-pagesreally does contain the new version and thelatestalias really has moved, yet nothing is ever served, so the live site silently keeps showing the previous release. Av*tag policy was added and re-running the failed run (34577954754) turned it green; the environment now listsbranch: mainandtag: v*.The new subsection covers:
publishgreen,deployred, site stale, branch already correct), including the verbatim error, so it is recognisable on sight.branch: mainandtag: v*.maintaingetsHTTP 403: Must have admin rights to Repository.Publish docsonmain, since the Pages artifact is the wholegh-pagesbranch, so a deploy from any allowed ref serves every version already committed to it.Step 3 of Monitor and publish also picks up a one-clause cross-reference telling the release owner to check both jobs, since that checklist is where someone stands when this bites.
Linked issue / spec
N/A — no tracking issue. This documents an operational prerequisite of the versioned docs site introduced by #1199 (
docs/specs/057-release-channels.mdcovers the release-channel side).No CHANGELOG entry: the changelog does accept infrastructure entries (precedent: the
issue #680"test infrastructure only" entry), and #1199 already added aChangedentry for the versioned docs site itself. This PR only documents an operational prerequisite of that already-recorded change, so a second entry would be noise.Test plan
Markdown-only, under
docs/contributing/(authored, not generated — the generated surface isdocs/guide/**, compiled fromdocs/_pipeline/templates/*.md.dt, and nothing there is touched). No build or test impact. Verified instead:branch: mainandtag: v*— so the command in the doc is the command that works, not a paraphrase.#which-refs-may-deployand the pre-existing#versioned-documentation-sitethatCHANGELOG.md:123links.mkdocs.ymlnav, so nomkdocs build --strictgate covers it and the anchor check above is the only instrument.pr-reviewskill (scoped to security / correctness / docs-and-samples / multi-model; the API-ergonomics, alternative-solution, test-coverage and packaging dimensions have no surface in a prose diff). One medium finding, fixed before pushing — see below.Risk / breaking changes
None. No public API, no behavior, no build surface — prose only.
One review finding is worth recording because it was a real inaccuracy rather than a style note. The first draft said the stranded release "is rendered and
latesthas moved to it" unconditionally, but.github/workflows/docs.yml:105-113only moveslatestinsideif [ "$GITHUB_REF_NAME" = "$newest" ]— an older or backported tag is published without--update-aliases. That directly contradicted the paragraph immediately above the new subsection ("A tag only takes thelatestalias if it is the highest tag by version sort"). Reworded to "thelatestalias has already moved to it if the tag qualifies under the version-sort rule above", and a cross-check against the workflow confirmed the corrected wording. Since the entire deliverable here is factual accuracy, an overstatement a release owner might rely on mid-incident was worth catching.