Skip to content

Approve intentional NonlinearSolve umbrella reexports#1102

Closed
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-qa-reexports
Closed

Approve intentional NonlinearSolve umbrella reexports#1102
ChrisRackauckas-Claude wants to merge 2 commits into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-qa-reexports

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jul 22, 2026

Copy link
Copy Markdown
Member

Ignore this PR until reviewed by @ChrisRackauckas.

Summary

  • keep SciMLTesting public-reexport QA enabled
  • allow the APIs deliberately reexported by the NonlinearSolve umbrella and NonlinearSolveQuasiNewton facade
  • derive each allowlist from the public APIs of its explicit @reexport owner modules, so unrelated accidental reexports still fail QA

Root cause

SciMLTesting 2.4.0 enabled check_reexports by default. NonlinearSolve and NonlinearSolveQuasiNewton already computed partial allowlists for external APIs in rendered-doc QA, but did not pass complete facade allowlists to the new check. Clean master therefore reported 393 root reexports and 211 QuasiNewton reexports as unapproved.

On the same clean master and Julia 1.12.6, pinning SciMLTesting 2.3.0 passes 18/18 root QA checks; SciMLTesting 2.4.0 fails only the new reexport check. The default-on change is SciMLTesting commit 2881f4c15fb715f0934009a800d42765751587b1.

Local verification

  • root GROUP=QA julia +1.12 --project=. -e "using Pkg; Pkg.test()" with SciMLTesting 2.4.0: 19/19 passed
  • NonlinearSolveQuasiNewton GROUP=QA julia +1.12 --project=. -e "using Pkg; Pkg.test()": 20/20 passed
  • Runic 1.7.0 over the full repository: passed
  • git diff --check: passed

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Investigation note for commit 6ce385b3d:

  • Clean-master failure reproduced from Actions run 29902380036 / job 88866081514 and locally on e18f6830e.
  • The same unrelated failure also appears in job 88976448993. Both report exactly 393 unapproved public reexports before configuration.
  • Dependency bisect on the same source: SciMLTesting 2.3.0 gives QA | 18 passed; SciMLTesting 2.4.0 gives 18 passed, 1 failed, solely No unapproved public reexports.
  • SciMLTesting history narrows the behavior change to 2881f4c15fb715f0934009a800d42765751587b1 (default check_reexports = false to true; ultimately registered as 2.4.0).
  • A partial external-only allowlist was deliberately tested and still failed on 64 solver/sublibrary facade names. The committed allowlist mirrors every owner module named by the root @reexport statements and passes all 19 current QA checks, leaving the audit enabled for names from any other owner.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI verification: the dedicated tests / QA (julia 1, ubuntu-latest) job 88986403314 completed successfully. Its log reports QA | 19 passed / 19 total and NonlinearSolve tests passed. This is the exact check that fails 18/1 on clean master.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

Follow-up commit a2d6a5674 covers the same default-on audit in NonlinearSolveQuasiNewton without disabling it.

Evidence:

  • Clean master e18f6830e, Julia 1.12.6, SciMLTesting 2.4.0: QA | 19 pass, 1 fail; the sole failure is 211 unapproved reexports. This matches Stabilize unglobalized bad Broyden steps #1101 job 89002058809.
  • The facade source explicitly has @reexport using SciMLBase, NonlinearSolveBase; the new allowlist is derived only from those two owners.
  • Patched local QuasiNewton QA: 20 passed / 20 total; NonlinearSolveQuasiNewton tests passed.
  • Full-repository Runic 1.7.0 and git diff --check: passed.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI verification for a2d6a5674: sublibraries / lib/NonlinearSolveQuasiNewton [QA] / Julia 1 job 89018282756 completed successfully. Its log reports QA | 20 passed / 20 total and NonlinearSolveQuasiNewton tests passed.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 26, 2026 12:40
@ChrisRackauckas

Copy link
Copy Markdown
Member

Superseded: master already carries the equivalent NONLINEARSOLVE_ALLOWED_REEXPORTS allow-list (landed via #1112), and the QuasiNewton sublibrary QA is green on master without an explicit reexports_allow. Closing as no longer needed.

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