Skip to content

fix(ci): oasdiff has no version subcommand — the breaking-change gate has been dead since Aug 19 - #61

Merged
yakimoto merged 1 commit into
mainfrom
fix/oasdiff-version-subcommand
Aug 24, 2026
Merged

fix(ci): oasdiff has no version subcommand — the breaking-change gate has been dead since Aug 19#61
yakimoto merged 1 commit into
mainfrom
fix/oasdiff-version-subcommand

Conversation

@yakimoto

@yakimoto yakimoto commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

User description

Closes #60.

foundation-gate / breaking-change is a required check on main, and it has failed on every PR since 2026-08-19 — not on the API diff, but on the line that verifies the install:

oasdiff_1.28.0_linux_amd64.tar.gz: OK
Error: unknown command "version" for "oasdiff"
##[error]Process completed with exit code 100.

Download and checksum both pass. The job then exits 100 before diffing a single spec.

Why that is worse than the gate being off

It is not finding a breaking change and not clearing one either — it dies during setup while showing red on every PR, which reads as "this PR breaks the API". And nobody currently knows whether the API surface drifted in the four-day window, because nothing has compared two specs since Aug 19.

Verified, not guessed

Downloaded the real v1.28.0 binary and ran the candidates rather than assuming which one cobra exposes:

command result
oasdiff version exit 100 — reproduces the CI failure exactly
oasdiff --version exit 0 — oasdiff version 1.28.0
oasdiff --help exit 0

Exit 100 matching the CI code is what makes this a reproduction rather than a plausible story.

--version is kept over --help because it still proves the binary runs and reports the expected version. An install check that only proves a file exists is the weaker one.

One honest note on the probe

My first attempt measured nothing and looked like an answer: the darwin asset is named darwin_all, not darwin_arm64, so the download 404'd and every candidate returned exit 127 uniformly. A probe returning the same result for every input is not evidence — worth stating, since the table above is the whole basis for the fix.

Pre-existing, and this PR does not depend on it

failure  2026-08-23T22:39  ci/adopt-inline-pr-agent
failure  2026-08-23T04:00  renovate/redocly-cli-2.x
failure  2026-08-19T20:30  renovate/redocly-cli-2.x
success  2026-08-19T20:29  main            <- last green
failure  2026-08-19T17:07  feat/identity-resolve

Three unrelated branches, including a Renovate bot PR.

The receipt is the first green run, not this diff

The gate has not compared two specs in four days, so its next pass is also the first real statement about the API surface since then. Read it as such.

Unblocks #59 (the wave-av/wave-pen#388 pr-agent fan-out) without needing an admin override on a required check — which is why this is worth fixing rather than forcing past.

Closes #60


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Note

Low Risk
One-line CI smoke-check change; no spec, auth, or runtime behavior is modified. The next green run is the first real API-diff result since the gate has been stuck on install.

Overview
Fixes the required breaking-change job, which has been failing on every PR during install because oasdiff version is not a valid subcommand in v1.28.0 (exit 100). The install smoke check now uses oasdiff --version, so the job can actually compare specs instead of dying before the diff.

Reviewed by Cursor Bugbot for commit b0d0381. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by Sourcery

Restore the breaking-change CI gate by replacing the invalid oasdiff version subcommand with a supported version check.

Bug Fixes:

  • Fix the required breaking-change CI gate by using the supported oasdiff version-check syntax, allowing API specification comparisons to run again.

CI:

  • Restore the foundation-gate breaking-change check after its installation probe began failing on every pull request.

CodeAnt-AI Description

Restore the API breaking-change check in pull requests

What Changed

  • The CI workflow now verifies the pinned oasdiff installation using its supported version option.
  • The breaking-change check can proceed to compare API specifications instead of failing during setup.

Impact

✅ API compatibility checks run again
✅ Fewer false-red pull requests
✅ Breaking API changes are detected before merge

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Review in cubic

…te has been dead since Aug 19

Closes #60. `foundation-gate / breaking-change` is a REQUIRED check on main and
it has failed on EVERY PR since 2026-08-19 — not on the API diff, but on the
line that verifies the install:

  oasdiff_1.28.0_linux_amd64.tar.gz: OK
  Error: unknown command "version" for "oasdiff"
  ##[error]Process completed with exit code 100.

