Repository navigation
Move version drift check into a new binary - #18
Merged
Merged
Conversation
A bare `cargo build` at the root builds every workspace member, genfix included, and a second tool binary is about to join it. Someone who wants hansei should get hansei and nothing else. Set `default-members` to hansei alone. That default applies to every cargo command run without a package selection, `cargo nextest run`, `cargo clippy` and `cargo mutants` among them, and a run that covers hansei alone still passes. So every whole-tree invocation in CI, buildomat and the docs now says `--workspace`. CI's builds need it for the fixture example too: hansei-runtime is not a default member, so a bare build no longer compiles build_fixtures. With `--workspace`, nextest lists the same 1,902 tests a bare run listed before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`hansei tokio-info reviewed` holds a project's Cargo.lock and toolchain file to the reviews, and the code that does it lives in hansei's bundle_cmd.rs. hansei has no library target, so nothing else can call it, and the next users, a test over the fixtures' own lockfiles and a drift report run in CI, would each need a copy. Move it, with its tests, to exegesis's detect::reviewed::project, beside the reviews it reads. The command's output is unchanged. exegesis now depends on toml; hansei no longer does, and uses semver only in a test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nothing checks that the fixtures build releases the reviews cover. test-programs' version requirements are minimums, so a `cargo update` there moves a crate as far as its requirement admits: today it would take tokio-util to 0.7.20, past the newest reviewed 0.7.19. Fixtures built from that exercise a release no detector was checked against, and every suite reading them still passes. tokio's and rustc's matrix versions are already held to their reviews; no other crate's is. Add a test running the review check over test-programs/Cargo.lock and every per-version lockfile under locks/. It builds nothing, so it runs in every test run on every platform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The lockfile and toolchain checks return each finding as the line `hansei tokio-info reviewed` prints, so a caller wanting part of one, the crate or the release, has to cut the line apart, as review-drift.sh does today at the first colon. Return a Finding naming the subject, what was found and each range with the reviews covering it, which prints as the same line. Expose the steps beneath the text-taking functions too, reading a lockfile's packages and a toolchain file's channel and checking each, so a caller parsing a lockfile once can both check it and read its versions. The command's output is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
review-drift.sh holds omicron to the reviews through `hansei tokio-info reviewed` and does the rest in inline Python: whether omicron's toolchain is one the matrix builds, and whether its tokio or rustc minor has passed the matrix's primary pin. Nothing compares omicron with what the fixtures lock. omicron runs reqwest 0.13.5, rustls 0.23.45 and tracing 0.1.44, all reviewed, while the fixtures build 0.13.2, 0.23.41 and 0.1.40, and no finding says so. Add review-drift, a repository tool making all of those findings and a fourth for a reviewed crate a project locks newer than the fixtures do. It prints a line per finding, or one JSON document with --json, and exits 1 with findings but 2 when the check itself fails, which the script needs to tell apart. It reads test-programs/matrix.toml through testrun, which is no longer only a dev-dependency, and it is not a default member: outside a checkout it means nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The weekly drift job builds all of hansei to run `tokio-info reviewed`, finds the primary-pin lags with three inline Python programs over omicron's toolchain file and the fixture matrix, and cuts each unreviewed release's title out of its line at the first colon. Exit status 1 means findings and failure alike. Build and run review-drift instead and read its JSON. Every title the job opened before is made the same way, so nothing is reported twice, and the fixture lags review-drift adds get issues of their own. A lag issue, primary or fixture, now closes when a run no longer finds it rather than when a minor parsed back out of its title is reached; unreviewed and unmatrixed issues still never close themselves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fixtures pin reqwest 0.13.2, rustls 0.23.41 and tracing 0.1.40, while omicron runs 0.13.5, 0.23.45 and 0.1.44, so no fixture exercises the releases its targets carry. All three are inside their reviews. Raise the three pins and move every fixture lockfile to them. reqwest 0.13.5 brings base64 0.23 with it, and nothing else moves. The assertions naming the fixtures' releases follow, as do the goldens that print them. Some goldens move further. Three http-conns tasks share a spawn site and future type, so the canonical renaming orders them by their poll symbols, whose crate hashes the new reqwest changes: task ids 2001-2003 trade places on illumos and linux-floor. reqwest's DNS resolver gains an async block, which binds, and the lists ordered by type id reorder around it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Remove the python from the CI job and create a small new binary for this logic.