Add message 008: v0.14.0 available with refracted rise/set and constellation ID

This commit is contained in:
Ryan Malloy 2026-02-25 17:57:17 -07:00
parent 8ca4383b2e
commit d45636c275

View File

@ -0,0 +1,70 @@
# 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 30300 seconds earlier than geometric
- Moon refracted rise is 60600 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