Fix QA group (Symbolics JET false positives + trans_sin eqs/bc typos) and Runic-format qa.jl#60
Merged
ChrisRackauckas merged 3 commits intoJun 19, 2026
Conversation
The QA scaffolding added in SciML#58 introduced test/qa/qa.jl, which was not Runic-formatted, so the Runic format check on master is red. Apply Runic to wrap the run_qa call to satisfy the formatter. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Aqua's deps_compat (Compat bounds) QA check flagged that the direct dependency Random had no [compat] entry. Stdlib deps still need an explicit compat bound for Aqua to pass. Adds Random = "1". Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…olics false positives
The QA group failed with 16 JET 'no matching method found' reports under
basic-mode analysis (target_defined_modules=true).
Two were genuine source bugs in trans_sin() (lib/linear_convection.jl):
- the PDESystem was built from an undefined `eqs` (should be `eq`), which
JET flagged as an undefined-global; and
- a boundary condition was `(t, 2π) ~ ...` instead of `u(t, 2π) ~ ...`
(missing the dependent variable).
Both are fixed.
The remaining 15 reports are dependency-inference false positives:
`Symbolics.wrap` (used by `@variables`/`@parameters`) has a union return type
that JET widens to include the callable wrapper `Symbolics.CallAndWrap`
(only ever produced at runtime by `@variables u(..)`, never by scalar vars),
so basic mode reports spurious union-split method errors for +/-/*/cos/sin on
scalars that are always `Num`. JET's :typo mode (the SciMLTesting run_qa default)
does not run method-error analysis but still catches real undefined-name typos,
so the QA JET call is switched to `(; target_modules = (PDESystemLibrary,), mode = :typo)`.
Verified on Julia 1.12.6: report_package basic=15 (all CallAndWrap), typo=0;
full QA group 'Quality Assurance | 12 12' all pass.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What
Make the QA test group green by fixing the real failures, and Runic-format
test/qa/qa.jl.1. Runic format (original scope)
test/qa/qa.jl(added in #58) was not Runic-formatted, so the Runic / Runic Format Check onmasterwas red. Applying the formatter turns that check green.2. QA group (Aqua + JET) — now fixed
The Tests - QA job failed with 16 JET
no matching method foundreports under basic-mode analysis (target_defined_modules = true). These split into:trans_sin()(lib/linear_convection.jl), both fixed:PDESystemwas constructed from an undefinedeqs(the equation is namedeq) — JET caught this as an undefined-global; and(t, 2π) ~ u_exact(t, 2π)instead ofu(t, 2π) ~ u_exact(t, 2π)(the dependent variableuwas missing).Symbolics.wrap(used by@variables/@parameters) has a union return type that JET widens to include the callable wrapperSymbolics.CallAndWrap— a type only produced at runtime by@variables u(..), never by scalar variables. Basic-mode analysis therefore emits spurious+/-/*/cos/sinunion-split method errors on scalar variables that are alwaysNumat runtime (the library's Core tests pass, confirming the code runs). The QA JET call is switched to(; target_modules = (PDESystemLibrary,), mode = :typo)— theSciMLTesting.run_qadefault.:typomode does not run method-error analysis (so theCallAndWrapfalse positives disappear) but still catches real undefined-name typos (so theeqsbug is still guarded against).The missing
Random[compat]entry (Aqua deps_compat finding) was already added in the prior commit on this branch.Local verification (Julia 1.12.6)
(The basic-mode count dropped from 16 to 15 because the
eqs→eqfix removed the one real undefined-global report; the remaining 15 are all theCallAndWrapfalse positives.)Please ignore until reviewed by @ChrisRackauckas.