{
  "schema": "astroapi-public-accuracy-vectors-v1",
  "published_on": "2026-10-02",
  "scope": "Enumerated regression and independent-comparison evidence; not a universal error bound or scientific certification.",
  "runtime": {
    "ephemeris": "JPL-DE421",
    "date_range": ["1900-01-01", "2050-12-31"],
    "default_frame": "apparent-geocentric-tropical-ecliptic-of-date",
    "timezone_database": "IANA-2026d",
    "timezone_package": "tzdata-2026.4"
  },
  "measured_comparisons": [
    {
      "id": "tropical-planets-swiss-moshier-2026-09-14",
      "cases": 310,
      "sample_design": "10 planets at 31 epochs from 1900 through 2050",
      "maximum_observed_error_arcseconds": 1.4,
      "reference": "Swiss Ephemeris 2.10.03 with independent Moshier analytical ephemeris",
      "fixture_sha256_base64": "iMe3jKT592BivWgZmcOvv8Bflgc9nvI54FBBWpkPJ1g="
    },
    {
      "id": "tropical-angles-location-time-grid-2026-09-14",
      "cases": 2325,
      "maximum_observed_error_arcseconds": { "ascendant": 9.0, "midheaven": 2.2 },
      "reference": "Swiss Ephemeris 2.10.03",
      "claim_kind": "strictly-below",
      "fixture_sha256_base64": "c27ZDd6j+Rwz6/cN0kzbz+wNlpvfgL6nn1pXnZRX4IY="
    },
    {
      "id": "sidereal-planets-three-modes-2026-09-14",
      "cases": 930,
      "modes": ["lahiri", "raman", "krishnamurti"],
      "maximum_observed_error_arcseconds": 19.0,
      "claim_kind": "at-most",
      "reference": "Swiss Ephemeris 2.10.03 with independent Moshier analytical ephemeris",
      "fixture_sha256_base64": "iMe3jKT592BivWgZmcOvv8Bflgc9nvI54FBBWpkPJ1g="
    }
  ],
  "golden_vectors": [
    {
      "id": "birth-chart-j2000-atlanta",
      "input": { "date": "2000-01-01", "time": "12:00", "timezone": "UTC", "lat": 33.7488, "lon": -84.3877 },
      "expected": { "sun_longitude": 280.3689, "moon_longitude": 223.3238, "mean_node_longitude": 125.0445 },
      "decimal_place_tolerance": 3,
      "fixture_sha256_base64": "CpFKxkfkD5nd6Lk6TqMlQdiaohDTgD6eEZpNfXkWs+s="
    }
  ],
  "reproducibility": {
    "normalized_inputs": "Responses retain normalized calculation inputs where the route contract defines them.",
    "calculation_fingerprint": "POST /api/astro/natal-context returns calculation_hash plus per-artifact SHA-256 values.",
    "source_paths": "Natal-context facts carry stable IDs and source paths.",
    "limitations": "Different ephemerides, Earth-orientation data, zodiac frames, house definitions, rounding, and historical timezone releases can produce different results."
  }
}
