Skip to content

ci: Make the public API gate block the merge - #53

Merged
korya merged 1 commit into
masterfrom
korya-ci-api-gate-blocking
Sep 11, 2026
Merged

korya merged 1 commit into
masterfrom
korya-ci-api-gate-blocking

Conversation

@korya

@korya korya commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Problem

The API-compatibility job has only ever warned. It compares the branch against the newest
release tag, and until an hour ago that tag was v0.5.0, which v1 deliberately broke from.
Turning it into a gate any earlier would have failed the very PR that created the release
it compares against.

Solution

v1.0.0 exists, so the step reduces to the script alone. I checked before changing
anything: scripts/api-compat.sh on this branch reports both public packages compatible
with v1.0.0 and exits zero, so the gate passes on a clean tree rather than needing an
exemption on day one.

What changes in practice is not the check but the remedy. Before, an incompatible change
produced a warning somebody could read and merge anyway. Now it produces a red check, and
the way past it is a /v2 module path and a new import line in every caller, which is a
design decision rather than a version bump. Adding to the API is still free.

docs/guidelines.md says this outright, including the one thing the tool cannot catch: a
type aliased out of an internal package is invisible to it, which is why the public types
are declared in their own package.

Other Changes

None. No Go files touched.

No screenshots: nothing rendered changed.

Related: #50, #52

🤖 Generated with Claude Code

https://claude.ai/code/session_01GuMYXaDafWUk2fAjyEvFDa

The job has been warning since it was added, because it compares against the
newest tag and that tag was v0.5.0, which v1 deliberately broke from. A
blocking gate would have failed the release PR that created the thing it
compares against.

v1.0.0 exists now and the script reports both public packages compatible with
it, so the step reduces to the script alone. From here an incompatible change
does not fail a check to be argued with; it needs a /v2 module path and an
edit in every caller.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GuMYXaDafWUk2fAjyEvFDa
@korya
korya marked this pull request as ready for review September 11, 2026 12:42
@korya
korya merged commit 88851ec into master Sep 11, 2026
13 checks passed
@korya
korya deleted the korya-ci-api-gate-blocking branch September 11, 2026 12:42
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