moira

Moira 5.2.2 - Lunar Node Frame Corrections And Asteroid Family Catalog Refresh

Release date: 2026-07-25

Public upgrade path: 5.2.1 to 5.2.2

Moira 5.2.2 is an astronomy-correction and catalog-provenance patch release. It repairs the coordinate-frame construction of the true lunar node, makes the output equinox of analytical mean points explicit, and publishes the current Proper25-backed asteroid-family catalog with complete overlap visibility.

True lunar node: one frame before intersection

The true lunar node is the intersection between the Moon’s instantaneous geocentric osculating orbital plane and the true ecliptic plane of date. Earlier releases constructed the orbital-plane normal from ICRF/J2000 state vectors but intersected it with an ecliptic pole expressed in the true frame of date. Rotating the resulting intersection afterward could not repair that mixed-frame construction.

true_node(...) now:

  1. obtains simultaneous Moon and Earth position and velocity states;
  2. constructs the instantaneous geocentric orbital normal as r x v;
  3. applies ICRF frame bias, IAU 2006 precession, and IAU 2000A nutation to that normal;
  4. intersects it with the true ecliptic pole in the same frame; and
  5. projects the ascending direction into true ecliptic longitude of date.

At independently solved northbound zero-latitude crossings, the corrected node longitude agrees with the Moon’s geometric ecliptic longitude to better than 0.001 arcsecond. The shipped Swiss Ephemeris fixture is retained only as secondary corroboration, not as the governing derivation.

Mean node and Mean Lilith: explicit equinox policy

mean describes the averaged lunar orbital solution; it does not by itself select a mean coordinate frame. Moira now keeps those two policies separate:

mean_node(jd_ut, nutation=True)
mean_lilith(jd_ut, nutation=True)

With the default nutation=True, both results are expressed in the true ecliptic and equinox of date, matching Moira’s default planetary, chart, transit, synastry, batch, and draconic longitudes. Callers requiring the raw mean-equinox product can request nutation=False.

The mean node now reuses Moira’s admitted IERS 2003 lunar fundamental argument. Its raw mean-frame result was validated against ERFA faom03, and its true-frame result is derived by adding Moira’s IAU 2000A nutation in longitude. The default frame correction varies with epoch and can approach about 19 arcseconds in magnitude.

Chart reduction responses now report nutation and frame="true_ecliptic_and_equinox_of_date" for node products. Mean-node and mean-Lilith stage sequences expose the analytical solution and nutation conversion rather than hiding the frame policy.

Proper25-backed asteroid family catalog

The bundled asteroid-family layer now uses:

The normalized catalog contains:

Nested and overlapping HCM classifications are no longer flattened into one exclusive family. Compatibility surfaces retain a deterministic display-primary family, while complete memberships remain available to grouping, resonance, and REST consumers.

moira/data/asteroid_families.metadata.json records source URLs, archive and tree hashes, exclusions, aliases, normalization semantics, counts, and the final CSV hash. New build and refresh scripts reproduce the catalog and annotate the unified asteroid catalog without altering BSP kernels.

Validation evidence

The release exercises:

No NumPy, SciPy, Swiss Ephemeris, jplephem, or other runtime dependency is introduced. Asteroid-family membership remains catalog evidence, not a claim that every listed body is genetically related, and absent membership means only that a body is absent from the admitted source catalogs.