lord_of_the_orb_roadmap - TheDaniel166/moira GitHub Wiki
Lord of the Orb Roadmap
Purpose
This document defines the implementation roadmap for Moira's Lord of the Orb subsystem.
It assumes the companion doctrine document exists:
This is an additive roadmap. The Lord of the Orb is a new technique with
no existing implementation in Moira. The required infrastructure (planetary
hours, Chaldean order) already exists in moira/planetary_hours.py.
The technique belongs to the annual timing family alongside profections and firdaria. Its output is an annual participating signifier within a solar return analysis.
Current Moira State
Relevant implementation files:
moira/planetary_hours.py— planetary hour calculation; Chaldean ordermoira/timelords.py— firdaria and zodiacal releasing; annual period modelmoira/profections.py— annual profections; Lord of the Year
Lord of the Orb: NOT IMPLEMENTED.
Infrastructure available:
PlanetaryHourandPlanetaryHoursDayinplanetary_hours.py— the birth planetary hour is computable from these- Chaldean order already encoded in
planetary_hours.py - Annual period vessel patterns established in
timelords.py
Current constitutional status: P0 — pre-constitutionalization.
Core Insight
The Lord of the Orb is a two-cycle system: the 7-planet Chaldean sequence and the 12-house sequence advance independently. The only doctrinal ambiguity is whether the Chaldean sequence resets with the house cycle (single cycle) or runs as a fully independent modular counter (continuous loop).
The continuous loop variant is the better-attested reading (Torres, Giuntini). Both variants should be implemented as named options.
The birth planetary hour is the only natal input beyond the chart itself. Everything else is arithmetic.
Truth Domain Axes
1. Cycle Variant
Governs how the Chaldean planetary sequence and the 12-house sequence relate.
Values:
continuous_loop— planetary sequence and house cycle are independent modular counters; full combined pattern repeats at LCM(7, 12) = 84 years; defaultsingle_cycle— both cycles reset together at year 13; Year 13 planet equals Year 1 planet; historically ambiguous in Abu Ma'shar
2. Night Definition
The birth planetary hour requires knowing whether the birth is diurnal or
nocturnal. This is already handled by planetary_hours.py (sunrise/sunset
aware). No new logic needed.
3. House Signification
Year N → house ((N − 1) mod 12) + 1
This is a pure arithmetic mapping, not a house-system calculation.
Implementation Phases
Phase 1 — Core Lord of the Orb Engine
Scope: compute the Lord of the Orb for any year of life from a natal chart.
Module: moira/timelords.py (alongside firdaria and profections as the
natural home for annual time-lord techniques)
Tasks:
- Add
LordOfOrbCycleKindenum:CONTINUOUS_LOOP,SINGLE_CYCLE - Add
LordOfOrbPerioddata vessel:year: intplanet: strhouse: intcycle_kind: LordOfOrbCycleKind
- Add
lord_of_orb(chart, birth_planetary_hour_planet, years, cycle_kind)function returninglist[LordOfOrbPeriod] - Add
current_lord_of_orb(chart, birth_date, target_date, cycle_kind)convenience function returning the activeLordOfOrbPeriod - Expose the birth planetary hour planet as a named output so callers can verify it
Cycle logic:
# continuous_loop
planet_index = (birth_planet_index + year - 1) % 7
house = ((year - 1) % 12) + 1
# single_cycle
cycle_position = (year - 1) % 12 # 0–11
planet_index = (birth_planet_index + cycle_position) % 7
house = cycle_position + 1
Where birth_planet_index is the 0-based position of the birth-hour planet
in the Chaldean order: Saturn(0), Jupiter(1), Mars(2), Sun(3), Venus(4),
Mercury(5), Moon(6).
Acceptance criteria:
- for Venus as birth-hour planet, years 1, 8, 15, 22, 29, 36 all return Venus (continuous loop) — confirms Torres's worked example
- year 1 → house 1, year 12 → house 12, year 13 → house 1 (both variants)
- year 13 → Venus (continuous loop) vs. Venus (single cycle coincides here; divergence begins at year 14 where continuous returns Mercury, single returns Jupiter)
- full 84-year cycle produces no duplicates (continuous loop)
constitutional target: P1 COMPLETE after this phase.
Phase 2 — Annual Hierarchy Integration
Scope: integrate Lord of the Orb as a named indicator within Moira's annual solar return analysis.
Prerequisite: Phase 1 complete.
Tasks:
- Define the Abu Ma'shar eight-indicator annual hierarchy as a named structure (if not already done by profections or other annual work)
- Add Lord of the Orb as indicator #6 in the hierarchy
- Add evaluation frame: expose the Lord of the Orb planet's natal condition and its solar return position for interpretation
Note: the annual hierarchy is a documentary and output-structuring task, not a computation task. The computation is fully covered by Phase 1.
constitutional target: P2 COMPLETE after this phase.
Relationship to Other Subsystems
| Subsystem | Relationship |
|---|---|
planetary_hours.py |
provides birth-hour planet; shared Chaldean order |
timelords.py |
natural home; same annual period model as firdaria |
profections.py |
Lord of the Year is indicator #1 in the same hierarchy |
| Lord of the Turn | separate technique; shares naming hazard only |
The Lord of the Orb does not depend on solar return chart calculation. It depends only on the birth planetary hour and the native's age.
Open Questions
- Should
lord_of_orb()live intimelords.pyor in a newannual_indicators.pymodule? Decision deferred to Constitutional Phase 3 (module boundary formalization). - Should both cycle variants always be computed and returned, or should the
caller specify one? Recommendation: caller specifies; default to
CONTINUOUS_LOOP.
Research Sources
- Benjamin N. Dykes, Persian Nativities IV (Cazimi Press, 2019) — Abu Ma'shar's core; pages 126–128 for cycle variant ambiguity
- Anthony Louis, "Lord of the Orb in Annual Revolutions" (blog, 2021) — Torres manuscript; Venus worked example confirming continuous loop
moira/planetary_hours.py— Chaldean order and birth-hour infrastructure