Release date: 2026-07-28
Public upgrade path: 6.0.1 to 6.1.0
Moira 6.1.0 adds authoritative dated monthly profections and strengthens the engine’s public-contract, aspect-pattern, Python-compatibility, and small-body release boundaries. It is a minor release because it adds typed capability while preserving admitted computations and valid 6.0.1 requests.
The 9,974-name asteroid identity expansion shipped in 6.0.1. Version 6.1.0 inherits that registry and adds the release-integrity and collision policies needed to consume it safely.
deep_subdivision_method: null request field.profection_chronology(...) constructs twelve contiguous, half-open intervals
between exact consecutive civil anniversaries. The admitted interval policy is:
equal_twelfths_of_civil_anniversary_year
Each result records:
The chronology is identified as a computational_projection. It is not
presented as Valens IV.28’s separate day-Sun/night-Moon distance method, twelve
fixed 30-day periods, a 365.25-day quotient, or twelve civil-calendar months.
Civil anniversaries preserve the natal local wall clock:
february_28 or march_1
policy;earlier_occurrence or later_occurrence;Named IANA lookup uses Python’s standard-library zoneinfo interface. Moira
does not download timezone data or claim a database version the host does not
expose.
HellenisticChartProfile advances to the chronology-aware v2 method and
rejects cross-component contradictions involving:
The profile remains non-interpretive and score-free.
The following are settled exclusions, not unfinished 6.1 work:
decan_hours() experiment;The source-reconstructed Gundel/Harley names and planetary faces remain research data. They are absent from curated root, classical, facade, REST, and OpenAPI product surfaces.
Aspect and pattern calculation now preserves stable observable semantics at the public boundary:
0/360 seam, including
IEEE-754-scale whole-sign boundary cases;AspectData.motion_state explicitly distinguishes applying, exact,
separating, stationary, and indeterminate results;AspectGraphNode.aspect_counts exposes an immutable compatibility-safe view
while legacy family_counts remains available; andThese changes repair edge behavior without removing existing aspect names or legacy facade entry points.
Asteroid and comet distributions now have the same release-grade identity model:
SHA256SUMS;Generated identity files are byte-stable across Windows and POSIX checkouts, and website publication consumes only tracked Git sources. The metadata-only manifests retained in the wheel are now byte-identical to the immutable manifests named by those identity receipts. They remain metadata until at least one referenced BSP shard is installed; automatic discovery does not mistake a manifest-only wheel for a position-capable catalog.
The authoritative asteroid release remains:
| Field | Receipt |
|---|---|
| Catalog | moira-asteroids |
| Version | 2026.07.27.1 |
| Bodies | 9,974 |
| Shards | 399 |
| Sampling | 10-day step, 7-node window |
| Manifest SHA-256 | 0560302f877a46cebc550376ae70665fefab84801078181cf3c4199ce86d49d0 |
The authoritative comet release is:
| Field | Receipt |
|---|---|
| Catalog | moira-comets |
| Version | 2026.07.28.1 |
| Bodies | 497 |
| Shards | 20 |
| Sampling | 30-day step, 5-node window |
| Manifest SHA-256 | 31fbbedbb3ea7ba276fa9d49d52211ae41d90f76c74fb49ec0a6bafb014f07a1 |
Asteroid and comet catalogs currently share the normalized names Halley and
Encke. Unified position, chart, progression, void-of-course, and
astrocartography paths no longer guess which family the caller intended.
asteroid:Halley selects asteroid Halley.comet:Halley and 1P/Halley select the comet.asteroid:Encke selects asteroid Encke.comet:Encke and 2P/Encke select the comet.Dedicated asteroid or comet routes remain family-scoped and retain their existing convenient aliases.
Moira continues to support Python 3.10 through 3.14. Every optional-server enum
uses Moira’s StrEnum compatibility boundary, and the release workflow imports
and constructs the server on the minimum supported Python.
The Decennial request boundary remains L1/L2 only:
levels accepts 1 or 2;deep_subdivision_method is valid;deep_subdivision_method: null remains valid for 6.0/6.0.1 client
compatibility;null.Progression entry points now validate policy types and values, aware target
datetimes, supported bodies, and house-frame inputs before resolving an
implicit planetary reader. Malformed requests therefore return the same
declared TypeError or ValueError on kernel-free and kernel-installed hosts.
Valid computations still require the appropriate installed ephemeris.
The release gate covers:
No new broad numerical ephemeris-parity claim is made for the separately distributed small-body kernels.
moira-astro==6.1.0
For the optional server:
moira-astro[server]==6.1.0
Read COMPATIBILITY_NOTES_6.1.0.md before regenerating typed clients or
upgrading an application that caches computed chart responses.