---
vault_clearance: APOLLYON
halo:
  classification: MAXIMALLY RESTRICTED
  front: "Front LuaOversoul"
  custodian: "Jixiang Leng"
  created: 2026-03-29
  updated: 2026-03-28
  wing: BLOCKED
  containment: "FORM — orbital & ephemeris predictor engines; pair with BOOK.md"
---

# FORM — Forward Orbital Reference & Mechanics

> **F**orward **O**rbital **R**eference **&** **M**echanics: a **suite of engines** to recover **where solar-system bodies were or are** at a chosen time, and to **propagate dynamics** when ephemeris alone is not enough.

**Disambiguation:** This is **LuaOversoul’s** orbital-engine map. It is **not** the vault-wide **FORM–TRUTH** bounty axis in [FORM_PROTOCOL.md](../FORM_PROTOCOL.md).

Companion bibliography and datasets: **[BOOK.md](BOOK.md)** (solid-Earth forward models, codes, and model–data misfits: **BOOK §8**). Bounty IDs **LO-1–LO-4** map most directly to this **orbital** FORM suite.

---

## 1. What “every body at any time” actually means

| Expectation | Reality |
|-------------|---------|
| **One closed-form formula for all masses** | No. The solar system is **chaotic** over Myr+; long-term positions are **not** single-truth without a chosen dynamical model. |
| **A single API call** | Horizons can return state vectors for **one or a list** of targets at a time window — not “instant full system snapshot” in one payload for unlimited bodies. |
| **Identical results from every tool** | **No.** Different **ephemerides** (DE440 vs DE431), **frames** (ICRF, ecliptic), **barycenter vs body center**, and **relativity** handling differ slightly. |
| **Good enough for LuaOversoul** | **Yes**, if you **document** ephemeris ID, frame, observer (`@399` Earth, `@0` solar system barycenter), and time scale (usually **UTC** vs **TDB** for high precision). |

**Operational definition:** “Predict what every [relevant] body was doing” = choose a **tier** (see §3), then **batch** Horizons/SPICE queries or run an **N-body** integrator with stated ICs from Horizons.

---

## 2. Tier A — Ephemeris / observationally fitted (default for positions)

**Use when:** You need **Sun, planets, major moons, Pluto, big asteroids**, spacecraft — **past or future** within the validity span of the **planetary ephemeris** (e.g. DE440 covers ± centuries around now; check NAIF notes).

