Repository navigation
Drop RandomizedLinAlg (REQUIRE-only release breaks Aqua persistent-tasks) and implement RSVD locally - #212
Merged
ChrisRackauckas merged 1 commit intoOct 16, 2026
Conversation
RandomizedLinAlg's only release (v0.1.0) ships a REQUIRE file and no Project.toml. Aqua >= 0.8.17 builds the persistent-tasks wrapper manifest from each dependency's Project.toml and errors on it, which turns the QA group red (JuliaTesting/Aqua.jl#404). RSVD now uses a local implementation of the same algorithm (Halko et al. 2011, Algorithms 4.1 and 5.1). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Devin <noreply@cognition.ai> Agent-Harness: Devin CLI 3000.11.92 Agent-Model: fusion-claude-opus-5-5-high-sidekick-swe-2-medium Agent-Session: local headless Devin run (fleet master green lane; no session URL)
ChrisRackauckas
marked this pull request as ready for review
October 16, 2026 00:39
Merged
ChrisRackauckas
referenced
this pull request
Oct 16, 2026
Agent-Harness: Claude Code 2.1.301 Agent-Model: claude-opus-5-5 Claude-Session: https://claude.ai/code/session_01VZjwf7Ux9YtTzwHGHMqnsq Co-authored-by: Claude Opus 5.5 <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.
This fixes a failure on the default branch's CI. The diagnosis and the evidence below come from the investigating agent's report; "confirmed by running" and "read in logs" are kept apart there.
Failure 1: QA (Julia 1), Aqua "Persistent tasks" fails with
Unable to locate Project.toml in .../RandomizedLinAlg/t4i9MError (read in logs)
Julia 1.13.2, Aqua v0.8.18, SciMLTesting v2.13.2, RandomizedLinAlg v0.1.0. All Core jobs (lts, 1, pre, x86) pass. The QA group fails only on this check.
jet-0.12)Cause: upstream (Aqua 0.8.17+ combined with a REQUIRE-only dependency)
test_persistent_tasksrespect the environment") addedmanifest_entries. It builds the wrapper manifest by reading every dependency's Project.toml, and it callserrorwhen one is missing. v0.8.18 keeps that behaviour. I read this inAqua/yUvBM/src/persistent_tasks.jl.REQUIREand noProject.toml. I confirmed this by listing~/.julia/packages/RandomizedLinAlg/t4i9M. Upstream master has a Project.toml but was never tagged. RandomizedLinAlg issue Proper Orthogonal Decomposition (POD) method #18, which asks for a release, has been open since 2026-10-05 with no response, and the repo has not been pushed since 2023.Testsrun was on 2026-09-16 (https://github.com/SciML/ModelOrderReduction.jl/actions/runs/35146247645), one day before Aqua 0.8.17 was released. There were no main Tests runs between that one and df48976.GROUP=QA julia +release --project -e 'using Pkg; Pkg.test()'reproduces the same error with Aqua v0.8.18 (20 passed, 1 errored).Existing PRs
None. The open PRs in SciML/ModelOrderReduction.jl are #149, #88 and #27, and none of them touches this. There is no fix PR in JuliaTesting/Aqua.jl or JuliaLinearAlgebra/RandomizedLinAlg.jl.
Fix
The package used only
RandomizedLinAlg.rsvd. The branch replaces it with a local implementation of the same algorithm (Halko, Martinsson & Tropp 2011, Algorithms 4.1 and 5.1: Gaussian range finder, QR, then the SVD ofQ'A). This removes the REQUIRE-only dependency. No public API changes and no new dependency:randnis exported by Base, andqr!/svd!come from LinearAlgebra, which is already a dependency. RandomizedLinAlg is MIT.Project.toml: RandomizedLinAlg removed from[deps]/[compat].src/DataReduction/POD.jl: local_rsvd(throwsArgumentErrorwhenn + pexceeds the row count, as before). Thereduce!(::RSVD)docstring Throws section is updated.src/ModelOrderReduction.jl: importsqr!andsvd!from LinearAlgebra.src/Types.jl: theRSVDdocstring no longer refers to RandomizedLinAlg.test/DataReduction.jlandtest/Project.toml(test-onlyRandom): new testset "POD - RSVD". For an exactly rank-3 40×25 matrix it checks that the RSVD spectrum matchessvdvals(rtol 1e-10), thatrbasis*rbasis'*A ≈ A, and that an oversizedn + pthrowsArgumentError. This tests the numerics of the replacement. It is not a test that fails before the fix. The test that fails before and passes after is the existing Aqua persistent-tasks check:Before (main df48976, log
scratch/qa_before.log):After (branch, Aqua v0.8.18, log
scratch/qa_after.log):Other checks I ran on the branch (Julia 1.13.2):
GROUP=Corepassed, all 8 files, DataReduction 18/18.docs/make.jlbuilt with doctests and only pre-existing warnings. Runic--checkandtyposare clean on the changed files. Not run locally: QA/Core on Julia lts (1.10) and the Downgrade workflow. I did check that barerandnresolves on 1.10.12.An alternative I did not take: cap
Aqua = "0.8, <0.8.17"intest/qa/Project.toml. That pins QA tooling to an old release and leaves the unmaintained, REQUIRE-only dependency in place.Links
manifest_entries: Maketest_persistent_tasksrespect the environment JuliaTesting/Aqua.jl#394Project.tomlJuliaLinearAlgebra/RandomizedLinAlg.jl#18🤖 Posted by an AI agent — harness: Devin CLI 3000.11.92 (fix), Claude Code 2.1.300 (PR) · model: fusion-claude-opus-5-5-high-sidekick-swe-2-medium / claude-opus-5-5
Conversation: https://claude.ai/code/session_01VZjwf7Ux9YtTzwHGHMqnsq (fleet master)
🤖 Generated with Claude Code
Independent review (added by the fleet master)
Risk assessment
🤖 Section added by an AI agent — harness: Claude Code 2.1.300 · model: claude-opus-5-5 (review by codex-cli 0.162.1, gpt-6.1-sol)
Conversation: https://claude.ai/code/session_01VZjwf7Ux9YtTzwHGHMqnsq