Repository navigation
Fix QA: explicit imports, OUQBase docs, approved reexports - #57
Merged
ChrisRackauckas merged 10 commits intoOct 3, 2026
Merged
Conversation
The precompile workload uses the macro by name; ExplicitImports flags that as an implicit import even though @reexport already exports it. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
SciMLTesting requires every public name to have a docstring at its owning module and an entry under docs/src; the umbrella reexports inherit those docs. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
The umbrella and sublibraries deliberately reexport owned APIs; list those names in reexports_allow so SciMLTesting does not treat them as leakage. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
reexports_allow requires SciMLTesting ≥2; the previous =1.7 floor resolved 1.8.0 and aborted both sublibrary QA lanes with MethodError. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
SciMLTesting 2 requires docstrings for the exported quadratic root helpers and flags Base.denominator/numerator as public reexports of the Stieltjes API. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
ExplicitImports requires importing Operator from its owning module. The pre-existing promote_symtype ambiguity stays tracked under issue SciML#54. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
No QA opt-outs: leave the promote_symtype ambiguity check running; it is pre-existing and fixed at the root in PR SciML#59. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
Each form loses precision on one root when b^2 >> |4ac|; none is uniformly more stable. Document that fagnano_mod is NaN for b == 0, and drop the unverified Golub-Welsch wording on StengerCanonicalMoments. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
The scalar Independent form splices bound AST without evaluating caller bindings, so named (lo, hi) stored (:lo, :hi). Fix the docstring example, state the restriction, and assert getbounds on the documented literals. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Cursor Agent <noreply@cursor.com> Agent-Harness: Cursor Agent CLI 2026.09.26-dd393fe Agent-Model: auto Agent-Session: local session, transcript at /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
ChrisRackauckas
marked this pull request as ready for review
October 3, 2026 13:31
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.
Summary
Makes the umbrella and sublibrary
GROUP=QAlanes green for the issue #55 findings (implicit imports, undocumented public API, unapproved reexports) without QA opt-outs: SciMLTesting 2 in QA envs, explicit@random_variablesimport, real docstrings/docs, and intendedreexports_allowlists. Round-2 corrected false quadratic stability claims. Round-3 fixes the@random_variablesscalar-bounds docstring example (literals only; macro unchanged) and asserts the documented bounds.What changed and why
SciMLTesting failed on main with an implicit import of
@random_variables, missing docstrings on the reexported public API, and unapproved public reexports. This PR bumps QA envs to SciMLTesting 2, documents the public API, and approves intentional reexports. Aqua ambiguities stay unmodified (0 broken); root fix is #59.Round-3: the scalar docstring example used
bounds = (lo, hi), which the existing macro splices as AST literals and stores as(:lo, :hi). The example now uses numeric literals, the docstring states that the scalar form requires literal bounds (the multivariable form evaluates expressions), and tests assertgetboundson the documented example.Risk assessment
@random_variablesdocstring wording; new QA assertions only. Runtime macro unchanged. Nopromote_symtypechanges.Pre-existing OUQBase ambiguity (not fixed here; fixed by #59)
Aqua still reports
promote_symtypeambiguities for𝔼_/ℙ_. This PR leaves the check unmodified (0 broken). OUQBase QA / Core stay red until #59 lands; the umbrellaCI / QAlane targeted by #55 is green.Docstring examples run (only runnable example we added)
Other new docstrings are signature/prose only (no executable snippets). The sole executable example is
@random_variables:Observed (
scratch/docstring_examples_r4.txt):Documented scalar pitfall (named bindings are not evaluated):
Verification
After (local, head
a53d56e)CanonicalMoments QA:
Quality Assurance | 21 21— passed.OUQBase QA — expected fail on pre-existing ambiguity:
Umbrella QA (
GROUP=QA):(includes the new
@random_variables scalar bounds are numeric literalstestset)Docs (
julia --project=docs docs/make.jl): exit 0; existingwarnonlyreports 56 docstrings not in the manual; local deploy skipped.What I did NOT verify
What a reviewer should push back on
Closes #55
Please ignore this draft until reviewed by @ChrisRackauckas.
Harness: Cursor Agent CLI 2026.09.26-dd393fe; model: auto; transcript: /home/crackauc/sandbox/agent-jobs/OptimalUncertaintyQuantification.jl/jobs/55-cursor/log.txt on amdci2.julia.csail.mit.edu
Risk assessment
OUQBase.getboundsbinding; existing dependency-internal QA exemptions remain.a53d56ehas five failures, all pre-existing:sublibraries / lib/OUQBase / Julia lts / Tests - Core (Julia lts),sublibraries / lib/OUQBase / Julia 1 / Tests - Core (Julia 1), andsublibraries / lib/OUQBase [QA] / Julia 1 / Tests - QA (Julia 1)reproduce the samepromote_symtypeambiguities on default-branch commitacadcec(head, baseline); newer default-branch runs skipped these jobs.Downgrade Sublibraries / test (lib/OUQBase)andDowngrade Sublibraries / test (lib/DiscreteMeasures)reproduce, respectively, that ambiguity and unsupported intervalintersecterrors on latestmain,013f14a(head, baseline). No test regressions found. No assertions were removed, skipped, or loosened; reexport allow-lists exempt specified existing exports from leakage checks. GitHub has no submitted reviews or review comments.OUQBase.getbounds; disclose both downgrade failures and retained dependency-internal exemptions; reconcile the description’s merge prerequisite with still-open Fix OUQBase 𝔼/ℙ SymbolicUtils Operator ambiguity (separate from #54 floor) #59).🤖 Risk assessment posted by an AI agent (fleet master) — harness: Codex CLI 0.156.1 (Mac) / gpt-6-astra; dispatched by Claude Code head, model claude-opus-5-5[1m]
Conversation: local Claude Code session 3cd6500a-1f81-46b5-ac0b-c466e15b6a53 on Chris's Mac (session ID, no URL)