COMPATIBILITY_NOTES_6.0.0 - TheDaniel166/moira GitHub Wiki
Compatibility Notes - Moira 6.0.0
Upgrade Boundary
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.
Removed Curated Python Imports
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.
Removed Dormant Server Symbols
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.
Corrected Behavioral Semantics
Profections
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.
Triplicity and lots
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.
Planetary condition
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.
Decennials
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.
Zodiacal Releasing
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.
New Unified Profile
The new engine composition is available as:
from moira import Moira, hellenistic_chart_profile
The 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.
REST And OpenAPI Clients
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.
Recommended Migration Sequence
- 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.
Unchanged Boundaries
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.
Upgrade Pin
moira-astro==6.0.0