Repository navigation
docs(readme): stop restating crate versions in the README - #955
Merged
Merged
Conversation
release-plz bumps crate manifests but never the README, so every major bump of a crates-table row's crate (or a pre-1.0 minor bump of the umbrella) left the release PR red on check-readme-crates: the guard held each row's `vN` token and the pinned `gamut = "X.Y"` Usage snippets to the manifests, and nothing on the release branch moves them. Rather than rewrite those claims on every release, stop writing them. The crates table states disposition (stable, placeholder, an issue) and no version; the Usage snippets become `cargo add gamut -F ...`, which resolves the newest release itself and so cannot go stale (#559). The guard now refuses a `vN` token in the section and a pinned `gamut = ...` line in either README, and requires the `cargo add gamut` line, instead of comparing either against cargo metadata. Closes #954
justin13888
force-pushed
the
ci/release-pr-refresh-readme-versions
branch
from
October 23, 2026 20:41
ca8d879 to
e12910a
Compare
This was referenced Oct 23, 2026
… cannot refute a match grep -q exits at its first match; under set -o pipefail the writer then takes SIGPIPE and the pipeline fails, so the guard intermittently reported a real crate as not a workspace crate (measured 1 in 2000 calls on a loaded host; the fixture battery hit it on 'a cell naming a real crate'). Both grep -q pipelines now read a here-string.
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.
Release PR #820 fails
Format & Metadata:check-readme-cratesrefutes the crates-table tokens forgamut-isobmff(v3 → 4.0.0),gamut-avif(v2 → 3.0.0) andgamut-exif(v2 → 3.0.0). The guard held each row'svNtoken and the pinnedgamut = "X.Y"Usage snippets to the manifests, but release-plz bumps only the manifests. So every major bump, and every pre-1.0 minor bump of the umbrella, turns the release PR red.This PR originally fixed that by rewriting the claims on the release branch with a script that parsed the guard's output. That approach kept the duplication and added a second parser. This version removes the duplication instead: the README states no version, so a release has nothing to update.
Change
README.md): Status cells state disposition (stable,placeholder, an issue) and no version. Planned releases are written1.0("1.0 under Releasegamut-corev1 #177"). The section intro and the Releases note no longer refer to versions in the table.README.md,crates/gamut/README.md):cargo add gamut -F …replaces the pinned[dependencies]block. Cargo resolves the newest release and writes the caret requirement, so the snippet cannot go stale. That still covers README: the Usage snippet pinsgamut = "0.1", three months behind the current release (supersedes #523) #559.check-readme-crates/run.sh:vN/vN.Mtoken anywhere in## Crates, in rows and prose alike, instead of comparing it tocargo metadata.gamut = …line in any code block and requires acargo add gamutline in one.fixtures.sh: the version and snippet fixtures are replaced to match these rules: tokens in a row or in prose, pins in inline-table, bare-string and nested-fence form, a deleted or unfenced snippet,cargo add gamut-pngnot counting, and the umbrella README's own copy.release.ymlis unchanged from master.Verification
tooling/check-readme-crates/run.shpasses on the tree.fixtures.shpasses 81/81 under bothawkandgawk --posix.gamut-isobmffat 4.0.0 andgamutat 0.5.0, the guard still passes with no README edit.shellcheck -S warningis clean on both scripts, andconvco checkis clean.Once this merges, the release-pr job regenerates #820 and the check passes with no extra commit on the release branch.
Closes #954
Decisions taken
run.sh).grep -qexits at its first match. Underset -o pipefailthe writer upstream of it then takes SIGPIPE, the pipeline fails, and the guard intermittently said a real crate was not a workspace crate. That was measured at 1 in 2000 calls on a loaded host, and the fixture battery hit it on "a cell naming a real crate". Bothgrep -qpipelines inrun.shnow read a here-string instead of a pipe. The fix belongs in this PR because it made this PR's own fixture battery flaky.fixtures.sh). The battery's fragment assertion (printf '%s\n' "$out" | grep -qF) ran underset -uo pipefailand had the same race. It could fail a fixture whose output did contain the fragment. It now reads<<<"$out", the same form asrun.sh. I searched both scripts for any other| grep -qand found none.crates/gamut/src/lib.rsstill pinnedgamut = { version = "0.1", ... }, but the umbrella is at 0.4. It now showscargo add gamut -F avif,jxl, the same form as both READMEs. I searched everycrates/*/srcmodule doc for a pinnedgamut* =dependency line and found only this one. This PR does not extendcheck-readme-cratesto readlib.rs. The guard's contract is the two READMEs, and the example now states no version, so it has nothing that can go stale.check-spec-clausesfailure (ci: spec-clauses mise tasks use set -o pipefail under sh, which is dash on ubuntu-latest #962).Format & Metadataalso failed on master: the spec-clauses mise tasks ran under a non-bash shell. ci: run the spec-clauses mise tasks under bash #963 fixed that and has merged. 7127370 mergesorigin/masterinto this branch so the check runs against the fix. The merge commit has a Conventional Commit subject because thecommit-msghook rejects git's default merge message.mise.toml: only thecheck-readme-cratestaskdescriptionchanges, so it matches the guard's new rule (Usage adds the umbrella withcargo addand pins no version).crates/gamut/src/lib.rs: see 9726cd6 above.tooling/check-readme-crates/run.sh,fixtures.sh(81 passed, 0 failed),shellcheck -S warningon both scripts,cargo clippy -p gamut -- -D warnings,RUSTDOCFLAGS="-D warnings" cargo doc -p gamut --no-deps,mise run fmt-check, and the pre-commit hooks (fmt, clippy, convco). In this checkout,fmt-checkand the fmt hook only ran with__CARGO_TEST_ROOTset to the checkout. The checkout is nested under another clone of the repository, and cargo walked up from the excludedtooling/lcms2-oracleinto that clone's workspace. CI does not have this nesting. CI was disabled for this run, so CI is still the final gate.