| Engine | What it is | Access |
|--------|------------|--------|
| **JPL Horizons** | Gold-standard **online** ephemeris; batch API, observer-centric or vectors. | [https://ssd.jpl.nasa.gov/horizons/](https://ssd.jpl.nasa.gov/horizons/) — [API doc](https://ssd-api.jpl.nasa.gov/doc/horizons.html). |
| **SPICE + kernels** | Same physics as Horizons, **in your code** — positions from **NAIF** kernels (`de440.bsp`, satellite SPKs, etc.). | [https://naif.jpl.nasa.gov/naif/](https://naif.jpl.nasa.gov/naif/) — Python: [SpiceyPy](https://spiceypy.readthedocs.io/). |
| **Skyfield** | High-level Python; loads **JPL ephemeris** files (e.g. `de440s.bsp`). | [https://rhodesmill.org/skyfield/](https://rhodesmill.org/skyfield/) |
| **Astropy** | `coordinates.get_body()`, `solar_system_ephemeris` — can use **builtin** approximations or **download** JPL files. | [https://docs.astropy.org/](https://docs.astropy.org/) |

**Workflow:** Fix **time scale** (UTC input → often converted to ET/TDB inside SPICE). Fix **center** (heliocentric vs observer on Earth). For **Theia** (hypothetical), there is **no** SPK — you use **Tier B**.

---

## 3. Tier B — N-body and symplectic propagation (Theia, Trojans, experiments)

**Use when:** You need a **counterfactual** body, long-term stability, or **resonance/Trojan** scenarios (**LO-1, LO-2, LO-4**).

| Engine | What it is | Access |
|--------|------------|--------|
| **REBOUND** | Fast **N-body** (WHFast, IAS15, …), used in exoplanet + solar system work. | [https://rebound.readthedocs.io/](https://rebound.readthedocs.io/) |
| **REBOUNDx** | Adds **GR**, tides, stellar forces as extras. | [https://reboundx.readthedocs.io/](https://reboundx.readthedocs.io/) |
| **Mercury** (classic) | Hybrid symplectic for planetary systems. | Legacy C; often wrapped or cited for comparison. |

**Initial conditions:** Seed positions/velocities from **Horizons** for **real** bodies at epoch \(t_0\); inject **Theia** as a user particle with mass and state from your hypothesis.

---

## 4. Tier C — Small bodies and comets (catalog-scale)

**Use when:** You need **asteroids / comets** not in the default major-body list.

| Engine | What it is | Access |
|--------|------------|--------|
| **Horizons** | Many numbered bodies; search by name or SPK ID in Horizons doc. | Same as Tier A. |
| **JPL Small-Body Database (SBDB)** | Orbital elements + metadata. | [https://ssd.jpl.nasa.gov/tools/sbdb_lookup.html](https://ssd.jpl.nasa.gov/tools/sbdb_lookup.html) — [API](https://ssd-api.jpl.nasa.gov/doc/sbdb_query.html). |
| **MPC** | Minor Planet Center — discovery orbits. | [https://www.minorplanetcenter.net/](https://www.minorplanetcenter.net/) |

---

## 5. Recommended stack by bounty

| Bounty | Stack |
|--------|--------|
| **LO-1** Sun–Jupiter–Theia stability | REBOUND + Horizons ICs for Jupiter/Earth; Theia as test particle with varied \(a,e,i\). |
| **LO-2** Backward from impact | REBOUND (IAS15 for close encounters) + document units; compare to published SPH impact papers in **BOOK.md**. |
| **LO-3** Isotopes vs orbit | Not orbital math alone — couple **BOOK** geochemistry with **orbital separation** metrics from Tier B. |
| **LO-4** L4/L5 Trojans | REBOUND + **restricted** three-body + Jupiter on Horizons ephemeris (or SPICE Jupiter barycenter). |

---

## 6. Checklist before you trust a number

1. **Ephemeris ID** (DE440, DE441, …)  
2. **Frame** (ICRF, ecliptic J2000)  
3. **Observer / origin** (`CENTER=` in Horizons)  
4. **Time** — UTC vs TDB/ET  
5. For N-body: **units**, **integrator**, **timestep**, **energy drift**

---

## 7. Empirical run: Moon vs Earth “before 1 Ga” (JPL Horizons)

Question: *What was the Moon doing more than ~1 billion years ago?*

**Geology:** The Moon has existed as Earth’s satellite since the giant impact (~4.5 Ga).  
**Ephemeris:** JPL **Horizons** (DE441) does **not** integrate that history.

A live API probe (`COMMAND=301`, `CENTER=399`, `VECTORS`, `KM-S`) shows:

| Epoch | Outcome |
|--------|---------|
| **2000-01-01** (J2000 window) | **OK** — first range `RG` ≈ **3.98×10⁵ km** (normal Earth–Moon distance). |
| **~1 Ga ago** (large negative JD in Horizons batch style) | **FAIL** — Horizons returns an explicit limit, e.g. *No ephemeris for target "Moon" prior to B.C. 9999-MAR-21 00:00:00.0000 TDB* (wording from JPL at time of run). |

So “run Horizons for the Moon before 1 billion years BCE” is **out of scope** for the fitted product: the Moon **exists** in that era, but **state vectors** are not provided that far back. Use **REBOUND** + **tidal / semi-major axis evolution** from the literature ([BOOK.md](BOOK.md)) for Gyr-scale questions.

Script + log: [scripts/README.md](scripts/README.md) (`moon_deep_time_probe.py`).

### 7b. Great Unconformity mass on the Moon (hypothesis test)

Thought experiment: if mass **ΔM** moved **Earth → Moon**, would forward integration match **JPL Horizons** better than nominal masses?

**Empirical answer (2026-03-30):** **No** — for ΔM from **10²⁰–10²³ kg**, RMSE vs Horizons **increases** vs standard masses. See [scripts/GU_MOON_HYPOTHESIS.md](scripts/GU_MOON_HYPOTHESIS.md) (table + caveats). Implementation: REBOUND + Horizons SSB vectors; `gu_moon_mass_hypothesis.py` in the same folder when present.

---

## 8. Solid-Earth and stratigraphic forward models (not orbital FORM)

**Disambiguation:** In this vault, **FORM** means **Forward Orbital Reference & Mechanics** (§§1–7): **where bodies are** in space and **N-body** propagation. **Geology** also uses “forward models” (mantle convection, landscape evolution, flexure, potential-field synthesis), but that is **different physics** — it does **not** live in Horizons/REBOUND tiers above.

Use **mantle / lithosphere codes** when testing **LLSVPs, subduction, rheology** (see **BOOK §3**, **BOOK §8a**). Use **landscape / basin codes** when testing **erosion, deposition, unconformity-scale** surface histories (**BOOK §8b** — not ephemeris). Use **GPlates** when the question is **plate kinematics** vs **tomography** (**BOOK §8d**). Use **GemPy / SimPEG / pyGIMLi** when the question is **structure or potential-field data fit** (**BOOK §8c**).

| Domain | Representative online stack | Details in BOOK |
|--------|------------------------------|-----------------|
| Mantle convection, thermochemical piles | ASPECT, CitcomCU, Underworld | [BOOK.md](BOOK.md) §8a |
| Lithosphere / faults / quasistatic–dynamic crust | PyLith | §8a |
| Landscape evolution, basins | Landlab, Badlands, FastScape | §8b |
| Geology / geophysics inversion | GemPy, pyGIMLi, SimPEG | §8c |
| Plate reconstructions | GPlates, pyGPlates | §8d |
| Model–data misfits (“anomalies”) | Curated list + DOIs | §8e |
| Global grids (topo, crust, geoid) | ETOPO, CRUST1.0, LITHO1.0, ICGEM | §8f |

**Moon vs Great Unconformity tooling** (hypothesis index, not orbital): [MOON_GU_HYPOTHESIS_TESTING.md](MOON_GU_HYPOTHESIS_TESTING.md).

---

## 9. See also

- **[BOOK.md](BOOK.md)** — papers, PDS, magnetosphere tables, **§8 computational geology**.  
- **[README.md](README.md)** — scope, LO bounties.  
- Vault-wide: [BOOK_Protocol.md](../BOOK_Protocol.md) — what BOOK is across projects.
