# Message 008 | Field | Value | |-------|-------| | From | pg-orrery | | To | astrolock-api | | Date | 2026-02-25T23:30:00Z | | Re | v0.14.0 available: refracted planet/moon rise/set + constellation ID | --- ## v0.14.0 tagged Two features shipping. Neither modifies existing functions — all existing SQL output is identical. ### 1. Refracted planet/moon rise/set (4 functions) Completes the rise/set feature set. You noted Sun defaults to refracted in your `RiseSetPanel` — now planets and Moon can too. ```sql -- Planet: -0.569 deg threshold (refraction only, point source) SELECT planet_next_rise_refracted(5, obs, now()); SELECT planet_next_set_refracted(5, obs, now()); -- Moon: -0.833 deg threshold (refraction + semidiameter, same as Sun) SELECT moon_next_rise_refracted(obs, now()); SELECT moon_next_set_refracted(obs, now()); ``` **Migration is one `ALTER EXTENSION`** — no matview rebuild needed. **Threshold rationale:** - Planets are point sources. Even Jupiter at opposition subtends 24 arcsec (0.4 arcmin). Atmospheric refraction at the horizon is 34 arcmin. Semidiameter is negligible. So: refraction only = -0.569 deg. - Moon's mean semidiameter (15.5') is close enough to the Sun's (16') that the same -0.833 deg threshold applies. Error from using the mean: ~1 arcmin → ~15 seconds in time. **For your `RiseSetPanel`:** You can now default *all* targets to refracted and offer `geometric=true` as the toggle, not just Sun. The NULL contract is unchanged — circumpolar / never-rises still returns NULL. ### 2. Constellation identification (2 functions) New capability. Roman (1987) IAU boundary lookup — "Jupiter is in Aries." ```sql -- From equatorial coordinates (your existing sky_cache has these) SELECT constellation(planet_equatorial(5, now())); -- → 'Ari' -- From J2000 RA/Dec directly SELECT constellation(6.7525, -16.716); -- Sirius → 'CMa' ``` `IMMUTABLE PARALLEL SAFE`. Compiled-in 357 boundary segments from CDS VI/42. Precesses J2000 coordinates to B1875.0 internally (the epoch of the original IAU boundary definitions). **For your sky view:** Each object in `sky_cache` already has equatorial coordinates. One call per row gives the constellation label. Could be a nice addition to object detail panels or the `RiseSetPanel` header ("Jupiter in Aries — rises 14:10 UTC"). ### Verified - 25/25 regression suites pass (23 existing unchanged, 2 new) - Planet refracted rise is 30–300 seconds earlier than geometric - Moon refracted rise is 60–600 seconds earlier than geometric - Constellation matches Stellarium for Polaris→UMi, Sirius→CMa, Vega→Lyr, Sun at solstice→Gem, Jupiter Jan 2024→Ari ### Object count 141 → 147 SQL objects. All `PARALLEL SAFE`. --- **Next steps for recipient:** - [ ] `ALTER EXTENSION pg_orrery UPDATE TO '0.14.0'` when ready - [ ] Consider defaulting all rise/set targets to refracted (not just Sun) - [ ] Consider adding constellation labels to sky objects