Repository navigation
feat: implement issue #1184 — F2: cut-release.sh learns v<major>-<tier> channels [#657] - #1185
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reached
Next review available in: 22 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
Dev-Lead — review-changes (no-changes)No changes were needed for this PR. |
There was a problem hiding this comment.
Code Review
This pull request introduces major-scoped channel tags to the release process in scripts/cut-release.sh. Specifically, it updates the channel_ref helper to prefix bare tier channels (like stable or next) with the major version component of the release (e.g., v1-stable or v2-next), while allowing fully-qualified channels to pass through. It also adds a new major_of helper function and updates the corresponding unit and integration tests to verify this new behavior. I have no feedback to provide as there are no review comments and the implementation is clean and well-tested.
Dev-Lead — waiting on PR blockers (intent: fix-reviews)PR: #1185 |
donpetry-bot
left a comment
There was a problem hiding this comment.
Automated review — APPROVED ✓
Risk: MEDIUM
Reviewed commit: 81f093308dc86397a14a9f1f11a020ba7f33e018
Review mode: triage-approved (single reviewer)
Summary
Implements major-scoped release channels (v-) in scripts/cut-release.sh per issue #1184 (epic #657). channel_ref now takes the version and derives the major for bare tiers (stable → v2-stable for a 2.x release), while fully-qualified v- channels pass through unchanged. A new major_of helper extracts the major component. Immutable /vX.Y.Z release tags are untouched, and the --promote path inherits the major-scoped channel automatically since it shares the same channel_ref call site. The lint workflow change adds tests/test_cut_release_cross_repo.bats to the bats run — closing a pre-existing gap where that test file was not executed in CI.
Linked issue analysis
Issue #1184 (F2 of epic #657) is substantively and completely addressed. All checklist items are met: (1) channel_ref resolves to /v- with pass-through for fully-qualified names — implemented exactly as specified; (2) --promote --channel moves the major-scoped channel, verified by a dedicated cross-repo test; (3) immutable vX.Y.Z release tags are unchanged (release_ref untouched, verified by test asserting the un-prefixed tag ref is still created); (4) usage/header docs updated with v- examples; (5) the App-token gh-api path for protected channel moves is preserved — no changes to gh_move_tag or the API plumbing. All four test scenarios named in the issue are present. Out-of-scope items (F3–F5, backward-compat migration) are correctly not included.
Findings
No blocking findings.
- Correctness: validate_version enforces MAJOR.MINOR.PATCH before channel_ref runs, so major_of (${1%%.*}) always receives a well-formed version. The single call site in main() passes the version correctly, covering both the cut and --promote paths.
- Tests: strong coverage — unit tests for major_of and channel_ref (bare tier, pass-through, explicit-major-wins, major-bump reflection) plus cross-repo integration tests (dry-run planning, pass-through, --push tag creation with API-call assertions, --promote).
- Security: no secrets, no auth changes; gitleaks and Agent Security Scan passed. The secret-scanning MCP tool was unavailable in this environment (noted; gitleaks CI check covers this).
- Minor, non-blocking: the pass-through regex ^v[0-9]+- accepts arbitrary tier suffixes (e.g. v1-typo) without validating against the known tier set (stable|next|ring0|ring1). Tier names were not validated before this change either, and F5 migration/audit is the designated place for channel-name enforcement — acceptable as-is.
- The lint.yml edit is a one-line addition to the bats file list (not a protected thin-caller stub) and fixes a real CI coverage gap.
CI status
All checks green at 81f0933: Lint, ShellCheck, shellcheck, bats, unit-tests, CodeQL (actions + python), SonarCloud (quality gate passed, 0 new issues), gitleaks secret scan, Agent Security Scan, AgentShield, Compile agentic workflows, template-drift, validate-agent-profiles, gh-aw-compile, holdout-guard, test-deletion guard — all SUCCESS. Remaining checks SKIPPED by design (dependabot-automerge, dependency-audit ecosystem jobs, mention triggers). Mergeable; blocked only on required review.
Reviewed automatically by the PR-review agent (single-reviewer mode: fable 5). Reply if you need a human review.



Closes #1184
Implemented by dev-lead agent. Please review.