Rebase features into Rewrite#61
Draft
AlCap23 wants to merge 80 commits into
Draft
Conversation
Updating FIM from previous experiments
Added ModelingToolkit benchmark library
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.18.0 to 1.45.2. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](crate-ci/typos@v1.18.0...v1.45.2) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-version: 1.45.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bump version from 0.0.2 to 0.0.3
…typos-1.45.2 Bump crate-ci/typos from 1.18.0 to 1.45.2
…all groups
Keep the centralized SciML sublibrary-tests.yml@v1 form (SublibraryCI.yml is
untouched) and make every sublibrary group/version actually run.
The reusable workflow runs the ROOT test suite with GROUP set to a sublibrary's
CI group ("<pkg>" for the Core group, "<pkg>_<grp>" for a named group), but the
root test/runtests.jl had no GROUP dispatch, so sublibrary legs silently ran the
main-package suite instead of the sublibrary tests. Fix it by:
- Adding a GROUP dispatch to test/runtests.jl that, when GROUP names a lib/<sub>,
activates that sublibrary's test env, develops its local [sources] path deps on
Julia < 1.11, and runs Pkg.test(<sub>) forwarding GROUP. GROUP="All"/"Corleone"
keep running the main Corleone suite.
- Adding lib/CorleoneOED/test/test_groups.toml ([Core] versions ["1.11","lts"])
and lib/OptimalControlBenchmarks/test/test_groups.toml (same), encoding the
groups/versions the old bespoke CI ran.
- Adding the GROUP-parsing shim to each sublibrary runtests.jl so GROUP="<pkg>"
maps to Core and "<pkg>_<grp>" maps to <grp>, driving the existing dispatch;
"All" still works for local runs.
Verified by running SciML/.github compute_affected_sublibraries.jl: a change to
lib/CorleoneOED/src emits CorleoneOED on 1.11 and lts; lib/OptimalControlBenchmarks
emits OptimalControlBenchmarks on 1.11 and lts. The root dispatch + shim then runs
the full CorleoneOED suite (1D, Lotka, Lotka SVD) under GROUP=CorleoneOED.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…test-groups ci: add sublibrary test_groups.toml so centralized SublibraryCI runs all groups
Replace the bespoke per-sublibrary test_groups.toml (which only declared a narrowed [Core] versions = ["1.11", "lts"] matrix and suppressed QA entirely) with the SciML standard Core/QA groups. Both CorleoneOED and OptimalControlBenchmarks are small suites with no GPU tests and no isolated-env/timeout need, so deleting test_groups.toml lets the reusable workflow's defaults apply: Core on [lts, 1.11, 1, pre] and QA on [1]. The sublibrary runtests.jl now dispatch on the parsed standard group: - Core (+All): functional/correctness tests (folds the old Core). - QA (+All): Aqua.test_all (Aqua was already a declared but unused test dep). The GROUP prefix-strip shim is kept so the centralized sublibrary-tests.yml@v1 GROUP="<pkg>" -> Core and GROUP="<pkg>_QA" -> QA mapping drives dispatch, while GROUP="All" (local Pkg.test default) still runs everything. No GPU tests exist, so no [GPU] test_groups.toml is added. These sublibraries never had macOS CI legs, so none were dropped. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…-sublibrary-test-groups ci: standardize sublibrary test groups to Core/QA (fold custom groups)
Switch SublibraryCI from the GROUP-dispatch sublibrary-tests.yml@v1 (which needs a root runtests.jl sublib dispatcher) to the project model: list lib/* and run each as a tests.yml@v1 caller with project: lib/X. The reusable workflow transitively git-develops the sublib's in-repo [sources] deps, so no per-repo dispatcher is needed. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop coverage: false (cargo-culted from OrdinaryDiffEq, which disables it only to avoid Codecov flooding at 56-sublibrary scale). For this repo the sublib tests are the only thing covering the sublib's src, so collect it -- with coverage-directories pointed at the sublibrary (lib/X/src,ext) rather than the repo-root default (src,ext). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Don't assume python3 is on the runner. jq is preinstalled on GitHub-hosted ubuntu runners (where the list-sublibraries job runs) and builds the JSON array directly. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jq isn't guaranteed on self-hosted runners any more than python3 is. lib/* directory names have no JSON-special characters, so build the array with plain shell quoting and depend on neither. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The list-lib/*-and-matrix logic moved into the reusable sublibrary-project-tests.yml in SciML/.github, so this caller collapses to just the branch triggers, concurrency, and a single `uses:`. No duplicated detection logic per repo. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Part of bringing this repo onto the full centralized CI setup (SciML/.github @v1): remove retired CompatHelper (Dependabot drives [compat]) and/or add the centralized Documenter preview cleanup. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ect-model ci: uniformize onto centralized CI (project-model SublibraryCI + cleanup)
Adds the missing SciML standard centralized caller workflows. Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The reusable SciML/.github downgrade workflows now always use allow_reresolve: false and no longer accept an allow-reresolve input (see SciML/.github#71). Remove the now-invalid input so this caller keeps working once @v1 is retagged. Co-authored-by: Chris Rackauckas <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- OrdinaryDiffEqBDF, OrdinaryDiffEqTsit5: "1" → "1, 2" - SciMLBase: "2" → "2, 3" across all sub-packages - Migrate DEProblem/DEAlgorithm → AbstractDEProblem/AbstractDEAlgorithm - Migrate SciMLBase.DEAlgorithm → SciMLBase.AbstractDEAlgorithm Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
* ci: uniformize monorepo structure to OrdinaryDiffEq canonical style Thread a repo-specific group-env-name (CORLEONE_TEST_GROUP) consistently through the sublibrary CI callers and runtests, GROUP-dispatch the root CI, and fix the root test harness so Pkg.test() on the root works. - SublibraryCI.yml: pass group-env-name CORLEONE_TEST_GROUP + check-bounds auto. - DowngradeSublibraries.yml: add group-env-name CORLEONE_TEST_GROUP / value Core. - Sublib runtests (CorleoneOED, OptimalControlBenchmarks): read CORLEONE_TEST_GROUP (fall back to GROUP, then All). - CI.yml: GROUP-dispatched matrix over the root's own Core/QA groups (no hardcoded sublibrary rows; sublibs covered by the project model). - test/runtests.jl: _detect_sublibrary_group dispatcher sets CORLEONE_TEST_GROUP on sublib hand-off, transitive [sources] develop on Julia <1.11, Core/QA root groups; drop dead `using JET`. - Project.toml: add Pkg to [extras]/[compat]/[targets].test (root runtests uses Pkg; matches the canonical root and keeps Aqua deps_compat green). The leaf->root [sources] graph (sublibs depend on Corleone) is preserved; no root->leaf edges are added since the root does not re-export the sublibs. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix: remove self-import of OptimalControlBenchmarks in its own module The module's source file did `using OptimalControlBenchmarks` inside the `module OptimalControlBenchmarks ... end` block, importing itself. Remove it. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore: canonicalize LICENSE files to LICENSE.md Rename root LICENSE -> LICENSE.md and lib/CorleoneOED/LICENSE -> LICENSE.md (content preserved via git mv), and add lib/OptimalControlBenchmarks/LICENSE.md so every component carries an MIT LICENSE.md, matching the OrdinaryDiffEq.jl monorepo layout. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: canonical component READMEs for sublibraries Rewrite lib/CorleoneOED/README.md (was pointing at the stale external AlCap23/CorleoneOED.jl CI badge) and add lib/OptimalControlBenchmarks/README.md, both using the canonical Corleone.jl monorepo component README template (Zulip + Global Docs + ColPrac + SciML Code Style badges and the 'component of the Corleone.jl monorepo' wording), matching OrdinaryDiffEq.jl. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: add .typos.toml/.codecov.yml and canonical TagBot with subpackage matrix - Add .typos.toml with [default.extend-words] (matches SpellCheck/typos workflow) - Add .codecov.yml with comment: false - Convert TagBot.yml to the canonical OrdinaryDiffEq.jl form: top-level permissions block, workflow_dispatch.inputs.lookback default '3', the root TagBot-Corleone job, and a TagBot-Subpackages matrix (fail-fast: false) that tags the registered sublibrary CorleoneOED via subdir lib/CorleoneOED. OptimalControlBenchmarks is not registered in General, so it is excluded. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Remove self-import of OptimalControlBenchmarks in run_benchmarks.jl run_benchmarks.jl is include()d into module OptimalControlBenchmarks, so the line `using OptimalControlBenchmarks` executed inside the module's own namespace and hard-failed to load (ArgumentError: Package OptimalControlBenchmarks not found). The symbols it would import are already in scope inside the module, so the line is simply removed. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test: isolate root + CorleoneOED QA into canonical test/qa sub-env Move the Aqua code-quality checks for the root Corleone package and the CorleoneOED sublibrary out of the main test target into dedicated test/qa Pkg sub-environments, matching the canonical OrdinaryDiffEq structure (lib/<Name>/test/qa). Each package now has: - test/qa/Project.toml: Aqua + the package (+ in-repo Corleone sibling) + Test, with relative [sources] and [compat] for every dep plus julia = "1.10". - test/qa/qa.jl: the Aqua.test_all testset. - runtests.jl: an activate_qa_env() helper that activates test/qa, develops the package (and sibling) by path so the PR branch code is tested on Julia < 1.11 where [sources] is ignored, then instantiates. The QA branch calls it and then @safetestset includes qa/qa.jl. Aqua (and the vestigial, unused JET entry in the root) are removed from each main Project.toml's [compat]/[extras]/[targets].test so the QA tooling deps no longer participate in the main test resolve. No QA coverage changed: each package still runs exactly Aqua, with identical pass/fail behavior (verified the CorleoneOED qa env resolves and Aqua.test_all produces the same 6-pass/5-fail result as the pristine base, confirming the pre-existing Aqua failures are unchanged by this restructure). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test: isolate OptimalControlBenchmarks QA into canonical test/qa sub-env Move the Aqua code-quality check for the OptimalControlBenchmarks sublibrary out of the main test target into a dedicated test/qa Pkg sub-environment, matching the canonical OrdinaryDiffEq structure (lib/<Name>/test/qa) and the root + CorleoneOED migration in the preceding commit. - test/qa/Project.toml: Aqua + OptimalControlBenchmarks + in-repo Corleone sibling + Test, with relative [sources] and [compat] for every dep plus julia = "1.10". - test/qa/qa.jl: the Aqua.test_all testset. - runtests.jl: activate_qa_env() activates test/qa, develops the package and the Corleone sibling by path (for Julia < 1.11 where [sources] is ignored), then instantiates; the QA branch calls it and @safetestset includes qa/qa.jl. Aqua is removed from the main Project.toml's [compat]/[extras]/[targets].test so the QA tooling deps no longer participate in the main test resolve. QA coverage is unchanged: the package still runs exactly Aqua. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test(CorleoneOED): add test_groups.toml pinning Core/QA version matrix Make the centralized SublibraryCI (sublibrary-project-tests.yml@v1) discover this sublibrary's groups explicitly instead of falling back to the default shape. Core runs on [lts, 1, pre]; QA (Aqua) runs on [lts, 1]. Matches the canonical OrdinaryDiffEq.jl per-sublibrary test/test_groups.toml convention. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test(OptimalControlBenchmarks): add test_groups.toml pinning Core/QA matrix Make the centralized SublibraryCI (sublibrary-project-tests.yml@v1) discover this sublibrary's groups explicitly instead of the default shape. Core runs on [lts, 1, pre]; QA (Aqua) runs on [lts, 1]. Matches the canonical OrdinaryDiffEq.jl per-sublibrary test/test_groups.toml convention. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: align root CI version matrix with canonical group matrix Core runs on [lts, 1, pre]; QA (Aqua) runs on [lts, 1] (drops the redundant 1.11 row and the pre/1.11/lts QA excludes, adding lts to QA). Mirrors the test_groups.toml matrix used by the sublibraries. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * test: canonical group-folder layout for the root package Make the root test suite conform to the OrdinaryDiffEq canonical group-folder model: every test lives in exactly one test/<group>/ folder; no-extra-dep groups run in the light main test env as part of GROUP=All, while dep-adding groups carry their own isolated test/<group>/Project.toml that runtests.jl activates and that the CI matrix runs explicitly. - Move the loose root tests into test/core/ (Core group, light env). - Promote the example scripts (test/examples/) into a dep-adding "Examples" group with test/examples/Project.toml carrying the heavy optimal-control stack (ModelingToolkit, Ipopt/OptimizationMOI, SciMLSensitivity, ForwardDiff, OrdinaryDiffEqBDF) + Corleone via [sources]. - runtests.jl: GROUP=All/Core run the light Core group; Examples and QA each activate their own test/<group> env. - Make the main [extras]/[targets].test LIGHT: drop the heavy test-only deps (now provided by the Examples group env) and their stale [compat] entries. - test/test_groups.toml pins the canonical version matrix: Core/Examples on [lts,1,pre], QA on [lts,1]; CI.yml matrix kept consistent (adds Examples). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Declare Pkg in test deps and group CorleoneOED core tests CorleoneOED and OptimalControlBenchmarks test/runtests.jl both `using Pkg` to activate the isolated QA env, but Pkg was not declared in [extras] or [targets].test. Under Pkg.test the test environment doesn't get Pkg by default, so `using Pkg` failed at load time and blocked the entire sublib test suites before any test ran. Add Pkg to both [extras] and [targets].test. Also move CorleoneOED's Core test files (1d_oed.jl, lotka_oed.jl, lotka_oed_svd.jl) into test/core/ and update the runtests.jl includes, matching the uniform monorepo test layout. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: canonical TagBot thin caller + downgrade skip/version cleanup - TagBot.yml: replace verbose JuliaRegistries/TagBot steps with the centralized SciML/.github tagbot.yml@v1 thin caller, plus a tagbot-subpackages matrix over registered lib sublibraries (only CorleoneOED; OptimalControlBenchmarks is not yet registered). - Downgrade.yml: drop hand-listed stdlib skip (Pkg,TOML) now that the central workflow auto-populates skip; bump julia-version 1.10 -> lts. - DowngradeSublibraries.yml: drop hand-listed skip (stdlibs + Corleone caller pkg) now auto-populated by the central workflow. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…oml) (#81) Replace the hand-maintained group x version matrix in the root CI test job with the thin grouped-tests.yml@v1 caller, which computes the matrix from test/test_groups.toml. The non-default check-bounds: auto and coverage-directories: src inputs are preserved; group-env-name stays the default GROUP (which root test/runtests.jl reads). Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
- Replace RNG with StableRNG - Replace equality check with isapprox
Update tests
Fix dimension error of F_init in edge case
Replace the hand-written GROUP dispatcher in test/runtests.jl with a single
SciMLTesting.run_tests call (explicit-args mode, the monorepo shape). The Core
body @safetestset-includes the existing test/core/ files; Examples and QA become
env-bearing group specs that activate test/examples and test/qa (the v1.2
activate_group_env replicates the old activate_examples_env/activate_qa_env). A
curated all = ["Core"] keeps GROUP="All" running only the light Core group, and
sublib_env = "CORLEONE_TEST_GROUP" + lib_dir keep sublibrary routing semantics.
The explicit sublibrary pre-step (detect_sublibrary_group + the Julia < 1.11
transitive [sources] develop walk + withenv("CORLEONE_TEST_GROUP") Pkg.test) is
preserved verbatim ahead of the run_tests call, so the sublibrary Pkg.test path
is byte-for-byte unchanged. The exact set of tests run under each GROUP value
(All, Core, Examples, QA, and sublibrary names) is unchanged.
Add SciMLTesting to the root test target (keep Pkg + SafeTestsets, since the
sublib pre-step still uses Pkg) and to the examples/qa sub-environments. Widen
SafeTestsets compat to "0.1, 1". test_groups.toml is unchanged.
Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
@copilot resolve the merge conflicts in this pull request |
|
@AlCap23 I can’t apply these changes because the pull request’s branch is the repository’s default branch, which I’m not allowed to push to directly. You can ask me to create a new pull request with the requested changes instead and I'll open a separate PR on a new branch. |
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.
Checklist
contributor guidelines, in particular the SciML Style Guide and
COLPRAC.
Additional context
Add any other context about the problem here.