Repository navigation
Test - TEST - Add deck/API parity tests with the known drifts marked broken - #546
Merged
Merged
Conversation
This was referenced Oct 21, 2026
logan-nc
reviewed
Oct 26, 2026
logan-nc
left a comment
Collaborator
There was a problem hiding this comment.
Read in full. Ready to approve from my read; nothing pushed.
One cross-PR hazard to settle at merge time: the two-pass test sets "local_stability_flag" => false as a [ForceFreeStates] override. #568 removes that key without a deprecation entry, so once both land the override is an unknown keyword. On #568's semantics the fixture deck carries a [LocalStability] section, so the cheap form is delete!(inputs, "LocalStability") in _stage_deck rather than the flag. Whichever of the two merges second takes that line. The fixed-kinetic @test_broken flips with #550, as the body says.
…broken Run main and the scripting API on the same Solovev deck for Galerkin, Riccati Δ′, hdf5 file forcing, the analytic two-pass grid and gal_match_flag matching. Mark the known drifts @test_broken: file-forcing normalization, the analytic two-pass grid, the cut solution implied under gal_match_flag, and the fixed kinetic source. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ount Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The :ray model returns no inner profiles by default since #536, so the cut-solution drift only shows with real-ψ profiles. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
matt-pharr
force-pushed
the
test/deck-api-parity
branch
from
October 26, 2026 08:48
0ad81a2 to
0cd8239
Compare
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.
Release note
The deck (
mainon a gpec.toml) and the scripting API are now checked against each other on the same inputs for Galerkin, Riccati Δ′, ascii/hdf5 file forcing, an analytic equilibrium on the two-pass auto grid, deck matching undergal_match_flag, and the fixed kinetic source. Where the two paths are known to disagree today, the test is marked@test_broken, so the fix for each drift shows up as an unexpected pass to flip.Regression report
Notes for reviewers
Tests only (
test/runtests_solve_api.jl, +83/−2); nosrcchanges. Rebased onto develop 2842dfc. Every new run uses the coarse Solovev fixture deck; the file's testset time goes from 39.5 s to 48.2 s (+8.7 s).Parity that holds today (rtol 1e-12, exact in practice):
gal_nx=32): Δ′ matrix and raw frommainequalsolve(..., Galerkin(nx=32)).nchunks=40check at 1e-6 is kept.gal_match_flag(galerkin inner model) equalssolve(MatchProblem(gal), GGJModel(solver=:galerkin))on aGalerkin(cut_solution=true)result, forbpen, the matched ξ and the composite inner profiles. Since develop's:raymodel returns no inner profiles by default, the galerkin model is the one that shows the cut-solution drift.RMPFieldagree onpermeabilityandforcing_bfor ascii and hdf5.Known drifts marked
@test_broken(2), and the change expected to flip each:solvecannot re-form it and stays on the 1025-knot pass-1 grid, while the deck re-forms on a refined gridPlasmaEquilibriumgal_match_flag: the API withoutcut_solution=truehas no composite inner profiles, where the deck has themMatchProblemclause (#554)Two drifts this PR first marked broken were fixed on develop before the rebase. The file-forcing normalization now holds, so the hdf5 check here is a plain
@testand the ascii case uses develop's own test. The fixed kinetic source is now accepted bysolve, and develop's deck/API parity test for it replaces the broken one this PR had.The two-pass case runs with
psi_accuracy=3e-2and no local-stability scan. At the defaults the local-stability scan on the 1024-interval pass-1 grid made it about 34 s.🤖 Generated with Claude Code