Skip to content

ci(release): push only the release tag - #465

Merged
M3gA-Mind merged 1 commit into
tinyhumansai:mainfrom
M3gA-Mind:fix/release-tag-only
Oct 15, 2026
Merged

M3gA-Mind merged 1 commit into
tinyhumansai:mainfrom
M3gA-Mind:fix/release-tag-only

Conversation

@M3gA-Mind

@M3gA-Mind M3gA-Mind commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The Release workflow still pushes its release commit to main, and the "Protect main" ruleset rejects that push every time. This PR only removes that push. The version logic is already on main (.github/scripts/next-release-version.sh, from 3413d2d onward) and is not touched.

  • Evidence: run 38719829641 (10:22Z, minor → v2.9.0) failed at "Push release commit and tag": GH013: Repository rule violations found for refs/heads/main ... Changes must be made through a pull request / ! [remote rejected] HEAD -> main. Runs 38714692861, 38347365938 and 37189411952 failed the same way.
  • Ruleset: "Protect main" (id 23833267) targets ~DEFAULT_BRANCH, with the rules deletion, non_fast_forward, pull_request and required_status_checks, and 0 bypass actors. It is the repo's only ruleset; nothing targets tags.
  • Fix: the step pushes only refs/tags/vX.Y.Z. The release commit (the bumped Cargo.toml/Cargo.lock) stays on the runner, reachable from its tag. A comment explains why main is never pushed.

