/*
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);