Repository navigation
COMPATIBILITY_NOTES_6.0.0
This document covers the public upgrade from 5.2.3 to 6.0.0.
The major version is required because formerly curated Hermetic Python symbols have been removed. Several Hellenistic behaviors also now fail closed where older releases emitted an ambiguous default.
The following names are no longer available from moira,
moira.classical, or moira.facade:
DecanHour
DecanHoursNight
DECAN_NAMES
DECAN_RULING_STARS
list_decans
available_decans
decan_for_longitude
decan_at
decan_hours
Migration:
- Remove all use of
decan_hours,DecanHour, andDecanHoursNight; there is no supported replacement because the algorithm was not source-admitted. - Do not substitute ordinary planetary faces or a modern fixed-star table for the removed ruling-star assignments.
- Source researchers may import the remaining catalog/geometry objects
directly from
moira.hermetic_decans, but that module is explicitly quarantined and is not part of the curated product contract.
The unregistered Hermetic catalog, longitude, rising, and night-hour transport
models, services, serializers, and router definitions have been deleted.
create_app() did not register those routes in 5.2.3, so no live REST endpoint
is being withdrawn; code that imported the internal server scaffolding must
remove those imports.
Every path under /v1/hermetic-decans remains absent and returns 404.
Annual age uses completed civil anniversaries in the natal timezone. It is no longer derived from elapsed fractional Julian years. February 29 charts must choose the supported anniversary policy explicitly where the API requires it.
Dorothean water-triplicity ordering and the two verified lot reversals are corrected. Callers with stored regression snapshots should expect those affected outputs to change.
Lot results now distinguish:
- formula computation truth;
- dependency completeness;
- astrological condition status; and
- typed
not_evaluableentries.
Do not interpret an empty evaluated result and missing dependencies as the same state.
Solar phase, solar proximity, and besieging use typed boundary and dependency
truth. Exact conjunction/opposition, incomplete classical-planet inputs, and
ambiguous neighbour geometry may now be not_evaluable instead of becoming a
fabricated label or False.
Only L1/L2 are admitted. Requests above level 2 fail validation; no deep-subdivision method selector is exposed.
The sequence preserves both source distribution coordinates and elapsed-Julian-day projection. Do not reinterpret projected JDs as civil-month anniversaries.
Current-period ownership is half-open at transition boundaries. Missing Fortune produces typed non-evaluability rather than a raw negative peak claim. Stored results at the same-sign start shift or exact 211-month circuit boundary should be regenerated.
The new engine composition is available as:
from moira import Moira, hellenistic_chart_profileThe new REST route is:
POST /v1/hellenistic/chart-profile
The profile is deliberately strict. It requires the complete Classic 7, finite speeds, valid Whole Sign cusps, actual Ascendant/Midheaven angles, and timezone-aware natal/current datetimes. Missing or unsupported inputs remain visible through typed status and provenance.
The profile does not contain Firdaria, medieval almutens, later electional rules, unscoped primary directions, Decennial L3/L4, Hermetic geometry, Valens distribution interpretation, or a synthetic overall score.
Existing admitted routes remain available. Several response models gain explicit typed receipt fields. Clients using strict generated models should regenerate from the 6.0.0 OpenAPI document.
In particular:
- lots chart responses preserve
not_evaluableentries; - dignity responses expose typed essential and accidental component truth;
- profection, Decennial, and Zodiacal Releasing responses expose their governing assembly receipts; and
- whole-sign aspect responses expose typed Hellenistic superiority.
Compatibility scalar fields remain projections, but new code should use the typed receipts as the governing truth.
Moira 6.0.0 constrains the optional server stack to FastAPI>=0.115,<0.137
and Starlette>=0.46,<1.3. Later FastAPI releases changed route-table
internals, while Starlette 1.3 changed the test-client transport contract,
after the 6.0.0 validation baseline. Those new framework contracts are not
admitted by this release. Install moira-astro[server]==6.0.0 rather than
overriding the declared constraints.
- Remove imports of the nine removed Hermetic curated symbols.
- Delete all use of the unsupported night-hour algorithm.
- Regenerate REST/OpenAPI clients.
- Update deserializers to preserve typed
not_evaluableand provenance fields. - Refresh stored profection, affected lot, Decennial, and Zodiacal Releasing snapshots.
- Reject Decennial levels above 2 in caller-side controls.
- Run application tests against
moira-astro==6.0.0.
This release does not change the planetary-kernel format, native extension ABI policy, supported Python range, astronomical frame definitions, or small-body resource installation model.
moira-astro==6.0.0