PRD-024 · /science 'planets' tab — pair every PRD-023 lens annotation with a real article
Status · Draft Date · 2026-06-03 Owner · Marko Closes into · GH issue #XXX (TBD), per-article slices, full-locale-coverage follow-up Builds on · PRD-023 (the visualisations) · ADR-017 (i18n overlay contract) · PRD-008 (/science editorial structure)
Why this is a PRD. PRD-023 shipped ~10 new lens annotations + always-on overlays to /explore (Hill sphere · Lagrange points · magnetosphere · magnetic axis · sub-solar point · axial tilt + N/S compass · planetary stats · Earth comparison · active orbiters · natural satellites). Every other page in Orrery pairs every visual annotation with a
/science/{tab}/{section}article the user can click through to — that's the design contract. /explore now has the annotations but most have no science article behind them. This PRD locks the structure + content plan to close the gap.
What
Create the planets tab under /science + add hill-sphere to the existing orbits tab. Author 8 articles total. Wire every PRD-023 lens panel link + WhyPopover trigger to its real URL.
The principle is the existing one from PRD-008: every annotation in the app links to a real /science article that explains the physics + cross-links to where else in the app that physics shows up.
The audit
What /explore has after PRD-023 vs what /science covers today:
| /explore feature (PRD-023) | Type | Needs /science/... | Status |
|---|---|---|---|
| Hill sphere wireframe | lens overlay (Slice B) | orbits/hill-sphere | ❌ NEW |
| Lagrange L1/L2 markers | lens overlay (Slice B) | orbits/lagrange-points | ✅ exists |
| Magnetosphere shell | lens overlay (Slice D) | planets/magnetic-fields | ❌ NEW |
| Magnetic axis line | lens overlay (Slice E.3b) | planets/magnetic-fields | ❌ NEW (shared with above) |
| Sub-solar point marker | lens overlay (Slice D) | planets/sub-solar-and-terminator | ❌ NEW |
| Spin axis + N/S + rotation | always-on (Slice A.1 + E.3a) | planets/axial-tilt-and-seasons | ❌ NEW |
| Tactical-scan stats overlay | lens overlay (Slice E.4) | planets/planetary-stats | ❌ NEW |
| Earth comparison ghost | always-on (Slice E.2) | planets/planetary-stats (shared) | ❌ NEW |
| Active orbiter glyphs | always-on (Slice A.3) | planets/active-spacecraft-survey | ❌ NEW |
| Natural satellite layer | always-on (#287 + PRD-023 Slice A) | planets/moons-of-the-system | ❌ NEW |
Eight new articles to author. One section (Lagrange points) reuses an existing article.
Why a new 'planets' tab vs cramming into existing ones
Existing tabs:
orbits— orbital mechanics + special orbits. Hill sphere fits here (defined by orbital geometry).scales-time— units, frames, time scales (AU, light-minute, J2000). Stretching to fit planetary stats.observation— telescopes, deep space, galaxies. Wrong category for solar-system bodies.mission-phases— launch, EDL, transfers. Mission ops, not body science.
Nothing covers planetary science as a field — body-level facts about each world (composition, atmosphere, fields, satellites, surface). That's a real gap PRD-023's visualisations now have surfaced.
A new planets tab is the honest fit.
The 8 articles
orbits/hill-sphere
Lead: "The volume of space where a planet's gravity dominates over the Sun's pull."
Coverage: The Hill radius formula r_H ≈ a (1-e) × (m / 3M)^(1/3). Why it scales with mass + distance. Real values for each planet (Earth 1.5M km / 236 R⊕; Jupiter 53M km / 744 R♃; Mercury only 220k km because it sits so close to the Sun's authority). Why Mercury's tiny Hill sphere matters for its moon-prospects (no stable orbit possible inside it). Link out to: SOI vs Hill sphere distinction · patched conics · Roche limit (the inner boundary equivalent).
planets/axial-tilt-and-seasons
Lead: "Why Earth has seasons, why Uranus is rolled on its side, and why Venus rotates backward."
Coverage: Obliquity = angle between rotation axis and orbital plane normal. Earth 23.4° → seasons (sub-solar latitude oscillates ±23.4° over the year). Uranus 97.8° → axis lies in the orbital plane, so each pole gets 42 years of continuous sunlight followed by 42 years of darkness. Venus 177.4° → essentially upside-down + rotating backward (retrograde) at glacial 243-day pace. Likely formation stories: giant-impact theories for the outliers. Cross-link to: magnetic-fields (axis tilts compared); sub-solar-and-terminator (where the Sun lands when axis tilts).
planets/magnetic-fields
Lead: "Every planet's magnetosphere is different. Saturn's is uniquely aligned, Uranus's is chaotic, Venus and Mars don't have one at all."
Coverage: Dynamo basics — conducting fluid + rotation + thermal convection. Mercury's small but present field (oddity for such a small body). Earth's offset dipole drifting toward Siberia. Mars's lost dynamo (~4 Gyr ago) leaving only crustal anomalies. Jupiter's planet-system-spanning magnetotail. Saturn's near-perfect axial alignment (the unsolved mystery — no other dynamo we know aligns this cleanly). Uranus + Neptune's wildly off-axis + centre-offset dipoles, suggesting their dynamos sit in a different conducting layer (probably the ionic-water mantle, not the deep core). The Van Allen analogues: every planet with a field has trapped radiation belts.
planets/moons-of-the-system
Lead: "Galileo's four-night observation in 1610 ended geocentrism. The system's moons are still ending old assumptions today."
Coverage: The Galilean moons — Io's volcanism, Europa's subsurface ocean, Ganymede's magnetic field + size record, Callisto's ancient crater fields. Saturn's Titan (thicker atmosphere than Mars!) + Enceladus (south-pole tiger stripes vent water + organics). Mars's Phobos + Deimos (captured asteroids, Phobos on a death spiral toward Mars). Neptune's Triton (retrograde, captured, geyser activity). Pluto's Charon (mutual barycentre outside Pluto's body). Why so many moons cluster around the gas giants. Cross-link to /missions for the missions that imaged each.
planets/active-spacecraft-survey
Lead: "What's at each planet right now: from MRO at Mars to Juno at Jupiter to Akatsuki at Venus."
Coverage: One paragraph per body, listing active orbiters + their agencies + their dates of arrival + what they're studying. The active-orbiter glyphs on /explore link here, and entries here cross-link to /fleet/orbiter/{id} for the mission card. Includes the "global space programs" framing — UAE Hope, JAXA Akatsuki, ISRO Mangalyaan, CNSA Tianwen-1 explicitly called out, not just the NASA contingent. Notes on past missions (Cassini at Saturn, Voyagers at the outer planets, MESSENGER at Mercury) for context.
planets/planetary-stats
Lead: "How different is Jupiter from Earth, really? Eleven times the diameter. Two and a half times the surface gravity. 100,000 times the atmosphere at 1 bar."
Coverage: Comparison tables — diameter (in km and Earth-relative), surface gravity (in g), atmospheric pressure (in bar), rotation period, day length (sidereal vs solar). Why surface gravity isn't predictable from mass alone (Mars is half Earth's mass but only 38% gravity because radius matters more than mass for a given density). Why "atmospheric pressure at the surface" is a fuzzy concept for gas giants (we use the 1-bar level). Day-length surprises: Venus's day longer than its year. Cross-link to PRD-023 Slice E.4's tactical-scan overlay + Slice E.2's Earth-comparison ghost.
planets/sub-solar-and-terminator
Lead: "Where it's noon on a planet right now, and the line between day and night."
Coverage: Sub-solar point = the longitude directly under the Sun at this instant. Terminator = the great circle 90° from the sub-solar point, marking the boundary between lit and unlit hemispheres. How both shift with the planet's rotation + season + orbital position. Why the terminator is a sharp line on airless bodies (Mercury, Moon) but a gradient on bodies with atmospheres (Earth, Venus). The "twilight zone" — historically the most interesting place to observe surface detail because of the long shadows. Cross-link to axial-tilt-and-seasons (the sub-solar latitude oscillates with the season).
planets/_intro (tab-level lead-in)
The _intro.json file every tab has — sets the tab's overall framing. Plan: 2-3 paragraphs introducing planetary science as a field, what the tab covers, and the cross-app pattern (every section's annotation lives somewhere in /explore + /fleet).
Lens link wiring
Each PRD-023 layer key gets paired with its science URL. Implementation pattern is already in place — lens-story-link.svelte + WhyPopover both take tab + section props that emit a /science/{tab}/{section} link. No new component work; just need to fill in the right props.
Concretely:
hill-spherelens layer →tab: 'orbits', section: 'hill-sphere'lagrange-pointslens layer →tab: 'orbits', section: 'lagrange-points'(already exists)magnetosphere+ magnetic axis →tab: 'planets', section: 'magnetic-fields'sub-solarlens layer →tab: 'planets', section: 'sub-solar-and-terminator'planet-statslens layer →tab: 'planets', section: 'planetary-stats'- N/S badges + spin axis (always-on, no lens key but linked from WhyPopover) →
tab: 'planets', section: 'axial-tilt-and-seasons'
Locale coverage
ADR-017's contract is "every locale-overlay file exists or the loader falls back to en-US". The fallback in src/lib/data.ts:128-145 for planets confirms — missing locale overlays silently fall through to en-US.
This PRD's Slice 1 ships en-US only. All 8 articles + the _intro.json author full editorial content in English. Other 13 locales get TODO placeholder files OR are skipped (loader falls back).
Locale propagation lands as Slice 2 + follow-up. Either via the existing wave23 tooling (re-usable for science articles?) or a fresh tsx script that calls the Anthropic API to translate each locale (8 × 13 = 104 calls, batchable). Tracked separately to keep Slice 1's editorial work focused.
Slice order
Slice 1 — PRD + 'planets' tab structure + 8 en-US articles + lens link wiring
Slice 2 — i18n propagation to the other 13 locales
Slice 3 — diagrams (each article gets at least one SVG schematic where helpful)
Slice 4 — cross-link wiring: each article's "see in app" entries point to live /explore + /fleet routes; bidirectional polishSlice 1 is the bulk of editorial work and ships in this session. Slices 2-4 are follow-ups.
Done definition (Slice 1)
- 8 new articles author full en-US content (intro + narrative_101 + body_paragraphs + diagram_caption)
planets/_index.jsonregisters the tab + section orderplanets/_intro.jsonprovides the tab-level lead-in (en-US)- Every PRD-023 lens link + WhyPopover trigger resolves to a real
/science/...URL (not 404) validate-datagreen- Memory
project_science_translation_pipelineupdated if the wave23 tooling can be reused
Out of scope
- Actual diagrams (Slice 3 — articles ship without
diagramkeys initially; can launch with the text-only narrative) - Audio episodes pairing each article — separate pipeline (PRD-016)
- Cross-links from articles back to /fleet for the spacecraft survey — Slice 4
- Re-organising
scales-timeorobservationtabs (out of scope; the new tab adds without rearranging)