Skip to content
View hneogy's full-sized avatar
🎯
Focusing
🎯
Focusing

Highlights

  • Pro

Block or report hneogy

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
hneogy/README.md

Honorius Neogy

Orbital data tooling · NEOGY LLC

neogy.dev ORCID LinkedIn DOI corpus CI

The problem, and the corpus

On 11 July 2026 the US Space Force catalog assigned number 100000 (to the Portuguese CubeSat SARAMAGO) after exhausting the five-digit range, which ends at 69999 (CelesTrak); provider data now carries six-digit, nine-digit and lettered (Alpha-5) catalog numbers, and libraries reading them may not expect these forms. gp-omm-conformance is a test corpus for that migration: eighteen cases built from real CelesTrak data with no invented element sets, a runner that installs with pip install gpconf, presets that test a library with no adapter written, and a GitHub Action for CI.

Eight libraries against the corpus

Each run by hand at the version named, six on 2026-09-24 against the seventeen cases of the time and libsgp4 and astroz on 2026-09-27 against v0.4.0's eighteen, and every finding reproduced on the library's own code before it was reported. These are results against a specific version on a specific date, not verdicts on the projects. All eight failed on Alpha-5 TLEs when first run, on 2026-09-24, but CelesTrak emits no Alpha-5 at all, so users who take their TLEs from CelesTrak don't meet those failures today.

PyEphem 4.2.1 — #296
Five-digit sets exact, epoch within a microsecond.
Alpha-5 fields read as catalog number 0, silently.

satellite.js 7.1.0 — #185, PR #186, PR #187
All 604 TLE records exact, nine-digit OMM ids accepted.
OMM JSON epochs truncated to ms (#186 merged); TLE ids as strings (#187 open).

Gpredict 2.6 — #426
Five-digit ids right, every element but one exact.
Alpha-5 fields become 0; the mean motion loses its last digit on every record.

gods-eye-view main ce671ce — #751, PR #767
Five-digit ids right, 1998 epoch pivots.
Alpha-5 satellites collapse onto one entry keyed NaN; the rest dropped (#767 open).

SatDump 1.2.2 and master — #1221
Five-digit sets exact, six-digit CSV ids on master.
Alpha-5 sets dropped silently; SupGP CSV rejected whole on master.

libsgp4 v3.0 — #45, #44
Five-digit sets exact but for an 8 µs epoch rounding, CSV takes six-digit ids.
Alpha-5 decoded since v3.0; SupGP CSV refused whole, #45's rounding unresolved.

tle.js 5.0.3 — #62
Five-digit sets exact, checksums count letters as 0.
Alpha-5 fields give NaN with no error; two-digit years pivot at 50.

astroz v0.14.0 — #97, #98, #102
Carried elements exact, nine-digit JSON ids as integers.
Alpha-5 (#97) and epoch (#98) fixed in v0.13.0, seconds (#102) in v0.14.0; now MIT.

What has landed

  • Four fixes merged upstream: two pull requests from this account, python-sgp4 PR #172 (the empty OBJECT_ID in OMM XML) and satellite.js PR #186 (OMM JSON epochs kept to the microsecond), neither yet in a release; and astroz's own PR #99, for #97 and #98, released in v0.13.0, and PR #104, for #102, released in v0.14.0.
  • Twelve reports filed with ten projects, the eight above plus python-sgp4 and strf, astroz accounting for three, each stating what was run and how to reproduce it.
  • Corpus v0.4.0 released, on PyPI as gpconf and archived on Zenodo: concept DOI 10.5281/zenodo.22867654, version DOI 10.5281/zenodo.23002261.

Quick start

pip install gpconf
gpconf fetch                                                  # once; fetches the fixtures under CelesTrak's usage policy
gpconf run --preset reference                                 # the control
gpconf presets                                                # libraries testable with no adapter written
gpconf run --adapter mypkg.gpconf_adapter:Parser --json report.json   # your parser

Elsewhere

NEOGY LLC, orbital data tooling. Results and a live tracker at gpconf.neogy.dev · the corpus · neogy.dev

Pinned Loading

  1. gp-omm-conformance gp-omm-conformance Public

    Test corpus for TLE and OMM parsers after the satellite catalog passed 99,999: Alpha-5, six- and nine-digit ids, built from real CelesTrak data.

    Python 2

  2. gpconf-site gpconf-site Public

    Public site for the gp-omm-conformance corpus: the 2026 satellite catalog-number migration explained, a daily CelesTrak-derived tracker, python-sgp4/Skyfield status, and client-side Alpha-5 and TLE…

    HTML