# Accuracy report — astronomy-engine provider

Generated 2026-07-18 by `research/accuracy-reports/generate.mjs`
from the committed oracle fixtures (provenance inside each fixture file).
Values are absolute apparent-geocentric-ecliptic-longitude differences.

Caveat: Horizons ObsEcLon is referred to the mean equinox of date; the
provider returns true-of-date. That alone contributes ≲18″.

## vs JPL Horizons (QUANTITIES=31)

| Body | 2020-12-21 18:00 UT | 1900-01-01 00:00 UT | 1650-01-01 00:00 UT | 1 Jan 3000 BCE |
|---|---|---|---|---|
| sun | 0.5″ | 0.6″ | 1.8″ | 175.7″ |
| mercury | 1.0″ | 0.4″ | 1.1″ | — |
| venus | 0.2″ | 0.1″ | 0.6″ | — |
| moon | 0.6″ | 2.7″ | 32.6″ | — |
| mars | 0.2″ | 0.0″ | 1.7″ | 87.7″ |
| jupiter | 0.9″ | 1.8″ | 3.6″ | 1102.2″ |
| saturn | 0.6″ | 6.2″ | 4.2″ | 771.4″ |
| uranus | 3.7″ | 2.3″ | 3.4″ | — |
| neptune | 14.9″ | 2.1″ | 2.0″ | — |
| pluto | 0.9″ | 3.7″ | 22.1″ | — |

## vs Swiss Ephemeris (dev-only oracle, Moshier mode)

| Body | 2020-12-21 18:00 UT | J2000.0 | 1900-01-01 00:00 UT | 1650-01-01 00:00 UT | 3000 BCE |
|---|---|---|---|---|---|
| sun | 0.6″ | 0.7″ | 0.4″ | 1.0″ | 128.2″ |
| mercury | 1.1″ | 1.3″ | 0.1″ | 0.4″ | 53.0″ |
| venus | 0.3″ | 2.0″ | 0.4″ | 0.1″ | 136.3″ |
| moon | 0.0″ | 0.4″ | 2.3″ | 32.9″ | 4170.9″ |
| mars | 0.2″ | 2.1″ | 0.2″ | 0.9″ | 550.9″ |
| jupiter | 1.1″ | 4.2″ | 1.7″ | 3.4″ | 1114.9″ |
| saturn | 0.5″ | 1.7″ | 6.5″ | 3.4″ | 757.6″ |
| uranus | 3.6″ | 11.2″ | 2.1″ | 2.6″ | 48.9″ |
| neptune | 14.9″ | 8.9″ | 1.8″ | 2.0″ | 166.0″ |
| pluto | 0.8″ | 0.1″ | 3.8″ | 24.6″ | 2437.2″ |
| node-mean | 16.9″ | 14.0″ | 17.5″ | 13.2″ | 167.5″ |
| node-true | 17.4″ | 2.8″ | 3.5″ | 24.6″ | 1769.3″ |

## Reading the numbers

- Modern era (±2 centuries of J2000): within astronomy-engine's ±60″ spec.
- 3000 BCE: VSOP87 truncation drift, worst for Jupiter/Saturn (~0.2–0.3°);
  the provider's `estimatedErrorArcsec` envelope (60 + 42·millennia²)
  covers the measured values.
- Lunar nodes at 3000 BCE: both lunar theories extrapolate; measured
  divergence mean 0.047° / true 0.49° is a model-disagreement bound, not a
  validated error.
