Skip to content

Configure 0.x graduation guard and fix tag format - #9

Merged
jeremyjs merged 1 commit into
mainfrom
claude/fix-accidental-v1-major
May 20, 2026
Merged

Configure 0.x graduation guard and fix tag format#9
jeremyjs merged 1 commit into
mainfrom
claude/fix-accidental-v1-major

Conversation

@jeremyjs

Copy link
Copy Markdown
Contributor

Summary

Reconfigure semantic-release to support a 0.x graduation phase where breaking changes bump the minor version instead of major, with explicit documentation of the versioning strategy and tag format requirements.

Changes

  • RELEASING.md:

    • Updated conventional commits table to show different version bump behavior for 0.x vs post-1.0 releases
    • Breaking changes now bump minor (0.1.x0.2.0) during 0.x phase, major after 1.0.0
    • Added explanation of the graduation guard and what 1.0.0 stability guarantees
    • Added new "Tag format" section documenting the cli-v${version} scheme to prevent incorrect tag discovery
  • .releaserc.json:

    • Changed tagFormat from v${version} to cli-v${version} to match historical tag scheme
    • Added { "breaking": true, "release": "minor" } rule to enforce minor bumps for breaking changes during 0.x
  • packages/cli/package.json:

    • Downgraded version from 1.0.0 to 0.1.1 to reflect pre-1.0 status
  • CHANGELOG.md: Removed (will be regenerated by semantic-release)

Implementation Details

The graduation guard allows the project to iterate on the CLI surface, config schema, JSON/SARIF output, exit codes, and plugin interface without committing to semantic versioning's major version semantics. Once these are stable, a manual bump to 1.0.0 (with removal of the breaking→minor rule) will mark the API as stable.

The tag format change ensures semantic-release correctly discovers historical releases and doesn't compute an incorrect first-release jump.

https://claude.ai/code/session_01JD2ZC6w3rWKodHFv4333Fu

The previous .releaserc.json used tagFormat "v${version}" but the existing
release history uses "cli-v${version}" (cli-v0.1.0, cli-v0.1.1). With no
matching prior tag, semantic-release treated the package as first-release
and minted v1.0.0 from history — an unintended jump that prematurely claims
a stable public API.

This re-anchors to the existing tag scheme and adds a 0.x graduation guard
so BREAKING CHANGE bumps the minor (0.1.x -> 0.2.0) instead of the major
while the project is still pre-1.0. Going to 1.0.0 now requires a deliberate
manual version bump and removal of the breaking-rule override.

- .releaserc.json: tagFormat "v${version}" -> "cli-v${version}"
- .releaserc.json: add { "breaking": true, "release": "minor" } guard
- packages/cli/package.json: 1.0.0 -> 0.1.1 (rolled back)
- CHANGELOG.md: removed (semantic-release will regenerate from cli-v0.1.1)
- RELEASING.md: document 0.x policy and tag-format requirement

Manual cleanup still required after this merges:
- delete remote tag v1.0.0 (git push origin :refs/tags/v1.0.0)
- delete GitHub Release v1.0.0
- npm deprecate @decoperations/owasp-wtf@1.0.0 on GitHub Packages
@vercel

vercel Bot commented May 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
owasp-wtf-web Ready Ready Preview, Comment May 20, 2026 6:07am

Request Review

@jeremyjs
jeremyjs merged commit 19fa5ec into main May 20, 2026
4 checks passed
@jeremyjs
jeremyjs deleted the claude/fix-accidental-v1-major branch May 20, 2026 06:07
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