ci: release-notes checker and a PR-triggered workflow (#107) - #109
Merged
Merged
Conversation
Copied verbatim from osprey-dcs/dp-python-lib#70 (.dev/tools/check-release-notes.py); only the configuration block differs: REPOSITORY = osprey-dcs/data-platform and no signing-identity rules. Rules are #98. rel-1.16.0.md passes all of R1-R5, including R2 over its 26 cross-links into the five repos. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd
Adds ci.yml, the repo's first PR-triggered workflow: one job that runs the checker, contents: read, superseded PR runs cancelled. actions/checkout v7.0.1 and actions/setup-python v7.0.0 pinned by SHA, resolved from the tag refs. release.yml's Verify release notes exist step now runs the checker on the notes it found, following its dry-run rule: a rehearsal warns, a tag push fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd
…e checker (#107) The rule is recorded once, in CLAUDE.md right after the action-pinning convention, for all five osprey-dcs repos (#98 definition of done). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd
…nal reference copy (#107) .github/scripts/check-release-notes.py is the single location chosen for all five repos. The file is the final reference copy from osprey-dcs/dp-python-lib#70, differing only in the configuration block (REPOSITORY = osprey-dcs/data-platform, no identity rules). It now finds the repo root by walking up to .git, and R5 no longer flags a bare <version>. ci.yml, release.yml, doc/developer/release.md and CLAUDE.md's release-notes section point at the new path; the CLAUDE.md section also records the narrowed R5, the root discovery, and dp-python-lib's push-only guard as the one rehearsal exception. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd
The tag-confirmation command searched only the first 100 tags, so it printed nothing for a correct SHA in a repo with more (actions/runner, 146 tags); add --paginate and emit one name per line, since --jq runs per page. The rehearsal paragraph said dp-grpc, dp-service and dp-desktop-app all use the dry_run/DRY_RUN input. On main, all three release.yml files use an input-less IS_RELEASE with publishing in a tag-push-gated job; DRY_RUN remains in this repo's release.yml, dp-service's release-image.yml and dp-grpc's generate-python-stubs.yml. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd
This was referenced Oct 1, 2026
…107) The already-released bullet said those files get only R1, R2 and R5; the checker also applies the signing-identity rules to them. Name the identity rules once, and cut the section to what a reader needs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd
Re-copied from osprey-dcs/dp-python-lib@f04d830 (dp-python-lib#73 as merged); only the configuration block differs. Picks up the review fixes made there: - R2/N2 apply only to the five lockstep repos, not every osprey-dcs repo. - http:// as well as https:// github.com and raw links are checked. - A reference definition with its destination on the next line is parsed. - HTML anchors inside code no longer count as link targets. - A same-document #L... anchor fails R4; a blob link's line anchor is not range-checked. - A backslash-newline between a signing flag and its value is accepted. - Trailing sentence punctuation after the image tag is not read as part of it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd
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.
Closes #107. Part of #98.
Ports the release-notes checker from osprey-dcs/dp-python-lib#70 to
.github/scripts/check-release-notes.py. The file is copied verbatim; onlyREPOSITORYandSIGSTORE_PYTHON_RULES = Falsediffer.Changes
ci.yml: this repo's first PR-triggered workflow.pull_requestand on pushes tomain, withpermissions: contents: read.actions/checkoutv7.0.1 andactions/setup-pythonv7.0.0, both pinned by SHA.release.yml: "Verify release notes exist" runs the checker. A rehearsal warns; a tag push fails.CLAUDE.md:--paginate. Without it, the command printed nothing for a correct SHA in repos with more than 100 tags.release.ymlfiles now useIS_RELEASE.DRY_RUNremains in this repo'srelease.yml, dp-service'srelease-image.ymland dp-grpc'sgenerate-python-stubs.yml.doc/developer/release.md: points at the checker.Testing
Real notes:
rel-1.16.0.mdpasses R1–R5. That includes R2 over its 26 links into the five repos, and its 11 links to its own headings.Release step, run locally:
rel-9.9.9.md, so every link carries the wrong tagWorkflows: the pin check and YAML parse are clean.
Notes
doc-102-distribution-modelalso adds aCLAUDE.mdsection after the pinning section, so the two may conflict. Keep both.🤖 Generated with Claude Code
https://claude.ai/code/session_012nsCzraPATf4LCKVyUStfd