Skip to content

Fix Downgrade-CI stale floors (ODE, SimpleOptimization, QuadDIRECT) + CCMO test detection#1234

Merged
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:fix-downgrade-floors-and-ccmo-test
Jun 24, 2026
Merged

Fix Downgrade-CI stale floors (ODE, SimpleOptimization, QuadDIRECT) + CCMO test detection#1234
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:fix-downgrade-floors-and-ccmo-test

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Ignore until reviewed by @ChrisRackauckas.

Fixes red lanes on the master Downgrade Sublibraries run. Each reproduced locally with the real julia-actions/julia-downgrade-compat@v2 (Resolver.jl --min=@alldeps, julia=lts) merged-test-deps path, then verified with Pkg.test on Julia lts (1.10).

1. OptimizationODE — coordinated stale floors

OrdinaryDiffEq* subpackages had 1 floors whose registry compat permits a modern OrdinaryDiffEqCore but whose code does not; the downgrade hit, in sequence: no method matching get_fsalfirstlast(::Vern6Cache,...) (Verner 1.0.0), UndefVarError: namify not defined (Rosenbrock 1.5.0), then type Nothing has no field alias_f, then no method matching _process_verbose_param(::NonlinearVerbosity{...}). Raise OrdinaryDiffEq* = "2", SciMLBase = "3", DiffEqBase = "7" -> resolves onto the modern stack (the one max already uses). Verified (lts): downgrade -> Core 4.3.0 / SciMLBase 3.1.0 / DiffEqBase 7.0.0 -> tests pass; max also still passes.

2. SimpleOptimization — stale SimpleNonlinearSolve floor

"1, 2" picked SimpleNonlinearSolve 1.8.0 -> AbstractNonlinearTerminationMode removed from resolved DiffEqBase -> precompile UndefVarError. Raise floor to "2". Verified: downgrade -> SimpleNonlinearSolve 2.5.0 -> tests pass.

3. OptimizationQuadDIRECT — missing compat floor

No QuadDIRECT compat entry at all, so the downgrade floored to QuadDIRECT 0.0.1, whose split_insert! throws AssertionError: xsplit[1] < xsplit[2] < xsplit[3]. Add QuadDIRECT = "0.1.2". Verified: downgrade -> QuadDIRECT 0.1.2 -> tests pass.

4. OptimizationMetaheuristics — broken CCMO detection (red at downgrade AND max)

The multi-objective test special-cased CCMO (no N on its own parameters -> use_initial seeding inapplicable) via alg_name == "Metaheuristics.Algorithm{CCMO{NSGA2}}". Metaheuristics now prints the type fully qualified, so the string never matches; CCMO took the use_initial=true branch -> type CCMO has no field N (6 errored every problem), failing at the latest Metaheuristics 3.5.0 too. Replace with a robust alg.parameters isa Metaheuristics.CCMO check. Verified at both max and downgrade.

Not in this PR (recorded, no change)

  • OptimizationBase / root Downgrade Core: Resolver.jl Unsatisfiable in --min=@alldeps, driven by Mooncake in merged test deps (removing Mooncake -> resolves). Fleet-wide Resolver.jl wall, not [compat]-fixable.
  • OptimizationBase Sublibrary Downgrade: SymbolicAnalysis 0.3 (caps Symbolics <=6) cannot coexist with Symbolics 7 — unsatisfiable for Pkg too; skip: SymbolicAnalysis only skips its compat-downgrade, not its graph presence. Blocked on SciML/SymbolicAnalysis.jl gaining Symbolics 7 support (separate upstream PR). OptimizationBase also has a malformed test target (6 regular [deps] in targets.test but not [extras], rejected by Pkg.test) — left out since it can't be verified green while SymbolicAnalysis blocks resolution.
  • CI Core (julia pre): self-hosted runner lost communication (smcsd) — infra flake, passes locally.
  • OptimizationAuglag / OptimizationNLPModels Downgrade: pass cleanly locally at the downgrade floor — CI reds appear transient.

🤖 Generated with Claude Code

… CCMO test detection

Four independent fixes for red lanes on the master Downgrade Sublibraries run.
Each reproduced locally with the real julia-actions/julia-downgrade-compat@v2
(Resolver.jl --min=@alldeps, julia=lts) merged-test-deps path, then verified
with Pkg.test on Julia lts (1.10).

- OptimizationODE: the OrdinaryDiffEq* solver subpackages had `1` floors whose
  registry compat permits a modern OrdinaryDiffEqCore but whose code does not
  (`get_fsalfirstlast`/`namify`/`alias_f`/`_process_verbose_param` skews). Raise
  the OrdinaryDiffEq* floors to `2`, SciMLBase to `3`, DiffEqBase to `7` so the
  downgrade resolves onto the modern, mutually-consistent stack (the same one
  the max resolution already uses). Verified: Core passes at the downgrade floor
  (Core 4.3.0 / SciMLBase 3.1.0 / DiffEqBase 7.0.0) and at max.

- SimpleOptimization: `SimpleNonlinearSolve = "1, 2"` let the downgrade pick
  1.8.0, which references `AbstractNonlinearTerminationMode` removed from the
  resolved DiffEqBase -> precompile UndefVarError. Raise floor to `2`. Verified.

- OptimizationQuadDIRECT: no QuadDIRECT compat entry at all, so the downgrade
  floored to QuadDIRECT 0.0.1, whose split_insert! throws
  `AssertionError: xsplit[1] < xsplit[2] < xsplit[3]`. Add `QuadDIRECT = "0.1.2"`.
  Verified: downgrade resolves to 0.1.2 -> tests pass.

- OptimizationMetaheuristics: the CCMO special-case in the multi-objective test
  used a stringified type-name comparison that no longer matches (Metaheuristics
  type-printing changed to fully-qualified names), so CCMO wrongly took the
  `use_initial=true` path and hit `type CCMO has no field N`. Failed at both
  downgrade and max. Detect CCMO by type (`alg.parameters isa Metaheuristics.CCMO`).
  Verified at both max and downgrade.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude force-pushed the fix-downgrade-floors-and-ccmo-test branch from 9d010f1 to 3661d66 Compare June 23, 2026 21:52
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title Fix Downgrade-CI stale floors (ODE, SimpleOptimization) + CCMO test detection Fix Downgrade-CI stale floors (ODE, SimpleOptimization, QuadDIRECT) + CCMO test detection Jun 23, 2026
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 24, 2026 11:56
@ChrisRackauckas ChrisRackauckas merged commit a674f2f into SciML:master Jun 24, 2026
40 of 63 checks passed
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