ci: stop gating generated specs and SDKs at PR time - #487
Merged
Verdenroz merged 1 commit intoSep 12, 2026
Merged
Conversation
Contributor
soothfast gatefinance-query |
Verdenroz
added this pull request to stack #490
September 12, 2026 01:05
20 tasks
- spec check reconciles routes against handlers and is the step with teeth; spec gen --check compares generator output to itself - the bot lands openapi/asyncapi/mcp-tools/sdks after merge
Verdenroz
force-pushed
the
ci/bot-land-sdk-regeneration
branch
from
September 12, 2026 01:11
eff8668 to
4cbd2a7
Compare
Verdenroz
added a commit
that referenced
this pull request
Sep 12, 2026
## Description `CHANGELOG.md`'s Unreleased section currently lists `Regenerate soothfast outputs (#474)` and `Regenerate derived artifacts (#473)`. Both are soothfast-bot commits that exist only to land generated files, so two of the changelog's entries describe the changelog regenerating itself. The cause was upstream and is fixed in v0.3.2, where the generator reads the author alongside the subject and drops the commits its own bot wrote. This repo's entire share of the fix is a version pin. ## Type of Change - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that causes existing functionality to change) - [ ] Documentation update - [ ] Refactoring (no functional changes) - [ ] Performance improvement ## Changes - Bumped the pinned `Verdenroz/soothfast` action from `80b18d8831521646b65fec79c6df14d6f763c602` (v0.3.1) to `69e2e9250414bd1dcaa1f45529f1e3fe12c593dd` (v0.3.2) at all 13 pin sites: 8 in `soothfast.yml`, 2 in `deploy.yml`, 2 in `io-probe.yml`, 1 in `sdk-publish.yml`. - Covered both kinds of pin. Eleven are `uses: Verdenroz/soothfast@<sha>`; the other two are `ref:` on the `actions/checkout` steps in `deploy.yml` and `io-probe.yml` that sparse-check-out the action's `action/` directory for `land.sh`. The two kinds are kept in lockstep. A bump driven by a `uses:` grep alone misses the `ref:` pins and leaves those workflows running v0.3.1 scripts against a v0.3.2 CLI. - Left `soothfast.toml` alone. The generator's default bot author is `soothfast-bot[bot]`, which is what this repo's bot commits are already authored by, so a `[changelog] bot-author` key would only be one more value to drift. - Left `soothfast.lock`, `Cargo.toml` and `Cargo.lock` alone. 0.3.1 to 0.3.2 is caret-compatible; only the action SHAs are pinned by hand. ## Breaking Changes None. The composite action and its seven shell scripts are byte-identical between the two tags, so the bump changes the CLI and nothing else. No library, server, or MCP code is touched. ## Testing - [ ] Unit tests added/updated - [ ] Integration tests added/updated - [ ] Manual testing performed - [ ] All tests pass (`cargo test`) The change is YAML only, so no cargo gate applies and the boxes above stay unticked. What ran, on all four changed workflows: - `python3 -c "import yaml; yaml.safe_load(open(f))"` parses each of `soothfast.yml`, `deploy.yml`, `sdk-publish.yml`, `io-probe.yml`. - `zizmor --no-online-audits` over the four reports no findings (27 suppressed). - `prek run --files` over the four passes. - `grep -rn '80b18d8831521646b65fec79c6df14d6f763c602' .github/` returns nothing, and `grep -ro '69e2e9250414bd1dcaa1f45529f1e3fe12c593dd' .github/ | wc -l` returns 13. - `actionlint` did not run. It is not installed on the machine this was written on. The fix itself cannot be verified before merge, since it only shows up when the bot next regenerates the changelog on `master`. Two things to check then. The Unreleased section should no longer carry `Regenerate soothfast outputs` or `Regenerate derived artifacts` under `### 🔧 Internal`. The `### 📦 Dependencies` section must still list its dependabot entries, `Bump debian from ...` and `Bump rust from ...`. The filter compares the author string exactly, so `dependabot[bot]` should survive it; dependabot entries disappearing would mean the filter is over-matching, which is a worse bug than the one this fixes and is grounds to revert. ## Documentation - [ ] Code documentation updated (doc comments) - [ ] README updated (if needed) - [ ] CHANGELOG.md updated (if releasing) - [ ] Examples updated (if API changed) `CHANGELOG.md` is deliberately not touched here. The Unreleased section is generated, and the bot rewrites it after merge. ## Checklist - [ ] Code compiles without warnings (`cargo check`) - [ ] Tests pass (`cargo test`) - [ ] Code formatted (`cargo fmt`) - [ ] Clippy checks pass (`cargo clippy`) - [ ] Documentation builds (`cargo doc --no-deps`) - [x] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/) ## Related Issues Closes #480 Third in a stack. Base is `ci/bot-land-sdk-regeneration`, so this stacks on #487, which stacks on #486, and it merges last. #486 and #487 both rewrite `soothfast.yml` and `deploy.yml`, which this also touches.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The generator behind
openapi.yaml,asyncapi.yaml,mcp-tools.jsonand the Python SDK reads the hand-authored manifests inserver/spec/routes.rsandfinance-query-mcp/spec/routes.rs, not the axum router or the#[tool]impls. A route missing from its manifest is missing from both sides of aspec gen --checkcomparison, so the check passes green on exactly the mistake it looks like it would catch.spec check, which reconciles the manifests against the actual handlers, is the step with teeth there and it stays. Dropping the three--checksteps lets the bot land the regenerated files after merge and makesmake sdkconvenience rather than a required step before opening a PR.The workflow half of #482 is here. The documentation half cannot be.
CLAUDE.mdand.claude/**are gitignored (.gitignore:9and.gitignore:22) and exist only as untracked files in each clone, so no commit can reach them. They still tell the reader that CI gates the generated specs withspec gen --checkandsdk gen --check, which stops being true when this merges. The issue stays open until that drift is handled.Type of Change
Changes
spec gen --checkandsdk gen --checksteps from theSpec & SDK (server)job.spec gen --checkstep from theSpec (MCP)job.spec checkin both jobs. It reconciles the route and tool manifests against the handlers and is unaffected by this change.spec gateand its--from-committedflag, with a comment recording why the flag is there and what a stale base spec looks like.Breaking Changes
None. No library, server, or MCP code changes. The generated artifacts are still generated and still must not be hand-edited; only the point at which they get regenerated moves from before the PR to after the merge.
Testing
cargo test)The change is YAML only, so no cargo gate applies and the boxes above stay unticked. What ran:
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/soothfast.yml'))"parses.zizmor --no-online-audits .github/workflows/soothfast.ymlreports no findings (10 suppressed).prek run --files .github/workflows/soothfast.ymlpasses.actionlintdid not run. It is not installed on the machine this was written on.The real verification is post-merge and cannot be performed here. The signal to watch: the first PR that changes a route or a tool without running
make sdkshould pass CI, and the regeneratedopenapi.yaml,asyncapi.yaml,mcp-tools.jsonandsdks/**should then show up in the bot'sbot/derived-artifactsPR.Documentation
The documentation that needs this change is untracked. See the Description.
Checklist
cargo check)cargo test)cargo fmt)cargo clippy)cargo doc --no-deps)Related Issues
Refs #482
Stacks on #486. Base is
ci/collapse-bot-regenerationand this must merge after it. #486 already routes the generated specs and SDKs through the bot's singleland.shcall, which is what makes removing these gates safe.