Drop KrylovPreconditioners from Core tests#1097
Merged
ChrisRackauckas merged 1 commit intoJul 20, 2026
Merged
Conversation
Use a public LinearAlgebra diagonal inverse in the existing preconditioner and reuse tests so downgrade resolution no longer needs a package-specific exception. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Member
Author
|
CI triage: the downgrade job passed. The three failing jobs are exact clean-base failures from base SHA |
ChrisRackauckas
marked this pull request as ready for review
July 20, 2026 06:44
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.
Please ignore this PR until it has been reviewed by @ChrisRackauckas.
Summary
BlockJacobiPreconditionerused by the Core tests with a public-APILinearAlgebrainverse diagonal preconditioner.KrylovPreconditionerscompat, extra, target, and import entries.no_promoteoverride from the downgrade workflow.Root cause and impact
KrylovPreconditionerswas used indirectly through its exportedBlockJacobiPreconditionername, but its historical Arpack/LightGraphs dependency graph cannot be minimum-resolved with the rest of LinearSolve's test environment. PR #1091 worked around that resolver conflict by excluding the package from minimum promotion.The existing tests only require an inverse-like preconditioner to exercise the Krylov wrapper.
Diagonal(inv.(diag(A)))provides that behavior using publicLinearAlgebraAPIs. The GMRES and FGMRES preconditioned cases retainldiv = false, so the inverse-preconditioner multiplication path remains covered. The(M, I)tuple continues to cover a nontrivial left preconditioner and identity right preconditioner, and the existing counting factory still verifiesreuse_precs = truewithout rebuilding the preconditioner.This changes only test infrastructure and downgrade coverage; it does not change LinearSolve's runtime dependencies or public API.
Process
The requested task was to replace the downgrade promotion exception with a focused dependency fix without skipping or weakening tests. I reviewed current
main, #1091, and the history that introduced the preconditioner tests. That review showed the dependency was used indirectly through an exported symbol, so I preserved the solver and reuse coverage with the documented stdlib preconditioner interface instead of deleting those cases. I then ran the exact downgrade resolver, locked downgrade and current Core suites, formatting, workflow, TOML, and diff checks before committing.Local validation
julia-actions/julia-downgrade-compatv2.6.1 resolver indepsmode with the reusable workflow's default Mooncake exclusion. Resolution completed successfully, and the resulting manifest did not containKrylovPreconditioners.Pkg.build()against the downgraded manifest successfully.GROUP=Coreon Julia 1.10 withforce_latest_compatible_version = falseandallow_reresolve = false: the full Core suite passed; Basic Tests passed 590/590.GROUP=Corecommand: the full Core suite passed; Basic Tests passed 590/590.actionlint .github/workflows/Downgrade.yml, parsed and checked theProject.tomltest target declarations, and rangit diff --check; all passed.Prior art
This replaces the package-specific workaround merged in #1091 with a dependency-level fix while preserving the affected preconditioner behavior tests.