Skip to content

Initialize the FixedHeatFlow algebraic state#487

Merged
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:agent/fixed-heatflow-downgrade-audit
Jul 13, 2026
Merged

Initialize the FixedHeatFlow algebraic state#487
ChrisRackauckas merged 1 commit into
SciML:mainfrom
ChrisRackauckas-Claude:agent/fixed-heatflow-downgrade-audit

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

This PR should be ignored until reviewed by @ChrisRackauckas.

Summary

  • Initialize the remaining FixedHeatFlow port temperature to its physical 299 K value in the thermal regression test.
  • Preserve the original solver, assertions, expected values, and tolerances.

Why

The exact downgrade workflow graph selected by julia-actions/julia-downgrade-compat at fab1defb76df9fd672f63c94df73ce131d32e134 uses ModelingToolkit 11.2.0. On clean main, that graph leaves the only reduced state at Inf, so initialization returns InitialFailure even though the observed heat flow is already 1 W. A 1 W flow across the 1 K/W wall places this port 1 K below the 300 K source, so the explicit 299 K initial value is model-consistent.

Commit c44704f3 is the repository boundary that made the empty-GROUP downgrade invocation execute Core tests. The earlier apparent green run failed during precompilation and then executed zero tests. With current ModelingToolkit 11.31.2, the same model derives 299 K and succeeds without the explicit value; the added fixture keeps the minimum-compatible graph valid.

Draft #485 independently addresses the clean-main piston failure encountered later in Core. This PR deliberately leaves the piston model unchanged.

Local validation

  • Exact downgraded graph, Julia 1.10.11: include("test/thermal.jl") — 19/19 passed, including FixedHeatFlow 2/2.
  • Native GROUP=Core Pkg.test() on the exact downgraded graph: every preceding file passed through nonlinear 15/15; execution then reached the known clean-main piston error addressed by draft Define the piston test independent variable #485.
  • Runic 1.7 whole-repository check: passed.
  • git diff --check: passed.

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

Copy link
Copy Markdown
Member Author

Investigation scratchpad

Base: 2a9fc95eaf2c8934ffc35c0bf13d84921578e768
Head: dc1d11a96fa819b5aeae2b5398a0cc640ff7390a

Reproduction used Julia 1.10.11 and the exact julia-actions/julia-downgrade-compat action SHA from the failing job: fab1defb76df9fd672f63c94df73ce131d32e134. The resolved graph included ModelingToolkit 11.2.0, ModelingToolkitBase 1.1.0, ModelingToolkitTearing 1.0.2, OrdinaryDiffEq 6.103.0, SciMLBase 2.125.0, Symbolics 7.4.1, and SymbolicUtils 4.38.1.

Clean-main diagnostic:

  • reduced equation: 0 ~ -wall₊dT(t) + wall₊Q_flow(t)*wall₊R
  • only unknown: heatflow.port.T(t)
  • generated prob.u0: [Inf]
  • solve result: InitialFailure, state [NaN]
  • observed heatflow.port.Q_flow: 1.0

Providing only a guess of 299 K still produced [Inf] and InitialFailure. Providing the model-consistent initial state heatflow.port.T => 299.0 produced Success, a constant 299 K state, and the original 1 W assertion. The existing 1 K/W wall and 300 K fixed source determine that value directly.

For comparison, a separately resolved current graph with ModelingToolkit 11.31.2 generated prob.u0 == [299.0] and returned Success without the explicit state.

History audit:

  • PR Fixes issue #234 using same inputs #369 originally added the alpha-zero regression.
  • c44704f3 introduced the SciMLTesting folder runner and is the boundary where an empty GROUP began executing Core tests in this workflow.
  • The earlier apparent downgrade green run failed in precompilation and subsequently ran zero tests, so it was not evidence that this regression passed the minimum graph.

Validation commands and observed results:

TMPDIR=<local> JULIA_DEPOT_PATH=<local> julia +1.10 --startup-file=no --check-bounds=yes --depwarn=yes --project=.audit -e "include(\"test/thermal.jl\")"

Result: all thermal testsets passed, 19/19 total; FixedHeatFlow passed 2/2.

GROUP=Core TMPDIR=<local> JULIA_DEPOT_PATH=<local> julia +1.10 --startup-file=no --project=. -e "using Pkg; Pkg.test(; julia_args=[\"--check-bounds=yes\", \"--compiled-modules=yes\", \"--depwarn=yes\"], force_latest_compatible_version=false, allow_reresolve=false)"

Result: all files before piston passed, including analog 100/100, continuous 76/76, digital 34/34, isothermal_compressible 27/27, math 93/93, multi_domain 17 passed plus 2 pre-existing broken, and nonlinear 15/15. The run then stopped at the clean-main piston _check_if_dde error independently investigated and fixed by draft #485.

julia +1.12 --startup-file=no --project=<local-runic-env> -m Runic --check .
git diff --check

Result: both exited successfully. All diagnostic environments and depots were removed before commit.

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member Author

CI downgrade classification for exact head dc1d11a96fa819b5aeae2b5398a0cc640ff7390a:

The downgrade job resolved and ran Core successfully through Core/nonlinear.jl (15/15), then stopped in Core/piston.jl with the clean-main _check_if_dde(...PleaseImportDynamicQuantities...) error already investigated and fixed by draft #485. Because piston.jl precedes thermal.jl in the Core folder order, this CI run did not reach the FixedHeatFlow regression; it therefore neither contradicts nor independently confirms the local exact-graph test/thermal.jl result (19/19, FixedHeatFlow 2/2).

No test was skipped or silenced here. Runic, Runic suggestions, discovery, and spell checks are green on this head. The remaining CI result is a known prerequisite failure, not a failure of the changed assertion.

Copy link
Copy Markdown
Member Author

Terminal CI classification for dc1d11a96:

  • Core on Julia LTS/current/prerelease and the exact downgrade job all stop in the earlier clean-main piston fixture with the same _check_if_dde(..., PleaseImportDynamicQuantities, ...) MethodError. Draft Define the piston test independent variable #485 is the focused prerequisite. None of these jobs reaches thermal.jl, so they neither exercise nor contradict the exact downgrade-graph local result recorded above (thermal.jl 19/19, FixedHeatFlow 2/2).
  • The ModelingToolkit All downstream job is the independently reproduced aggregate-environment LinearSolve extension mismatch now under a separate SciMLTesting/ModelingToolkit audit; it is unrelated to this one-line FixedHeatFlow initial-state assertion.
  • Documentation, QA, Runic, Runic suggestions, discovery, and spelling all pass.

No failing test was skipped or silenced. The branch remains focused on the minimum-graph FixedHeatFlow regression.

@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 13, 2026 19:53
@ChrisRackauckas
ChrisRackauckas merged commit 3a162d1 into SciML:main Jul 13, 2026
6 of 11 checks passed
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