The download and checksum both pass; the job then exits 100 before diffing a
single spec.

WHY THAT IS WORSE THAN THE GATE BEING OFF. It is not finding a breaking change
and it is not clearing one either — it dies during setup while showing RED on
every PR, which reads as "this PR breaks the API". Nobody currently knows
whether the API surface drifted in the four-day window, because nothing has
compared two specs since Aug 19.

VERIFIED, NOT GUESSED. Downloaded the real v1.28.0 binary and ran the
candidates rather than assuming which one cobra exposes:

  oasdiff version    -> exit 100   (reproduces the CI failure exactly)
  oasdiff --version  -> exit 0     ("oasdiff version 1.28.0")
  oasdiff --help     -> exit 0

Exit 100 matching the CI code is what makes this a reproduction rather than a
plausible story. `--version` is kept over `--help` because it still proves the
binary RUNS and reports the expected version — an install check that only
proves a file exists is the weaker one.

A first attempt to probe this measured nothing and looked like an answer: the
darwin asset is named `darwin_all`, not `darwin_arm64`, so the download 404'd
and every candidate returned exit 127 uniformly. A broken probe returning the
same result for every input is not evidence.

PRE-EXISTING, and this PR does not depend on it. Run history, most recent first:

  failure  2026-08-23T22:39  ci/adopt-inline-pr-agent
  failure  2026-08-23T04:00  renovate/redocly-cli-2.x
  failure  2026-08-19T20:30  renovate/redocly-cli-2.x
  success  2026-08-19T20:29  main            <- last green
  failure  2026-08-19T17:07  feat/identity-resolve

Three unrelated branches including a Renovate bot PR.

THE FIRST GREEN RUN IS THE RECEIPT, not this diff — the gate has not compared
two specs in four days, so its next pass is also the first real statement about
the API surface since then.

Unblocks #59 (the wave-pen#388 pr-agent fan-out) without needing an admin
override on a required check.

Closes #60

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@codeant-ai

codeant-ai Bot commented Aug 24, 2026

Copy link
Copy Markdown

🤖 CodeAnt AI — Review Status

Status Commit Started (UTC) Finished (UTC)
✅ Reviewed your PR b0d0381 Aug 24, 2026 · 03:20 03:20

@sourcery-ai

sourcery-ai Bot commented Aug 24, 2026

Copy link
Copy Markdown
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Fixes the foundation-gate / breaking-change CI job so it actually runs oasdiff by changing the install verification step from a non-existent version subcommand to the supported --version flag and documenting the failure mode in comments.

Sequence diagram for the repaired breaking-change CI gate

sequenceDiagram
    participant CI as foundation-gate
    participant Binary as oasdiff v1.28.0
    participant Specs as OpenAPI specs

    CI->>Binary: --version
    Binary-->>CI: exit 0
    CI->>Binary: breaking --fail-on ERR
    Binary->>Specs: Compare base and PR specs
    Specs-->>Binary: API differences
    Binary-->>CI: Breaking-change result
Loading

File-Level Changes

Change Details Files
Repair the oasdiff install verification step in the foundation-gate workflow so the breaking-change gate can run again.
  • Keep the existing download, checksum verification, and extraction steps for oasdiff v1.28.0 intact.
  • Replace the failing oasdiff version invocation with oasdiff --version to use the correct cobra-exposed flag and ensure exit 0 on successful install.
  • Add contextual comments explaining the prior failure, its impact on the gate, and how the new command was verified against the real v1.28.0 binary.
.github/workflows/foundation-gate.yml

Assessment against linked issues

Issue Objective Addressed Explanation
#60 Replace the invalid oasdiff version installation check with a command supported by oasdiff v1.28.0.
#60 Allow the foundation-gate breaking-change workflow to proceed past installation and actually evaluate API differences.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@cursor

cursor Bot commented Aug 24, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_59a91f94-f4f3-4410-8287-c127b53155b0)

@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 4 minutes.

View limit details

Limit details: You’ve used the included review currently available. Your 91 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d8d70153-a2aa-4b55-a151-f9e933fdb6a5

