Repository navigation
Conversation
potiuk
added this pull request to stack #1620
October 13, 2026 14:14
potiuk
force-pushed
the
perf/release-mgmt-4-promote-announce
branch
from
October 13, 2026 15:23
b0edf6a to
170968c
Compare
7 tasks done
…nd announcement as code Both skills had the agent assemble the Step-0 verdict and fill in every command block, mail and PR body by hand. tools/release-management now renders them from `release-config load`; the agent supplies the facts it read (the vote-passed label, whether the target exists, the attestation) as flags and keeps the judgement: - promote: `verdict` fails closed (no --vote-passed is blocked), keeps the trusted-hardware blocker text, and returns handoff-non-pmc when only PMC membership is missing. `render` draws the backend block: svnpubsub `svn mv` + `svn list` + the final signed tag on the RC's commit, github-releases (refusing a draft-tag mismatch until it is confirmed), s3 with the bucket parsed from the template, self-hosted (refused without a template, now also a Step 0 blocker in release-config); plus the hand-off note, convenience publish commands and HOLD notes, and the mandatory mirror note. - announce-draft: `verdict` adds the `promoted` check; `render --step 2` draws the [ANNOUNCE] subject and body for all four backends, with Cc, convenience and skip-wait handling, `canned_body` substitution, the @apache.org reminder always present (Golden rule 4) and a warning when the Download Page is a dist.apache.org URL; `render --step 3` skips the site bump when site_repo is unset, computes scope violations as a set difference, and draws the PR title, body and `gh pr create --web` line. Every rendered command quotes its values with the shared shell helpers; the RC commit SHA and the vote-result URL come from the planning issue, which is external content. Each backend, blocker and outcome gets its own file; announce-draft's site-bump step moves, byte-identical with its generated adversarial block, to site-bump.md at the skill root. Golden rules, Hard rules and the JSON contracts are unchanged. promote 6,982 → 4,886 tokens, announce-draft 6,809 → 5,662. Evals: the scripted cases become pytest cases named after each former case; the injection cases and one verdict smoke case per skill stay, their fixtures now carrying the real tool output. Also fixes the svnpubsub promote template, whose `\ # comment` continuation lines broke the pasted command. Generated-by: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01GTPsZ5aEE5bUVYqp47Dpvv
potiuk
force-pushed
the
perf/release-mgmt-4-promote-announce
branch
from
October 14, 2026 08:09
170968c to
94c2201
Compare
…ring sanitization' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…ring sanitization' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
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
Fourth PR of the stack; it builds on the vote PR.
release-promote:verdictfails closed: no--vote-passedmeans blocked.renderdraws the per-backend block: svnpubsubsvn mv+svn list+ the final signed tag on the RC commit; github-releases, which refuses a draft-tag mismatch until it is confirmed; s3; and self-hosted.release-announce-draft:verdictadds thepromotedcheck.render --step 2draws the[ANNOUNCE]for all four backends. The@apache.orgreminder is always present (Golden rule 4), and adist.apache.orgDownload Page gets a warning (Golden rule 5).render --step 3draws the site-bump PR and computes scope violations as a set difference.site-bump.mdat the skill root.Security notes
Every rendered command quotes its values with the shared shell helpers. That matters most here: the RC commit SHA and the vote-result URL come from the planning issue, which is external content. A test proves both come out as inert words.
Behaviour changes worth a look
\ # release_dist_backend=svnpubsubcontinuation lines broke the pasted command, so the comments are gone. The step headers keep the backend tag.[ANNOUNCE]body drops its<NOTE: do not include direct dist.apache.org links…>line. It was a drafting instruction inside the template; the rule is now enforced as a warning.announce_cc_listsis empty, the Cc line is omitted.Type of change
Test plan
prek run --all-filespasses on the stack tip.tools/release-management: pytest / ruff / mypy, with two real-loadintegration tests.tools/release-confighas a new self-hosted blocker test.Was generative AI tooling used to co-author this PR?
Generated-by:.🤖 Generated with Claude Code
https://claude.ai/code/session_01GTPsZ5aEE5bUVYqp47Dpvv