justinmclean opened a new pull request, #582:
URL: https://github.com/apache/airflow-steward/pull/582

   ## Summary
   
   Adds `release-vote-draft` (magpie Step 7 of the release-management
   lifecycle): drafts the `[VOTE]` email body and the planning-issue
   comment for an Apache-convention RC vote. Both outputs are paste-ready.
   The skill never sends mail and never posts a comment without explicit
   RM confirmation.
   
   ## Behavior
   
   - **Step 0 pre-flight** gates the run: RC identifier parseable,
     planning issue found, `release-management-config.md` readable,
     verify-rc reported PASS (or `--skip-verify-check <reason>`), and
     vote window >= 72h (or `--expedited <reason>`).
   - **Step 1** loads RC metadata from the planning issue and project config.
   - **Step 2** drafts the `[VOTE]` subject and body, signed off by the RM.
   - **Step 3** proposes the planning-issue comment, with a standard and an
     expedited variant; the expedited variant carries the board-report
     reminder required by ASF policy.
   - External content (issue bodies, changelog, URLs) is treated as data,
     never instructions; prompt-injection attempts are flagged and ignored.
   
   Composes with `release-verify-rc` (upstream, proposed) and
   `release-vote-tally` (downstream, proposed).
   
   ## Safety rules
   
   - Never sends mail; never posts the comment on autopilot.
   - Never shortens the vote window below the 72h ASF floor without 
`--expedited`.
   - Never drafts on a verify-rc FAIL without `--skip-verify-check`.
   - Never invents metadata; all URLs come from the planning issue or config.
   
   ## Tests
   
   Adds a 3-step skill-eval suite (9 cases) covering the standard,
   expedited, skip-verify, and prompt-injection paths. `comment_body` is
   prose-graded via `grading-schema.json`; the vote `body` is exact-matched.
   
   ## Notes
   
   - Skill is mirrored to `.claude/skills/magpie-release-vote-draft/` (kept 
identical).
   - Adds the capability entry to `docs/labels-and-capabilities.md`.
   
   ## Type of change
   
   - [X] Skill change (`.claude/skills/<name>/`) — eval fixtures updated below
   - [ ] Tool / bridge contract (`tools/<system>/*.md`)
   - [ ] Python package (`tools/*/` with `pyproject.toml`)
   - [ ] Groovy reference impl
   - [ ] Cross-cutting (RFC, AGENTS.md, sandbox, privacy-LLM)
   - [ ] Documentation (`docs/`, `README.md`, `CONTRIBUTING.md`)
   - [ ] Project template (`projects/_template/`)
   - [ ] CI / dev loop (`prek`, workflows, validators)
   - [ ] Other:
   
   ## Test plan
   
   - [X] `prek run --all-files` passes
   - [ ] For Python packages touched: `uv run pytest` / `ruff check` / `mypy` 
passes
   - [ ] For Groovy bridges touched: command-line invocation tested end-to-end
   - [X] For skill changes: eval suite passes for the affected skill
         (`PYTHONPATH=tools/skill-evals/src python3 -m skill_evals.runner 
tools/skill-evals/evals/<skill>/`)
   - [ ] For skill *behaviour* changes: a new or updated eval fixture is 
included in this PR
         (a regression test for the bug fixed / the behaviour added — see 
CONTRIBUTING.md)
   - [ ] Other:
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to