feat: read gate and changelog features from soothfast.toml - #195
Merged
Merged
Conversation
Contributor
soothfast gate |
Verdenroz
added a commit
that referenced
this pull request
Sep 12, 2026
## What changed - Froze the `## Unreleased` heading in `CHANGELOG.md` to `## 0.3.2 - 2026-09-11` and wrote its Overview and Upgrade notes. - Bumped `[workspace.package] version` and the eight `[workspace.dependencies]` requirements from `0.3.1` to `0.3.2`. - Regenerated `Cargo.lock`. Only version lines moved; no dependency was added, removed, or changed. - Bumped the version strings in `README.md` and `soothfast.toml`. ## Why 0.3.1 gave the action its `features` and regeneration inputs, so CI could be told once what a repository needs. A developer running the CLI by hand still repeated the same flags on every invocation, and two defects surfaced once adopters started bumping across versions. This release carries all three fixes: `soothfast.toml` holds the feature and package defaults, the gate stops letting a reference it could not pin decide a verdict quietly, and the changelog drops the bot's own regeneration commits instead of listing the paperwork as changes. Everything here is additive and opt-in. A repository on `soothfast = "0.3"` picks it up without touching its manifest. ## How was this tested - `cargo fmt --all -- --check`: clean. - `cargo clippy --workspace --all-targets -- -D warnings`: clean. - `cargo test --workspace --no-fail-fast`: 817 passed, 4 ignored, 1 failed. The failure is `invoke::tests::a_plain_directory_in_the_repo_is_not_a_worktree_root`, which asserts the workspace root is not a linked git worktree. It fails from any linked-worktree checkout and passes from a plain one, which is what CI uses. Confirmed by running the same built test binary from both. - `cargo check --workspace` after the bump: clean, all ten crates resolve at `0.3.2`. - Read the frozen section against `git log v0.3.1..master`: it lists #195, #196 and #199, and none of the four soothfast-bot regeneration commits. Those exclusions are the filter from #199 running against real history. - `make gate BASE=master` was not run. This commit changes no measured code. ## Checklist - [ ] `make check` passes (fmt, clippy `-D warnings`, `cargo test --workspace`) - [ ] `make gate BASE=master` passes, or any intentional cost change is explained above - [ ] Tests added/updated for new behavior (not required for docs/CI-only changes) - [ ] Public API items have `///` doc comments - [x] No new dependency, or its justification is included above (see [Dependency Policy](../CONTRIBUTING.md#dependency-policy)) - [x] Docs (`README.md`, `docs/`, `soothfast:bind`/`soothfast:claim` markers) updated if behavior changed
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.
What changed
featuresto the[gate]table ofsoothfast.toml, applied togate,measureandspec gen.[changelog]table carryingfeaturesandpackages, applied toreport changelog.featuresfalls back to[gate] featureswhen absent.gate_config::applyfromspec gen, which read no repository config at all before.changelog_configto return aChangelogConfigholding the icons alongside the two new keys, instead ofIconsalone.resolve_featuresinreport.rs, so the rule is a pure function with its own tests.docs/gating.mdanddocs/reports.md.Fixes #193
Why
A bench target that declares
required-features, or a crate whose public API is mostly feature-gated, needs--featureson everygate,measure,spec genandreport changelogrun. The action grewfeaturesandchangelog-featuresinputs in v0.3.1, so CI can be told once. A developer running the CLI by hand still had to remember the same flags on every invocation. In the changelog case a wrong set fails quietly: feature-gated public items drop out of the API surface diff and nothing says they did. The file now carries the defaults, and an explicit--featuresor-pon the command line still wins over it.How was this tested
cargo test -p cargo-soothfast: 213 passed, 1 failed. The failure isinvoke::tests::a_plain_directory_in_the_repo_is_not_a_worktree_root, which asserts the workspace root is not a git worktree root. This branch does not touchinvoke.rs; the test fails because the run happened from inside a linked worktree. Skipping that one test: 213 passed, 0 failed.cargo fmt --all -- --check: clean.cargo clippy --workspace --all-targets -- -D warnings: clean.[changelog], and the[changelog]and[changelog.icons]tables not bleeding into each other.resolve_features, one per precedence step: an explicit--featuresbeating both tables,[changelog] featuresbeating[gate] features, and[gate] featuresfilling in when neither of the others does.soothfast.toml. With[changelog] packages = ["soothfast-report"]added,cargo soothfast report changelogwith no-preached the baseline step instead of erroring. Without it thereport changelog needs -p PKGerror is unchanged. An unknown key under[changelog]errors with the file and line.make checkandmake gate BASE=masterwere not run. No measured function insoothfast-registry,soothfast-measureorsoothfast-docsis touched.Checklist
make checkpasses (fmt, clippy-D warnings,cargo test --workspace)make gate BASE=masterpasses, or any intentional cost change is explained above///doc commentsREADME.md,docs/,soothfast:bind/soothfast:claimmarkers) updated if behavior changed