Repository navigation
Conversation
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
Audits the release documentation against the pipeline that ships on
main(
e285f0d4) and corrects every statement that no longer matches the shippedactions, templates and guards. Documentation only: no action, workflow, Python
tool or test changes.
The audit covers
docs/RELEASING.md,.github/actions/RELEASE.md,README.mdand all eleven
.github/actions/release-*/README.mdfiles plusapp-token-lint/README.md.README.mdneeded no change. Nothing was guessed:claims that cannot be settled from this repository are listed under Unverified
below and that prose was left alone.
Main themes:
clean) and why a push-routedrefreshlegitimately creates no settle PR;
routing assumes it, and only
release-publishverifies it;versioned dispatch refuses because the tag is not at the candidate merge;
release-publish-*prefixes);defaults (
VERSION/plain, not mega-reth's Cargo values), and thecompat:label being a consumer gate rather than a shared one.Corrected statements
Before line numbers are from
e285f0d4; after line numbers are on this branch.docs/RELEASING.md:18- Gutenberg mint allowed inrelease-publish-*.ymldocs/RELEASING.md:16-18- exactlyrelease-candidate.yml,release-settle.yml,on-release.yml.github/scripts/app_token_lint.py:56(RELEASE_WORKFLOW_FILES),:164-165(exact filename match)docs/RELEASING.md:247- L2' message ends... on-release.yml or release-publish-*.ymldocs/RELEASING.md:278- the message the script prints, plus "filename prefixes do not grant access".github/scripts/app_token_lint.py:165(', '.join(sorted(...)))docs/RELEASING.md:248- L5 message in hand-maintained orderdocs/RELEASING.md:282- the message the script actually prints.github/scripts/app_token_lint.py:136docs/RELEASING.md:56- a push "opens or updates" a settle PR, unconditionallydocs/RELEASING.md:54-63- thecleanstate writes nothing and creates no PR.github/actions/release-tools/release_tools.py:145-151;.github/actions/release-settle/action.yml:236-240,:249-278(write steps gated onneeds-settle-pr)docs/RELEASING.md:79-83- a clean dispatch "routes topublish" with no further conditiondocs/RELEASING.md:86-98- dispatch routing assumes a matching changelog, publish verifies it,settle_source=dispatchrelease_tools.py:304-306(settle_statecalled withoutsection_matches);.github/actions/release-publish/action.yml:278-308docs/RELEASING.md:203- "dispatch Release Settle with the version" recovers a half-published tagdocs/RELEASING.md:233,:95-97- only a tag at the candidate merge resumes; a settle-PR merge re-runs its original pushrelease_tools.py:141-144(tag SHA mismatch blocks beforerelease_existsis considered)docs/RELEASING.md:95- "the tag push (the Release) fires On Release"docs/RELEASING.md:110-111-release: publishedfires itworkflow-templates/on-release.yml:41-43docs/RELEASING.md:172- templates carry mega-reth values (Cargo.toml,toml,cargo update --workspace, private deps)docs/RELEASING.md:186-190-VERSION/plain, the bump command commented out,copy_templates.pyrenders real valuesworkflow-templates/release-candidate.yml:77-82;.github/scripts/copy_templates.py:45,:117-119docs/RELEASING.md:178- every PR "must" carrycompat:docs/RELEASING.md:205-211- a consumer-specific gate, not implemented by the shared actionsrelease-candidate/action.yml:117-121andrelease-settle/action.yml:53-58(pr_labelsempty by default; no label check in either action)release-v*docs/RELEASING.md:193-201and.github/actions/RELEASE.md:354-373release-candidate/action.yml:60-64(the carry list defaults to two release workflows); consumer examplemega-optimism/.github/workflows/lint.yml:6-7filtersmainonlydocs/RELEASING.md:14- the reviewer approves the environment only "when a dispatch publishes"docs/RELEASING.md:14- either publish pathworkflow-templates/release-settle.yml:114-125(environment: releaseon the single publish job)docs/RELEASING.md:12-13- Maxwell reads private dependencies for a releasedocs/RELEASING.md:13- Maxwell mints nothing in a release workflow; dependency reads use a separate read-only Gutenberg tokenapp_token_lint.py:20-22,:160-162(L3)docs/RELEASING.md:35,.github/actions/RELEASE.md:131,release-candidate/README.md:118- changelog drafted from merged PR titlesrelease-candidate/action.yml:484-485(git log --no-merges --format='%H%x09%s')docs/RELEASING.md:250- a refusedbase_commitmeans "choose a commit on the default branch"docs/RELEASING.md:251- trunk, or the latest release linerelease-candidate/action.yml:234-252(on_release_line)docs/RELEASING.md:256- missing settle marker: "close it and let settle recreate it"docs/RELEASING.md:256- the PR is already merged on this path; refresh the current tiprelease-publish/action.yml:219-221docs/RELEASING.md:264release-publish/action.yml:294-302docs/RELEASING.md:268- the paraphrased "release branch '…' tip is '…', expected …"docs/RELEASING.md:268- the two real messages and what each allowsrelease-publish/action.yml:190-205.github/actions/RELEASE.md:31- four phases, "each a workflow".github/actions/RELEASE.md:31-34- three workflows, four phasesworkflow-templates/holdsrelease-candidate.yml,release-settle.yml,on-release.yml.github/actions/RELEASE.md:40- the settle phase always opens a PR.github/actions/RELEASE.md:41release_tools.py:145-151.github/actions/RELEASE.md:100- L2' includesrelease-publish-*.yml.github/actions/RELEASE.md:106-107- exact filenamesapp_token_lint.py:56,:164-165.github/actions/RELEASE.md:77- "from the merged PR titles".github/actions/RELEASE.md:83-85release-candidate/action.yml:484-485.github/actions/RELEASE.md:174-180- a clean dispatch publishes with no changelog caveat.github/actions/RELEASE.md:188-197release-publish/action.yml:278-302.github/actions/RELEASE.md:490- "that version is released" whenever the tag exists.github/actions/RELEASE.md:530-532- distinguish a completed Release from an interrupted onerelease_tools.py:141-144.github/actions/RELEASE.md:502- "all targets are idempotent, so the ones that succeeded are no-ops".github/actions/RELEASE.md:541-545- Release assets are re-uploaded with--clobber.github/actions/release-assets/action.yml:67release-settle/README.md:78-79- the example uses workflow inputsinputs.version/inputs.committhat do not existrelease-settle/README.md:78-91-matrix.target.*, plus a note thatversionis the only dispatch inputworkflow-templates/release-settle.yml:35-38,:107-109;release_tools.py:291-296release-settle/README.md:95-state/settleddescribed like action outputsrelease-settle/README.md:95-112- internal step outputs; the public outputs stay emptyrelease-settle/action.yml:69-78(onlyversion,pr_url,notes_file)release-settle/README.md:113- marker<!-- release-settle: vX.Y.Z <sha> -->release-settle/README.md:125-<40-hex>release-settle/action.yml:340;release_tools.py:228release-route/README.md:86-87- ancestry "without a candidate" is an empty stringrelease-route/README.md:86-90- that dispatch fails withmissing settlement factsrelease_tools.py:292-302;release-route/action.yml:172-183release-route/README.md:92-95- any published version routes toskiprelease-route/README.md:92-112- the tag must be at the candidate merge; dispatch checks neither changelog nor version orderrelease_tools.py:141-144,:304-306;release-publish/action.yml:104-113release-route/README.md- no statement of the dispatch input contractrelease-route/README.md:109-112workflow-templates/release-settle.yml:35-38release-publish/README.md:134- "This workflow must exist on the release branch"release-publish/README.md:141-144- it is a composite action; its caller isrelease-settle.ymlworkflow-templates/release-settle.yml:114-151release-publish/README.md- no dispatch changelog caveatrelease-publish/README.md:110-116release-publish/action.yml:278-302release-candidate/README.md:106-110- the example setsbump_commandwithoutdependency_tokenrelease-candidate/README.md:111release-candidate/action.yml:40-46(hard error without it)release-tools/README.md:9-22- the table omitslatest-tag,check-order,settle-stateandroute;changelog-extractlacks--include-headingrelease-tools/README.md:13-21,:29-36release_tools.py:505-554Unverified (reported, not changed)
MEGA_GUTENBERG_CLIENT_ID/MEGA_GUTENBERG_PK,repository access grants, environment reviewers and ruleset bypass actors are
external configuration. The names in the docs match every reference in this
repository (
workflow-templates/*.yml,app_token_lint.py:9), but the livesettings cannot be checked from here.
GCP_AUTH_KEYis consistent across the templates. Whether consumers keep itat environment or repository scope is external.
Code concerns found (no code changed)
settle_state(
release_tools.py:304-306), so a stale section routespublishand thenfails inside
release-publish(action.yml:294-302) instead of routingrefresh. The docs now describe this; routingrefreshdirectly would befriendlier.
at
release_exists(release_tools.py:141-144), so a fully publishedsettle-PR release reports as blocked rather than published, and an interrupted
settle-PR publication cannot be resumed by dispatch.
order_refusalcheck (release_tools.py:289-306);only
release-publishrefuses an older version.action.ymldescriptions and the generated error tablesare lossy (truncated messages such as
${decision#*$,settle PR body has no).They are regenerated by
action_docs.pyand were left untouched; thecorrected prose lives outside the generated blocks.
Deliberate remaining grep matches
release-publish.ymlremains only where removal or non-installation is thepoint:
.github/actions/RELEASE.md:247(a stale copy is deleted) and:345(nothing to install),
.github/actions/release-candidate/README.md:21and thegenerated input description it mirrors (
release-candidate/action.yml:64), and.github/actions/app-token-lint/README.md:75(a lint negative example).commit=matches only real action inputs,base_commit=in a dispatch command,and unrelated actions.
publish environment,RELEASE_APP_CLIENT,RELEASE_APP_PRIVATE_KEYandGCP_S3_AUTH_KEYhave zero matches.Verification
python3 .github/scripts/action_docs.py --check->documentation up to date.python3 .github/scripts/app_token_lint.py --repo my-repo workflow-templates/->5 file(s) clean.python3 -m unittest discover -s .github/actions/release-tools -p 'test_*.py'-> 84 tests, OK.python3 -m unittest discover -s .github/scripts -p 'test_*.py'-> 86 tests, OK.Test plan
action.yml.