# Swiss None-Surface Support Report This report expands the `none` truth-basis rows from `SWISS_EPHEMERIS_SYMBOL_TABLE.md` into explicit product decisions. Decision meanings: - `support`: Moira should expose this capability publicly. - `defer`: valid domain area, but should only be added after a typed Moira-shaped design pass. - `do_not_support`: Swiss-specific/internal/low-value surface that Moira should not mirror. Total `none` rows: 239 - `support`: 26 (all 26 now implemented — see Phase 1, 2, and 3 implementation below) - `defer`: 134 - `do_not_support`: 79 Phase 1 implemented (17 symbols reclassified from `support` / `none` to `implemented`): - `FLG_ASTROMETRIC`, `FLG_TRUEPOS` → `planet_at(..., apparent=False)` - `FLG_NOABERR` → `planet_at(..., aberration=False)` - `FLG_NOGDEFL` → `planet_at(..., grav_deflection=False)` - `FLG_NONUT` → `planet_at(..., nutation=False)` - `FLG_BARYCTR` → `planet_at(..., center='barycentric')` - `FLG_XYZ` → `planet_at(..., frame='cartesian')` → `CartesianPosition` - `set_delta_t_userdef` → `DeltaTPolicy` + `ut_to_tt(..., delta_t_policy=...)` - `BIT_DISC_BOTTOM`, `BIT_DISC_CENTER`, `BIT_FIXED_DISC_SIZE`, `BIT_HINDU_RISING`, `BIT_NO_REFRACTION` → `RiseSetPolicy` fields - `azalt_rev` → `horizontal_to_equatorial(...)` - `cotrans_sp` → `cotrans_sp(...)` - `refrac` → `atmospheric_refraction(...)` - `refrac_extended` → `atmospheric_refraction_extended(...)` - `time_equ` → `equation_of_time(...)` Phase 2 implemented (9 symbols reclassified from `support` / `none` to `implemented`): - `calc_pctr` → `planet_relative_to(body, center_body, jd_ut, reader)` → `PlanetData` - `helio_cross`, `helio_cross_ut` → `next_heliocentric_transit(body, target_lon, jd_start, reader)` → `float` - `house_pos` → `body_house_position(longitude, house_cusps)` → `float` - `houses_armc` → `houses_from_armc(armc, obliquity, lat, system, *, policy, sun_longitude)` → `HouseCusps` - `houses_armc_ex2` → `house_dynamics_from_armc(armc, obliquity, lat, system, *, policy, sun_longitude, darmc_deg)` → `HouseDynamics` - `houses_ex2` → `cusp_speeds_at(jd_ut, lat, lon, system, *, policy, dt)` → `HouseDynamics` - `mooncross_node`, `mooncross_node_ut` → `next_moon_node_crossing(jd_start, reader, ascending=True)` → `float` Phase 3 implemented (1 symbol reclassified from `support` / `none` to `implemented`): - `SIDM_USER` → `UserDefinedAyanamsa(reference_value_j2000, drift_per_century)` in `moira.sidereal` Phase 3 implemented orbital surfaces: - `get_orbital_elements` -> `orbital_elements_at(body, jd_ut)` -> `KeplerianElements` in `moira.orbits` - `orbit_max_min_true_distance` -> `distance_extremes_at(body, jd_ut)` -> `DistanceExtremes` in `moira.orbits` Recommended support order (updated — all `support` items done): 1. ~~Position-computation switches and output modes~~ — done (Phase 1) 2. ~~Rise/set doctrine selectors~~ — done (Phase 1) 3. ~~Low-level astronomy helpers~~ — done (Phase 1) 4. ~~Specialist search/helpers~~ — done (Phase 2) 5. Deferred design families: generalized heliacal, then path/where geometry. Interpretation: - `support` means the capability is worth adding, but usually not as a Swiss-shaped flag or tuple surface. - `defer` means the domain is real, but Moira should design a typed subsystem first. - `do_not_support` means the symbol is Swiss-internal, low-value, or contrary to Moira's API design. | Symbol | Kind | Current status | What it is | Decision | Why | How if supported | | --- | --- | --- | --- | --- | --- | --- | | `ACRONYCHAL_RISING` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `ACRONYCHAL_SETTING` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `APP_TO_TRUE` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `ASTNAMFILE` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `AUNIT_TO_KM` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `AUNIT_TO_LIGHTYEAR` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `AUNIT_TO_PARSEC` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `BIT_DISC_BOTTOM` | constant | implemented | Rise/set doctrine selector | `support` | These are real event-definition choices that matter for migration and reproducibility. | `RiseSetPolicy(disc_reference='bottom')` in `moira.rise_set`. | | `BIT_DISC_CENTER` | constant | implemented | Rise/set doctrine selector | `support` | These are real event-definition choices that matter for migration and reproducibility. | `RiseSetPolicy(disc_reference='center')` in `moira.rise_set`. | | `BIT_FIXED_DISC_SIZE` | constant | implemented | Rise/set doctrine selector | `support` | These are real event-definition choices that matter for migration and reproducibility. | `RiseSetPolicy(fixed_disc_size=True)` in `moira.rise_set`. | | `BIT_FORCE_SLOW_METHOD` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `BIT_HINDU_RISING` | constant | implemented | Rise/set doctrine selector | `support` | These are real event-definition choices that matter for migration and reproducibility. | `RiseSetPolicy(hindu_rising=True)` in `moira.rise_set`. | | `BIT_NO_REFRACTION` | constant | implemented | Rise/set doctrine selector | `support` | These are real event-definition choices that matter for migration and reproducibility. | `RiseSetPolicy(refraction=False)` in `moira.rise_set`. | | `COMET_OFFSET` | constant | missing | Swiss numeric selector / offset idiom | `do_not_support` | The underlying capability may be valuable, but the Swiss numeric-offset selector pattern is not a good Moira API. | Expose named body-specific or typed helper APIs instead of numeric offsets or interpolation bits. | | `COSMICAL_SETTING` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `DE_NUMBER` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `DELTAT_AUTOMATIC` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `ECL2HOR` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `EPHE_PATH` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `EQU2HOR` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `EVENING_FIRST` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `EVENING_LAST` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `FICT_MAX` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FICTFILE` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FIXSTAR` | constant | unsupported | Unclassified specialist gap | `defer` | The symbol names a real Swiss surface, but it should not be adopted without an intentional Moira-shaped design. | Add only after a dedicated typed API and validation story are defined. | | `FLG_ASTROMETRIC` | constant | implemented | Position-computation switch | `support` | These correspond to meaningful output/control choices users genuinely need when migrating precision astronomy code. | `planet_at(..., apparent=False)` in `moira.planets`. | | `FLG_BARYCTR` | constant | implemented | Position-computation switch | `support` | These correspond to meaningful output/control choices users genuinely need when migrating precision astronomy code. | `planet_at(..., center='barycentric')` in `moira.planets`. | | `FLG_CENTER_BODY` | constant | missing | Swiss numeric selector / offset idiom | `do_not_support` | The underlying capability may be valuable, but the Swiss numeric-offset selector pattern is not a good Moira API. | Expose named body-specific or typed helper APIs instead of numeric offsets or interpolation bits. | | `FLG_DEFAULTEPH` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_DPSIDEPS_1980` | constant | missing | Nutation-model selector | `defer` | A model-basis control is reasonable, but Swiss's flag is too narrow to mirror blindly. | If added, expose a typed `NutationPolicy` or `nutation_model=` option rather than a Swiss compatibility flag. | | `FLG_ICRS` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_J2000` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_JPLEPH` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_JPLHOR` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_JPLHOR_APPROX` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_MOSEPH` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_NOABERR` | constant | implemented | Position-computation switch | `support` | These correspond to meaningful output/control choices users genuinely need when migrating precision astronomy code. | `planet_at(..., aberration=False)` in `moira.planets`. | | `FLG_NOGDEFL` | constant | implemented | Position-computation switch | `support` | These correspond to meaningful output/control choices users genuinely need when migrating precision astronomy code. | `planet_at(..., grav_deflection=False)` in `moira.planets`. | | `FLG_NONUT` | constant | implemented | Position-computation switch | `support` | These correspond to meaningful output/control choices users genuinely need when migrating precision astronomy code. | `planet_at(..., nutation=False)` in `moira.planets`. | | `FLG_ORBEL_AA` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_SPEED3` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_SWIEPH` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_TEST_PLMOON` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_TROPICAL` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FLG_TRUEPOS` | constant | implemented | Position-computation switch | `support` | These correspond to meaningful output/control choices users genuinely need when migrating precision astronomy code. | `planet_at(..., apparent=False)` in `moira.planets` (same as FLG_ASTROMETRIC). | | `FLG_XYZ` | constant | implemented | Position-computation switch | `support` | These correspond to meaningful output/control choices users genuinely need when migrating precision astronomy code. | `planet_at(..., frame='cartesian')` returns `CartesianPosition` in `moira.planets`. | | `FNAME_DE200` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FNAME_DE403` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FNAME_DE404` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FNAME_DE405` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FNAME_DE406` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FNAME_DFT` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `FNAME_DFT2` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `HARRINGTON` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `HELFLAG_AV` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_AVKIND` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_AVKIND_MIN7` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_AVKIND_MIN9` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_AVKIND_PTO` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_AVKIND_VR` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_HIGH_PRECISION` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_LONG_SEARCH` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_NO_DETAILS` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_OPTICAL_PARAMS` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_SEARCH_1_PERIOD` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_VISLIM_DARK` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_VISLIM_NOMOON` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELFLAG_VISLIM_PHOTOPIC` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_AVKIND` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_AVKIND_MIN7` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_AVKIND_MIN9` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_AVKIND_PTO` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_AVKIND_VR` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_HIGH_PRECISION` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_LONG_SEARCH` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_NO_DETAILS` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_OPTICAL_PARAMS` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_SEARCH_1_PERIOD` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_VISLIM_DARK` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_VISLIM_NOMOON` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HELIACAL_VISLIM_PHOTOPIC` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `HOR2ECL` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `HOR2EQU` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `INTP_APOG` | constant | missing | Swiss numeric selector / offset idiom | `do_not_support` | The underlying capability may be valuable, but the Swiss numeric-offset selector pattern is not a good Moira API. | Expose named body-specific or typed helper APIs instead of numeric offsets or interpolation bits. | | `INTP_PERG` | constant | missing | Swiss numeric selector / offset idiom | `do_not_support` | The underlying capability may be valuable, but the Swiss numeric-offset selector pattern is not a good Moira API. | Expose named body-specific or typed helper APIs instead of numeric offsets or interpolation bits. | | `MAX_STNAME` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `MIXEDOPIC_FLAG` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `MOD_BIAS_DEFAULT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_BIAS_IAU2000` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_BIAS_IAU2006` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_BIAS_NONE` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_DELTAT_DEFAULT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_DELTAT_ESPENAK_MEEUS_2006` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_DELTAT_STEPHENSON_1997` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_DELTAT_STEPHENSON_ETC_2016` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_DELTAT_STEPHENSON_MORRISON_1984` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_DELTAT_STEPHENSON_MORRISON_2004` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_JPLHOR_DEFAULT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_JPLHOR_LONG_AGREEMENT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_JPLHORA_1` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_JPLHORA_2` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_JPLHORA_3` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_JPLHORA_DEFAULT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NBIAS` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NDELTAT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NJPLHOR` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NJPLHORA` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NNUT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NPREC` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NUT_DEFAULT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NUT_IAU_1980` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NUT_IAU_2000A` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NUT_IAU_2000B` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NUT_IAU_CORR_1987` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_NUT_WOOLARD` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_BRETAGNON_2003` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_DEFAULT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_DEFAULT_SHORT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_IAU_1976` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_IAU_2000` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_IAU_2006` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_LASKAR_1986` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_NEWCOMB` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_OWEN_1990` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_SIMON_1994` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_VONDRAK_2011` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_WILL_EPS_LASK` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MOD_PREC_WILLIAMS_1994` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_BIAS` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_DELTAT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_JPLHOR_MODE` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_JPLHORA_MODE` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_NUT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_PREC_LONGTERM` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_PREC_SHORTTERM` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MODEL_SIDT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `MORNING_FIRST` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `MORNING_LAST` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `NALL_NAT_POINTS` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NEPTUNE_ADAMS` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `NEPTUNE_LEVERRIER` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `NFICT_ELEM` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NIBIRU` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `NODBIT_FOPOINT` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NODBIT_MEAN` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NODBIT_OSCU` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NODBIT_OSCU_BAR` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NPLANETS` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NSE_MODELS` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `NSIDM_PREDEF` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `PHOTOPIC_FLAG` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `PLMOON_OFFSET` | constant | missing | Swiss numeric selector / offset idiom | `do_not_support` | The underlying capability may be valuable, but the Swiss numeric-offset selector pattern is not a good Moira API. | Expose named body-specific or typed helper APIs instead of numeric offsets or interpolation bits. | | `PLUTO_LOWELL` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `PLUTO_PICKERING` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `SCOTOPIC_FLAG` | constant | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `SE_FNAME_DE431` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDBIT_ECL_DATE` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDBIT_ECL_T0` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDBIT_NO_PREC_OFFSET` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDBIT_PREC_ORIG` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDBIT_SSY_PLANE` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDBIT_USER_UT` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDBITS` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `SIDM_ARYABHATA_522` | constant | implemented | Additional ayanamsa constant | `support` | Epoch 522 CE; Aryabhatiya lineage; peer-reviewed in Pingree & Plofker. Passes all 5 doctrinal acceptance criteria. | `Ayanamsa.ARYABHATA_522` in `moira.sidereal`; J2000 20.575827873°. | | `SIDM_B1950` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1 and C4. B1950 is an astronomical coordinate frame epoch, not an astrological sidereal zodiac. No user community practices this as an ayanamsa. | No Moira surface. | | `SIDM_BABYL_BRITTON` | constant | implemented | Additional ayanamsa constant | `support` | Britton's Babylonian epoch; peer-reviewed in Centaurus, AHES, and JHA. Passes all 5 doctrinal acceptance criteria. | `Ayanamsa.BABYL_BRITTON` in `moira.sidereal`; J2000 24.615733680°. | | `SIDM_GALALIGN_MARDYKS` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1. Mardyks' Skydram/galactic alignment is a practitioner publication, not peer-reviewed. | No Moira surface. Specialist use: `UserDefinedAyanamsa(30.017775)`. | | `SIDM_GALCENT_MULA_WILHELM` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C3. Only 0.36' from `TRUE_REVATI` at J2000 — sub-arcminute; not a doctrinally distinct system. | No Moira surface. Specialist use: `UserDefinedAyanamsa(20.039201)`. | | `SIDM_GALEQU_FIORENZA` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1. Self-published (lunarplanner.com); exact 25.000000° epoch is a round-number assignment, not a precision-derived value. | No Moira surface. Specialist use: `UserDefinedAyanamsa(25.000000)`. | | `SIDM_GALEQU_IAU1958` | constant | implemented | Additional ayanamsa constant | `support` | Blaauw et al. 1960 (BAN 11, 414); IAU 1958 galactic coordinate standard. Passes all 5 doctrinal criteria. Non-standard galactic nodal drift applied (+0.007460°/century). | `Ayanamsa.GALEQU_IAU1958` in `moira.sidereal`; J2000 30.023153273°. | | `SIDM_GALEQU_MULA` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1. Composite nakshatra-galactic definition without a standalone peer-reviewed epoch publication. | No Moira surface. Specialist use: `UserDefinedAyanamsa(23.409406)`. | | `SIDM_GALEQU_TRUE` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1 and C2. Dynamic system — galactic equator at date of computation. No fixed epoch; violates the definition of an ayanamsa. Cannot be expressed as a `UserDefinedAyanamsa`. | No Moira surface. | | `SIDM_J1900` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1 and C4. J1900.0 is an astronomical coordinate frame epoch, not an astrological sidereal zodiac. No user community practices this as an ayanamsa. | No Moira surface. | | `SIDM_J2000` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1 and C4. J2000.0 is an astronomical coordinate frame epoch, not an astrological sidereal zodiac. No user community practices this as an ayanamsa. | No Moira surface. | | `SIDM_KRISHNAMURTI_VP291` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1 and borderline C3. C3: only 1.21' from `KRISHNAMURTI`. C1: Vishnu Prabha 291 is a practitioner journal, not peer-reviewed. Both criteria fail under strict doctrine. | No Moira surface. Specialist use: `UserDefinedAyanamsa(23.780346)`. | | `SIDM_LAHIRI_1940` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C3. Only 0.14' from `TRUE_CHITRAPAKSHA` at J2000 — sub-arcminute; not a doctrinally distinct system. | No Moira surface. Specialist use: `UserDefinedAyanamsa(23.842304)`. | | `SIDM_LAHIRI_ICRC` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C3. Only 0.02' from `LAHIRI` at J2000 — numerically indistinguishable; not a doctrinally distinct system. | No Moira surface. Specialist use: `UserDefinedAyanamsa(23.856770)`. | | `SIDM_LAHIRI_VP285` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C3. Only 0.38' from `LAHIRI` at J2000 — sub-arcminute; not a doctrinally distinct system. | No Moira surface. Specialist use: `UserDefinedAyanamsa(23.863462)`. | | `SIDM_TRUE_MULA` | constant | implemented | Additional ayanamsa constant | `support` | Chandra Hari; star-anchored: Shaula (λ Sco) at 240° sidereal; published in IJHS (peer-reviewed). Shaula confirmed in Moira star registry. Passes all 5 doctrinal criteria. | `Ayanamsa.TRUE_MULA` in `moira.sidereal`; live Shaula anchor primary, polynomial fallback J2000 24.579939992°. | | `SIDM_TRUE_SHEORAN` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1 and C2. Sheoran's specific epoch publication is not independently verifiable; the anchor date and derivation cannot be confirmed from available sources. | No Moira surface. Specialist use: `UserDefinedAyanamsa(25.234406)` pending source confirmation. | | `SIDM_USER` | constant | implemented | User-defined ayanamsa | `support` | Custom sidereal frames are a legitimate specialist requirement and fit Moira's typed-configuration model. | `UserDefinedAyanamsa(reference_value_j2000, drift_per_century)` in `moira.sidereal`; accepted anywhere `Ayanamsa.*` is accepted. | | `SIDM_VALENS_MOON` | constant | unsupported | Additional ayanamsa constant | `do_not_support` | Fails C1 and C2. The specific anchor epoch from Vettius Valens' horoscope corpus is not independently verifiable without the SE source code or a citable primary publication naming the exact date. | No Moira surface. Specialist use: `UserDefinedAyanamsa(22.795590)` pending source confirmation. | | `SIMULATE_VICTORVB` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `STARFILE` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `STARFILE_OLD` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `TIDAL_26` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_AUTOMATIC` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE200` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE403` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE404` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE405` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE406` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE421` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE422` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE430` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE431` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DE441` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_DEFAULT` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_JPLEPH` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_MOSEPH` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_STEPHENSON_2016` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TIDAL_SWIEPH` | constant | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `TJD_INVALID` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `TRUE_TO_APP` | constant | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `VULCAN` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `WALDEMATH` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `WHITE_MOON` | constant | unsupported | Hypothetical / obsolete body constant | `do_not_support` | These are not part of Moira's supported physical body model. | No Moira surface. If ever desired, add them only in a clearly separate hypothetical-bodies module. | | `azalt_rev` | function | implemented | Low-level astronomy helper | `support` | These are standard computational helpers with clear mathematical meaning and low API ambiguity. | `horizontal_to_equatorial(az, alt, lst, lat)` in `moira.coordinates`. | | `calc_pctr` | function | implemented | Low-level specialist helper | `support` | These are real computational surfaces that fit Moira's engine style and improve migration quality for advanced users. | `planet_relative_to(body, center_body, jd_ut, reader)` → `PlanetData` in `moira.planets`. | | `close` | function | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `cotrans_sp` | function | implemented | Low-level astronomy helper | `support` | These are standard computational helpers with clear mathematical meaning and low API ambiguity. | `cotrans_sp(lon, lat, dist, dlon, dlat, ddist, obliquity)` in `moira.coordinates`. | | `csnorm` | function | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `difcs2n` | function | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `difcsn` | function | unsupported | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `get_current_file_data` | function | missing | Legacy Swiss utility surface | `do_not_support` | These are low-value utilities that do not fit Moira's core astronomy engine priorities. | No Moira surface. Use Python/time utilities externally if needed. | | `get_library_path` | function | missing | Swiss internal/backend/file/control surface | `do_not_support` | These are Swiss implementation details or C-library affordances, not stable domain concepts Moira should mirror. | No Moira surface. Keep them out of the public API. | | `get_orbital_elements` | function | implemented | Orbital-elements subsystem | `support` | This is now a live public subsystem with typed results and external validation. | `orbital_elements_at(body, jd_ut)` -> `KeplerianElements` in `moira.orbits`; validated against JPL HORIZONS `ELEMENTS`. | | `get_tid_acc` | function | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `heliacal_pheno_ut` | function | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. | | `helio_cross` | function | implemented | Low-level specialist helper | `support` | These are real computational surfaces that fit Moira's engine style and improve migration quality for advanced users. | `next_heliocentric_transit(body, target_lon, jd_start, reader)` → `float` in `moira.planets`. | | `helio_cross_ut` | function | implemented | Low-level specialist helper | `support` | These are real computational surfaces that fit Moira's engine style and improve migration quality for advanced users. | `next_heliocentric_transit(body, target_lon, jd_start, reader)` → `float` in `moira.planets` (UT-native). | | `house_pos` | function | implemented | Low-level specialist helper | `support` | These are real computational surfaces that fit Moira's engine style and improve migration quality for advanced users. | `body_house_position(longitude, house_cusps)` → `float` in `moira.houses`. | | `houses_armc` | function | implemented | Low-level specialist helper | `support` | These are real computational surfaces that fit Moira's engine style and improve migration quality for advanced users. | `houses_from_armc(armc, obliquity, lat, system, *, policy, sun_longitude)` → `HouseCusps` in `moira.houses`. | | `houses_armc_ex2` | function | implemented | House speed surface | `support` | This is a legitimate specialist companion to the existing house-dynamics surface for ARMC-native workflows such as primary directions. | `house_dynamics_from_armc(armc, obliquity, lat, system, *, policy, sun_longitude, darmc_deg)` → `HouseDynamics` in `moira.houses`; fixed-obliquity ARMC derivative, validated against the time-based path in `tests/unit/test_house_dynamics.py`. | | `houses_ex2` | function | implemented | House speed surface | `support` | This is now a live Moira-native house-dynamics surface with explicit doctrine and typed output, rather than a copied Swiss tuple. | `cusp_speeds_at(jd_ut, lat, lon, system, *, policy, dt)` → `HouseDynamics` in `moira.houses`; direct tests in `tests/unit/test_house_dynamics.py`. | | `lat_to_lmt` | function | missing | Legacy Swiss utility surface | `do_not_support` | These are low-value utilities that do not fit Moira's core astronomy engine priorities. | No Moira surface. Use Python/time utilities externally if needed. | | `lmt_to_lat` | function | missing | Legacy Swiss utility surface | `do_not_support` | These are low-value utilities that do not fit Moira's core astronomy engine priorities. | No Moira surface. Use Python/time utilities externally if needed. | | `lun_occult_where` | function | partial | Path/where geometry helper | `support` | Moira now has a real typed occultation path surface with exact-JD greatest-geography solving. The current external validation slice includes Swiss `where` parity at the maximum-geography level plus multiple external IOTA graze/limit text checks across independent bright-star events (El Nath, Spica N/S, epsilon Ari, Alcyone, Merope, Asellus Borealis, Regulus). Nominal site altitude is now carried through where declared by the source files, and a lunar-limb profile correction hook is in place for future topography-backed graze refinement; broader corpus work is still future work. | `lunar_occultation_path_at(...)` / `lunar_star_occultation_path_at(...)` return `OccultationPathGeometry` in `moira.occultations`. | Ancient-occultation note: - Ancient occultations are not part of the active `lun_occult_where` path corpus. - They are deferred to a separate historical-validation program where the authority class is scholarly record reduction, not operational path publication. | `mooncross_node` | function | implemented | Low-level specialist helper | `support` | These are real computational surfaces that fit Moira's engine style and improve migration quality for advanced users. | `next_moon_node_crossing(jd_start, reader, ascending=True)` → `float` in `moira.nodes`. | | `mooncross_node_ut` | function | implemented | Low-level specialist helper | `support` | These are real computational surfaces that fit Moira's engine style and improve migration quality for advanced users. | `next_moon_node_crossing(jd_start, reader, ascending=True)` → `float` in `moira.nodes` (UT-native). | | `orbit_max_min_true_distance` | function | implemented | Orbital-elements subsystem | `support` | This is now a live public subsystem with typed results and a single summit-grade external validation standard. | `distance_extremes_at(body, jd_ut)` -> `DistanceExtremes` in `moira.orbits`; validated against JPL HORIZONS vector-derived heliocentric extrema across all validated planets. | | `refrac` | function | implemented | Low-level astronomy helper | `support` | These are standard computational helpers with clear mathematical meaning and low API ambiguity. | `atmospheric_refraction(altitude_deg, ...)` in `moira.coordinates`. | | `refrac_extended` | function | implemented | Low-level astronomy helper | `support` | These are standard computational helpers with clear mathematical meaning and low API ambiguity. | `atmospheric_refraction_extended(altitude_deg, ...)` in `moira.coordinates`. | | `set_delta_t_userdef` | function | implemented | Explicit Delta-T override | `support` | This is a legitimate specialist control for historical/experimental work and aligns with Moira's model-basis transparency. | `DeltaTPolicy(model='fixed', fixed_delta_t=...)` passed to `ut_to_tt()` / `planet_at()` in `moira.julian` / `moira.planets`. | | `set_lapse_rate` | function | missing | Unclassified specialist gap | `defer` | The symbol names a real Swiss surface, but it should not be adopted without an intentional Moira-shaped design. | Add only after a dedicated typed API and validation story are defined. | | `set_tid_acc` | function | missing | Model-basis / tidal-acceleration control | `defer` | These are scientifically meaningful, but Swiss's sprawling constant matrix is not the right Moira surface. | If needed, add compact typed controls such as `DeltaTPolicy`, `PrecessionPolicy`, `NutationPolicy`, or `TidalAccelerationPolicy`. | | `sol_eclipse_where` | function | partial | Path/where geometry helper | `support` | Moira now has a real typed solar path surface with numerical greatest-geography solving and sampled central-track output. The current external validation slice is Swiss `where` parity at the maximum-geography level; full atlas-grade path validation is still future work. | `EclipseCalculator.solar_eclipse_path(...)` returns `SolarEclipsePath` in `moira.eclipse`. | | `time_equ` | function | implemented | Low-level astronomy helper | `support` | These are standard computational helpers with clear mathematical meaning and low API ambiguity. | `equation_of_time(jd_tt)` in `moira.coordinates`. | | `vis_limit_mag` | function | missing | Generalized heliacal / visibility surface | `defer` | This is a valid domain, but Moira should not accrete Swiss-style bitfields before the heliacal subsystem is unified and validated. | Introduce typed surfaces such as `HeliacalEventKind`, `HeliacalPolicy`, and `VisibilityModel`, then map selected behaviors onto those. |