Five conversions panicked on a condition the caller may have no control over:
elements from a non-inertial state, geodetic coordinates from a non-body-fixed
one, a look direction across frames, and equinoctial elements for a retrograde
orbit. Inclination and frame are data, so a catalog with a retrograde object or
a state read from a file would abort the process.
ConversionError covers the three cases, and reads as a failure of the value
rather than of the code. FrameError stays for a rotation that could not be
produced, which is a different thing.
The four should_panic tests became error assertions, which say more than they
did: the retrograde one now also checks that Keplerian elements still work,
since that is the fallback the error leaves open.
The debug_asserts in state_derivative are untouched. ordinary-diffeq's
right-hand side returns SVector and not Result, so a derivative cannot report
anything; moving those checks to assembly time is filed separately.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M9aqCoSmjgoaTbewDHAZhh