Repository navigation
Conversation
Lint ran the newest ruff (uvx ruff) and the documentation build installed the newest releases into the system Python, so a new upstream release could change what every pull request was checked against. Lint now runs the ruff uv.lock pins, the same way Versioning already runs towncrier, and both docs jobs install through the test-environment action the tests use. Part of #2128. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review nits on #2394: pipefail so a failing uv export reports its own error, and an explicit check for exactly one ruff line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hand-off to the UK hub (session
🤖 Generated with Claude Code |
vahid-ahmadi
left a comment
There was a problem hiding this comment.
Looks right, fine to approve. Merging main first should make Release test pass.
@MaxGhenis, Lint now uses the ruff that uv.lock pins. Both documentation builds now use the same locked environment as the tests.
- should: merge main before landing. Release test / Python 3/4 failed at
9d55a5c8eontest_award_never_rises_with_a_claimants_statutory_pay. That is the #2397 wheel-only failure, which #2399 has since fixed on main. This PR only changes workflows. The merge with main is clean. - nit: the ruff lookup block is now copied three times (
code_changes.yaml:87,pr_code_changes.yaml:117,versioning.yaml:276). A small composite action, liketest-environment, would keep the three in step. Fine to leave for later. - note, no change needed: the docs jobs no longer install
policyengine, and the lock doesn't include it. Nothing underdocs/imports it, and notebooks don't run (execute_notebooks: offindocs/book/_config.yml). Both docs jobs passed at this head.
The set -euo pipefail with { grep ... || true; } and the exactly-one check fail with a clear message when the lock has no ruff or several, and not otherwise. uv pip install --system . in pr_code_changes.yaml:98 is still unlocked, but that is the smoke-import job, which is meant to test what a user installs.
What I checked
- The lookup and the three ruff calls run locally at
9d55a5c8e: they resolveruff==0.17.0. Format check and bothruff checkruns pass. uv export --frozen --extra devincludesjupyter-book==2.1.7and nopolicyengine. I greppeddocs/for imports ofpolicyengine.- On a local merge with main, no workflow still calls
uvx ruffwithout--from. - CI at
9d55a5c8e: Lint, Release lint, Documentation build and Test documentation builds passed. The only failure was Release test 3/4 (point 1). I did not run the docs build locally. - None of my open PRs touch these workflows.
🤖 Generated with Claude Code
vahid-ahmadi
left a comment
There was a problem hiding this comment.
Approving, per my review comment above.
|
Infra backlog hand-off (23 October 2026).
|
Part of #2128.
What this does
Since 38c63df (10/11), the tests install from
uv.lockthrough.github/actions/test-environment. Lint and the documentation build still installed the newest releases, so a new upstream release could change what every pull request was checked against. That's how policyengine-core 3.32.16 broke every open PR's Test job on 10/3.pr_code_changes,code_changes, Release lint inversioning)uvx ruff, the newest ruffuv.lockpins (uv export --frozen), the same way Versioning already runs towncrier; fails if the lock pins nonepr_code_changesDocs,pr_docs_changes)uv pip install -e .[dev] --system, pluspolicyengineand jupyter-book, all newest./.github/actions/test-environment, i.e.uv sync --frozen --extra devwith.venv/binon PATHUnchanged on purpose: the PR smoke-import matrix and Release install (Compat), which test the newest dependencies on Python 3.11–3.14, and the sdist install check.
uv pip install policyenginewas dropped. Nothing inpolicyengine_ukordocsimports it, and on 10/3 it downgradedmicrodf-pythonin the system environment.Verified
ruff format --check .,ruff check .andruff check --select F811,F821 policyengine_ukon this branch. I ran the Lint steps' shell exactly as written, with a localGITHUB_ENV.set -euo pipefailand fails unless the lock pins exactly one ruff. I checked locally that it fails clearly when the lock pins no ruff, pins two, oruv exportfails.Follow-up:
--frozeninstalls the lock as committed but does not check that it matchespyproject.toml. That needs the lock's own version line kept in step on release. #2129 is being reworked forprepare_release.py.Reproducer: n/a: CI workflows only with no model source or dependency file changes
axiom: n/a: CI only
🤖 Generated with Claude Code
Infra backlog update (23 October 2026)
Merged
origin/main(a45baf5e4) with a merge commit. Kept the approved locked-ruff and locked-documentation intent, together with main's guard against agent notes at the repository root. The release workflow merged cleanly and includes #2399's statutory-pay fix.Local validation uses Python 3.13 and
UV_LINK_MODE=clone uv sync --frozen --extra dev(core 3.33.2). The current ruff format check, all three pinned-ruff lint blocks and nine failure probes, actionlint on all four changed workflows, and the documentation build pass. The hand-off comment records the focused pytest result and final head.Vahid's approval still covers the substantive result: there is no expansion of the approved change. The new delta only merges main and preserves its root-note guard. The hub retains final review and landing.