Skip to content

[codex] clarify changeset release tracking#1148

Merged
TabishB merged 3 commits into
mainfrom
codex/release-tracking-guidance
Jun 1, 2026
Merged

[codex] clarify changeset release tracking#1148
TabishB merged 3 commits into
mainfrom
codex/release-tracking-guidance

Conversation

@TabishB

@TabishB TabishB commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Reframe changeset guidance around the normal release cadence by default and dedicated release tracking when maintainers want it.
  • Update the PR changeset job to determine release tracking first and run Changesets validation only when a PR adds or updates changeset files.
  • Keep the no-changeset CI path positive: the PR follows the normal release cadence and continues with standard validation.

Why

The previous guidance and CI behavior made user-facing fixes feel like they always needed individual changesets. That pushed release bookkeeping into routine PRs and made the release cadence harder to manage.

Validation

  • git diff --check -- .changeset/README.md .github/workflows/ci.yml
  • ruby -e 'require "yaml"; YAML.load_file(".github/workflows/ci.yml"); puts "ci yaml ok"'
  • Ran the release-tracking detector locally and confirmed this PR follows the normal release cadence path.

Summary by CodeRabbit

  • Documentation

    • Updated contribution and release process guidance, including detailed version bump guidance and release tracking workflow instructions.
  • Chores

    • Improved CI validation to check for changeset files only when present in the PR.

