/* Closed catalog of IAU-approved names for the Uni UI Ontology cosmic overlay. Each entry is a valid cosmicName for manifests with layer="section" (DNA-23, RFC-0025). "Planet" in this context denotes the section archetype — bodies that orbit a star (page) just as sections orbit a page. Catalog scope: inner/classical moons of Jupiter and Saturn, Mars moons, IAU-recognized dwarf planets, and — since RFC-1300 — numbered main-belt asteroids, mission-visited near-Earth bodies, Jupiter trojans, centaurs, trans-Neptunian objects, and their named satellites. The outer-system moons (Uranus, Neptune, Pluto) are in MoonCatalog (component archetypes). Do not add entries that are not IAU-approved names. Do not extend this catalog without a superseding RFC (DNA-19). Do not import business or app logic. RFC-1097: step 6 — compass.migrate codemod run Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order. RFC-1097: sweep — werkstatt-engine clean Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics. RFC-1300: extend PlanetCatalog with SBDB-verified IAU names RFC-1300: review findings — contract purpose, kind-label note, same-catalog collision check */ import { z } from "zod"; // [DNA-23][DNA-19] Closed catalog — extension requires a superseding RFC. // Sources: IAU Working Group on Planetary System Nomenclature (WGPSN) for the // original 39 entries; JPL Small-Body Database (SBDB) for the RFC-1300 names — // see planet-catalog.sources.yaml for per-name designations. // Scope: classical/inner moons of Jupiter and Saturn; Mars moons; IAU dwarf // planets; RFC-1300 adds numbered main-belt asteroids, mission-visited // near-Earth bodies, Jupiter trojans, centaurs, TNOs, and their named // satellites. // Outer-system moons (Uranus, Neptune, Pluto system) live in MoonCatalog. // Sorted alphabetically inside each group; order has no semantic significance. export const PlanetCatalog = [ // ── Dwarf planets (IAU-recognized) ──────────────────────────────────────── "Ceres", "Eris", "Gonggong", "Haumea", "Ixion", "Makemake", "Orcus", "Quaoar", "Sedna", "Varuna", // ── Mars system ─────────────────────────────────────────────────────────── "Deimos", "Phobos", // ── Jupiter — inner & Galilean moons ────────────────────────────────────── "Amalthea", "Callisto", "Elara", "Europa", "Ganymede", "Himalia", "Io", "Metis", "Thebe", // ── Saturn — inner, co-orbital, and classical moons ─────────────────────── "Atlas", "Calypso", "Dione", "Enceladus", "Epimetheus", "Helene", "Hyperion", "Iapetus", "Janus", "Mimas", "Pan", "Pandora", "Phoebe", "Prometheus", "Rhea", "Telesto", "Tethys", "Titan", // ── Main-belt asteroids (RFC-1300) ──────────────────────────────── "Abundantia", "Adeona", "Aegina", "Aegle", "Aemilia", "Aethra", "Aglaja", "Alexandra", "Alkeste", "Alkmene", "Althaea", "Ambrosia", "Ampella", "Amphitrite", "Andromache", "Angelina", "Annefrank", "Antigone", "Antiope", "Arete", "Arethusa", "Ariadne", "Artemis", "Aschera", "Astraea", "Atala", "Atalante", "Ate", "Athor", "Aurora", "Baucis", "Beatrix", "Belisana", "Bellona", "Bertha", "Braille", "Brunhild", "Byblis", "Camilla", "Celuta", "Chryseis", "Circe", "Concordia", "Cybele", "Cyrene", "Danae", "Daphne", "Dejanira", "Dejopeja", "Diana", "Dido", "Dike", "Dinkinesh", "Doris", "Dynamene", "Echo", "Egeria", "Elpis", "Elsa", "Erato", "Erigone", "Eucharis", "Eudora", "Eugenia", "Eunike", "Eunomia", "Euphrosyne", "Eurydike", "Eurykleia", "Eurynome", "Euterpe", "Eva", "Felicitas", "Feronia", "Fides", "Flora", "Fortuna", "Freia", "Frigga", "Gaspra", "Gerda", "Harmonia", "Hebe", "Hecuba", "Hedda", "Hekate", "Helena", "Hera", "Hermione", "Hersilia", "Hertha", "Hesperia", "Hestia", "Hilda", "Hygiea", "Ianthe", "Ida", "Iduna", "Ino", "Iphigenia", "Irene", "Iris", "Irma", "Isabella", "Isis", "Ismene", "Isolda", "Johanna", "Juewa", "Julia", "Juno", "Kalliope", "Kassandra", "Kleopatra", "Klio", "Klotho", "Klymene", "Klytaemnestra", "Klytia", "Kolga", "Koronis", "Lachesis", "Lacrimosa", "Laetitia", "Lamberta", "Laurentia", "Leto", "Leukothea", "Liberatrix", "Lilaea", "Lomia", "Loreley", "Lucina", "Lumen", "Lydia", "Maria", "Martha", "Mathilde", "Medea", "Medusa", "Melete", "Meliboea", "Melpomene", "Menippe", "Minerva", "Miriam", "Mnemosyne", "Nausikaa", "Nemausa", "Nemesis", "Niobe", "Nuwa", "Nysa", "Oenone", "Pales", "Pallas", "Panopaea", "Parthenope", "Peitho", "Penelope", "Phaedra", "Philomela", "Phthia", "Polana", "Polyhymnia", "Pomona", "Pompeja", "Prokne", "Proserpina", "Protogeneia", "Psyche", "Rhodope", "Sappho", "Scylla", "Semele", "Sibylla", "Sirona", "Siwa", "Sophrosyne", "Steins", "Sylvia", "Terpsichore", "Thalia", "Themis", "Thetis", "Thisbe", "Thusnelda", "Thyra", "Una", "Undina", "Urania", "Urda", "Vala", "Velleda", "Vesta", "Vibilia", "Victoria", "Xanthippe", "Zelia", // ── Near-Earth objects & mission targets (RFC-1300) ─────────────── "Amor", "Apollo", "Apophis", "Aten", "Bennu", "Didymos", "Eros", "Geographos", "Icarus", "Itokawa", "Phaethon", "Ryugu", "Toutatis", // ── Jupiter trojans (RFC-1300) ──────────────────────────────────── "Achilles", "Agamemnon", "Ajax", "Anchises", "Antilochus", "Deiphobus", "Diomedes", "Eurybates", "Glaukos", "Hektor", "Leucus", "Memnon", "Menelaus", "Mentor", "Nestor", "Odysseus", "Orus", "Patroclus", "Polydoros", "Polymele", "Priamus", "Sarpedon", "Telamon", "Teucer", "Troilus", // ── Centaurs, TNOs & satellites (RFC-1300) ──────────────────────── "Actaea", "Altjira", "Amycus", "Arrokoth", "Asbolus", "Bienor", "Borasisi", "Ceto", "Chaos", "Chariklo", "Chiron", "Crantor", "Cyllarus", "Dactyl", "Dimorphos", "Dysnomia", "Echeclus", "Elatus", "Hidalgo", "Huya", "Hylonome", "Lempo", "Logos", "Menoetius", "Nessus", "Okyrhoe", "Pholus", "Phorcys", "Praamzius", "Queta", "Rhadamanthus", "Salacia", "Sila", "Thereus", "Typhon", "Vanth", "Varda", "Weywot", ] as const; export type PlanetName = (typeof PlanetCatalog)[number]; export const planetNameSchema = z.enum(PlanetCatalog);