Version: 0.1 Date: 2026-06-14 Status: implemented backend standard for P-GAP-01 REST admission Scope: heliocentric, planetocentric, SSB, and received-light position products
This standard governs the non-geocentric position products that are public in
the Python engine, Moira facade, and admitted P-GAP-01 REST routes:
moira.planets.heliocentric_planet_atmoira.planets.all_heliocentric_atmoira.planetocentric.planetocentric_atmoira.planetocentric.all_planetocentric_atmoira.ssb.ssb_position_atmoira.ssb.all_ssb_positions_atmoira.light_cone.received_light_atmoira.light_cone.all_received_light_atThe existing /v1/positions/* REST family is geocentric/topocentric and sky
projection oriented. It must not be silently stretched to mean all possible
position centers. P-GAP-01 exists because these frame-specific products have
different centers, correction semantics, and result vessels.
Frame-specific position transport must preserve four distinct governing objects.
Owned by:
moira.planets.HeliocentricDatamoira.planets.heliocentric_planet_atmoira.planets.all_heliocentric_atMeaning:
Admitted result fields:
namelongitudelatitudedistancedistance_auspeedretrogradesignsign_symbolsign_degreeOwned by:
moira.planetocentric.PlanetocentricDatamoira.planetocentric.planetocentric_atmoira.planetocentric.all_planetocentric_atMeaning:
Admitted result fields:
observernamelongitudelatitudedistancedistance_auspeedretrogradesignsign_symbolsign_degreeOwned by:
moira.ssb.SSBPositionmoira.ssb.ssb_position_atmoira.ssb.all_ssb_positions_atMeaning:
Admitted result fields:
namelongitudelatitudedistancedistance_auspeedretrogradesignsign_symbolsign_degreeOwned by:
moira.light_cone.ReceivedLightPositionmoira.light_cone.received_light_atmoira.light_cone.all_received_light_atMeaning:
Admitted result fields:
nameapparent_longitudeapparent_latitudegeometric_longitudegeometric_latitudelongitude_displacementdistance_kmdistance_aulight_travel_dayslight_travel_minutesemission_jdspeedretrogradesignsign_symbolsign_degreeREST transport must preserve each engine surface’s native body policy.
Heliocentric:
Planetocentric:
VALID_OBSERVER_BODIESVALID_OBSERVER_BODIESSSB:
SSB_BODIESReceived light:
RECEIVED_LIGHT_BODIESTransport must cap bulk requests. Initial REST admission should allow at most
12 bodies per request, matching the existing server tendency for bounded
chart/position products.
All P-GAP-01 requests must use timezone-aware datetimes at the REST boundary.
Transport must report:
jd_utjd_ttdelta_t_secondsThe server should use the existing engine reader binding from the application dependency context. It must not create a new global kernel state or mutate kernel paths.
Every response must state its center and correction semantics.
Heliocentric:
suntrue_of_date_eclipticgeometric_heliocentric_precession_nutationfalsefalsePlanetocentric:
true_of_date_eclipticgeometric_planetocentric_precession_nutationfalsefalseSSB:
solar_system_barycentertrue_of_date_eclipticgeometric_barycentric_precession_nutationfalsefalseReceived light:
earthtrue_of_date_eclipticapparent_received_light_compared_to_same_time_geometrictruetrue for apparent fieldstrueTransport must not describe heliocentric, planetocentric, or SSB products as observed/apparent positions. Transport must not describe received-light output as simply “geometric” because its primary apparent fields come from the ordinary apparent pipeline.
P-GAP-01 admits a bounded synchronous REST family under:
/v1/positions/frame/*The route family should include:
POST /v1/positions/frame/heliocentricPOST /v1/positions/frame/planetocentricPOST /v1/positions/frame/ssbPOST /v1/positions/frame/received-lightEach route should accept:
observerRoute names must not imply that these are replacements for:
/v1/positions/planet/v1/positions/sky/v1/chartThey are specialized frame products.
P-GAP-01 does not admit:
Before REST admission, tests must cover:
At least one test should assert that received-light output preserves both apparent and geometric longitudes and the light-travel fields.
P-GAP-01 is admitted through the bounded /v1/positions/frame/* REST family.
Recommended status:
admittedReason:
The transport implementation is named in
docs/architecture/P-GAP-01_FRAME_SPECIFIC_POSITIONS_TRANSPORT_DESIGN.md.
It remains a server adapter over existing engine/facade computations.