@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Updated changeset contributor documentation to clarify the default release cadence versus optional dedicated release tracking paths, and modified CI validation to conditionally run changeset status checks only when .changeset/*.md files are present.

Changes

Changeset Contributor Workflow

Layer / File(s) Summary
Changeset contributor documentation
.changeset/README.md
Workflow section provides step-by-step guidance for dedicated release tracking, and Version Bump Guide + "When to Create a Changeset" sections now distinguish between dedicated tracking criteria (notable bug fixes, breaking changes, user-visible performance improvements) and normal release cadence (routine fixes, docs, tests, internal refactors).
Release tracking CI validation
.github/workflows/ci.yml
Job validate-changesets is renamed to Validate Release Tracking, detects changed .changeset/*.md files against origin/main, and conditionally installs dependencies and runs changeset status validation only when changesets are present.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • Fission-AI/OpenSpec#596: Adds a new .changeset/spec-naming-clarification.md entry that will satisfy the updated CI condition for running changeset validation.
  • Fission-AI/OpenSpec#516: Includes a new changeset file (v0.21 release) that demonstrates the type of file the updated CI logic will detect and validate.

Suggested reviewers

  • alfred-openspec

Poem

🐰 A rabbit's prose now guides the way,
Changesets clear what you should say—
Docs explain the tracking choice,
CI listens, reads the voice,
Workflows hop in sync and sway! 🌟

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: clarifying changeset release tracking guidance and CI behavior.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/release-tracking-guidance

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 and usage tips.

@TabishB TabishB marked this pull request as ready for review June 1, 2026 05:05

@alfred-openspec alfred-openspec left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good. The release-tracking wording is clearer, and the CI job now skips changeset validation unless a PR actually includes release-tracked changesets.

@TabishB TabishB enabled auto-merge June 1, 2026 05:10

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

267-267: ⚡ Quick win

Clarify the success message.

The message "continuing with standard validation" is misleading because no validation steps actually run when has_changesets is false—the job simply succeeds. Consider rephrasing to make it clear that no changeset validation is required:

📝 Suggested message improvement
-            echo "This PR follows the normal release cadence; continuing with standard validation"
+            echo "This PR follows the normal release cadence; no changeset validation required"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 267, Update the echo message that currently
reads "This PR follows the normal release cadence; continuing with standard
validation" to clearly state that no changeset validation is required when
has_changesets is false; locate the echo statement referencing that exact string
and the conditional check on the has_changesets variable in the CI job and
replace it with an explicit message such as "No changesets detected; skipping
changeset validation" (or similar) so it accurately reflects that the job is
succeeding without running validation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Line 245: The required-checks-pr job currently only needs [test_pr, lint,
nix-flake-validate] so failures in validate-changesets (“Validate Release
Tracking”) don't block merges; update the required-checks-pr job in
.github/workflows/ci.yml to include validate-changesets in its needs array and
add a step that checks needs.validate-changesets.result != 'success' and fails
(or exits non-zero) when it's not successful so the job fails when
validate-changesets fails; reference the job names required-checks-pr and
validate-changesets when making the change.

---

Nitpick comments:
In @.github/workflows/ci.yml:
- Line 267: Update the echo message that currently reads "This PR follows the
normal release cadence; continuing with standard validation" to clearly state
that no changeset validation is required when has_changesets is false; locate
the echo statement referencing that exact string and the conditional check on
the has_changesets variable in the CI job and replace it with an explicit
message such as "No changesets detected; skipping changeset validation" (or
similar) so it accurately reflects that the job is succeeding without running
validation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 938e6911-4a6f-42aa-aaf3-729e214385ff

📥 Commits

Reviewing files that changed from the base of the PR and between e364630 and 4046728.

📒 Files selected for processing (2)
  • .changeset/README.md
  • .github/workflows/ci.yml

Comment thread .github/workflows/ci.yml

validate-changesets:
name: Validate Changesets
name: Validate Release Tracking

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.

⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Check branch protection rules for the main branch

gh api repos/{owner}/{repo}/branches/main/protection \
  --jq '.required_status_checks.contexts[]' 2>/dev/null || echo "Unable to fetch branch protection rules. Please verify manually in repository settings."

Repository: Fission-AI/OpenSpec

Length of output: 318


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE=".github/workflows/ci.yml"
echo "== File head =="
head -n 40 "$FILE" || true

echo "== Jobs around validate-changesets / required-checks-pr =="
# Show region around the referenced line numbers (if file is long enough)
sed -n '200,340p' "$FILE" || true

echo "== Exact job keys present =="
rg -n "^  [a-zA-Z0-9_-]+:" "$FILE" || true

echo "== validate-changesets job block =="
# Try to locate the job key and print until next top-level job key
python3 - <<'PY'
import re, itertools, pathlib
p = pathlib.Path(".github/workflows/ci.yml")
lines = p.read_text().splitlines()
key_pat = re.compile(r'^\s{2}([a-zA-Z0-9_-]+):\s*$')
target = "validate-changesets"
idxs = [i for i,l in enumerate(lines) if key_pat.match(l) and key_pat.match(l).group(1)==target]
if not idxs:
    print("No job key named validate-changesets found (will fall back to searching for name: Validate Release Tracking).")
    sys_exit=False
else:
    i=idxs[0]
    # print until next job key at indent 2
    for j in range(i, len(lines)):
        if j!=i and key_pat.match(lines[j]) and key_pat.match(lines[j]).group(1)!=target:
            break
        print(f"{j+1}:{lines[j]}")
PY

echo "== required-checks-pr job block =="
python3 - <<'PY'
import re, pathlib
p = pathlib.Path(".github/workflows/ci.yml")
lines = p.read_text().splitlines()
key_pat = re.compile(r'^\s{2}([a-zA-Z0-9_-]+):\s*$')
target = "required-checks-pr"
idxs = [i for i,l in enumerate(lines) if key_pat.match(l) and key_pat.match(l).group(1)==target]
if not idxs:
    print("No job key named required-checks-pr found.")
else:
    i=idxs[0]
    for j in range(i, len(lines)):
        if j!=i and key_pat.match(lines[j]) and key_pat.match(lines[j]).group(1)!=target:
            break
        print(f"{j+1}:{lines[j]}")
PY

echo "== Match for Validate Release Tracking =="
rg -n "Validate Release Tracking" "$FILE" || true

echo "== Check for needs references to validate-changesets =="
rg -n "needs:.*validate-changesets|validate-changesets" "$FILE" || true

Repository: Fission-AI/OpenSpec

Length of output: 9758


Validate Release Tracking doesn’t block merges via required-checks-pr

In .github/workflows/ci.yml, required-checks-pr only depends on test_pr, lint, and nix-flake-validate (needs: [test_pr, lint, nix-flake-validate]), so failures in validate-changesets / “Validate Release Tracking” won’t cause required-checks-pr to fail. This means PRs can merge even when changeset validation fails (if branch protection only requires required-checks-pr). Also, the GitHub branch-protection API check failed with 403 (“Resource not accessible by integration”), so the exact required checks can’t be confirmed here.

Fix by either:

  • Adding validate-changesets to required-checks-pr.needs and failing when needs.validate-changesets.result != success, or
  • Marking “Validate Release Tracking” as a required status check in branch protection.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 245, The required-checks-pr job currently
only needs [test_pr, lint, nix-flake-validate] so failures in
validate-changesets (“Validate Release Tracking”) don't block merges; update the
required-checks-pr job in .github/workflows/ci.yml to include
validate-changesets in its needs array and add a step that checks
needs.validate-changesets.result != 'success' and fails (or exits non-zero) when
it's not successful so the job fails when validate-changesets fails; reference
the job names required-checks-pr and validate-changesets when making the change.

@TabishB TabishB added this pull request to the merge queue Jun 1, 2026
Merged via the queue into main with commit 055957f Jun 1, 2026
12 checks passed
@TabishB TabishB deleted the codex/release-tracking-guidance branch June 1, 2026 05:17
linjinze999 pushed a commit to linjinze999/OpenSpec that referenced this pull request Jun 4, 2026
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