ci: revert unsafe sublibrary CI consolidation (restore bespoke per-sublibrary CI; keep faithful main conversions)#952
Closed
ChrisRackauckas-Claude wants to merge 1 commit into
Conversation
…brary CI PR SciML#951 consolidated the 10 per-sublibrary CI_*.yml into a single SublibraryCI.yml caller of sublibrary-tests.yml@v1. An audit found this DROPS CI coverage, because sublibrary-tests.yml@v1 defaults to GROUP=Core/QA and does not run the real group/tag axes these sublibraries use. Concretely it dropped: - NonlinearSolveSciPy: the entire :wrappers suite ran zero items - SimpleNonlinearSolve: the :adjoint and :alloc_check groups - the macOS (macos-latest) legs for ALL 10 sublibraries - per-suite Julia version matrices (e.g. 1.10/1.11/1) It also converted the main-package CI_NonlinearSolve.yml to tests.yml@v1, dropping `local_dependencies` (Pkg.develop of the lib/* path deps) and the GROUP test_args, which the reusable tests.yml cannot express. This change REVERTS the unsafe part while KEEPING the good parts: - Restore all 10 per-sublibrary CI_*.yml verbatim (their adjoint/ alloc_check/wrappers groups, ubuntu+macos OS matrices, and version matrices). - Restore CI_NonlinearSolve.yml to its bespoke form (local_dependencies + GROUP test_args preserved). - Remove the added SublibraryCI.yml. - KEEP the faithful main-package reusable conversions from SciML#951: Documentation.yml, Downstream.yml, FormatCheck.yml (Runic), SpellCheck.yml. - Leave Downgrade.yml, DowngradeSublibraries.yml, GPU.yml, TagBot.yml, and CompatHelper.yml untouched. Proper follow-up (separate, maintainer-reviewed): add lib/<name>/test/test_groups.toml encoding each sublibrary's real groups + OS + Julia versions, and align each test/runtests.jl GROUP parsing to honor the GROUP value the reusable sends, so sublibrary-tests.yml@v1 can be adopted without losing coverage. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
This was referenced Jun 4, 2026
Contributor
Author
|
Superseded by #953: keeping the centralized sublibrary-tests@v1 form and fixing coverage via test_groups.toml + runtests GROUP parsing, instead of reverting to bespoke CI_*.yml. |
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
This PR corrects a CI coverage regression introduced by #951 (CI centralization). An audit of #951 found that consolidating the 10 per-sublibrary
CI_*.ymlworkflows into a singleSublibraryCI.yml(a caller ofsublibrary-tests.yml@v1) silently dropped test coverage, becausesublibrary-tests.yml@v1defaults toGROUP=Core/GROUP=QAand does not run the real group/tag axes these sublibraries dispatch on.This PR reverts only the unsafe part of #951 and keeps the faithful parts.
What #951 dropped (the regression)
:wrapperssuite ran zero items.:adjointand:alloc_checkgroups were no longer run.macos-latest) legs for all 10 sublibraries.1.10/1.11/1).CI_NonlinearSolve.ymlwas converted totests.yml@v1, which cannot express itslocal_dependencies(Pkg.developof thelib/*path deps) or itsGROUPtest_args.What this PR does
Reverts (restores bespoke):
CI_*.ymlverbatim from before ci: route CI through SciML/.github reusable workflows (@v1) #951, preserving theiradjoint/alloc_check/wrappersgroups, theirubuntu-latest+macos-latestOS matrices, and their per-suite version matrices.CI_NonlinearSolve.ymlto its bespoke form (preservinglocal_dependenciesandGROUPtest_args).SublibraryCI.yml.Keeps (faithful main-package conversions from #951 — these were NOT flagged by the audit):
Documentation.yml→documentation.yml@v1Downstream.yml→downstream.yml@v1(same 7-package matrix)FormatCheck.yml→runic.yml@v1(Runic preserved)SpellCheck.yml→spellcheck.yml@v1Downgrade.ymlwas already a reusable caller (untouched).Untouched:
DowngradeSublibraries.yml(from #950),GPU.yml,TagBot.yml,CompatHelper.yml.Why the sublibrary CI was intentionally LEFT BESPOKE
sublibrary-tests.yml@v1auto-discoverslib/*but sends only the defaultGROUP=Core/QAvalues. The sublibraries here dispatch theirtest/runtests.jlon different group/tag names (:wrappers,:adjoint,:alloc_check, plus per-suite OS and version matrices). Consolidating onto the reusable defaults therefore runs zero items for those axes — a silent coverage loss. Per the centralization spec's "MONOREPO SUBLIBRARY CONSOLIDATION — DANGER" rule, the correct action is to leave the per-sublibraryCI_*.ymlbespoke rather than convert-and-lose.Proper follow-up (separate, maintainer-reviewed step)
Adopting
sublibrary-tests.yml@v1safely requires, per sublibrary:lib/<name>/test/test_groups.tomlencoding the real groups (e.g.core,adjoint,alloc_check,wrappers) plus the OS and Julia-version matrices.lib/<name>/test/runtests.jlGROUPparsing to honor theGROUPvalue the reusable workflow sends.Only once both are in place (and verified to run the same item count) should the bespoke
CI_*.ymlbe replaced bySublibraryCI.yml. That work is out of scope here and should be done as its own reviewed PR.Validation
python3 yaml.safe_load).SciML/.github/.github/workflows/*.yml@v1workflow, and every input passed is declared by that reusable workflow.master: the 10 sublibraryCI_*.yml+ bespokeCI_NonlinearSolve.ymlare restored,SublibraryCI.ymlis removed, and the 4 faithful main-package conversions are kept.Please ignore until reviewed by @ChrisRackauckas.