Skip to content

QA: mark the KLU JET assertion broken on the LTS, where Base logging is not inference-clean - #1193

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
AJ0070:fix/1190
Aug 10, 2026
Merged

QA: mark the KLU JET assertion broken on the LTS, where Base logging is not inference-clean#1193
ChrisRackauckas merged 1 commit into
SciML:mainfrom
AJ0070:fix/1190

Conversation

@AJ0070

@AJ0070 AJ0070 commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Fixes #1190.

Checklist

  • Appropriate tests were added
  • Any code changes were done in a way that does not break public API
  • All documentation related to code changes were updated
  • The new code follows the
    contributor guidelines, in particular the SciML Style Guide and
    COLPRAC.
  • Any new documentation only uses public API

Additional context

  • One line of test annotation, no source change. The KLU assertion at test/qa/jet.jl:136 becomes broken = VERSION < v"1.11".
  • Cause is in Base, not here. @SciMLMessage in the failure branches expands to Logging.@logmsg, and on 1.10 the Base.CoreLogging path it enters reaches Base.typejoin, which is itself a runtime dispatch on that version. Any solve that can emit a log therefore fails @test_opt on 1.10 no matter what LinearSolve does, and 1.11 carries the Base fix.
  • Reproduced independently before changing anything: report_opt on this solve gives 2 reports on 1.10.11 and 0 on 1.12.6.
  • The 1.10 reports name only typejoin, CoreLogging, _emit_log and SciMLLogging. None of them name getproperty or _extract!, which is what separates this from the KLU internals that JET: KLUFactorization solve is no longer dispatch-clean; getproperty self-recursion makes p, i, x, z = klu._L destructure a SparseMatrixCSC #1148 and KLU: extract factor parts through concrete helpers, not getproperty recursion #1163 fixed. This is not a regression of that work.
  • broken rather than a skip, so it registers an unexpected pass and gets removed if the assertion ever starts holding on the LTS.
  • Verified both directions rather than assuming the marker behaves: the assertion registers Pass on 1.12.6 and Broken on 1.10.11. That check matters because a marker that swallowed a real pass on 1.12 would quietly undo what KLU: extract factor parts through concrete helpers, not getproperty recursion #1163 established.
  • Full test/qa/jet.jl on 1.12.6 is green with zero failures, and the sparse testset reads 1 pass and 2 broken as expected. Runic is clean.
  • Note this is not currently a red CI check: the reusable workflow pins QA to QA_VERSIONS = ["1"], which overrides the ["lts", "1"] in test/test_groups.toml. It bites GROUP=QA runs on the LTS locally, and would become a CI failure if that list ever widened.

AI Disclosure: Used Opus 5

@ChrisRackauckas
ChrisRackauckas merged commit f85f66b into SciML:main Aug 10, 2026
57 of 62 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

2 participants