Skip to content

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
SciML:masterfrom
ChrisRackauckas-Claude:claude/centralize-ci
Closed

ci: revert unsafe sublibrary CI consolidation (restore bespoke per-sublibrary CI; keep faithful main conversions)#952
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:claude/centralize-ci

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

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_*.yml workflows into a single SublibraryCI.yml (a caller of sublibrary-tests.yml@v1) silently dropped test coverage, because sublibrary-tests.yml@v1 defaults to GROUP=Core/GROUP=QA and 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)

  • NonlinearSolveSciPy: the entire :wrappers suite ran zero items.
  • SimpleNonlinearSolve: the :adjoint and :alloc_check groups were no longer run.
  • macOS (macos-latest) legs for all 10 sublibraries.
  • Per-suite Julia version matrices (e.g. 1.10/1.11/1).
  • The main-package CI_NonlinearSolve.yml was converted to tests.yml@v1, which cannot express its local_dependencies (Pkg.develop of the lib/* path deps) or its GROUP test_args.

What this PR does

Reverts (restores bespoke):

  • Restores all 10 per-sublibrary CI_*.yml verbatim from before ci: route CI through SciML/.github reusable workflows (@v1) #951, preserving their adjoint/alloc_check/wrappers groups, their ubuntu-latest+macos-latest OS matrices, and their per-suite version matrices.
  • Restores CI_NonlinearSolve.yml to its bespoke form (preserving local_dependencies and GROUP test_args).
  • Removes the added SublibraryCI.yml.

Keeps (faithful main-package conversions from #951 — these were NOT flagged by the audit):

  • Documentation.ymldocumentation.yml@v1
  • Downstream.ymldownstream.yml@v1 (same 7-package matrix)
  • FormatCheck.ymlrunic.yml@v1 (Runic preserved)
  • SpellCheck.ymlspellcheck.yml@v1
  • Downgrade.yml was 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@v1 auto-discovers lib/* but sends only the default GROUP=Core/QA values. The sublibraries here dispatch their test/runtests.jl on 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-sublibrary CI_*.yml bespoke rather than convert-and-lose.

Proper follow-up (separate, maintainer-reviewed step)

Adopting sublibrary-tests.yml@v1 safely requires, per sublibrary:

  1. Add lib/<name>/test/test_groups.toml encoding the real groups (e.g. core, adjoint, alloc_check, wrappers) plus the OS and Julia-version matrices.
  2. Align each lib/<name>/test/runtests.jl GROUP parsing to honor the GROUP value the reusable workflow sends.

Only once both are in place (and verified to run the same item count) should the bespoke CI_*.yml be replaced by SublibraryCI.yml. That work is out of scope here and should be done as its own reviewed PR.

Validation

  • All workflow YAML files parse (python3 yaml.safe_load).
  • Every remaining reusable caller references a real SciML/.github/.github/workflows/*.yml@v1 workflow, and every input passed is declared by that reusable workflow.
  • The net effect on master: the 10 sublibrary CI_*.yml + bespoke CI_NonlinearSolve.yml are restored, SublibraryCI.yml is removed, and the 4 faithful main-package conversions are kept.

Please ignore until reviewed by @ChrisRackauckas.

…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>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
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.

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.

2 participants