Skip to content
View hneogy's full-sized avatar

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 satellite catalog passed 99,999. Does your software know?

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.

gpconf is a free test kit that tells you whether your satellite software handles catalog numbers above 99,999 — built from real CelesTrak data, with every expected answer traced to its source. It is the GP/OMM conformance corpus: eighteen cases 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 gpconf

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 five-digit TLE sets 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

  • Five fixes merged upstream: three 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) and PR #187 (an Alpha-5 decoder), none yet in a release; astroz's own PR #99, for #97 and #98, released in v0.13.0; and libsgp4's own #46, released in v3.0, two days after the corpus's results on its PR #42.
  • 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.
  • gpconf v0.6.1 released, on PyPI and archived on Zenodo: concept DOI 10.5281/zenodo.22867654, version DOI 10.5281/zenodo.23144821.

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 · gpconf · neogy.dev

Pinned Loading

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

    Free test kit: does your satellite software handle catalog numbers above 99,999? Built from real CelesTrak data.

    Python 2