API Or Behavior Changes

  • Release runs no longer push to main; the tag is the released version's only ref. [workspace.package].version on main keeps lagging the tags, which the existing script already handles (it bumps from the higher of the manifest and the highest tag).
  • No crates.io change: the tracked crate tinyagents-harness (and every crate in crates/*) has publish = false, so the package and publish steps stay skipped.
  • No crate API change.

Tests

Workflow-only change. actionlint is not installed locally, so it was not run. The file parses as YAML (Ruby YAML.load_file). Release is workflow_dispatch-only, so this PR's CI doesn't exercise it; the first dispatch after merge is the real check.

  • cargo fmt --check (N/A: workflow-only change)
  • cargo clippy --all-targets -- -D warnings (N/A)
  • cargo clippy --all-targets --all-features -- -D warnings (N/A)
  • cargo build --all-targets (N/A)
  • cargo build --all-targets --all-features (N/A)
  • cargo test (N/A)
  • cargo test --all-features (N/A)

Documentation

A comment in release.yml on the push step. Not changed: ruleset settings (an admin action). Adding a bypass actor for the release job instead would keep main's manifest version in step; that's the maintainer's call.

Summary by CodeRabbit

  • Chores
    • Updated release version selection to account for both the crate’s declared version and existing valid release tags.
    • Release workflows now avoid changing dependency pins that don’t match the declared version.
    • Releases publish the release tag to the remote repository without pushing the release commit to the branch; the tag points to the release commit.

@tinysweeper

tinysweeper Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Tiny Sweeper review

Tiny Sweeper reviewed this change across 5 lane(s) and found 0 active actionable finding(s). Detailed lane evidence and any incomplete work are listed below. _The code index is behind this pull request (indexed at `42fdeeb02be5`), so retrieved context may be out of date._

State: Incomplete
Priority: none
Reviewed head: 224295d664cc
Updated: 2026-10-15T10:57:06Z

Review snapshot

Change surface Files Review signal Count
Production 0 Active findings 0
Tests 0 Noted findings 0
Documentation 0 Resolved findings 0
Configuration 1 Pending checks/questions 1

Completeness: Incomplete
Test assessment: No supported feature-to-test mapping was available; this does not mean tests are absent or passed.

What changed

The release workflow previously tried to push both the release commit to main and the release tag; the commit push was always rejected because the "Protect main" ruleset requires a pull request for every change to main (GH013). The step is now narrowed to pushing only the tag (`refs/tags/${RELEASE_TAG}`), with a comment explaining the ruleset conflict. The release commit itself stays off main, and the next version computation is unaffected because `next-release-version.sh` derives the base version from tags, which are refreshed via `git fetch --tags`. The tag push carries the release commit's objects, so nothing else in the workflow depends on main being updated. Permissions, actions, and interpolations are unchanged; `RELEASE_TAG` continues to come from the validated semver script output rather than untrusted input. The manifest-bump side effect on main (the workspace version left stale) is disclosed in the description and is exactly the case the version script was written to handle.

Features

  • Modified — Release workflow tag-only push: Avoids a failing push to main by publishing only the tag, which complies with the "Protect main" branch-protection ruleset requiring a pull request for changes to main. The release commit remains off main; the tag still carries its objects. No permissions are changed and no new untrusted interpolation is introduced. (.github/workflows/release.yml, .github/workflows/release.yml#jobs:)
  • Added — Explanatory comment on ruleset conflict: Documents why the commit push to main was removed (GH013 rejections under the "Protect main" ruleset) and clarifies that the next version is computed from tags. (.github/workflows/release.yml#jobs:)

Tests

No supported feature-to-test mapping was produced. Test execution is not inferred.

Findings

No active actionable findings.

Could not review: .github/workflows/release.yml

Before merge

  • Complete the critique review for .github/workflows/release.yml.
Agent review details

critique

  • Conclusion: Neutral
  • Scope reviewed: incomplete; unanswered: .github/workflows/release.yml
  • Lane summary: Reviewed 0 files; 0 findings. 1 file could not be reviewed: .github/workflows/release.yml.

security

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Positive: Permissions and actions are unchanged, and `RELEASE_TAG` is computed from the validated semver script output rather than untrusted input, so no new untrusted interpolation is introduced.
  • Lane summary: The change replaces the failing dual push (commit to main + tag) with a tag-only push, which matches the branch-protection ruleset the comment describes; permissions are unchanged, no new untrusted interpolation is introduced (RELEASE_TAG is computed from the validated semver script output, not from untrusted input), and the stale workspace version left on main is exactly the case next-release-version.sh was written to handle (base taken from tags, tags refreshed via `git fetch --tags` before the computation). No findings. _The code index is behind this pull request (indexed at `42fdeeb02be5`), so retrieved context may be out of date._

tests

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: No behavioural change: nothing outside documentation, configuration and tests.

commits

  • Conclusion: Neutral
  • Scope reviewed: all assigned evidence
  • Lane summary: Nothing sensitive found in what this pull request commits.

description

  • Conclusion: Success
  • Scope reviewed: all assigned evidence
  • Positive: The pull request description accurately describes the diff, including disclosure of the stale manifest version left on main and how the version script compensates by taking its base from tags refreshed via `git fetch --tags`.
  • Lane summary: The description accurately describes the diff: the push step is narrowed to the tag only, with a comment explaining the ruleset conflict, and the manifest-bump side effect on main is disclosed along with how the version script compensates. The workflow-only change touches no Rust code and no permissions, actions, or untrusted interpolations beyond what was already there. The tag push carries the release commit's objects, so nothing else in the workflow depends on main being updated. No findings. _The code index is behind this pull request (indexed at `42fdeeb02be5`), so retrieved context may be out of date._
Evidence and run details
  • Models: ladder/vectors-oai3, glm-5.3-flash
  • Spend: $0.002121
  • Tokens: 43301 input · 3088 output · 5184 cached · 57 embedding
Head State Pass summary
b94274ed850a incomplete 0 active finding(s), 0 resolved finding(s) (at 2026-10-15T10:00:06Z)
224295d664cc incomplete 0 active finding(s), 0 resolved finding(s) (at 2026-10-15T10:57:06Z)

tinysweeper 0.1.2

@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7e0403b2-02f1-4840-aae8-04ed0095504d
📥 Commits

Reviewing files that changed from the base of the PR and between b94274e and 224295d.

📒 Files selected for processing: 1
  • .github/workflows/release.yml

Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 0 remain after this review.

📝 Walkthrough

The release workflow now pushes only the release tag to origin. It no longer pushes the release commit to the branch named by GITHUB_REF_NAME.

Changes: Release workflow

Layer / File(s) Summary
Push release tag
.github/workflows/release.yml
The push step now pushes only refs/tags/${RELEASE_TAG}. It no longer pushes the release commit to the branch or pushes the tag using its name.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~5 minutes

Change: Bug fix

Suggested reviewers: senamakel

Merge Risk: ⚪ Minimal · up to 22429

Release commits remain reachable from their tags, and subsequent releases account for those tags when selecting versions. No material merge-blocking risk is established; the change is mergeable after normal checks.

### Architecture Summary

Architecture risk: 🔵 Low · up to 22429

The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency.

Changed systems: None identified.

Architecture concerns
No architecture-level concerns identified.

Review details

Before / after behavior

  • observed — Modified behavior in .github/workflows/release.yml: The push step is renamed to “Push release tag” and now pushes only refs/tags/${RELEASE_TAG}. The prior branch push to HEAD:${GITHUB_REF_NAME} and separate push using the tag name are removed.
Pre-merge checks: Passed 5
Passed Passed checks: 5 passed
Check name Status Explanation
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: the release workflow pushes only the release tag.
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

A rabbit watched the tag take flight,
It hopped to origin in the night.
The branch stayed still, the tag held tight,
A carrot snack made all things right.
The release trail was neat and bright.

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

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

tinysweeper found nothing blocking, but could not review everything, so this is not an approval: .github/workflows/release.yml.

             $0.0026 · 37,430 in / 8,413 out · 0 cached (0%) · ladder/vectors-oai3, glm-5.3-flash · 109 embedded
critique:    $0.0020 · 14,124 in / 6,290 out · 0 cached (0%) · glm-5.3-flash
security:    $0.0001 · 13,874 in / 47 out    · 0 cached (0%) · glm-5.3-flash
description: $0.0001 · 6,536 in  / 604 out   · 0 cached (0%) · glm-5.3-flash

@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Oct 15, 2026
The Protect main ruleset requires a pull request for every change to main,
so pushing the release commit to main is always rejected (GH013). Push only
the tag; the next version already comes from the tags.
@M3gA-Mind
M3gA-Mind force-pushed the fix/release-tag-only branch from b94274e to 224295d Compare October 15, 2026 10:53
@M3gA-Mind M3gA-Mind changed the title ci(release): push only the release tag and version from the tags ci(release): push only the release tag Oct 15, 2026

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

tinysweeper found nothing blocking, but could not review everything, so this is not an approval: .github/workflows/release.yml.

             $0.0021 · 43,301 in / 3,088 out · 5,184 cached (12%) · ladder/vectors-oai3, glm-5.3-flash · 57 embedded
security:    $0.0012 · 28,914 in / 1,462 out · 0 cached (0%)      · glm-5.3-flash
description: $0.0007 · 12,778 in / 1,041 out · 5,184 cached (41%) · glm-5.3-flash

@M3gA-Mind
M3gA-Mind merged commit c11ff63 into tinyhumansai:main Oct 15, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant