feat: feature, package, and custom regeneration inputs - #187
Merged
Merged
Conversation
- A bench target with required-features could not be gated at all, and a changelog built without the full feature set silently drops every gated public item from its API diff. - Crates without a bench target still ship an API, so the changelog can diff a wider package list than the gate measures. - regen-run lands any derived file through the same bot pull request.
Verdenroz
force-pushed
the
feat/action-features-passthrough
branch
from
September 6, 2026 13:51
93d4c24 to
822e155
Compare
Contributor
soothfast gate |
Verdenroz
added a commit
that referenced
this pull request
Sep 6, 2026
## What changed Cuts v0.3.1. The `Unreleased` heading becomes `## 0.3.1 - 2026-09-06` with Overview and Upgrade notes written, the workspace version and the eight intra-workspace requirements move from 0.3.0 to 0.3.1, the lockfile follows, and the README dependency snippet and `soothfast.toml` site version match. Two wording fixes ride along: the 0.3.0 Overview no longer compares soothfast to another product, and a `docs/spec.md` example uses a placeholder crate name instead of a real project's. ## Why The one-step action in 0.3.0 could not run a bench target that declares `required-features`, could not diff the changelog over a crate without a bench, and had no way to land derived files outside its built-in regeneration. #187 adds inputs for each and #188 hardens the broker's tag rule against annotated tag objects. Both are action and broker changes, but the release workflow requires the tag to match the workspace version, so they ship as a patch release of the crates too. The frozen section was read against master d5d84f4 after the last changelog regeneration and lists exactly the two merges since v0.3.0. ## How was this tested - `make check` on this tree (fmt, clippy `-D warnings`, `cargo test --workspace --all-features`): exit 0, 25 test binaries green. - `cargo metadata --offline` refreshed `Cargo.lock`; the diff is ten version lines and nothing else. - The tag push runs `release.yml` end to end, including the tag-object peel now live in the broker. ## Checklist - [x] `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
The action ran the CLI with no
--features, so a bench target that declaresrequired-featurescould not be gated at all, and a changelog built without a crate's full feature set silently drops every feature-gated public item from its API diff. A crate with no bench target still ships an API the changelog should diff, and derived files outside the built-in regeneration (ansdk gen, a rendered report) had no way to land through the bot. This adds inputs for each.features(passed to the gate, the baseline measurement, and spec generation) andchangelog-features(passed toreport changelog, defaulting tofeatures). They can differ on purpose: gating under a heavy feature set can be too slow while the changelog's API surface needs all of it.changelog-packages(defaulting topackages) so the changelog can diff crates the gate does not measure.regen-runandregen-paths: a shell snippet run on the default branch after the built-in regeneration, with$SOOTHFASTnaming the installed CLI, whose changes under the given pathspecs land in the same bot pull request.regen-runwithoutregen-pathsfails the step rather than discarding what it changed.docs/ci.md.No CLI change: every flag the scripts now pass exists in cargo-soothfast 0.3.0.
Why
The one-step promise only holds if the step can run a repository's benches as they are declared.
required-featureson a bench target and crates that ship an API without a bench are ordinary Cargo layouts, andsdk genis this project's own feature. Each was a workaround an adopter would otherwise need, which the mechanism-design rule in CLAUDE.md says to avoid.How was this tested
shellcheck -xon all eight scripts: clean.zizmor1.29.0 onaction.yml: no findings.--featuresarguments as arrays, verified underset -u.make checkandmake gatenot run; no Rust changed.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