Skip to content

Fix QA group (Symbolics JET false positives + trans_sin eqs/bc typos) and Runic-format qa.jl#60

Merged
ChrisRackauckas merged 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:runic-format-qa-jl
Jun 19, 2026
Merged

Fix QA group (Symbolics JET false positives + trans_sin eqs/bc typos) and Runic-format qa.jl#60
ChrisRackauckas merged 3 commits into
SciML:masterfrom
ChrisRackauckas-Claude:runic-format-qa-jl

Conversation

@ChrisRackauckas-Claude

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

Copy link
Copy Markdown
Contributor

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 on master was 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 found reports under basic-mode analysis (target_defined_modules = true). These split into:

  • Two genuine source bugs in trans_sin() (lib/linear_convection.jl), both fixed:
    • the PDESystem was constructed from an undefined eqs (the equation is named eq) — JET caught this as an undefined-global; and
    • a boundary condition was (t, 2π) ~ u_exact(t, 2π) instead of u(t, 2π) ~ u_exact(t, 2π) (the dependent variable u was missing).
  • Fifteen 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 — a type only produced at runtime by @variables u(..), never by scalar variables. Basic-mode analysis therefore emits spurious +/-/*/cos/sin union-split method errors on scalar variables that are always Num at runtime (the library's Core tests pass, confirming the code runs). The QA JET call is switched to (; target_modules = (PDESystemLibrary,), mode = :typo) — the SciMLTesting.run_qa default. :typo mode does not run method-error analysis (so the CallAndWrap false positives disappear) but still catches real undefined-name typos (so the eqs bug 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)

JET.report_package(PDESystemLibrary; target_defined_modules = true)  =>  15 reports (all Symbolics.CallAndWrap union-split)
JET.report_package(PDESystemLibrary; target_modules = (PDESystemLibrary,), mode = :typo)  =>  0 reports

$ julia +1.12 --project=test/qa test/qa/qa.jl
Test Summary:     | Pass  Total     Time
Quality Assurance |   12     12  2m21.8s

(The basic-mode count dropped from 16 to 15 because the eqseq fix removed the one real undefined-global report; the remaining 15 are all the CallAndWrap false positives.)

Please ignore until reviewed by @ChrisRackauckas.

ChrisRackauckas and others added 3 commits June 15, 2026 10:30
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>
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title Runic-format test/qa/qa.jl (fix master Runic check) Fix QA group (Symbolics JET false positives + trans_sin eqs/bc typos) and Runic-format qa.jl Jun 16, 2026
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 19, 2026 08:23
@ChrisRackauckas ChrisRackauckas merged commit 6d01532 into SciML:master Jun 19, 2026
9 of 10 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