Skip to content

ci: enable cargo-semver-checks now that 0.6.0 is published - #18

Open
JustinKovacich wants to merge 1 commit into
mainfrom
ci/enable-semver-checks
Open

ci: enable cargo-semver-checks now that 0.6.0 is published#18
JustinKovacich wants to merge 1 commit into
mainfrom
ci/enable-semver-checks

Conversation

@JustinKovacich

Copy link
Copy Markdown
Contributor

What

Flips run-semver-checks from false to true in .github/workflows/main.yml, and rewrites the comment above it to match.

Why

The flag was off with a comment saying to turn it on "once the first release-plz publish has happened." That happened: simple_doip 0.6.0 went to crates.io at 2026-09-10T16:56:23Z, published unattended by the release-plz job on the merge of #11-#17. cargo-semver-checks diffs the crate's public API against its published baseline, and there now is one.

Until this is on, nothing mechanical stops the next release from being an unmarked breaking change — and main now publishes on merge, so an unmarked break is a published break, on a version number that can't be reused.

What it does not buy

The comment now says this explicitly, because the flip could easily be read as more coverage than it is. cargo-semver-checks inspects the public API surface. It catches a changed signature; it does not catch changed behavior behind an unchanged one.

0.6.0 is the worked example: Message::encode kept its signature exactly and started emitting different bytes. This check would have passed that release clean. The bump was correct anyway because it was marked by hand.

So behavioral breaks still depend on ! on the PR title, per CONTRIBUTING.md. That is a human step and this check does not replace it.

Verification

This PR is its own test — ci / Semver Checks runs here for the first time, against the 0.6.0 baseline. It should pass, since the PR changes no Rust.

🤖 Generated with Claude Code

The flag was off because cargo-semver-checks diffs the crate's public API
against its published baseline, and there was none. The 0.6.0 release-plz
publish created one, which is the condition the comment said to wait for.

Also records what the check cannot do, so the flip does not read as more
coverage than it is: it inspects the API surface, so 0.6.0's own
`Message::encode` change -- same signature, different bytes -- would have
passed it clean. Behavioral breaks still need `!` on the PR title by hand.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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