Skip to content

COMPATIBILITY_NOTES_6.9.9

TheDaniel166 edited this page Oct 15, 2026 · 4 revisions

Compatibility Notes - Moira 6.9.9

Upgrade Boundary

Moira 6.9.9 follows 6.9.8. It restores behaviour that 6.9.8 broke, makes each named doctrine follow its own source by default, and adopts the standard heliacal phase names. Many default results change. The changes below are the ones a caller can observe.

Restored

  • /v1/patterns/coherence, /v1/patterns/chart-profile and /v1/patterns/network return results again (6.9.8 returned HTTP 500).
  • /v1/composite/chart without reference_latitude returns a chart again (6.9.8 returned HTTP 422). The houses are cast at the mean latitude of the two birthplaces, reported in computation_truth.reference_latitude. An explicit reference_latitude is used unchanged. The retired midpoint method is still rejected.
  • /v1/manazil/position and /bulk default to the agrippa tradition, so a request with only a longitude works again.

Changed Defaults

  • Relationship aspects. /v1/synastry/*, Moira.synastry_aspects and SynastryAspectPolicy() default to tier 0, the five major aspects (previously 2, every aspect). Composite and Davison embedded aspects default to tier 0 (previously 1). Send tier: 1 or tier: 2 to keep the minor aspects.

  • Dignities. william_lilly_1647 scoring (the default) uses Lilly's triplicity table: Mars rules the water triplicity by day and night, so scores change for planets in Cancer, Scorpio and Pisces. It also uses Lilly's own terms (p. 104), which differ from Robbins' Ptolemaic terms in these ranges (degrees within the sign; Robbins ruler to Lilly ruler):

    Sign Degrees Term ruler
    Taurus 24-26 Mars to Saturn
    Gemini 13-14 Venus to Jupiter
    Gemini 20-21 Mars to Venus
    Gemini 21-25 Mars to Saturn
    Gemini 26-30 Saturn to Mars
    Leo 0-6 Jupiter to Saturn
    Leo 13-19 Saturn to Venus
    Leo 19-25 Venus to Jupiter
    Libra 11-16 Mercury to Jupiter
    Libra 19-24 Jupiter to Mercury
    Scorpio 6-13 Venus to Jupiter
    Scorpio 14-21 Jupiter to Venus
    Capricorn 19-25 Saturn to Mars
    Capricorn 25-30 Mars to Saturn
    Pisces 25-26 Saturn to Mars

    EssentialDignityPolicy().triplicity_doctrine and the REST term table default to the scoring mode's own table; pass a table explicitly to keep an older one. An explicit table is no longer rejected under Lilly scoring. TriplicityAssignment.participating_ruler may be None. The Hellenistic profile keeps its Ptolemaic terms, and HellenisticProfilePolicy rejects a dignity policy whose triplicity table differs from its own.

  • Perfection. Lilly's perfection reception uses his triplicity and terms; the policy literals are william_lilly_1647 and william_lilly_1647_sect_active.

  • Planetary years. PTOLEMAIC_YEARS mean years for Saturn (43.5), Jupiter (45), Mars (40), Sun (69) and Moon (66) follow Lilly, which changes calculate_longevity granted years.

  • Nine parts and Paulus lots. The default returns the 7 Hermetic lots instead of 9; planets must include Mercury and Venus; "North Node" is required only for the extension scope; meaning is null; REST historical_scope defaults to hermetic_seven. Necessity (Paulus) and Eros (Paulus) values change (Paulus ch. 23, reversed by night).

  • Harmonics. Conjunction, aspect, sweep, fingerprint and cross-chart requests default to orb: 12 (previously 1). provenance.preset_description is null in computed payloads; the cross-chart payload reports harmonic_kind: "cross_chart".

  • Lunar mansions. Every tradition uses 28 equal divisions. For al_biruni, jd_ut is no longer needed, span_degrees is 12.857..., provenance is equal_division_360_by_28 / equal_28_mansion_assignment, and the index for a longitude can differ from 6.9.8 (Moon at 254.526 deg is now #20, not #18). mansion_of(..., jd=) accepts and ignores jd. Latin names change for Agrippa (for example #3 Athoray to Achaomazon) and Picatrix. Agrippa's significations and 11 natures change. The always-null MansionInfoResponse.ruling_star is removed; use marker_stars.

  • Gauquelin. Positions add effect_status. Bodies other than the Moon, Venus, Mars, Jupiter and Saturn report zone: "Not Classified" and is_plus_zone: false.

  • Huber. AgePointPosition.intensity and the REST age-point intensity are null unless include_intensity=true.

  • Lord of the orb. house_signification is null.

  • Davison corrected reports longitude_mode: "shorter_arc_midpoint"; its place moves for pairs straddling the antimeridian.

  • Relationship transits. Up to 10 moving bodies are accepted.

Changed Meanings

  • Heliacal setting (HeliacalEventKind.HELIACAL_SETTING, planet_heliacal_setting, REST kind) is the evening last visibility. The event 6.9.8 returned, the last morning sighting, is MORNING_LAST / planet_morning_last.
  • Acronychal rising is the evening rising near opposition. The event 6.9.8 returned, the first evening sighting, is EVENING_FIRST / planet_evening_first. The Yallop lunar-crescent search takes EVENING_FIRST where it took ACRONYCHAL_RISING.
  • Fixed stars. stars.heliacal_setting_event / heliacal_setting and heliacal_catalog_batch("heliacal_setting", ...) return the evening last visibility, typically months from the old result. The old event is last_morning_visibility_event / last_morning_visibility and the batch kind "last_morning_visibility". A catalogue-wide setting batch no longer uses the native fast path and is slower.
  • acronychal_setting remains a deprecated synonym of heliacal_setting. Every wire string that existed before still parses. A kind that does not occur for a body returns None.
  • For Moon morning records under Yallop, the kept fields sunset_jd_ut and moonset_jd_ut hold sunrise and moonrise; observation_window says which.
  • A superior planet's morning apparition that ends at opposition has no morning last visibility (6.9.8 returned the opposition date).

Other Changed Results

  • Solar condition. Combust begins at 8°30′ from the Sun (Lilly), not 8°, in solar_condition_at and solar_condition_events_in_range. The Moon is evaluated like any other body; only the Sun is excluded.
  • Visibility. Under the default limiting-magnitude criterion, observable is false while the Sun is above the horizon, with criterion_reason = "daylight_sun_above_horizon".
  • Galactic chart positions. Without observer_lat/observer_lon the positions are geocentric (formerly topocentric at 0 N 0 E).
  • Draconic origin. A draconic chart requested with an observer reports origin: "topocentric".
  • Composite and Davison aspects leave out the Mean Node, True Lilith and Mean Lilith, as synastry does.
  • Lord of the turn. is_well_placed is null for a candidate without a solar-return house.
  • Almuten. /v1/almuten/* default to Lilly 1647; almuten can be null (a tie or an unevaluable testimony), and provenance adds doctrine_source and not_computed. The default /v1/almuten/figuris doctrine needs speeds, north_node_longitude and fixed_star_longitudes (422 without them); day_ruler, hour_ruler and prenatal_syzygy_longitude are accepted only with doctrine=moira_legacy_v1. Tallies gain accidental_points and the response gains reason. almuten_of_degree and almuten_figuris (engine functions) keep the legacy count by default.
  • Facade almuten. Moira.almuten_figuris raises instead of silently skipping unresolved day and hour rulers; pass geo_latitude / geo_longitude or explicit rulers. strict has no effect.
  • Hyleg. /v1/hyleg/lilly-1647 selects in cases it previously did not evaluate, and may name a planet, the Ascendant or the Part of Fortune.
  • Offices. /v1/hellenistic/offices predominator is a string, reason can be null, and house_master_reason and predominator_determination are new.

Newly Rejected Requests

  • Midpoint planet_set values other than classic, modern and extended (engine ValueError; REST 422).
  • Davison requests whose two people name different house systems, or that carry per-person bodies.
  • bodies on the single-body decanate chart routes.
  • Draconic latitude without longitude, or the reverse.
  • Galactic chart requests with only one of observer_lat / observer_lon.
  • Paran packet heliacal kinds that do not apply to stars.

Newly Accepted Requests

  • Synastry aspects and contacts with time_unknown on either person, and a one-way overlay into the chart of a person whose time is known.
  • Draconic latitude, longitude and house_system.
  • Every standard heliacal kind on /v1/heliacal/planet, and the star kinds on the paran packet.

Recommended Migration Sequence

pip install --upgrade moira-astro==6.9.9

For services running moira_server:

pip install --upgrade "moira-astro[server]==6.9.9"

Callers that want 6.9.8's relationship aspects should send tier explicitly (2 for synastry, 1 for composite and Davison). Restart long-running engine and API processes after upgrading so the new native extension and transport schemas are loaded together.

Clone this wiki locally