Skip to content

Correct the Release-Caller Snippet's Publish-on-Merge Claim - #1498

Merged
ptr727 merged 1 commit into
developfrom
feature/publish-on-merge-doc-claims
Sep 9, 2026
Merged

Correct the Release-Caller Snippet's Publish-on-Merge Claim#1498
ptr727 merged 1 commit into
developfrom
feature/publish-on-merge-doc-claims

Conversation

@ptr727

@ptr727 ptr727 commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Three surfaces describing the release caller stub said its merges publish. publish-plan-task.yml has said the opposite since it was written, in its own header comment and in the branch its push arm takes: a human merge that reaches the trigger still leaves the plan at publish=false, and every job the plan gates skips.

The claim was already stale before #1476 retired the publish-on-merge release trigger, and that retirement leaves nothing behind it at all. Raised by CodeRabbit as an outside-diff finding on the develop -> main promotion PR #1489, where it cannot be fixed directly, so it lands here first.

What changed

  • docs/reusable-workflows.md "Adopting the Release Chain" no longer says a NuGet or PyPI repo's merges should auto-publish. It says the push trigger is not the release gate, names the task that is, and routes the gate's own conditions to WORKFLOW.md D4.1 rather than paraphrasing them. The paragraph's first sentence already states the trigger policy, so the lead-in below it no longer restates one.
  • catalog/snippets/workflows/publish-release.yml and its embedded copy in the same document drop the descriptor entirely. The file's own on: block sits two lines under it and is the authority a reader wants.
  • catalog/snippets/workflows/README.md's row for that stub does the same.

Why nothing here states the gate's conditions in prose

A first attempt did, and every one of the four findings the local review pass drew was against that paraphrase. It dropped the actor allowlist and the code-affecting filter that WORKFLOW.md D4.1 and GOVERNANCE.md both keep. It read as if a workflow_dispatch from any ref publishes, where the task exits non-zero off main and develop. It described the human-merge path without the warning the task deliberately raises on it. And the replacement trigger descriptor identified the shape by the one trigger that never publishes for a human, contradicting its own paragraph two clauses earlier.

The rule has three correct statements already, so a fourth was the defect. The second round deleted the paraphrase rather than narrowing it.

Verification

prose_lint.py, repo_gate.py across eol, eol-coverage and sha-pin, spec/validate.py, spec/audit.py --selftest, spec/workflow_reuse.py --selftest, build_dist.py --check, ruff format --check, ruff check, mypy, the unittest suite at 1178 passed, and docker_lint.py over its seven linters. canonical_review.py check reports no carried canonical unit changed, and a local_review.py receipt covers this content.

A tree-wide sweep for the same claim in any other wording found none outside these three surfaces. Every other statement of the rule already reads "a human merge never auto-publishes".

The snippet and the document's embedded copy stay byte-identical, which an assertion in the edit checked rather than the eye, and the review pass re-checked programmatically afterwards.

Two local strict-review passes ran, raising five findings. The four above shaped the result. The fifth is pre-existing and untouched by this diff, filed as #1497 rather than fixed here: the Docker delta list in the same section never says to remove the push: block, so a Docker repo following it keeps a trigger that section's own policy forbids.

🤖 Generated with Claude Code

https://claude.ai/code/session_01817rckKywjfoaEV5WF9TKs

Three surfaces describing the release caller stub said its merges
publish. `publish-plan-task.yml` has said the opposite since it was
written, in its own header comment and in the branch its `push` arm
takes: a human merge that reaches the trigger still leaves the plan at
`publish=false`, and every job the plan gates skips.

The claim was already stale before #1476 retired the `publish-on-merge`
release trigger, and that retirement leaves nothing behind it at all.

## What changed

- `docs/reusable-workflows.md` "Adopting the Release Chain" no longer
  says a NuGet or PyPI repo's merges should auto-publish. It says the
  push trigger is not the release gate, names the task that is, and
  routes the gate's own conditions to `WORKFLOW.md` D4.1 rather than
  paraphrasing them. The paragraph's first sentence already states the
  trigger policy, so the lead-in below it no longer restates one.
- `catalog/snippets/workflows/publish-release.yml` and its embedded copy
  in the same document drop the descriptor entirely. The file's own `on:`
  block sits two lines under it and is the authority a reader wants.
- `catalog/snippets/workflows/README.md`'s row for that stub does the
  same.

Nothing here states the gate's conditions in prose. A first attempt did,
and every one of the four findings it drew was against that paraphrase:
it dropped the actor allowlist and the code-affecting filter, it read as
if a `workflow_dispatch` from any ref publishes where the task exits
non-zero off `main` and `develop`, and it described the human-merge path
without the warning the task deliberately raises on it. The rule has
three correct statements already, so a fourth was the defect.

The snippet and the document's embedded copy stay byte-identical, which
an assertion in the edit checked rather than the eye.

## Verification

`prose_lint.py`, `repo_gate.py` across eol, eol-coverage and sha-pin,
`spec/validate.py`, `spec/audit.py --selftest`,
`spec/workflow_reuse.py --selftest`, `build_dist.py --check`,
`ruff format --check`, `ruff check`, `mypy`, the `unittest` suite at
1178 passed, and `docker_lint.py` over its seven linters.
`canonical_review.py check` reports no carried canonical unit changed.

A tree-wide sweep for the same claim in any other wording found none
outside these three surfaces. Every other statement of the rule already
reads "a human merge never auto-publishes".

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 9, 2026 21:48
@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 33 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: dec7aecd-e8a9-4ca4-a4ff-2f5243343635

📥 Commits

Reviewing files that changed from the base of the PR and between b5fc121 and e71ee53.

📒 Files selected for processing (3)
  • catalog/snippets/workflows/README.md
  • catalog/snippets/workflows/publish-release.yml
  • docs/reusable-workflows.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ptr727

ptr727 commented Sep 9, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are documentation/comment-only and align the described behavior with the existing release gate logic without introducing inconsistencies.

Pull request overview

Updates the release-caller documentation and snippets to remove the stale claim that merges to the default branch auto-publish releases, aligning the guidance with publish-plan-task.yml's actual gate behavior and WORKFLOW.md D4.1.

Changes:

  • Correct docs/reusable-workflows.md to clarify that a push trigger is not the release gate, and route the publish decision to publish-plan-task.yml / WORKFLOW.md D4.1.
  • Remove the “whose merges publish” descriptor from the publish-release.yml snippet and its catalog README entry.
File summaries
File Description
docs/reusable-workflows.md Fixes the “publish on merge” claim and points readers to the authoritative gate (publish-plan-task.yml) and WORKFLOW.md D4.1.
catalog/snippets/workflows/README.md Updates the publish-release.yml table entry to remove the stale “merges publish” descriptor.
catalog/snippets/workflows/publish-release.yml Updates the snippet header comment to remove the stale “merges publish” descriptor.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@ptr727
ptr727 merged commit e9d4530 into develop Sep 9, 2026
9 checks passed
@ptr727
ptr727 deleted the feature/publish-on-merge-doc-claims branch September 9, 2026 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants