Repository navigation
feat(xtask): port the pins job to cargo xtask check-pins - #1828
Open
nathan-weinberg wants to merge 2 commits into
Open
nathan-weinberg wants to merge 2 commits into
nathan-weinberg wants to merge 2 commits into
Conversation
First of three changes automating pinned-client bumps. This one cuts the number of sites a bump must touch and closes the existing drift, with no new tooling yet. - Claude Code: move the CPU lane from 2.1.267 to the manifest's 2.1.278, which the GPU lane already runs, and make the CPU job assert the installed version. Drop the duplicate constant in claude_code_vllm.rs in favor of CLAUDE_CODE_PINNED_VERSION, add a major_series tripwire, and add offline tests tying the manifest, constant, URL, and CI env. - Codex: add codex-cli/pin.toml and CODEX_PINNED_VERSION. Each Codex CI job now derives every path, URL, and version check from one job-level CODEX_VERSION, and the cache key hashes the checksum fixture instead of embedding it. The WebSocket replay fixture is tied to the pinned version, so a bump must recapture it. codex_pin.rs enforces it all. - OpenCode 1.x: add the checksum fixture test 2.x and pi already have. - vllm/Containerfile: pin the base image by tag@digest, matching every other vLLM reference. - Reword compaction-reserve comments that claimed 2.1.267 was pinned to say where the value was measured. Signed-off-by: Nathan Weinberg <nweinber@redhat.com>
…y#1798) Second of three changes automating pinned-client bumps. The GPU workflow's `pins` job validated the manifests in ~270 lines of inline Python that only ran on schedule, dispatch, or the vllm-full-suite label. Port it to a Rust xtask so it runs locally, in `make lint` on every PR, and later inside bump-pins. - New light `pins` xtask feature (`dev` includes it) depends only on `toml`, so the `pins` job builds check-pins without compiling the proxy. - Every Python invariant is ported: Claude context and compaction arithmetic, OpenCode major/lane tripwires, provider/backend window agreement, the 2.x and pi shared-backend rules, models.json agreement, and explicit example-config routes. - New: a site table records every file location that embeds a client version or the vLLM image (manifests, harness constants, workflow env, dev-endpoint image, Containerfile) with an exact expected count. Checksum fixtures must exist, name the downloaded artifact, and have no stale sibling. Both [vllm] blocks must pin one tag@sha256 image. - `--github-output` exports the same keys the job emitted; a unit test holds them to the job's `outputs:` map, and the values were diffed identical against the Python script. - Unit tests mutate one real file in memory per invariant. Signed-off-by: Nathan Weinberg <nweinber@redhat.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
8 tasks
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.
Summary
Second of three stacked PRs. Stacked on #1827. Review only the last commit,
feat(xtask): port the pins job to cargo xtask check-pins; the earlier commit belongs to #1827.The GPU workflow's
pinsjob validated the pin manifests in about 270 lines of inline Python, which only ran on schedule, dispatch, or thevllm-full-suitelabel. This ports it tocargo xtask check-pins, so it runs locally, inmake linton every PR, and (in the next PR) insidebump-pins.pinsxtask feature (devincludes it). It depends only ontoml, so thepinsjob buildscheck-pinswithout compiling the proxy:cargo run -p xtask --no-default-features --features pins -- check-pins --github-output "$GITHUB_OUTPUT".models.jsonagreement[vllm]blocks must pin the sametag@sha256image.served_model_name.--github-outputemits the same keys the job did, and a unit test holds them to the job'soutputs:map.Related issue
Part of #1798.
Validation
Ran the old inline Python and
check-pins --github-outputon the same tree. The 20key=valueoutputs are byte-identical.cargo test -p xtask --no-default-features --features pins pins::: 19 tests. Each mutates one real file in memory and asserts the matching invariant reports it.cargo clippy -p xtask --all-targets -- -D warnings, with--no-default-features --features pinsand with--features openai-all,store-all.cargo xtask check-pins,lint-deps,lint-separators,make fmt.Not run locally:
cargo macheteandcargo deny(not installed). The newtomldependency is MIT/Apache-2.0.Unit tests
Integration or functional tests
make lintChecklist
Signed-off-bytrailer.Breaking changes
None. The
pinsjob keeps its outputs; it now sets up Rust, and its timeout goes from 10 to 15 minutes.🤖 Generated with Claude Code