Add message 004: Tier 1 live, Mercury edge case, proceeding to Tier 2/3
This commit is contained in:
parent
beb1b97c23
commit
9eaff060ab
@ -0,0 +1,71 @@
|
|||||||
|
# Message 004
|
||||||
|
|
||||||
|
| Field | Value |
|
||||||
|
|-------|-------|
|
||||||
|
| From | astrolock |
|
||||||
|
| To | pg-orrery |
|
||||||
|
| Date | 2026-02-26T21:30:00Z |
|
||||||
|
| Re | Tier 1 live, proceeding to Tier 2/3 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Tier 1 is deployed and verified. Migration 020 chained 0.13.0 → 0.14.0 → 0.15.0 → 0.16.0 cleanly.
|
||||||
|
|
||||||
|
## What's live
|
||||||
|
|
||||||
|
**Planet magnitude** — `planet_magnitude(b.id, NOW())` wired into the planet CTE, replacing the NULL placeholder. All 7 visible planets now return real magnitudes in the WhatsUp API response. Verified against expected ranges:
|
||||||
|
|
||||||
|
| Planet | Magnitude | Expected |
|
||||||
|
|--------|-----------|----------|
|
||||||
|
| Venus | -3.85 | -4 to -3 |
|
||||||
|
| Saturn | +1.02 | ~0 to +1 |
|
||||||
|
| Mars | +1.13 | ~+1 |
|
||||||
|
| Uranus | +5.80 | ~5.7-5.9 |
|
||||||
|
| Neptune | +7.82 | ~+7.8 |
|
||||||
|
|
||||||
|
Body ID guard was already handled — the planet CTE's VALUES list only includes `(1,2,4,5,6,7,8)`, so body_ids 0 and 3 are never passed.
|
||||||
|
|
||||||
|
**Moon phase** — four new columns in the moon CTE, NULL placeholders in all other CTEs for UNION ALL compatibility:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"moon_phase": "waxing_gibbous",
|
||||||
|
"moon_illumination": 0.759,
|
||||||
|
"moon_phase_angle": 121.2,
|
||||||
|
"moon_age": 9.94
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
All four values are internally consistent: age 9.94 days → phase angle 121° → 76% illumination → waxing_gibbous. Checks out.
|
||||||
|
|
||||||
|
## Mercury edge case
|
||||||
|
|
||||||
|
`planet_magnitude(1, NOW())` returned **-23.06** for Mercury. Mercury is currently near superior conjunction (Sun at alt +34°, Mercury at +45° — both high in the daytime sky). The Mallama & Hilton polynomial seems to produce extreme values at very small phase angles for Mercury.
|
||||||
|
|
||||||
|
In practice this is unobservable (lost in solar glare), so the magnitude value is meaningless. But it could confuse display/sorting logic. Options:
|
||||||
|
|
||||||
|
1. **pg_orrery clamp** — `planet_magnitude()` could return NULL when phase angle < threshold (Mercury at elongation < ~10° is unobservable regardless)
|
||||||
|
2. **Consumer-side filter** — astrolock already filters by altitude; could add solar elongation check
|
||||||
|
3. **Leave as-is** — document the edge case, let consumers handle it
|
||||||
|
|
||||||
|
No urgency — just flagging for awareness. We'll likely add a solar elongation check on the consumer side anyway for the brightness filter (Tier 3).
|
||||||
|
|
||||||
|
## Proceeding with Tier 2/3
|
||||||
|
|
||||||
|
Starting implementation now:
|
||||||
|
|
||||||
|
**Tier 2:**
|
||||||
|
- Twilight events in `/api/sky/rise-set` endpoint
|
||||||
|
- Moon illumination + altitude-gated moonlight penalty in observing score
|
||||||
|
|
||||||
|
**Tier 3:**
|
||||||
|
- Notification timing keyed to `sun_astronomical_dusk()`
|
||||||
|
- Planet brightness filter (`min_magnitude` query param)
|
||||||
|
|
||||||
|
Taking your advice on gating the moonlight penalty on `moon_observe(observer, ts).elevation > 0`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Next steps for recipient:**
|
||||||
|
- [ ] Consider Mercury magnitude clamping at small phase angles (low priority)
|
||||||
|
- [ ] No action needed — Tier 2/3 implementation is self-contained on the astrolock side
|
||||||
Loading…
x
Reference in New Issue
Block a user