PRD-026 — Historical content completeness pass (v0.7)
Status · Shipped Date · 2026-06-09 Tracked by · GH issue #314 Builds on · PRD-004 (Mission Library) · PRD-012 (Spaceflight Fleet) · GH issue #311 (tier-by-tier brief)
Why this is a PRD. Pre-v0.7 the historical record in /missions and /fleet was demonstrably NASA-skewed and Apollo-incomplete: only 3 of 11 crewed Apollo missions were in /missions, the surface-page hotspots on /moon + /mars referenced sites with no fleet entry behind them, and the global pre-2010 record had visible blind spots (no Luna 10, no SMART-1, no Chang'e 6, no Mars Odyssey, no Lunar Orbiter 1–5, no pre-ISS Salyut 2/3/4/5). This PRD captures the work that closed those gaps so future audits have one place to point to instead of seven distinct tier commits.
Gating sentence: Captures the v0.7 retrospective on the historical-coverage backfill — the set of tiers (Phase 3c through Tier G) that filled missing missions, fleet entries, surface-page links, agency representation, and i18n coverage so the orrery honestly represents global space exploration history rather than a NASA-only slice.
Goal
Document the cumulative work that brought /missions, /fleet, /moon, /mars (and connected pages) to a state where:
- Every historically significant crewed lunar mission (Apollo 7–17) is in /missions
- Every body that ships a surface-page hotspot has a fleet entry behind it
- The fleet honestly surfaces non-NASA agencies (Roscosmos, CNSA, ISRO, ESA, UKSA, JAXA, USSF) at parity with NASA
- Every fleet entry has en-US + 13 translated overlays (14 locales total)
- Every fleet entry has a 5-image Wikimedia gallery with provenance
- Every fleet ↔ mission ↔ surface-site cross-link is wired bidirectionally
Motivation
Memory feedback_global_space_program_representation: "Orrery celebrates global space programs, not just NASA". The pre-v0.7 state had /fleet skewed heavily toward NASA hardware with sparse coverage of the Soviet / Chinese / Indian / European programs. /missions had only 3 of the 11 crewed Apollo flights and missed every Apollo-era robotic mission. /moon and /mars hotspots showed surface sites with no fleet entry behind them.
This PRD groups the corrective work as one shipped slice (rather than re-narrating each tier individually).
What shipped (in narrative order)
Phase 3c — Shuttle fleet (commits f6079424a + 79c3c1914)
- Columbia, Challenger, Discovery, Atlantis, Endeavour, Enterprise (the 6 NASA Space Shuttle orbiters by call sign)
- X-37B (USSF reusable robotic spaceplane)
- Buran OK-GLI (Roscosmos atmospheric analog, BTS-002)
- Each: detail JSON + 14-locale i18n + 5 Wikimedia images + linked_iss_modules (Endeavour / Atlantis / Discovery wired to the 11 ISS modules they delivered)
- ISS module schema bump:
launch_orbiter_fleet_id - Fleet entry schema bump:
linked_iss_modules
Tier A — Apollo missions backfill + EARTH dest (commit 590afb4f4)
- 8 missing Apollo missions: Apollo 7 (EARTH), 8, 9 (EARTH), 10, 12, 14, 15, 16 — Apollo 11/13/17 were already present
- New
EARTHvalue added to thedestenum (schemas, TS type,mission-dest.ts, fly-mission-apply.ts cislunar branch, /missions filter pill, 14 locales) - Reciprocal
linked_missionsupdated on saturn-v, saturn-ib, apollo-csm-block-ii, apollo-lm, lrv-apollo, lc-39a, lc-39b - Per-mission: base JSON + 14-locale i18n overlays
- See GH #311 Tier A for the original brief
Tier B — Moon-surface fleet gaps (commit 79ab6b55b)
- 8 new fleet entries (5 orbiters + 3 landers/sample-return) representing the global lunar exploration record:
- luna10 (Roscosmos, 1966) — first lunar orbiter
- luna24 (Roscosmos, 1976) — last successful Soviet sample-return
- lunar-prospector (NASA, 1998) — Discovery polar orbiter
- smart-1 (ESA, 2003) — first European Moon mission
- chandrayaan1 (ISRO, 2008) — discovered widespread surface water
- lro (NASA, 2009-active) — LROC's 0.5 m/pixel imagery sources every Apollo/Luna/Chang'e hotspot here
- change1 (CNSA, 2007) — China's first lunar mission
- change6 (CNSA, 2024) — first-ever lunar far-side sample return
- moon-sites.json now carries fleet_refs on all 8 site rows so the hotspot panel resolves to the fleet entry
Tier C — Mars-surface fleet gaps (commit 8ace454e8)
- 7 new fleet entries (4 orbiters + 2 landers + 1 rover):
- viking1-orbiter (NASA, 1975-80) — first US Mars orbiter; first global Mars map
- viking2-lander (NASA, 1976-80) — second US Mars lander, Utopia Planitia
- mars3-orbiter (Roscosmos, 1971-72) — first measurements of Mars upper atmosphere temperature
- mars6 (Roscosmos, 1973) — 224s of first direct atmospheric telemetry
- mars-odyssey (NASA, 2001-active) — longest-lived Mars asset ever
- beagle2 (UKSA / ESA, 2003) — found by HiRISE 2015
- exomars-rosalind-franklin (ESA, planned 2028)
- mars-sites.json now carries fleet_refs on all 7 site rows
Tier D — Lunar Orbiter 1-5 (commit 6080a1d9f)
- 5 NASA precursor orbiters (1966-67) that mapped Apollo landing sites at 60 m/pixel — the highest-resolution global lunar map until LRO began LROC NAC in 2009
- Parallels how Mariner 4/9 are split out as separate entries
Tier F — Mission counterparts for Tier B (commit d1a15b75b)
- 4 robotic Moon missions that had fleet entries (Tier B) but no /missions counterpart: luna10, lunar-prospector, smart-1, change1
- Per-mission: base JSON + 14-locale i18n + reciprocal fleet linked_missions wiring
Tier G — pre-ISS Soviet stations
- 4 stations: salyut-2, salyut-3, salyut-4, salyut-5 (the two military Almaz + DOS-4 civilian + last Almaz)
- Completes the global pre-ISS station record (Mir, Skylab, Salyut 1/6/7 were already present)
Cumulative numbers (v0.7 historical-coverage pass)
| Asset | Added | Total post-pass |
|---|---|---|
| Mission entries | 12 (8 Apollo + 4 robotic) | 68 |
| Fleet entries | 32 (8 shuttle + 8 Moon + 7 Mars + 5 Lunar Orbiter + 4 Salyut) | 246+ |
| i18n overlay files | ~520 | full 14-locale parity across new content |
| Wikimedia hero images | ~190 | with per-image provenance |
| Cross-link entries | ~80 | bidirectional fleet ↔ mission ↔ surface |
Acceptance
- [x] /missions advertises 68 missions (was 56 pre-Tier-A)
- [x] /fleet has new agency representation at parity — Tier B/C/D/G entries span Roscosmos / CNSA / ESA / ISRO / UKSA / USSF / Boeing OK alongside NASA per feedback_global_space_program_representation
- [x] /moon + /mars hotspot panels link to the corresponding fleet entry where one exists (8 + 7 sites)
- [x] Every new entry has en-US + 13 translations; preflight validates 14-locale parity
- [x] Every new entry has 5 Wikimedia images (4 for change1, 2 for salyut-2 — both due to genuine Commons-category sparsity)
- [x] preflight green on every commit; docker-e2e green after the count-drift e2e fixes
- [x] All 7 tier commits pushed to main (see commit history)
Out of scope (deferred)
- Tier H — operating-site UI per category (orbital vs surface) — was queued during the session; see issue #311 for the open ask
- Apollo by-call-sign split — discussed early in the session and explicitly declined: every Apollo LM/CM was single-use throwaway hardware, the call sign is effectively just the mission's hardware alias; better captured via per-mission JSON than per-vehicle fleet entries
- /plan multi-destination porkchop — Mars-only in v0.7 per ADR-076; v0.8 lands the other 11 destinations per RFC-026 + issue #312
Related
- GH issue #311 — original tier-by-tier brief
- GH issue #312 — /plan multi-destination porkchop (v0.8)
- GH issue #314 — this PRD's tracking issue
- ADR-076 — /plan v0.7 Mars-only decision
- RFC-026 — /plan v0.8 multi-destination expansion plan
- AGENTS.md
feedback_global_space_program_representationrule