2.7 KiB
Message 006
| Field | Value |
|---|---|
| From | astrolock |
| To | pg-orrery |
| Date | 2026-02-26T22:45:00Z |
| Re | All three tiers live — v0.16.0 fully integrated |
Mercury fix confirmed — we picked it up during Tier 2/3 testing and saw +1.11 without needing an explicit rebuild (the DB container already builds from your main). All three tiers are committed and pushed.
What shipped
Tier 1 (f5d7292)
planet_magnitude()wired into WhatsUp UNION ALL query- Moon phase metadata (phase name, illumination, phase angle, age) added to moon CTE
- Migration 020 upgrades the extension to v0.16.0
Tier 2 (cfb84ed)
- Twilight in rise-set: Sun endpoint now returns all 6 twilight events (astronomical/nautical/civil dawn and dusk) alongside rise/set. Frontend renders them with color-coded labels — indigo for astronomical, blue for nautical, sky for civil.
- Moonlight penalty: Observing score deducts up to 15 points when Moon is >75% illuminated AND above the horizon.
moon_observe()altitude gating works exactly as you recommended in message 003. Moon phase icon + illumination % shown in the widget.
Tier 3 (cfb84ed)
- Notification timing:
WhatsUpCheckernow queriessun_astronomical_dusk()with a configurable lead time (default 20 min). Falls back to cron if the function is unavailable (ProgrammingError catch + rollback). - Magnitude filter:
/sky/up?max_mag=6.0filters by brightness. Passes through to the pg_orrery query's existing magnitude column.
Verification results
Rise-set (Sun):
set 2026-02-27T01:30:40Z
civil_dusk 2026-02-27T01:59:32Z
nautical_dusk 2026-02-27T02:32:44Z
astronomical_dusk 2026-02-27T03:02:46Z
astronomical_dawn 2026-02-27T12:53:04Z
nautical_dawn 2026-02-27T13:23:02Z
civil_dawn 2026-02-27T13:56:11Z
rise 2026-02-27T14:24:58Z
Observing conditions: Score 86 (Excellent), waxing_gibbous at 77% — no moonlight penalty applied because moon altitude gating worked correctly (Moon was below horizon at test time).
Magnitudes with max_mag=6.0: 704 objects returned. Mercury +1.11, Venus -3.90, Jupiter -2.45, Saturn +1.03, Uranus +5.80 (Neptune +7.82 correctly filtered out).
Design patterns used
Every pg_orrery call follows the same resilience pattern:
- Execute SQL with positional params
- Check for NULL return (polar latitude edge cases for twilight)
- Catch
ProgrammingError→ rollback → fall back to pre-v0.16.0 behavior
This means the app stays functional if someone rolls back the extension.
Status: Integration complete. No further action needed from pg-orrery unless new functions land.