Uh oh!
There was an error while loading. Please reload this page.
ForceFreeStates - BUG FIX - Pass direction arg to IntegrationChunk in kinetic EL crossing - #336
Merged
Merged
Conversation
logan-nc
commented
Jul 29, 2026
CollaboratorAuthor
@claude review this |
ReviewCorrect, minimal fix. A couple of observations, not blocking:
Otherwise the change is exactly scoped (1 line) and matches the existing pattern used elsewhere in the file. |
… kinetic EL crossing cross_kinetic_singular_surf! built its placeholder IntegrationChunk with a stale 4-arg signature (psi_start, psi_end, needs_crossing, ising), but the struct's @kwdef positional constructor requires the direction field added later for bidirectional parallel FM. The 4-arg call throws MethodError. This path is only reached on the serial Euler-Lagrange shooting solver (use_parallel=false) with a kinetic singular surface (kinetic_factor>0), which previously errored earlier in the Riccati branch, so the defect stayed latent. Now passes direction=1, matching the sibling placeholder call sites in cross_ideal_singular_surf! and the Riccati crossing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SsLUydP2gJbE1tGoaHDiS1
logan-ncforce-pushed
the
bugfix/kinetic-el-integrationchunk-arity
branch
from
July 30, 2026 04:04
d0ccd17 to
0059600Comparelogan-nc added a commit
that referenced
this pull request
Jul 30, 2026
…nChunk (PR #336 review) Match the sibling call sites (cross_ideal_singular_surf!, Riccati crossing): pass the in-scope ising instead of 0. Functionally inert (sing_der! discards the chunk); keeps the cherry-picked IntegrationChunk fix in sync with the amended bugfix branch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SsLUydP2gJbE1tGoaHDiS1
logan-nc
commented
Jul 30, 2026
CollaboratorAuthor
Addressed the review:
|
logan-nc
disabled auto-merge
July 30, 2026 04:46
logan-nc
enabled auto-merge
July 30, 2026 04:47
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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
cross_kinetic_singular_surf!constructed its placeholderIntegrationChunkwith a stale 4-argument call:but
IntegrationChunkis an@kwdef structwhosedirectionfield (added later for bidirectional parallel FM) makes the positional constructor require 5 arguments. Theising=0/direction=1defaults apply only to the keyword constructor, not the positional one, so the 4-arg call throws:The fix passes
direction=1, matching the two sibling placeholder call sites (cross_ideal_singular_surf!and the Riccati crossing), which already use the 5-arg form.Why it was latent
The line is only reached on the serial Euler–Lagrange shooting solver (
use_parallel=false) when a kinetic singular surface is present (kinetic_factor>0, self-consistent Mode A). Until now, self-consistent kinetic runs always routed through the parallel-FM/Riccati path, which bails out earlier with"kinetic_factor > 0 not implemented yet in Riccati". So this call site was never executed and the defect stayed hidden.Verification
MethodErrorfor the 4-arg call and confirmed the 5-arg call succeeds.use_parallel=false,kinetic_factor=1) finds and crosses the kinetic singular surface and completes end-to-end with converged output.diiid_n1,solovev_n1): no attributable change — the touched path is unreachable in these ideal/perturbative cases (confirmed by isolation; the only residual scatter is pre-existing threaded-reduction non-determinism in near-singular PE diagnostics).🤖 Generated with Claude Code
https://claude.ai/code/session_01SsLUydP2gJbE1tGoaHDiS1