Skip to content

Stabilize encounter frames for collinear relative states - #29

Open
sylvesterkaczmarek wants to merge 1 commit into
llnl:mainfrom
sylvesterkaczmarek:fix/encounter-frame-roundoff
Open

sylvesterkaczmarek wants to merge 1 commit into
llnl:mainfrom
sylvesterkaczmarek:fix/encounter-frame-roundoff

Conversation

@sylvesterkaczmarek

Copy link
Copy Markdown

Summary

Use a double cross product and a scale-aware degeneracy test in encounter_frame(). Subtractive projection can normalize roundoff parallel to the relative velocity, producing a non-orthonormal basis and making relative_encounter_covariance() reject a valid collinear encounter. The existing deterministic fallback is preserved.

Repository Policy Checklist

  • All review gates in AGENTS.md are complete. Machine-generated code and tests; executed checks and remaining gates are recorded below.
  • Changes preserve the existing file layout.
  • Package-code changes include tests under tests/.
  • No new workflow or demo is needed; this corrects existing numerical behavior.
  • No generated outputs, data, images, or binary artifacts are committed.
  • No persistent data is added.

Validation

  • Full pytest suite is green; see results below.
  • Full demo gallery run (not run).
  • Repository policy check inspects both changed paths.
  • No existing test, tolerance, workflow, or policy check was weakened.
  • Every numerical result below came from an executed command.

Python 3.12, macOS arm64; published SSAPy 1.1.10 and SSAPy-Data 0.1.5. Ruff, compilation, diff check, warning-as-error Sphinx build, wheel/sdist builds, and twine check passed.

New regression cases: 12 failed and 3 passed before the fix; all 15 pass afterward. The focused conjunction suite passes 27 tests. Coverage includes covariance/probability integration and 100 ordinary-state comparisons. Full suite: 986 passed, 20 skipped, 4 failed; 43 subtests passed.

The same four full-suite failures reproduce on unchanged upstream 262b43c: orbital-maneuver demo, sibling data-directory resolution, orbit-STM finite differences, and multi-segment 6-DoF targeting. They are outside this change. The existing failures remain unresolved; upstream CI must still be checked.

This branch has not been deployed

No deployments
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.

1 participant