Auto-populate downgrade skip (stdlibs + in-repo sublibs); default Julia 1.10#73
Merged
ChrisRackauckas merged 2 commits intoJun 8, 2026
Conversation
…ia 1.10
The reusable downgrade workflows previously required callers to hand-list
every Julia standard library (and, for the sublibrary workflow, every in-repo
lib/* package) in the `skip` input so they would not be downgrade-pinned.
This was verbose, easy to get wrong, and drifted as stdlibs/sublibs changed.
Now the effective skip list is computed automatically:
sublibrary-downgrade.yml:
effective skip = Julia stdlibs ∪ in-repo lib/* sublibrary names ∪ caller `skip`
downgrade.yml:
effective skip = Julia stdlibs ∪ caller `skip`
Standard libraries are enumerated robustly from Pkg (the dict is keyed by
UUID, so the name is taken from each value, handling both the (name, version)
tuple shape on recent Julia and the plain-String shape on older Julia). The
in-repo sublibrary names come from `basename lib/*/` (only dirs with a
Project.toml), matching the existing discovery logic. The `skip` input is now
documented as ADDITIONAL deps beyond the auto-included set, with default "".
The `julia-version` default changes from "lts" to "1.10": downgrade tests the
minimum-supported Julia floor, which is 1.10 across SciML.
Backward compatible: callers that still pass a long hand-listed skip keep
working, since their list is simply unioned in (any redundant stdlib/sublib
entries are harmless, as the action treats skip as a membership filter).
Callers can now drop their hand-listed skip entirely.
Unchanged: lib/* discovery, group-env, allow_reresolve:false, projects/exclude.
Validated with actionlint (exit 0, shellcheck enabled).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ChrisRackauckas-Claude
pushed a commit
to ChrisRackauckas-Claude/.github
that referenced
this pull request
Jun 8, 2026
The BDFL has set these as the target standards going forward; ODE and the @v1 reusable workflows are being migrated to them. Rewrite the affected sections of Monorepo.md (and the README monorepo section) to document the targets, with a Status/rollout note flagging the in-flight migration. - Add a "Status / rollout" note near the top referencing the in-flight PRs (SciML/.github SciML#73 = auto-skip + downgrade-1.10; the monorepo version- matrix update; the fleet TagBot thin-caller conversion). - Version matrix (test_groups.toml + root CI): base/Core = ["lts","1","pre"], QA = ["lts","1"], GPU = ["1"]; drop the pinned "1.11" middle version. - Downgrade callers use julia-version "1.10" (the minimum-supported floor) for both downgrade.yml and sublibrary-downgrade.yml. - Downgrade skip is auto-populated centrally (Julia stdlibs + in-repo lib/* names + caller extras); callers no longer hand-list them. allow_reresolve stays hardcoded false centrally with no input. - TagBot.yml is a thin caller of tagbot.yml@v1: root tagbot job (+ on: triggers) and, for monorepos, a tagbot-subpackages matrix over each registered lib/<Name> with subdir; single-package repos have only the root job. Replaces the old inlined JuliaRegistries/TagBot@v1 form. - Standardize the catch-all sentinel to Title-case "All" in prose and the runtests.jl snippet; note it is a local-only default CI never sets. - Expand the .gitignore block to the full canonical set, framed as typical entries. - Fix a pre-existing typos hit ("mis-format") so spellcheck stays clean. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…d 1.10 Use the moving "lts" alias for the downgrade julia-version input default (in both downgrade.yml and sublibrary-downgrade.yml) so the downgrade floor tracks the LTS as it advances. It is currently 1.10, but the alias keeps it future-proof. Descriptions updated accordingly. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <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.
What
Makes the reusable downgrade workflows auto-populate the
skiplist so callersno longer have to hand-maintain a long list of Julia standard libraries (and,
for the sublibrary workflow, every in-repo
lib/*package).sublibrary-downgrade.ymlBefore the
julia-actions/julia-downgrade-compatstep (per sublibrary matrixentry) it now computes an effective skip:
Pkg.Types.stdlibs()dict is keyed by UUID, so the package name istaken from each value (the value is a
(name, version)tuple on recentJulia and a plain
Stringon older Julia — both are handled).basename lib/*/(only directories with aProject.toml), reusing the same discovery convention as thediscoverjob.These matter because in-repo path-
[sources]sublibs must not bedowngrade-pinned.
downgrade.yml(single-package)Same idea, minus sublibs:
Other changes
skipinput is re-documented as ADDITIONAL deps to skip beyond theauto-included Julia stdlibs (and in-repo sublibraries), and its default is now
"".julia-versiondefault changes from"lts"to"1.10": downgrade teststhe minimum-supported Julia floor, which is 1.10 across SciML.
Why
Callers were copy-pasting long
skip:lists of stdlibs/sublibs that driftedover time and were easy to get wrong. With auto-population, callers can now
drop their hand-listed
skipentirely and only pass genuinely-extra deps (ifany) via
skip.Backward compatibility
Fully backward-compatible. Callers that still pass a long hand-listed
skipkeep working: their list is simply unioned into the effective skip. Redundant
stdlib/sublib entries are harmless because
julia-downgrade-compattreatsskipas a membership filter (it splits on commas, strips whitespace, anddrops empties — verified against the action's
downgrade.jl).Validation
actionlint(v1.7.7, with shellcheck enabled) on both files: exit 0.the stdlibs (
Pkg,TOML,LinearAlgebra, …), thelib/*sublib names(and excludes a
lib/dir without aProject.toml), and the caller's extraskips — with no leading/trailing comma in the empty-
skipdefault case.(
filter(!isempty, map(strip, split(ARGS[1], ",")))) to confirm it parsescleanly, including the redundant-duplicate (backward-compat) case.
Unchanged: the
lib/*discovery job,group-env,allow_reresolve: false,and the
projects/excludeinputs.🤖 Generated with Claude Code
Co-Authored-By: Chris Rackauckas accounts@chrisrackauckas.com
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com