Fix OUQBase Symbolics 7 Core and QA failures - #50
Draft
ChrisRackauckas-Claude wants to merge 6 commits into
Draft
Conversation
Disambiguate promote_symtype for expectation/probability operators, recurse through operator calls when collecting random variables, bind Symbolics for the precompile workload, and cap SymbolicUtils below 4.46 until MTK loads cleanly with newer SymbolicUtils. Co-authored-by: Cursor <cursoragent@cursor.com>
IA 1.x rejects Base.intersect on intervals; Downgrade/main DiscreteMeasures tests hit ArgumentError on clamp_domain. Co-authored-by: Cursor <cursoragent@cursor.com>
…ests. IA 1.x empty intervals evaluate `∅_trv == ∅_trv` as false, so clamp_domain tests failed under both Sublibrary CI and Downgrade Sublibraries after switching to intersect_interval. Co-authored-by: Cursor <cursoragent@cursor.com>
Base isequal/== are inconclusive or false for decorated intervals in IA 1.x; isequal_interval is the supported comparison. Co-authored-by: Cursor <cursoragent@cursor.com>
Unwrap numeric constants produced by Symbolics 7 and evaluate probability inequalities through public symbolic substitution APIs. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: OpenAI Codex <noreply@openai.com> Agent-Harness: Codex CLI 0.151.0 Agent-Model: gpt-5.6-sol Agent-Session: local session ID 01a0598f-11b9-72d1-91d9-b2fbb186557d
Model OUQ operators locally, identify random variables behaviorally, and remove nonpublic Symbolics relation and evaluator accesses. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: OpenAI Codex <noreply@openai.com> Agent-Harness: Codex CLI 0.151.0 Agent-Model: gpt-5.6-sol Agent-Session: local session ID 01a0598f-11b9-72d1-91d9-b2fbb186557d
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.
Important
Please ignore this draft until it has been reviewed by @ChrisRackauckas.
What changed and why
This is stacked on the head of #48 (
e09e7f03cb487178af23237b66273102c94605d3). It fixes the OUQBase failures that remain after that PR: Symbolics 7 wraps numeric equation sides and rewritten exponents inBasicSymbolic, while OUQBase's raw-moment builder stores concrete numbers; OUQBase also relied on several Symbolics/SymbolicUtils implementation details that are not public API.The first commit unwraps numeric constants with public
Symbolics.value, evaluates inequalities with publicSymbolicUtils.substituteplus documentedInequalityfields, and adds moment and inclusive-boundary regressions. The second commit models the OUQ operator functors locally, identifies random variables from the admissible-set map, and removes the remaining nonpublicOperator,default_is_atomic,evaluate,geq, andleqaccesses without adding QA ignores.Both fixes are in one stacked PR because either commit alone leaves OUQBase CI red: Core/downgrade require the constant and condition handling, while QA requires the public-interface cleanup.
Root cause and history
The adjacent scheduled-run boundary is:
01c015fef4176e370c21ed0d0204b91ee4923b47939aeff699d4b727d4dd04d4471113f3bc6063fa(Drop stale [compat] majors older than one year)That compat change first made the graph unresolvable; #49 repaired resolution. Once resolved, #48 exposed the latent OUQBase assumptions under Symbolics 7.37–7.39: numeric constants are symbolic wrappers, and several names OUQBase used are not declared public by their owner modules.
The replacement dependencies were checked at their owners:
Symbolics.value,Symbolics.wrap,Symbolics.Inequality,Symbolics.≲, andSymbolics.≳are public/documented;SymbolicUtils.termandSymbolicUtils.substituteare public/exported, andsubstitute(...; fold=Val(true))is documented.SymbolicUtils.Operator,SymbolicUtils.default_is_atomic,Symbolics.evaluate,Symbolics.geq, andSymbolics.leqare not public and are no longer used.Failing before
On the unmodified PR 48 head with Julia 1.12.7, the focused canonical-moment constructor printed the wrapped RHS type and failed in the Float64 assignment:
The hosted PR 48 composition independently failed OUQBase Core, QA, and downgrade:
Passing after
Focused discriminator on the patched code:
Current Julia Core:
Current Julia QA:
Hosted CI completed with 22 successful checks, one empty-matrix skip, and one failure. All
OUQBase Core checks on current, LTS, and prerelease Julia, OUQBase QA, and OUQBase downgrade
passed. The only failure is the root umbrella QA job, whose five implicit facade imports,
17 undocumented bindings, 23 unapproved reexports, and 18-pass/2-fail/1-error summary exactly
match the failure on the stacked base PR:
Exact sublibrary downgrade workflow, run with Julia 1.10.12 in a workspace-local isolated depot and the reusable workflow's effective stdlib/in-tree skip set:
Mechanical checks:
Not verified / scope
Links
🤖 Generated with Codex CLI (model: gpt-5.6-sol; session: local session ID 01a0598f-11b9-72d1-91d9-b2fbb186557d).