[no-ci] Improve the Pixi lockfile freshness check - #2942
Merged
Merged
Conversation
This comment has been minimized.
This comment has been minimized.
…ockfile drift that already exists on their base commit. Closes NVIDIA#2926 Description For stale lockfiles in pull requests, the workflow now: - runs the same pinned Pixi version against the PR candidate and base SHA; - records the original and repaired lockfile blob hashes for both trees; - classifies the failure as PR-induced, base maintenance, or mixed/ambiguous; - provides category-specific remediation in annotations and the job summary; - links to the open maintenance refresh PR when available, otherwise to the refresh workflow. The aggregate check remains failing for every stale classification. Push and manual runs retain their existing strict behavior, while timeouts and other operational failures remain distinct from staleness. A small Python helper contains the classification logic, with focused tests covering each outcome. Testing - `83 passed, 36 subtests passed` for `ci/tools/tests` - Ruff passes - actionlint v1.7.12 passes - `git diff --check` passes
jpascucci-nv
force-pushed
the
issue2926
branch
from
September 23, 2026 17:47
d942fd4 to
fc6fc8a
Compare
rwgk
approved these changes
Sep 23, 2026
rwgk
left a comment
Contributor
There was a problem hiding this comment.
Approving based on a Codex gpt-6-sol (medium) review. Before merging, could you please add this small hardening patch?
diff --git a/.github/workflows/ci-pixi-lockfile-freshness-check.yml b/.github/workflows/ci-pixi-lockfile-freshness-check.yml
index c6e4269200c..00d14987999 100644
--- a/.github/workflows/ci-pixi-lockfile-freshness-check.yml
+++ b/.github/workflows/ci-pixi-lockfile-freshness-check.yml
@@ -82,9 +82,8 @@ jobs:
gh pr list \
--state open \
--head ci/pixi-lock-refresh/all \
- --limit 1 \
- --json url \
- --jq '.[0].url // ""'
+ --json url,isCrossRepository \
+ --jq '[.[] | select(.isCrossRepository == false)][0].url // ""'
)" || lookup_status=$?
if ((lookup_status != 0)); then
echo "::warning::Could not look up the open Pixi lockfile refresh PR; using the refresh workflow link instead."--head matches the branch name without checking which repository owns it. This selects only a refresh PR from this repository; if none matches, the existing workflow-link fallback applies. Removing --limit 1 also ensures a fork PR with the same branch name cannot hide the intended PR.
Contributor
|
I forgot to add: I think there is no reason to run the full CI again: I'd add |
Contributor
|
Thanks @jpascucci-nv! |
This comment has been minimized.
This comment has been minimized.
1 similar comment
Contributor
|
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.
so PRs are not blamed for lockfile drift that already exists on their base commit.
Closes #2926
Description
For stale lockfiles in pull requests, the workflow now:
The aggregate check remains failing for every stale classification. Push and manual runs retain their existing strict behavior, while timeouts and other operational failures remain distinct from staleness.
A small Python helper contains the classification logic, with focused tests covering each outcome.
Testing
83 passed, 36 subtests passedforci/tools/testsgit diff --checkpassesChecklist