Skip to content

fix(release): chore/docs-only ranges yield none (revert #38 patch floor)#42

Merged
AndreJorgeLopes merged 1 commit into
mainfrom
fix/chore-only-no-release
Jun 15, 2026
Merged

fix(release): chore/docs-only ranges yield none (revert #38 patch floor)#42
AndreJorgeLopes merged 1 commit into
mainfrom
fix/chore-only-no-release

Conversation

@AndreJorgeLopes

Copy link
Copy Markdown
Owner

What

Fixes two failing tests in tests/unit/release.bats on the v0.3.0 baseline.

Test 5 — _parse_conventional_commits (the real bug)

A chore-only commit range was classified as a patch bump instead of none, so chore/docs/refactor-only merges cut a release. Root cause: the "patch floor" added in #38 (2b693ab) flipped any none bump to patch to keep "merge = release". That contradicts conventional-commit rules, the documented release process, and the test at release.bats:66 (present since the parser's first commit 81558d2, never updated → started failing).

Fix: removed the patch floor. Only feat/fix/breaking cut a release now; a chore/docs-only range returns none.

Test 14 — bump_all_versions (stale fixture, same #38 cause)

Not a harness quirk. #38 changed the command badge format from [devflow vX.Y.Z] to bare [X.Y.Z], but test 14's fixture (description: "[devflow v0.1.0]...") and grep ([devflow v0.2.0]) were left stale, so the sed never matched and the badge assertion failed under bats. Aligned the fixture + grep to the bare [X.Y.Z] format the real devflow-plugin/commands/*.md files use.

Behavior change

Removing the patch floor reverts #38's "merge = release": a docs/chore-only merge to main no longer auto-releases (matches conventional rules + the documented process). To force a release for such a range, dispatch release.yml with bump_override — the escape hatch #38 was working around.

Verification

bats tests/unit/release.bats   → 16/16 green
make test-unit                 → 57/57 green
repro: chore-only → none · feat → minor · fix → patch

Follow-up (not in this PR)

CLAUDE.md still documents the old [devflow v0.1.0] badge format — stale from #38. Tracked separately to keep this diff scoped to the test failures.

🤖 Generated with Claude Code

_parse_conventional_commits classified a chore-only commit range as a
patch bump instead of none, so chore/docs/refactor-only merges cut a
release. The "patch floor" added in #38 (2b693ab) flipped any none bump
to patch to keep "merge = release", but that contradicts conventional-
commit rules, the documented release process, and the test at
release.bats:66 (present since the parser's first commit 81558d2) which
was never updated and started failing.

Remove the patch floor: only feat/fix/breaking cut a release. A
chore/docs-only range returns none. To force a release for an otherwise
non-releasable range, dispatch release.yml with bump_override (the escape
hatch #38 was working around).

Also fix the stale test 14 (bump_all_versions): #38 changed the command
badge format from [devflow vX.Y.Z] to bare [X.Y.Z], but the fixture
(description: "[devflow v0.1.0]...") and its grep ([devflow v0.2.0]) were
not updated, so the sed never matched and the badge assertion failed under
bats. Aligned the fixture + grep to the bare [X.Y.Z] format used by the
real devflow-plugin/commands/*.md files.

bats tests/unit/release.bats: 16/16 green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@AndreJorgeLopes AndreJorgeLopes merged commit 8735a36 into main Jun 15, 2026
@AndreJorgeLopes AndreJorgeLopes deleted the fix/chore-only-no-release branch June 15, 2026 08:50
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.

1 participant