Skip to content

mega rebase#4796

Open
xtalax wants to merge 572 commits into
xtalax:stencilsfrom
SciML:master
Open

mega rebase#4796
xtalax wants to merge 572 commits into
xtalax:stencilsfrom
SciML:master

Conversation

@xtalax

@xtalax xtalax commented Apr 7, 2025

Copy link
Copy Markdown
Owner

No description provided.

ChrisRackauckas and others added 30 commits May 10, 2026 12:01
The Schroedinger PDE tests construct ODE problems with a singular mass
matrix (algebraic constraints from Dirichlet BCs after Re/Im split).
Recent MTK / SciMLBase / OrdinaryDiffEq versions tightened the default
DAE initialization to `CheckInit`, which only verifies u0 and refuses to
perturb the algebraic states. With non-trivial complex BCs (the
`Schroedinger with complex bcs` testset, ϵ=1.0e-2), discretization noise
makes u0 fail the strict CheckInit residual tolerance and the solve
errors with `DAE initialization failed: normresid > abstol`.

Pass `initializealg = BrownFullBasicInit()` on both Schroedinger
testsets so the algebraic states are projected onto the constraint
manifold before stepping. This matches the IC consistency the tests
expect and is the standard recommendation in the same error message.

Add explicit `using SciMLBase` and `DiffEqBase: BrownFullBasicInit`
imports since `@safetestset` runs each file in a fresh module.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…roedinger-init

Fix master CI: Schroedinger DAE init with BrownFullBasicInit
Convert all CI to the centralized reusable workflows pinned at @v1, with
`secrets: "inherit"` on every caller:

- Runic (FormatCheck.yml): convert inline fredrikekre/runic-action to
  runic.yml@v1.
- SpellCheck.yml: convert inline crate-ci/typos to spellcheck.yml@v1.
- Downgrade.yml: convert inline downgrade job to downgrade.yml@v1
  (julia-version 1.10, skip Pkg,TOML, allow-reresolve false), keeping the
  existing `if: false` disabled state (#520).
- Downstream.yml: convert inline IntegrationTest to a matrix of
  downstream.yml@v1 callers (SciML/PDESystemLibrary.jl group MOL,
  continue-on-error preserved).
- Tests.yml / Documentation.yml: already central callers, unchanged.
- Delete CompatHelper.yml (dependabot handles Julia compat updates).
- dependabot.yml: drop crate-ci/typos ignore; add julia ecosystem block
  over / and /docs (daily, all-julia-packages group).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Centralize CI on SciML reusable workflows
Updates the requirements on [DomainSets](https://github.com/JuliaApproximation/DomainSets.jl) and [DifferentialEquations](https://github.com/SciML/DifferentialEquations.jl) to permit the latest version.

Updates `DomainSets` to 0.8.0
- [Release notes](https://github.com/JuliaApproximation/DomainSets.jl/releases)
- [Commits](JuliaApproximation/DomainSets.jl@v0.7.0...v0.8.0)

Updates `DomainSets` to 0.8.0
- [Release notes](https://github.com/JuliaApproximation/DomainSets.jl/releases)
- [Commits](JuliaApproximation/DomainSets.jl@v0.7.0...v0.8.0)

Updates `DifferentialEquations` to 8.0.0
- [Release notes](https://github.com/SciML/DifferentialEquations.jl/releases)
- [Changelog](https://github.com/SciML/DifferentialEquations.jl/blob/master/NEWS.md)
- [Commits](SciML/DifferentialEquations.jl@v7.0.0...v8.0.0)

---
updated-dependencies:
- dependency-name: DomainSets
  dependency-version: 0.8.0
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: DomainSets
  dependency-version: 0.8.0
  dependency-type: direct:production
  dependency-group: all-julia-packages
- dependency-name: DifferentialEquations
  dependency-version: 8.0.0
  dependency-type: direct:production
  dependency-group: all-julia-packages
...

Signed-off-by: dependabot[bot] <support@github.com>
The dependabot bump (#564) widened DomainSets to `0.7, 0.8`, but the
package could not resolve because PDEBase (and ModelingToolkitBase) still
pinned DomainSets to 0.7. Bump the PDEBase lower bound to 0.1.25, the
release that admits DomainSets 0.8. MethodOfLines's own source needs no
changes: all DomainSets usage is via qualified, still-exported names
(`DomainSets.infimum`, `DomainSets.supremum`, `DomainSets.ClosedInterval`,
and `Interval`), none of which are affected by the 0.8 breaking changes.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…-0.8

Support DomainSets 0.8 (compat bumps; isolates DiffEq8 breakage)
Adapts MethodOfLines to the breaking changes that master already resolves to
(OrdinaryDiffEq 7.0.0, SciMLBase 3.x, RecursiveArrayTools 4.x), fixing a
pre-existing master CI failure across many test groups.

Solution interface (src/interface/solution/common.jl): define length/size/
ndims/axes/firstindex/lastindex for the MOL PDETimeSeriesSolution in terms of
its saved time points. PDETimeSeriesSolution is an AbstractVectorOfArray whose
`u` field is a Dict{Num,Array}; RAT 4's generic size iterates `u` expecting a
vector of arrays and errors with `size(::Pair, ::Int)`. For single-variable
solutions the generic path silently returned 1 (the dv count) instead, so
`for i in 1:length(sol)` loops were quietly only checking i = 1.

Solver re-exports: OrdinaryDiffEq 7 no longer re-exports most solver names from
`using OrdinaryDiffEq`. Import the ones the tests use from their sub-packages
(Rodas4/Rodas4P/Rosenbrock32 from OrdinaryDiffEqRosenbrock, TRBDF2 from
OrdinaryDiffEqSDIRK, SSPRK33 from OrdinaryDiffEqSSPRK, Euler/SplitEuler from
OrdinaryDiffEqLowOrderRK) and add the sub-packages to the test deps.

SciMLBase namespace: `using OrdinaryDiffEq` (v7) no longer brings SciMLBase into
scope, so tests calling `SciMLBase.successful_retcode`/`SciMLBase.NullParameters`
need an explicit `using SciMLBase`.

Test 03 of MOL_1D_Linear_Diffusion: the `sum(u) ~= 0 atol=1e-10` conservation
check was previously only evaluated at i=1 due to the broken length(sol). With
length fixed it runs at every time; the edge-aligned grid's rectangle-rule sum
drifts to ~1e-7 (center-aligned stays ~1e-11 at identical Tsit5 tolerances), so
the tolerance is relaxed to 1e-6 with an explanatory comment.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…ffeq-7-sciml-3

Fix for OrdinaryDiffEq 7 / SciMLBase 3 / RecursiveArrayTools 4 (complements #565)
Test 03 of MOL_1D_Linear_Diffusion checks that the diffusion equation with
homogeneous Neumann BCs conserves the spatial integral of u (here
∫₀^π cos(x) dx = 0). It previously used `sum(u)`, a rectangle rule that on the
edge-aligned grid (nodes offset half a step outside the domain) carries an
O(Δx) boundary bias and drifts to ~1e-7, which forced #566 to loosen the
assertion from atol=1e-10 to atol=1e-6.

Integrate instead with composite trapezoidal weights built from the actual
grid spacing (interior nodes get the half-spacing on each side, endpoints a
single half-spacing), correct on both the center-aligned and the half-step
edge-aligned grids and on non-uniform grids. The trapezoidal integral conserves
down to the Tsit5 time-integration error, not the spatial quadrature error:
measured max|∫u dx| over the trajectory is ~4e-13 (center) / ~6e-10 (edge) at
the default Tsit5 tolerances, and both fall to ~1e-15 when the solver tolerance
is tightened to 1e-12 — confirming the residual is bounded by the time
integrator, not a real conservation defect. The assertion is therefore
restored to a strict atol=1e-9 (1000x tighter than #566's 1e-6, with headroom
above the measured 6e-10 edge residual) and now compares against the initial
integral so it works regardless of the analytic value.

Verified locally with `GROUP=Diffusion`: 289/289 pass, both grid alignments.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
…vation-quadrature

Trapezoidal conservation metric for 1D diffusion (restores strict tol, supersedes #566 loosening)
Re-enables the previously-disabled (`if: false`) Downgrade workflow and
raises the `[compat]` lower bounds to the lowest versions that actually
resolve with the current co-evolving SciML stack on Julia 1.10:

- DiffEqBase: 6, 7 -> 7.3
- Latexify: 0.15, 0.16 -> 0.16
- ModelingToolkit: 11 -> 11.26.8
- OrdinaryDiffEq: 6, 7 -> 7
- PrecompileTools: 1 -> 1.2.1
- SciMLBase: 2, 3 -> 3.1
- StaticArrays: 1 -> 1.9.18
- SymbolicIndexingInterface: 0.3.40 -> 0.3.44
- SymbolicUtils: 4 -> 4.34.3
- Symbolics: 7 -> 7.26

The old `2.x`/`6.x`/`11.0` floors were unsatisfiable against the latest
transitive ecosystem (PDEBase 0.1.25, MTK 11.26, Symbolics 7.26). Each new
floor is the minimum that resolves under exact `=floor` pinning (verified by
bisection). julia = "1.10" is kept (LTS policy). Sets `allow-reresolve: true`
in Downgrade.yml so Pkg picks a consistent transitive set while still honoring
the floor `[compat]` pins.

Downgrade suite run locally at these floors (deps-mode `=floor` pin,
GROUP="" as the downgrade workflow sets, Julia 1.10, allow_reresolve=true):
PASS (build + resolve + load smoke test). Components and Sol_Interface test
groups also run and PASS at these floors.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sets `allow-reresolve: false` in Downgrade.yml (the strict SciML default),
replacing the prior `true`. Under strict mode, julia-downgrade-compat pins the
direct `[deps]` `[compat]` to their floors and lets transitive deps float to
LATEST, and Pkg.test must instantiate that exact set with NO reconciliation.
This is the rigorous downgrade: it forces the declared `[deps]` floors to be
genuinely compatible with the latest transitive ecosystem.

No `[compat]` floor changes were needed: the floors already on this branch
(SciMLBase 3.1, DiffEqBase 7.3, ModelingToolkit 11.26.8, OrdinaryDiffEq 7,
Symbolics 7.26, SymbolicUtils 4.34.3, SymbolicIndexingInterface 0.3.44,
PrecompileTools 1.2.1, StaticArrays 1.9.18, Latexify 0.16) are strict-consistent.

Verified locally on Julia 1.10 with an isolated depot, deps-mode `=floor` pin
of only `[deps]` (transitive floated to latest: NonlinearSolveBase 2.30.3,
RecursiveArrayTools 4.3.1, ADTypes 1.22, ForwardDiff 1.3.3), then
`Pkg.test(; allow_reresolve=false)`:
- Strict resolution of the full test environment succeeds with no reconciliation.
- GROUP=Components: "Testing MethodOfLines tests passed" (Utils 38 pass/4 broken,
  Discretization 8, Variable PDE mapping 9, Fornberg 9, ODEFunction, Staggered 3,
  Discrete Callbacks 1).
- GROUP=All additionally passed the heavy Complex/schroedinger group (102/102)
  before reaching the Brusselator group (which is disabled in regular CI for
  multi-hour stalls and is not exercised by the downgrade job, GROUP="").

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-enable downgrade CI with resolvable lower bounds
…erge, docs-preview-cleanup) (#569)

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>
…571)

Replace inlined JuliaRegistries/TagBot with the canonical SciML thin
caller (tagbot.yml@v1). Drop the redundant skip: "Pkg,TOML" downgrade
input (stdlibs are auto-populated by the central workflow) and set the
downgrade julia-version floor to lts.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Canonical CI: grouped-tests.yml + root test/test_groups.toml

Convert the root Tests.yml from a hand-maintained group x version matrix into a
thin caller of SciML/.github grouped-tests.yml@v1, with the matrix declared once
in test/test_groups.toml.

- Tests.yml: replace the matrix test job with the reusable grouped-tests.yml@v1
  caller (secrets: inherit). on:/concurrency: preserved verbatim. All other
  workflows untouched.
- test/test_groups.toml: declares the 18 existing groups on [lts, 1, pre],
  reproducing the previous matrix exactly, plus a new QA group on [lts, 1].
- QA wiring (new, Category C): runtests.jl gains a GROUP == "QA" branch that
  includes test/qa/qa.jl; isolated test/qa/Project.toml carries Aqua + JET +
  Test and resolves MethodOfLines via [sources]; qa.jl runs Aqua.test_all and
  JET.test_package(target_defined_modules=true).
- Project.toml benign metadata fixes: julia compat already 1.10 (LTS floor);
  add missing [compat] entries for every [extras] dep (NonlinearSolve, the
  OrdinaryDiffEq sublibraries, Pkg, StableRNGs, Test).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Add Pkg to test/qa env [deps] for QA group

The QA sub-environment (test/qa) is activated by the grouped-tests QA
dispatch, and the QA harness uses Pkg (Pkg.activate/Pkg.instantiate);
declare Pkg in test/qa [deps] so it resolves under the isolated QA env.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* QA: mark genuine Aqua/JET findings @test_broken so QA group is green

Aqua.test_all and JET.test_package surface real findings on this stack.
Keep the passing Aqua sub-checks (unbound_args, project_extras,
persistent_tasks) running and mark each failing check @test_broken so the
QA CI group passes; tracked at #574.

Aqua: ambiguities (48), undefined_exports (grid_align), stale_deps
(OrdinaryDiffEq), deps_compat (LinearAlgebra missing compat),
piracies (PDEBase boundary call ops). JET: 10 possible errors.

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>
…eme) (#562)

* test: add comprehensive non-uniform grid tests for UpwindScheme

* Add test verifying Periodic BC throws AssertionError on non-uniform Upwind

* test: resolve OrdinaryDiffEq v7 imports, anchor nonuniform grids, and add to CI matrix
Formatting-only changes produced by running Runic (v1.7.0, matching CI's
runic-action@v1 / SciML runic.yml@v1 with default settings) over all
git-tracked .jl files. No semantic/code changes.

Co-authored-by: Chris Rackauckas (Claude) <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Restructure test/ into per-group folders (folder name == test_groups.toml
group key) and replace the hand-written GROUP dispatch ladder in
test/runtests.jl with a single SciMLTesting.run_tests call.

Because this repo has no Core group and its "All" runs three groups
(Brusselator, Nonlinlap_ADV, MOL_Interface2) that are dispatched but not
declared in test_groups.toml, the bare folder-discovery form cannot express
the layout (it mandates a non-empty Core and derives "All" purely from
test_groups.toml). The conversion therefore uses the v1.2 explicit-args form
over the new folder layout, with a no-op core (master had no Core branch, so
GROUP=Core runs nothing) and a curated `all` listing exactly the 22 functional
groups master's "All" runs (QA excluded, as on master). Every other GROUP value
maps to the single @safetestset-included file(s) it ran before.

Files never referenced by the dispatcher (finite_diff_schemes.jl,
function_scheme.jl, brusselator_codegen.jl, MOL_1D_Interface_Nonlinear.jl)
move to test/shared/ so they are not auto-discovered and never run (matching
master, where they were dead).

Add SciMLTesting to the root test deps + compat and to test/qa/Project.toml
(plus SafeTestsets there); drop Pkg from the root test deps + compat (no
root-level test file uses Pkg; the v1.2 harness owns all Pkg operations).
test/qa/qa.jl and test/test_groups.toml are unchanged.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…vation (#577)

The QA group on master errors with `ArgumentError: Package Pkg not found
in current path` at test/qa/qa.jl:1. SciMLTesting v1.2 runs the qa body
inside a `@safetestset` (a fresh module evaluated in the root test
environment). The qa.jl carried the legacy self-activation preamble
`using Pkg; Pkg.activate(@__DIR__); Pkg.instantiate()`, but `Pkg` is not a
dependency of the root test target, so `using Pkg` fails before activation
can run.

Under the SciMLTesting v1.2 folder model, env activation for a group is
the harness's job: pass `qa = (; env = ".../qa", body = ".../qa.jl")` so
`run_tests` calls `activate_group_env` (Pkg.activate + Pkg.develop the
package + Pkg.instantiate) before evaluating the body, and drop the manual
preamble from qa.jl — matching the convention in Integrals.jl/HighDimPDE.jl.

Verified locally on Julia 1.12 with `GROUP=QA Pkg.test(...)`:
  QA | Pass 3  Broken 6  Total 9 — Testing MethodOfLines tests passed.

Co-authored-by: ChrisRackauckas-Claude <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat: implement zero-overhead dispatch architecture for non-uniform grids

* feat(weno): implement zero-allocation dx-based dispatch architecture for non-uniform grids
* feat: implement direct derivative non-uniform WENO-5 core with exactness and allocation tests

* Fix 16-byte allocation on Julia LTS for non-uniform WENO

* test: fix allocation artifacts and apply strict Runic formatting to WENO core

* test: introduce specialized function barrier to strictly measure zero-allocation on LTS

* docs: streamline comments and enforce strict literature citations in WENO core

* Move weno_nonuniform include to top-level MethodOfLines.jl

* fix: update dispatch test

* fix: remove include for now

* fix: top-level include sequence for nonuniform weno passing local CI
* QA: run_qa v1.6 form + ExplicitImports

Convert the hand-rolled test/qa/qa.jl (manual Aqua sub-checks + JET
@test_broken markers) to the SciMLTesting 1.6 run_qa form with
ExplicitImports enabled.

- run_qa(MethodOfLines; explicit_imports = true, ...) replaces the manual
  Aqua.test_* / JET @test_broken body.
- Aqua: the five genuine findings from #574 (ambiguities, undefined_exports,
  stale_deps, deps_compat, piracies) are preserved as aqua_broken; the
  passing sub-checks run via Aqua.test_all.
- JET: the 10 errors previously tracked in #574 no longer reproduce on the
  current ModelingToolkit 11 / SciMLBase 3 stack (report_package returns no
  reports), so JET.test_package now runs as a hard check (un-broken).
- ExplicitImports:
  - no_stale_explicit_imports: FIXED by removing 9 genuinely-unused explicit
    imports (variable, parameters, varmap_to_vars, setname, rename,
    cardinalize_eqs!, make_pdesys_compatible, parse_bcs, generate_system).
  - no_implicit_imports: ~80 names reach the module via heavy `using <BigDep>`;
    making them explicit is a large risky refactor, kept ei_broken pending #574.
  - the owners / public checks pass with per-check ignore-lists for other
    packages' non-public / re-exported names (PDEBase, Symbolics,
    ModelingToolkit(Base), SciMLBase, IfElse, RuntimeGeneratedFunctions, Base).

test/qa/Project.toml: SciMLTesting compat -> "1.6"; drop Aqua/SafeTestsets/Pkg
(Aqua/ExplicitImports come transitively via SciMLTesting, and the ambiguities
sub-check that needs Aqua as a direct dep is disabled here).

Verified locally on Julia 1.10 against released SciMLTesting 1.6.0: QA group
9 Pass, 6 Broken, 0 Fail, 0 Error.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* QA: keep JET broken on Julia 1.11/1.12 (jet_broken = true)

The v1.6 conversion un-broke JET on the basis that report_package returned
no reports, but that was observed on Julia 1.10. On the CI `julia 1` lane
(1.11/1.12) JET still finds the same possible errors tracked in #574:
DiscreteSpace getproperty `.time`/`.ps` FieldErrors reached via ivs/params,
`MethodOfLines.otherderivmaps` not defined, and a possibly-undefined
`f_analytic` in MOL_discretization.jl. Restore jet_broken = true so the
check is report-only (it auto-flags an Unexpected Pass once JET is clean),
matching the original test/qa/qa.jl `@test_broken` for JET.

Verified locally on Julia 1.12 against released SciMLTesting 1.6.0 (JET
0.11.5, ModelingToolkit 11.28, SciMLBase 3.22): QA group 8 Pass, 7 Broken,
0 Fail, 0 Error (was 8 Pass, 1 Fail, 6 Broken).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* QA: trim public-API EI ignores to minimal set (SciMLTesting 1.7 + released base libs)

SciMLTesting 1.7.0 now runs check_all_qualified_accesses_are_public /
check_all_explicit_imports_are_public only on Julia >= 1.11 (skipped on lts),
and the base libs have made many former internals public (SciMLBase 3.24.0,
Symbolics 7.29.0, SymbolicUtils 4.36.0, ModelingToolkit 11.29.0,
ArrayInterface 7.26.0, CommonSolve 0.2.9). The two public-API ignore-lists in
the QA call are therefore largely redundant.

Removed 11 now-public entries (verified on Julia 1.12 against the registered
releases; the names below are no longer flagged):
  all_explicit_imports_are_public:   unwrap (Symbolics);
                                     get_bcs/get_dvs/get_eqs/get_ivs/get_unknowns
                                     (ModelingToolkit, now handled via_owners)
  all_qualified_accesses_are_public: @propagate_inbounds, OneTo (Base);
                                     init (RuntimeGeneratedFunctions);
                                     unwrap, variable (Symbolics)

Kept only the names the public checks still flag as non-public on Julia 1.12:
PDEBase internals (not yet made public), SciMLBase
AbstractDiscretizationMetadata/AbstractODESolution/AbstractPDESolution/PDESolution/observed,
Base AbstractCartesianIndex, ModelingToolkit ProblemTypeCtx, IfElse ifelse,
Symbolics diff2term.

via_owners ignores, aqua_broken, jet_broken, and ei_broken (no_implicit_imports)
are unchanged. Verified: Julia 1.12 QA group = 8 pass / 7 broken / 0 error;
Julia 1.10 (lts) unchanged by this edit (the two public-API checks are skipped
there by SciMLTesting 1.7).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* QA: verify public-API EI ignores against released libs; fix QA(lts) JET

Verified the public-API ExplicitImports ignore-lists against the now-released
SciMLBase 3.27.0 / DiffEqBase 7.6.0 / SciMLTesting 1.7.0 / Symbolics 7.29.0 /
SymbolicUtils 4.36.0 / ModelingToolkit 11.29.0 / PDEBase 0.1.26 (Julia 1.12, no
dev). Every name still flagged by the public checks is genuinely non-public in
its owner package (confirmed via Base.ispublic and the EI checks run with the
lists emptied): SciMLBase AbstractDiscretizationMetadata/AbstractODESolution/
AbstractPDESolution/PDESolution/observed are NOT among the 3.27.0 made-public
names, so they stay; likewise the PDEBase internals, IfElse.ifelse,
Symbolics.diff2term, ModelingToolkit.ProblemTypeCtx, Base.AbstractCartesianIndex.
No DiffEqBase.X -> SciMLBase.X caller migration applies (the source uses
whole-module `using` and `SciMLBase.X` qualified accesses already; no
DiffEqBase-qualified SciMLBase-owned names exist). The two *_are_public lists are
therefore already at their minimal/correct state.

Bump test/qa SciMLTesting floor 1.6 -> 1.7 to guarantee the >=1.11 public-API
gating (1.6 lacks it; resolving it on the LTS lane would run the public checks
on 1.10 and fail).

Gate jet_broken to VERSION >= v"1.11": JET (0.9.18) is clean on the LTS (1.10)
lane, so `jet_broken = true` produced an Unexpected Pass hard error on QA(lts);
JET still reports on 1.11/1.12 where it stays broken. JET now runs as a real
passing test on 1.10. Not a silencing: it un-broken-marks JET where it is clean.

Verified: QA group EXIT=0 on Julia 1.12 (8 pass, 7 broken, public checks RUN)
and Julia 1.10 (7 pass, 6 broken, public checks gated off), 0 hard FAIL on both.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test: trigger CI on clean master to verify upstream breakage

* feat: implement direct derivative non-uniform WENO-5 core with exactness and allocation tests

* Move weno_nonuniform include to top-level MethodOfLines.jl

* fix: remove include for now

* fix: top-level include sequence for nonuniform weno passing local CI

* feat(WENO): implement asymmetric boundary conditions via Val dispatch

* test(WENO): add extreme grid stretching

* docs(WENO): update docstrings and condense comments

* refactor(WENO): optimize asymmetric boundary weights to factored closed-forms for numerical stability and performance
* test: trigger CI on clean master to verify upstream breakage

* feat: implement direct derivative non-uniform WENO-5 core with exactness and allocation tests

* Move weno_nonuniform include to top-level MethodOfLines.jl

* fix: remove include for now

* fix: top-level include sequence for nonuniform weno passing local CI

* feat(WENO): integrate non-uniform grids

* fix: address architectural edge cases and missing runtime test

* test: implement genuine discretizer execution coverage and finalize PR polish

* test: integration tests to extent dispatch and callable wiring
…ompatibility (#584)

* fix(discretization): fold symbolic initial conditions to satisfy strict MTK v1.45 API

* Refactor initial condition handling in generate_ic_defaults

Refactor the handling of initial conditions to ensure proper folding of symbolic expressions.
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.