📥 Commits

Reviewing files that changed from the base of the PR and between ab521e0 and b0d0381.

📒 Files selected for processing (1)
  • .github/workflows/foundation-gate.yml

Comment @coderabbitai help to get the list of available commands.

@codeant-ai codeant-ai Bot added the size:XS This PR changes 0-9 lines, ignoring generated files label Aug 24, 2026

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hey - I've reviewed your changes and they look great!

Sourcery assessment

Approved.


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@macroscopeapp

macroscopeapp Bot commented Aug 24, 2026

Copy link
Copy Markdown

Approvability

Verdict: Would Approve

Macroscope's review found this PR approvable — This is a one-line, self-contained CI fix that replaces an unsupported oasdiff command with the supported version flag. It restores the existing breaking-change check without changing production code, API schemas, deployment behavior, or security-sensitive logic.

Not approved because:

  • Credit balance exhausted. Approvability relies on correctness review in order to determine eligibility

Review your spending limits in Billing settings. You can add or adjust custom eligibility rules. Learn more.

@gitar-bot

gitar-bot Bot commented Aug 24, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your team has used its included automatic processing for this billing period (headroom scales with your seat count). You can still comment "Gitar review" to run one anytime, and automatic reviews resume on their own by September 1. Add seats for more headroom.
Learn more

Code Review ✅ Approved

Replaces the invalid oasdiff version subcommand with --version in the CI pipeline to restore the broken breaking-change gate. No issues found.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix foundation-gate by probing oasdiff with --version (no version subcommand)

🐞 Bug fix ⚙️ Configuration changes 🕐 Less than 10 minutes

Grey Divider

AI Description

• Fix the breaking-change required check failing during oasdiff install verification.
• Replace the invalid oasdiff version probe with oasdiff --version for v1.28.0.
• Document the failure mode and why the new probe is the correct install sanity check.
Diagram

graph TD
A["GitHub Actions: foundation-gate"] --> B["Install oasdiff"] --> C["Probe: oasdiff --version"] --> D["Diff gate: oasdiff breaking"] --> E["Pass/Fail check"]
D --> F["openapi.yaml (base vs PR)"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Remove the oasdiff probe entirely
  • ➕ Avoids future CLI-subcommand churn breaking CI setup
  • ➖ Loses early, explicit validation that the extracted binary actually runs (failures would surface later and be less diagnosable)
2. Use `oasdiff --help` as the probe
  • ➕ Very stable across CLI changes
  • ➕ Still proves the binary executes
  • ➖ Does not confirm the expected version is installed; weaker signal when investigating mismatched tool versions
3. Pin to an oasdiff version that supports `oasdiff version`
  • ➕ Preserves the existing probe shape
  • ➖ Constrains upgrades and couples CI correctness to a subcommand that appears not to exist in newer releases

Recommendation: Keep the current approach (oasdiff --version). It reproduces the observed CI failure mode (exit 100 from oasdiff version), restores the gate so it reaches the actual spec diff, and still validates both executability and the expected tool version.

Files changed (1) +9 / -1

Bug fix (1) +9 / -1
foundation-gate.ymlFix oasdiff install check to use '--version' instead of 'version' +9/-1

Fix oasdiff install check to use '--version' instead of 'version'

• Replaces the failing 'oasdiff version' invocation with 'oasdiff --version' during the tool installation verification step. Adds comments documenting the historical failure mode (exit 100) and why '--version' is the correct probe for v1.28.0.

.github/workflows/foundation-gate.yml

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can switch off images and animations for a plain-text comment

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@qodo-code-review

Copy link
Copy Markdown

Qodo Fixer

No findings are available for this PR yet. Findings appear here once Qodo has reviewed the PR.

@yakimoto
yakimoto merged commit 0ea3691 into main Aug 24, 2026
23 checks passed
@yakimoto
yakimoto deleted the fix/oasdiff-version-subcommand branch August 24, 2026 13:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS This PR changes 0-9 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

foundation-gate / breaking-change has failed on every PR since Aug 19 — oasdiff version is not a v1.28.0 subcommand

1 participant