Skip to content

Expand OMM compatibility and strengthen input validation - #1675

Open
schaubh wants to merge 15 commits into
developfrom
feature/fix_omm_issues
Open

schaubh wants to merge 15 commits into
developfrom
feature/fix_omm_issues

Conversation

@schaubh

@schaubh schaubh commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Description

Adds support for CCSDS namespace-qualified OMM XML and CelesTrak’s SGP/SGP4 theory label while retaining the supported Earth-centered, TEME, UTC, SGP4 profile.

Additional improvements include:

  • Rejecting duplicate consumed fields, ambiguous XML blocks, misplaced XML fields, and malformed CSV rows.
  • Preserving valid neighboring records and their diagnostic record numbers.
  • Supporting catalog IDs through 999999999, including leading plus signs and zeros.
  • Preserving unavailable international designators without inventing identifiers.
  • Documenting the supplied mean-motion derivative coefficient conventions.
  • Reusing a writable Matplotlib cache for pytest while preserving explicit MPLCONFIGDIR settings.

The 13 commits separate compatibility changes, individual validation and metadata improvements, regression-test consolidation, and test-cache changes.

Verification

Added targeted regressions for namespace collisions, duplicate fields in both orders, XML placement and error boundaries, CSV handling, catalog IDs, designators, and derivative coefficients. Representative orbit tests compare against independently parsed TLE states using both SGP4 backends.

Reduced redundant test combinations while retaining distinct boundaries and integration coverage. Cache tests cover overrides, write failures, subprocess reuse, and symlinked directories.

Validation on macOS/Python 3.15:

  • 1,691 relevant tests passed in 7.15 seconds.
  • 8 cache and plotting checks passed with two pytest workers.
  • Focused Sphinx build passed with warnings treated as errors.
  • Pre-commit and whitespace checks passed.

The socket-using pytest rerun plugin was disabled for sandbox compatibility.

Documentation

Updated the OMM API documentation and original OMM beta release note to describe expanded capabilities, validation behavior, metadata handling, and derivative conventions.

Updated developer testing documentation and added a release note for the shared Matplotlib cache.

Future work

None

- Accept prefixed and default CCSDS namespaces.
- Reject duplicate OMM fields and blocks while preserving record diagnostics.
- Add namespace and collision regressions; update the beta feature release note.

Validation: 874 tests passed, along with pre-commit and focused Sphinx checks.
- Normalize the exact alias to SGP4 across all four encodings.
- Preserve existing physical metadata and ephemeris-type validation.
- Expand regression coverage and update the original OMM beta release note.

Validation: 990 tests passed, plus pre-commit and focused Sphinx checks.
@schaubh schaubh self-assigned this Nov 10, 2026
@schaubh
schaubh requested a review from a team as a code owner November 10, 2026 18:14
@schaubh schaubh added bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request labels Nov 10, 2026
@schaubh schaubh added this to Basilisk Nov 10, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T18:16:34.745279Z 1497db5 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Preserve missing, null and blank catalog numbers as empty public metadata while retaining validation of supplied IDs and duplicate fields.

Add regressions for all four encodings, both SGP4 backends, multiple unidentified records, and OMM 3.0 without catalog metadata. Update the original OMM beta release note.

Validation: 2128 related tests passed; focused Sphinx build and pre-commit checks passed.
Verify that JSON integer zero remains a catalog ID while false and floating-point zero are rejected before SGP4 initialization. Check that missing catalog IDs do not bypass orbital validation and that later valid records still load.

Validation: 2132 related tests passed in 5.00 seconds; pre-commit checks passed.

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

bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request

Projects

Status: 👀 In review

Development

Successfully merging this pull request may close these issues.

satOmm2elem skips CelesTrak KVN files (MEAN_ELEMENT_THEORY = SGP/SGP4) OMM XML reader misses CCSDS namespace-qualified satellite records

1 participant