Skip to content

Add sibling PR resolution for native uv jobs - #128

Open
zardus wants to merge 1 commit into
masterfrom
feature/sibling-refs
Open

Add sibling PR resolution for native uv jobs#128
zardus wants to merge 1 commit into
masterfrom
feature/sibling-refs

Conversation

@zardus

@zardus zardus commented Aug 30, 2026

Copy link
Copy Markdown
Member

THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS

Problem

Native macOS and Windows jobs run uv against the checked-out repository without selecting sibling pull requests named in the pull request body. In this CLE run, the Linux ecosystem build passed while macOS failed five tests because it installed the default archinfo instead of the linked change. Windows was cancelled after the matrix failure.

Root cause

The Linux CI image runs resolve_refs.py, but native jobs bypass that image. The earlier binaries-ref action closed the same gap for test fixtures; Python package sources still have no reusable native-job equivalent.

Fix

Add a composite action that reads the pull request body, matches open sibling pull requests to simple GitHub entries already declared in [tool.uv.sources], and gives uv paired no-sources-package and upgrade-package settings for refs/pull/<number>/head.

Closed, unavailable, undeclared, conditional, nested, authenticated, or otherwise unsupported sources keep their normal project behavior. The action does not change binaries-ref.

Consumer repositories must call this action before their native uv lock or uv sync step. This pull request supplies the shared ci-settings support; adoption remains a separate workflow change in each consumer repository, following the existing binaries-ref rollout.

Testing

  • 16 resolver unit tests pass on Python 3.12 and 3.14.
  • Real selected-ref and normal-source integrations pass from an existing master lock, including runtime import checks and preservation of unrelated project uv settings.
  • All seven hosted jobs pass: the resolver units plus selected and normal action scenarios on Ubuntu 24.04, macOS 15, and Windows 2022.
  • Targeted actionlint, Python compilation, and staged diff checks pass.
  • The full workspace gate reached CLE with 249 tests passing and 9 skipped, then failed five existing tests because merged CLE tests require fixtures from still-open binaries pull request 206. The seven affected tests pass when that declared fixture ref is supplied.

Validation

Validation record and observed selected/fallback behavior.

session: sharpen

@zardus

zardus commented Aug 30, 2026

Copy link
Copy Markdown
Member Author

THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS

Resolver behavior for head 51b0fb54a20f3f65c685770cc862b7d261bbe62f, before and after this change.

Before — a native job without sibling-ref resolution keeps the master source:

Normal project source
  • Exported no override configuration.
  • Preserved the seeded master lock byte-for-byte.
  • Installed the master version and preserved the project's unrelated default-groups = [] setting.

After — the action selects the open sibling pull request:

With sibling-ref resolution
  • Started from the same master-pinned lock.
  • Selected refs/pull/7/head from the pull request body.
  • Replaced the master commit in uv.lock with the pull commit.
  • Installed the pull version and preserved the project's unrelated default-groups = [] setting.

@zardus

zardus commented Aug 30, 2026

Copy link
Copy Markdown
Member Author

THIS MESSAGE WAS GENERATED BY AN AUTOMATED PROCESS

Validation record for head 51b0fb54a20f3f65c685770cc862b7d261bbe62f against baseline 5088db6ec75c66fef8e0b4c3a71eab1f1577a3f1.

  • python3 -m unittest discover actions/sibling-refs/tests -v: 16 tests passed on Python 3.12 and Python 3.14.
  • python3 -m py_compile actions/sibling-refs/resolve.py actions/sibling-refs/tests/integration.py actions/sibling-refs/tests/test_resolve.py: passed.
  • nix shell nixpkgs#actionlint --command actionlint .github/workflows/test-actions.yml: passed.
  • git diff --cached --check and git diff --check: passed before commit.
  • Selected-ref integration: started from a master-pinned uv.lock, selected refs/pull/7/head, replaced the master commit with the pull commit, imported the pull version, and preserved unrelated project uv settings.
  • Normal-source integration: exported no override, retained the seeded master lock byte-for-byte, imported the master version, and preserved unrelated project uv settings.
  • Hosted Test composite actions: all seven jobs passed, including selected and normal scenarios on Ubuntu 24.04, macOS 15, and Windows 2022.
  • Full workspace gate: reached CLE with 249 passed and 9 skipped, then failed five existing MIPS N32 tests because merged CLE tests reference fixtures from still-open binaries pull request 206. An isolated run with that declared fixture ref passed all seven affected tests. This ci-settings change does not touch CLE or binaries.
  • Machine-load monitor: no OOM kills; peak observed usage remained below 3 GiB of the 80 GiB cgroup limit.

Observed selected and fallback behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant