Skip to content

Adopt SciMLTesting 2.4 strict QA - #4832

Draft
ChrisRackauckas-Claude wants to merge 7 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/scimltesting-v24-strict-qa
Draft

Adopt SciMLTesting 2.4 strict QA#4832
ChrisRackauckas-Claude wants to merge 7 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/scimltesting-v24-strict-qa

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Summary

  • require SciMLTesting 2.4 in root and QA environments
  • remove repository-local [sources] paths and QA suppressions
  • enable doctests and exported API documentation checks
  • move owned API documentation to definition sites

Verification

  • git diff --check passed
  • Runic formatted every changed Julia file
  • strict QA currently exposes non-public imports, blanket reexports, and a pre-existing Aqua piracy report; no ignores, skips, or weakened settings were added
  • package tests and strict docs are still running in local isolated depots

Required follow-up

The strict failures need public-API owner changes (especially Symbolics/SymbolicUtils and the ModelingToolkitBase/StateSelection boundaries) plus an explicit, SemVer-major replacement for blanket reexports. They are intentionally not waived here.

Ignore until reviewed by @ChrisRackauckas.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Strict-QA audit note (2026-07-30):

  • The remaining 481 root public reexports originate in the documented @reexport using Symbolics, UnPack, ModelingToolkitBase, and StructuralTransformations façades. Removing the Symbolics façade is a documented-interface decision (using ModelingToolkit is documented to reexport Symbolics), not an undocumented-reexport cleanup. This PR therefore does not add reexports_allow or weaken the check.
  • ExplicitImports reports names owned but not public in Symbolics/SymbolicUtils, SciMLBase, ModelingToolkitTearing, OffsetArrays, and Base. These need owner-side public contracts or local replacements; they are not suppressed here. The ModelingToolkitBase-to-root imports additionally need an explicit developer-API boundary.
  • Aqua reports extensions owned by SciMLBase/ModelingToolkitBase/StateSelection. Resolving those requires owner-defined extension points rather than an Aqua exception.
  • I corrected remaining package-owned Shift and Sample doctest expectations and am validating the full docs build with doctests enabled.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Follow-up validation:

  • JULIA_DEPOT_PATH=.docs-remediation-depot julia +1.12 --project=docs docs/make.jl executed doctests, then failed strict Documenter checks. The corrected Shift and Sample doctests passed; the build proceeded through example execution and cross-reference checks.
  • Remaining strict-docs work is substantial and pre-existing: stale/unqualified @docs blocks (including external BipartiteGraphs/SciMLBase/Symbolics references), 43 local docstrings missing canonical manual entries, unresolved cross-references, and dynamic-optimization examples with @variables ambiguity after JuMP/InfiniteOpt loading. A file://.../atomic_array_dict.jl source link is also being linkchecked. None has been downgraded to warnonly or disabled.
  • Focused verified commit pushed: 90c168ed09 (Fix discrete operator doctest outputs). Local Runic and git diff --check pass. CI has started; PR remains draft and currently has an unstable merge state while checks run.

ChrisRackauckas and others added 7 commits August 5, 2026 06:32
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Rewriting the deprecated system aliases from `@deprecate` to hand-written
`Base.depwarn` functions dropped their exports: `@deprecate` exports the
deprecated name by default, a plain function definition does not.
`NonlinearSystem` and `ODESystem` survived only because they are listed
explicitly; `DiscreteSystem` and `ImplicitDiscreteSystem` were not, so both
became unreachable and `sciml_problem_inputs.jl` failed with `UndefVarError`.

Comparing `names(ModelingToolkitBase)` and `names(ModelingToolkit)` against
master shows these two were the only names lost and none were gained; with this
change both lists match master exactly.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ywCW8vbGoc9X3dUbmXyme
Rewriting the independent-variable docs to attach directly to `const t_nounits`
and `const D_nounits` dropped the separate `@doc` blocks that documented the
unitful `t` and `D`. Those are distinct bindings — the DynamicQuantities
sentinels declared in `unit_check.jl` — not aliases of the `_nounits` pair, so
documenting the latter did not cover them. Both remain `@public`, which left two
public names with no docstring and failed the api-docs check.

Document them at their definition site. This takes the undocumented public API
from 11 names to 9; the remainder are the Symbolics-owned reexports this branch
intentionally stops waiving.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019ywCW8vbGoc9X3dUbmXyme
@ChrisRackauckas-Claude
ChrisRackauckas-Claude force-pushed the agent/scimltesting-v24-strict-qa branch from 770c7da to 51d0232 Compare August 5, 2026 10:56
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.

3 participants