{
  "openapi": "3.1.1",
  "jsonSchemaDialect": "https://spec.openapis.org/oas/3.1/dialect/base",
  "info": {
    "title": "Cosmic Ephemeris calculation API",
    "version": "2026-10-05.electional-criterion-repair-hardening-regret-audit",
    "description": "Machine-readable description of the seventy-eight live R231 calculation contracts. This DOCUMENT REVISION identifies the contract set; runtime availability is independently verified at the public gateway. Call the public Node gateway, not the internal Python service.\n\nAPI keys are server-side credentials. Bearer and x-api-key are alternatives, and dashboard cookies are not calculation credentials. Named keys can be restricted to one calculation scope or astro:*, can expire, and are shown only once at creation.\n\nCharts require a known civil time, valid IANA timezone, dates from 1900-01-01 through 2050-12-31, and valid coordinates. Tropical remains the default; supported sidereal ayanamsas are Lahiri, Raman, Krishnamurti, Fagan–Bradley, Yukteshwar, Sassanian, True Chitra, True Revati, True Pushya, Galactic Center at 0 Sagittarius, and Galactic Alignment/Mardyks. The birth-time-sensitivity workflow may instead receive an explicitly unknown or approximate time; it returns sampled stability only and never invents an exact chart.\n\nVargas supports D1/D2/D3/D4/D5/D6/D7/D8/D9/D10/D11/D12/D16/D20/D24/D27/D30/D40/D45/D60/D81/D108/D144/D150. Vimshottari retains its two-level default and supports optional depth 3 and 4. The Ashtakavarga beta returns unreduced seven-planet Bhinnashtakavarga, contributor Prastara, and their 337-point Sarvashtakavarga sum, with explicit opt-in reductions and pindas and no interpretation or prediction. These are bounded calculation conventions, not a complete Jyotish system or practitioner validation.\n\nThe additive beta suite includes fixed-reference Equal/Whole Sign house-ingress search, a unified event calendar, relationship SVG wheels, fact-linked natal HTML, sampled birth-time sensitivity, two-axis chart robustness, no-guess chart-input readiness, no-substitution 25-system house readiness, unweighted 24-system planet-house stability, bounded multi-policy aspect admission stability, exact two-sided house-boundary proximity across available 12-house systems, bounded nine-point birth-coordinate precision audits, radial location-transition checkpoint scans, joint time-and-location chart uncertainty envelopes, operational electional robustness audits across both schedule slippage and venue uncertainty, directional electional tolerance frontiers with observed match/failure brackets, sampled electional feasibility audits with inclusion-minimal observed failed-rule sets and exact witnesses, cross-resolution electional audits showing which finest-grid runs coarser grids miss, all-phase electional sampling-anchor audits showing which observed runs depend on grid offset, leave-one-criterion-out electional audits with exact newly matching samples and runs, leave-two-criteria-out audits with exact pair-only exclusion witnesses, pairwise criterion-relation audits with exact compatibility and counterexample truth tables, exhaustive exact-omission-budget frontiers returning every tied optimum and sample witness, cross-grid stability audits identifying universal and sampling-sensitive optimum rule sets, exact minimax-regret audits returning every least worst-grid-loss relaxation set with rational evidence, weight-free exact-budget Pareto frontiers returning all non-dominated tradeoffs with dominance certificates, exact interaction-aware Shapley audits attributing excluded samples across criteria, exact minimal conflict-core audits proving the smallest sampled window-level rule conflicts with per-member relaxation witnesses, exact minimal cross-grid repair audits, per-repair consequence ledgers, pairwise repair-distinction certificates with exact witnesses, exact repair-overlap classifications across every minimal repair pair, exact repair-consequence containment hierarchies with Hasse cover edges and antichain/chain certificates, exact repair-support multiplicity groups with single-repair union-loss certificates, exact multi-repair failure coalitions with guaranteed-survival curves, exhaustive zero-through-three repair-loss damage frontiers with complete loss histograms, exact single-repair hardening counterfactuals with remaining worst-case witnesses, weight-free hardening Pareto classifications with complete pair certificates, exact hardening-profile dominance hierarchies with Hasse edges and antichain/chain certificates, weight-free hardening minimax-regret audits across uncertain failure budgets, six fixed stars, relocation/astrocartography, global eclipse geometry, hourly electional filters, configurable natal aspect/midpoint/pattern analysis, and classical unequal planetary hours. Pattern, planetary-hour and house-ingress outputs are geometric or conventional classifications without interpretation, ranking, or advice.\n\nGenerated SVG, PNG, and HTML are bounded, contain no scripts or remote resources, and accept no caller markup or URLs. Astrocartography can return opt-in deterministic RFC 7946 GeoJSON, OGC KML 2.2, GPX 1.1, and SVG/PNG with a default coordinate grid or explicit bundled public-domain Natural Earth 1:110m coastlines, without remote map requests, geocoding, ranking, or interpretation. Birth-time sensitivity is sampled, non-exhaustive, and not rectification. The six-star-only route uses an immutable CC0-derived catalog independently compared with Astropy/ERFA. Minor-body calculations are not contracted or shipped. Numerology adds bounded Pythagorean date/name arithmetic with explicit master-number and Y rules, traceable sums, and an optional explicit calendar year; no interpretations, predictions, scientific-validation claim, or practitioner approval.\n\nMonthly usage resets by UTC calendar month. Every attempt reaching atomic reservation consumes one unit, including invalid input, dependency failures, and timeouts. There is no automatic refund or public idempotency mechanism; do not blindly retry.\n\nNormal engine timeout is 15 seconds; planetary-events, house-ingresses, aspect-windows, event-calendar, eclipse-geometry, electional-search and event-rule-search use 30 seconds; birth-time-sensitivity, chart-robustness, chart-input-readiness, house-system-readiness, house-placement-stability, house-boundary-proximity, location-precision-audit, location-transition-scan, chart-uncertainty-envelope, electional-robustness-audit, electional-tolerance-frontier, electional-feasibility-audit, electional-resolution-audit, electional-sampling-phase-audit, electional-criterion-omission-audit, electional-criterion-pair-audit, electional-criterion-relation-audit, electional-criterion-budget-audit, electional-criterion-budget-stability-audit, electional-criterion-budget-regret-audit, electional-criterion-budget-pareto-audit, electional-criterion-shapley-audit, electional-criterion-conflict-core-audit, electional-criterion-robust-repair-audit, electional-criterion-repair-impact-audit, electional-criterion-repair-distinction-audit, electional-criterion-repair-overlap-audit, electional-criterion-repair-hierarchy-audit, electional-criterion-repair-coverage-audit, electional-criterion-repair-resilience-audit, electional-criterion-repair-loss-frontier-audit, electional-criterion-repair-hardening-audit, electional-criterion-repair-hardening-pareto-audit, electional-criterion-repair-hardening-pareto-hierarchy-audit, electional-criterion-repair-hardening-regret-audit, and timeline use 60 seconds. Production concurrency limits and gateway timeouts still apply. R231 production deployment and public authentication boundaries were verified on 2026-10-05.",
    "termsOfService": "https://cosmicephemeris.com/terms.html",
    "contact": {
      "name": "Cosmic Ephemeris support",
      "email": "support@cosmicephemeris.com"
    }
  },
  "servers": [
    {
      "url": "https://api.cosmicephemeris.com",
      "description": "Public gateway; no runtime version prefix"
    }
  ],
  "security": [
    {
      "BearerApiKey": []
    },
    {
      "HeaderApiKey": []
    }
  ],
  "tags": [
    {
      "name": "Calculations"
    },
    {
      "name": "Pro timeline"
    },
    {
      "name": "Beta interpretation"
    },
    {
      "name": "Beta calculations",
      "description": "Additive experimental calculations; numerical tests are not practitioner acceptance."
    }
  ],
  "paths": {
    "/api/astro/numerology": {
      "post": {
        "operationId": "calculateNumerology",
        "summary": "Calculate explicit Pythagorean numerology arithmetic (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Symbolic calculation-only numerology: component-wise birth-date reduction, optional ASCII-name sums and an explicitly requested calendar-year cycle. Includes reduction traces, exact master-number and Y conventions. No interpretation, scientifically validated prediction, personality assessment or advice. Name data is not persisted by this route; use only data you are authorized to process. Each admitted request reserves one standard monthly unit; failed or timed-out admitted attempts are not refunded. Not a durable-job operation.",
        "x-contract-status": "beta",
        "x-deployment-status": "deployed",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NumerologyRequest"
              },
              "examples": {
                "canonical": {
                  "value": {
                    "birth_date": "2000-01-01",
                    "name": "Ada Lovelace",
                    "year": 2026
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deterministic symbolic number calculations and auditable arithmetic traces.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NumerologyResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/place-search": {
      "post": {
        "operationId": "searchPlaces",
        "summary": "Search a pinned self-hosted place catalog (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Searches Cosmic Ephemeris's derived and modified pinned GeoNames cities15000 snapshot without a request-time network dependency. Returns up to ten ordered candidates with coordinates, IANA timezone, dataset version, source ID, direct source and CC BY 4.0 links, and attribution. A result is a candidate, not an automatically selected birthplace. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlaceSearchRequest"
              },
              "examples": {
                "new_york": {
                  "value": {
                    "query": "New York",
                    "country_codes": [
                      "US"
                    ],
                    "limit": 5
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ordered place candidates.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlaceSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/timezone-resolve": {
      "post": {
        "operationId": "resolvePlaceTimezone",
        "summary": "Resolve a selected place and historical local civil time (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Resolves an exact version-bound GeoNames place_id through pinned IANA tzdb 2026d. Unique local times return calculation-ready date, time, timezone and coordinates. Nonexistent clock-gap times and ambiguous repeated times are diagnosed without choosing an instant; ambiguous results include both UTC candidates. Pre-1970 civil-time history is best effort. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimezoneResolveRequest"
              },
              "examples": {
                "historical_new_york": {
                  "value": {
                    "place_id": "geonames:5128581:2026-10-02",
                    "date": "1945-08-14",
                    "time": "19:00"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Pinned timezone and civil-time diagnostic.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimezoneResolveResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/natal-context": {
      "post": {
        "operationId": "calculateNatalContext",
        "summary": "Build deterministic model-ready natal context (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Builds a model-neutral context from the existing fact-linked natal report. Facts retain stable IDs and API source paths; the calculation profile declares ephemeris, frame, zodiac, ayanamsa, houses, and pinned tzdb. A deterministic SHA-256 binds normalized input, profile, and facts. Optional JSON, XML, and Markdown artifacts contain no prompt, model instruction, generated interpretation, prediction, diagnosis, or advice. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NatalContextRequest"
              },
              "examples": {
                "all_formats": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "formats": [
                      "json",
                      "xml",
                      "markdown"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Auditable deterministic context and selected artifacts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NatalContextResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/birth-chart": {
      "post": {
        "operationId": "calculateBirthChart",
        "summary": "Calculate a full birth chart",
        "tags": [
          "Calculations"
        ],
        "description": "Current unversioned gateway response.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "current",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BirthChartRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; send with your server-side API key",
                  "value": {
                    "date": "1990-01-01",
                    "time": "12:00",
                    "timezone": "America/New_York",
                    "lat": 40.7128,
                    "lon": -74.006
                  }
                },
                "sidereal": {
                  "summary": "Same calculation in Lahiri sidereal coordinates",
                  "value": {
                    "date": "1990-01-01",
                    "time": "12:00",
                    "timezone": "America/New_York",
                    "lat": 40.7128,
                    "lon": -74.006,
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BirthChartResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/aspects": {
      "post": {
        "operationId": "calculateAspects",
        "summary": "Calculate natal aspects inside a full chart envelope",
        "tags": [
          "Calculations"
        ],
        "description": "The outer aspects property contains a full Chart. The aspect array is response.aspects.aspects.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "current",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AspectsRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; send with your server-side API key",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    }
                  }
                },
                "sidereal": {
                  "summary": "Same calculation in Lahiri sidereal coordinates",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AspectsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/houses": {
      "post": {
        "operationId": "calculateHouses",
        "summary": "Calculate a selected house system",
        "tags": [
          "Calculations"
        ],
        "description": "Current unversioned gateway response. Equal and Whole Sign are stable; Placidus, Porphyry, Meridian, Campanus, Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, and Vehlow are opt-in beta systems that reject undefined geometry without fallback. Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, and Vehlow are calculation-only and are not admitted by saved profiles or other chart routes.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "current",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HousesRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; send with your server-side API key",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "system": "whole_sign"
                  }
                },
                "sidereal": {
                  "summary": "Same calculation in Lahiri sidereal coordinates",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "system": "whole_sign",
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                },
                "placidus": {
                  "summary": "Explicit Placidus beta, no fallback at unsupported polar geometry",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "system": "placidus"
                  }
                },
                "alcabitius": {
                  "summary": "Explicit Alcabitius semi-arc beta with no fallback",
                  "value": {
                    "birth": {
                      "date": "2016-11-02",
                      "time": "21:17:30",
                      "timezone": "UTC",
                      "lat": 52.2166666667,
                      "lon": 6.9
                    },
                    "system": "alcabitius"
                  }
                },
                "koch": {
                  "summary": "Explicit Koch birthplace-semiarc beta with no fallback",
                  "value": {
                    "birth": {
                      "date": "2013-12-01",
                      "time": "13:00:00",
                      "timezone": "UTC",
                      "lat": 51.5,
                      "lon": -0.1666666667
                    },
                    "system": "koch"
                  }
                },
                "morinus": {
                  "summary": "Explicit latitude-independent Morinus equator-projection beta",
                  "value": {
                    "birth": {
                      "date": "2026-12-21",
                      "time": "00:00:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "system": "morinus"
                  }
                },
                "topocentric": {
                  "summary": "Explicit Polich/Page Topocentric house-geometry beta",
                  "value": {
                    "birth": {
                      "date": "1940-10-09",
                      "time": "18:30:00",
                      "timezone": "Europe/London",
                      "lat": 53.4,
                      "lon": -3
                    },
                    "system": "topocentric"
                  }
                },
                "sripati": {
                  "summary": "Explicit Sripati midpoint-of-Porphyry-sectors beta",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "system": "sripati"
                  }
                },
                "vehlow": {
                  "summary": "Explicit Vehlow equal-house beta with Ascendant centered in house 1",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "system": "vehlow"
                  }
                },
                "horizon": {
                  "summary": "Explicit Horizon/Azimuth beta from equal local-horizon divisions",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "horizon"
                  }
                },
                "krusinski": {
                  "summary": "Explicit Krusinski-Pisa-Goelzer beta from equal Ascendant-zenith great-circle divisions",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "krusinski"
                  }
                },
                "sunshine": {
                  "summary": "Explicit Sunshine beta using the Treindl solar semi-arc construction",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "sunshine"
                  }
                },
                "sunshine_alt": {
                  "summary": "Explicit Sunshine alternative beta using the Makransky construction",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "sunshine_alt"
                  }
                },
                "savard": {
                  "summary": "Explicit Savard-A beta from one-third and two-thirds latitude-circle geometry",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "savard"
                  }
                },
                "pullen_sd": {
                  "summary": "Explicit Pullen SD beta with sinusoidal-delta ecliptic quadrant weighting",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "pullen_sd"
                  }
                },
                "pullen_sr": {
                  "summary": "Explicit Pullen SR beta with sinusoidal-ratio ecliptic quadrant weighting",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "pullen_sr"
                  }
                },
                "carter": {
                  "summary": "Explicit Carter Poli-Equatorial beta with equal right-ascension divisions from the Ascendant",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "carter"
                  }
                },
                "apc": {
                  "summary": "Explicit APC beta with the Ascendant parallel circle divided above and below the horizon",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "apc"
                  }
                },
                "equal_mc": {
                  "summary": "Explicit Equal MC beta with the Midheaven fixed at cusp 10",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "equal_mc"
                  }
                },
                "natural": {
                  "summary": "Explicit Natural beta with cusp 1 fixed at zero degrees Aries",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "natural"
                  }
                },
                "gauquelin": {
                  "summary": "Explicit Gauquelin beta with 36 clockwise semiarc sectors",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 33.7488,
                      "lon": -84.3877
                    },
                    "system": "gauquelin"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HousesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/synastry": {
      "post": {
        "operationId": "calculateSynastry",
        "summary": "Calculate two charts and cross-chart aspects",
        "tags": [
          "Calculations"
        ],
        "description": "Current unversioned gateway response.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "current",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SynastryRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; send with your server-side API key",
                  "value": {
                    "personA": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "personB": {
                      "date": "1992-06-15",
                      "time": "09:30",
                      "timezone": "Europe/London",
                      "lat": 51.5074,
                      "lon": -0.1278
                    }
                  }
                },
                "sidereal": {
                  "summary": "Same calculation in Lahiri sidereal coordinates",
                  "value": {
                    "personA": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "personB": {
                      "date": "1992-06-15",
                      "time": "09:30",
                      "timezone": "Europe/London",
                      "lat": 51.5074,
                      "lon": -0.1278
                    },
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SynastryResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/transits": {
      "post": {
        "operationId": "calculateTransits",
        "summary": "Calculate transits at one requested instant",
        "tags": [
          "Calculations"
        ],
        "description": "Requested-instant transit-to-natal aspects. Not an event search, aspect windows, station prediction or house-transit report. Engine output remains nested under transits.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "current",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransitsRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; send with your server-side API key",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "transitDate": "2026-01-01",
                    "transitTime": "12:00",
                    "timezone": "UTC"
                  }
                },
                "sidereal": {
                  "summary": "Same calculation in Lahiri sidereal coordinates",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "transitDate": "2026-01-01",
                    "transitTime": "12:00",
                    "timezone": "UTC",
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransitsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/horoscope": {
      "post": {
        "operationId": "calculateHoroscope",
        "summary": "Calculate beta structured horoscope signals",
        "tags": [
          "Beta interpretation"
        ],
        "description": "Beta deterministic structured major-aspect signals. No language model, prose, compatibility score, medical/financial prediction, or house topics. The input echo currently omits transitTime/timezone; retain your request for reproducibility.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.\n\nBeta: documenting the current shape does not promote this endpoint to a stable contract.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HoroscopeRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; send with your server-side API key",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "transitDate": "2026-01-01",
                    "transitTime": "12:00",
                    "timezone": "UTC"
                  }
                },
                "sidereal": {
                  "summary": "Same calculation in Lahiri sidereal coordinates",
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "transitDate": "2026-01-01",
                    "transitTime": "12:00",
                    "timezone": "UTC",
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HoroscopeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/nakshatra-timeline": {
      "post": {
        "operationId": "calculateNakshatraTimeline",
        "summary": "Calculate Pro sidereal nakshatra/pada residences",
        "tags": [
          "Pro timeline"
        ],
        "description": "Gap-free returned residence coverage with numerically refined boundaries. Hourly discovery can miss an out-and-back departure/re-entry entirely between samples. Boundary solver resolution is not physical absolute-time accuracy; this is not an exhaustive station/event finder.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "current",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "nakshatra",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimelineRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; send with your server-side API key",
                  "value": {
                    "planet": "saturn",
                    "start_utc": "2026-01-01T00:00:00Z",
                    "end_utc": "2026-01-03T00:00:00Z",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimelineResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "402": {
            "$ref": "#/components/responses/ProRequired"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/natal-svg": {
      "post": {
        "operationId": "calculateNatalSvg",
        "summary": "Render a natal SVG wheel (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Additive beta calculation. Strict request shape; unknown fields, explicit nulls, noncanonical enums and numeric coordinate strings return 400. Exact poles and ambiguous/nonexistent civil times are rejected. Numerical checks are not practitioner sign-off. Placidus, Porphyry, Meridian, Campanus, Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, and Vehlow are opt-in with explicit geometry rejection and no fallback; Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, and Vehlow remain calculation-only. An optional additional_points list renders only the selected Vertex/Antivertex, Equatorial Ascendant/Descendant, and/or sect-reversed Lots of Fortune/Spirit. Optional neutral aspect_profile presets (major, standard, extended) or a mutually exclusive custom aspects list render selected aspect geometry; omitting both preserves the original major-only SVG. Rendering crowding returns 400. Opt-in include_png returns a deterministic metadata-free PNG derived from the same internal SVG; omission or false preserves the predecessor response exactly. No uploaded image, SVG, URL or font is accepted. \n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NatalSvgRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic beta example; requires a server-side API key",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "house_system": "placidus",
                    "theme": "dark",
                    "show_aspects": true,
                    "additional_points": [
                      "vertex",
                      "lot_of_fortune",
                      "lot_of_spirit"
                    ],
                    "aspect_profile": "extended",
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NatalSvgResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/vargas": {
      "post": {
        "operationId": "calculateVargas",
        "summary": "Calculate twenty-four supported sidereal Vargas through D150 (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Additive beta calculation. Strict request shape; unknown fields, explicit nulls, noncanonical enums and numeric coordinate strings return 400. Exact poles and ambiguous/nonexistent civil times are rejected. Numerical checks are not practitioner sign-off. Sidereal-only with Lahiri default; retained-nutation frame and mean nodes. \n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry. D150 omission preserves the P.V.R./JHora uniform-direct mapping; explicit d150_method can select the bounded Deva Keralam/Chandra Kala Nadi, Parivritti cyclic, modality-base reverse, Scorpio/Sagittarius-base reverse, Leo/Sagittarius-base reverse, or source-sign-base reverse variants.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VargasRequest"
              },
              "examples": {
                "d2": {
                  "summary": "Parashari D2 Hora beta; odd signs begin Sun/Leo, even signs Moon/Cancer",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 2,
                    "ayanamsa": "lahiri"
                  }
                },
                "d5": {
                  "summary": "P.V.R. D5 Panchamsha beta; fixed odd and even sign sequences",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 5,
                    "ayanamsa": "lahiri"
                  }
                },
                "d6": {
                  "summary": "P.V.R. D6 Shashthamsha beta; odd signs count from Aries, even signs from Libra",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 6,
                    "ayanamsa": "lahiri"
                  }
                },
                "d8": {
                  "summary": "P.V.R. D8 Ashtamsha beta; movable, fixed, and dual signs count from Aries, Sagittarius, and Leo",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 8,
                    "ayanamsa": "lahiri"
                  }
                },
                "d11": {
                  "summary": "P.V.R. D11 Rudramsha beta; start anti-zodiacally from Aries by source-sign index, then count eleven parts forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 11,
                    "ayanamsa": "lahiri"
                  }
                },
                "d40": {
                  "summary": "P.V.R. D40 Khavedamsha beta; odd signs count from Aries, even signs from Libra",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 40,
                    "ayanamsa": "lahiri"
                  }
                },
                "d45": {
                  "summary": "P.V.R. D45 Akshavedamsha beta; movable, fixed, and dual signs count from Aries, Leo, and Sagittarius",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 45,
                    "ayanamsa": "lahiri"
                  }
                },
                "d81": {
                  "summary": "D81 Navanavamsha beta; direct 81-part harmonic equivalent to Navamsha of Navamsha",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 81,
                    "ayanamsa": "lahiri"
                  }
                },
                "d108": {
                  "summary": "D108 Ashtottaramsa beta; Navamsha followed by Dwadasamsha",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 108,
                    "ayanamsa": "lahiri"
                  }
                },
                "d144": {
                  "summary": "D144 Dwadas-Dwadasamsa beta; Dwadasamsha applied twice",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 144,
                    "ayanamsa": "lahiri"
                  }
                },
                "d150": {
                  "summary": "P.V.R./JHora D150 Nadiamsa beta; uniform own-sign base counting forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "ayanamsa": "lahiri"
                  }
                },
                "d3": {
                  "summary": "Parashari D3 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 3,
                    "ayanamsa": "lahiri"
                  }
                },
                "d4": {
                  "summary": "Parashari D4 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 4,
                    "ayanamsa": "lahiri"
                  }
                },
                "d7": {
                  "summary": "Parashari D7 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 7,
                    "ayanamsa": "lahiri"
                  }
                },
                "d12": {
                  "summary": "Parashari D12 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 12,
                    "ayanamsa": "lahiri"
                  }
                },
                "canonical": {
                  "summary": "Synthetic beta example; requires a server-side API key",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 9,
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_chandra_kala": {
                  "summary": "Deva Keralam Chandra Kala Nadi D150 beta; non-uniform boundary-union segments",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "deva_keralam_chandra_kala_nadi_non_uniform",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_chandra_kala_uniform_direct": {
                  "summary": "Deva Keralam Chandra Kala Nadi D150 beta; uniform direct segments",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "deva_keralam_chandra_kala_nadi_uniform_direct",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_parivritti_cyclic": {
                  "summary": "Parivritti cyclic D150 beta; continuous zodiacal projection",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "parivritti_cyclic",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_movable_aries_fixed_taurus_dual_gemini": {
                  "summary": "D150 beta; movable Aries forward, fixed Taurus reverse, dual Gemini forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_aries_forward_fixed_taurus_reverse_dual_gemini_forward",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_movable_aries_fixed_scorpio_dual_sagittarius": {
                  "summary": "D150 beta; movable Aries forward, fixed Scorpio reverse, dual Sagittarius forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_aries_forward_fixed_scorpio_reverse_dual_sagittarius_forward",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_movable_aries_fixed_leo_dual_sagittarius": {
                  "summary": "D150 beta; movable Aries forward, fixed Leo reverse, dual Sagittarius forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_aries_forward_fixed_leo_reverse_dual_sagittarius_forward",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_source_sign_base_reverse": {
                  "summary": "D150 beta; each source sign is the base, with fixed signs reversing",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_source_sign_forward_fixed_source_sign_reverse_dual_source_sign_forward",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VargasResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/vimshottari": {
      "post": {
        "operationId": "calculateVimshottari",
        "summary": "Calculate a natal Vimshottari cycle (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Additive beta calculation. Strict request shape; unknown fields, explicit nulls, noncanonical enums and numeric coordinate strings return 400. Exact poles and ambiguous/nonexistent civil times are rejected. Numerical checks are not practitioner sign-off. Sidereal-only with Lahiri default; retained-nutation frame and mean nodes. \n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.\n\nSidereal-only beta with fixed Julian years of 365.25 days and a 120-year cycle anchored at the theoretical start of the birth mahadasha. Omitted depth or explicit 2 returns the unchanged two-level response. Opt-in depth 3 adds 729 pratyantardashas; depth 4 adds 6,561 sookshma-dasha leaves. Both use exact proportional integer-microsecond durations and complete active-lord/count metadata. No arbitrary depth, date query, range or year model.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VimshottariRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic beta example; requires a server-side API key",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "ayanamsa": "lahiri"
                  }
                },
                "depth3": {
                  "summary": "Optional bounded third level; default response is unchanged",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "ayanamsa": "lahiri",
                    "depth": 3
                  }
                },
                "depth4": {
                  "summary": "Optional bounded fourth level; 6,561 leaves and no arbitrary recursion",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "ayanamsa": "lahiri",
                    "depth": 4
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VimshottariResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/ashtakoota": {
      "post": {
        "operationId": "calculateAshtakoota",
        "summary": "Calculate bounded North-Indian Ashtakoota scores (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Calculation-only eight-koota arithmetic using the versioned Saravali/Maitreya table set. Groom and bride are explicit directional roles. Returns the eight component scores and total out of 36 without a threshold verdict, dosha cancellation, medical claim, remedy, interpretation, or relationship advice. Sidereal-only; Lahiri default with Raman and Krishnamurti options. Each admitted request reserves one standard monthly usage unit; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-deployment-status": "deployed",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AshtakootaRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic directional-role example; requires a server-side API key",
                  "value": {
                    "groom": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "bride": {
                      "date": "1992-06-15",
                      "time": "09:30",
                      "timezone": "Asia/Kolkata",
                      "lat": 28.6139,
                      "lon": 77.209
                    },
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful bounded table calculation; not a compatibility verdict.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AshtakootaResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/ashtakavarga": {
      "post": {
        "operationId": "calculateAshtakavarga",
        "summary": "Calculate Bhinnashtakavarga and Sarvashtakavarga tables with optional reductions (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Calculation-only Parashari Ashtakavarga arithmetic using the versioned BPHS chapter 66 benefic-place tables. Returns contributor-level Prastara, seven unreduced Bhinnashtakavarga rows, and their 337-point Sarvashtakavarga sum. Set include_reductions=true to add the declared chapters 67-69 Trikona and Ekadhipatya reductions and Rashi, Graha, and Shodhya pindas. Reduced row sums are explicitly not labeled Sarvashtakavarga. Predictions, remedies, and interpretations remain excluded. Sidereal-only; Lahiri default with every supported ayanamsa. Each admitted request reserves one standard monthly usage unit; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-deployment-status": "deployed",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AshtakavargaRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic example; requires a server-side API key",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful bounded table calculation without interpretation.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AshtakavargaResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/composite": {
      "post": {
        "operationId": "calculateComposite",
        "summary": "Calculate a shortest-arc midpoint composite (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Shortest-arc midpoint composite. Antipodal/near-antipodal points reject; no arbitrary flip. Houses are synthetic Equal/Whole Sign from midpoint Ascendant, not physical geographic cusps. Not a Davison chart; no Placidus, node, speed or interpretation option. All admitted attempts use one standard quota unit, including free plans. No practitioner sign-off is claimed.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompositeRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic beta example; server-side API key required",
                  "value": {
                    "personA": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "personB": {
                      "date": "1990-06-15",
                      "time": "08:30",
                      "timezone": "Asia/Kolkata",
                      "lat": 28.6139,
                      "lon": 77.209
                    },
                    "zodiac": "tropical",
                    "house_system": "equal"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompositeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/panchang": {
      "post": {
        "operationId": "calculatePanchang",
        "summary": "Calculate an instant Panchang and local solar events (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Strict civil snapshot at the requested instant, not automatically at sunrise. Sidereal Lahiri default. Sunrise/sunset belong to the requested local civil date at elevation zero; ambiguous/nonexistent midnight boundaries return 400. No festivals, regional calendar or arbitrary event search. Latitude is restricted to inclusive [-88,88] for the verified solar-event solver domain. Returned solar candidates must satisfy a geometric crossing check; unsupported near-tangent geometry returns 400 instead of invented events. A solar event inside a recorded leap second returns 400 because its local civil timestamp cannot represent second 60. All admitted attempts reserve one standard quota unit; failed or timed-out admitted attempts are not refunded, including unsupported geometry. No automatic retries.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PanchangRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic beta example; server-side API key required",
                  "value": {
                    "at": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "Asia/Kolkata",
                      "lat": 28.6139,
                      "lon": 77.209
                    },
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PanchangResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/secondary-progressions": {
      "post": {
        "operationId": "calculateSecondaryProgressions",
        "summary": "Calculate secondary-progressed planets with natal context (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Day-for-year secondary-progressed PLANETS only. Required target>=birth instant; all civil dates 1900–2050, times known, UTC defaults and DST rejection. Fixed365.2421904-day year in TT. Returned angles/houses are explicitly natal context, never progressed. No progressed angles, houses, aspects, nodes, speed or arbitrary year model. All admitted attempts use one standard quota unit, including free plans. No practitioner sign-off is claimed.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SecondaryProgressionsRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic beta example; server-side API key required",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "target": {
                      "date": "2026-09-14",
                      "time": "12:00",
                      "timezone": "UTC"
                    },
                    "zodiac": "tropical",
                    "house_system": "equal"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecondaryProgressionsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/varga-svg": {
      "post": {
        "operationId": "calculateVargaSvg",
        "summary": "Render an original North/South Indian varga SVG (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Original sidereal D1/D2/D3/D4/D5/D6/D7/D8/D9/D10/D11/D12/D16/D20/D24/D27/D30/D40/D45/D60/D81/D108/D144/D150 sign-placement SVG. Default division1 differs from /vargas default9. North fixes houses; South fixes signs. D30 uses traditional unequal segments and D60 uses the documented source-sign-plus-part convention. Opt-in include_png returns a deterministic metadata-free PNG derived from the same internal SVG; omission or false preserves the predecessor response exactly. No supplied markup/chart/URL/image/font, and no bhava-chalit, outer planets or interpretation controls. All admitted attempts use one standard quota unit, including free plans. No practitioner sign-off is claimed.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry. D150 omission preserves the P.V.R./JHora uniform-direct mapping; explicit d150_method can select the bounded Deva Keralam/Chandra Kala Nadi, Parivritti cyclic, modality-base reverse, Scorpio/Sagittarius-base reverse, Leo/Sagittarius-base reverse, or source-sign-base reverse variants.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VargaSvgRequest"
              },
              "examples": {
                "d2": {
                  "summary": "Parashari D2 Hora beta; odd signs begin Sun/Leo, even signs Moon/Cancer",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 2,
                    "ayanamsa": "lahiri"
                  }
                },
                "d5": {
                  "summary": "P.V.R. D5 Panchamsha beta; fixed odd and even sign sequences",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 5,
                    "ayanamsa": "lahiri"
                  }
                },
                "d6": {
                  "summary": "P.V.R. D6 Shashthamsha beta; odd signs count from Aries, even signs from Libra",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 6,
                    "ayanamsa": "lahiri"
                  }
                },
                "d8": {
                  "summary": "P.V.R. D8 Ashtamsha beta; movable, fixed, and dual signs count from Aries, Sagittarius, and Leo",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 8,
                    "ayanamsa": "lahiri"
                  }
                },
                "d11": {
                  "summary": "P.V.R. D11 Rudramsha beta; start anti-zodiacally from Aries by source-sign index, then count eleven parts forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 11,
                    "ayanamsa": "lahiri"
                  }
                },
                "d40": {
                  "summary": "P.V.R. D40 Khavedamsha beta; odd signs count from Aries, even signs from Libra",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 40,
                    "ayanamsa": "lahiri"
                  }
                },
                "d45": {
                  "summary": "P.V.R. D45 Akshavedamsha beta; movable, fixed, and dual signs count from Aries, Leo, and Sagittarius",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 45,
                    "ayanamsa": "lahiri"
                  }
                },
                "d81": {
                  "summary": "D81 Navanavamsha beta; direct 81-part harmonic equivalent to Navamsha of Navamsha",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 81,
                    "ayanamsa": "lahiri"
                  }
                },
                "d108": {
                  "summary": "D108 Ashtottaramsa beta; Navamsha followed by Dwadasamsha",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 108,
                    "ayanamsa": "lahiri"
                  }
                },
                "d144": {
                  "summary": "D144 Dwadas-Dwadasamsa beta; Dwadasamsha applied twice",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 144,
                    "ayanamsa": "lahiri"
                  }
                },
                "d150": {
                  "summary": "P.V.R./JHora D150 Nadiamsa beta; uniform own-sign base counting forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "ayanamsa": "lahiri"
                  }
                },
                "d3": {
                  "summary": "Parashari D3 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 3,
                    "ayanamsa": "lahiri"
                  }
                },
                "d4": {
                  "summary": "Parashari D4 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 4,
                    "ayanamsa": "lahiri"
                  }
                },
                "d7": {
                  "summary": "Parashari D7 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 7,
                    "ayanamsa": "lahiri"
                  }
                },
                "d12": {
                  "summary": "Parashari D12 beta; fixed sign convention",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 12,
                    "ayanamsa": "lahiri"
                  }
                },
                "canonical": {
                  "summary": "Synthetic beta example; server-side API key required",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 1,
                    "layout": "north_indian",
                    "theme": "dark",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_chandra_kala": {
                  "summary": "Deva Keralam Chandra Kala Nadi D150 beta; non-uniform boundary-union segments",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "deva_keralam_chandra_kala_nadi_non_uniform",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_chandra_kala_uniform_direct": {
                  "summary": "Deva Keralam Chandra Kala Nadi D150 beta; uniform direct segments",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "deva_keralam_chandra_kala_nadi_uniform_direct",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_parivritti_cyclic": {
                  "summary": "Parivritti cyclic D150 beta; continuous zodiacal projection",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "parivritti_cyclic",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_movable_aries_fixed_taurus_dual_gemini": {
                  "summary": "D150 beta; movable Aries forward, fixed Taurus reverse, dual Gemini forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_aries_forward_fixed_taurus_reverse_dual_gemini_forward",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_movable_aries_fixed_scorpio_dual_sagittarius": {
                  "summary": "D150 beta; movable Aries forward, fixed Scorpio reverse, dual Sagittarius forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_aries_forward_fixed_scorpio_reverse_dual_sagittarius_forward",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_movable_aries_fixed_leo_dual_sagittarius": {
                  "summary": "D150 beta; movable Aries forward, fixed Leo reverse, dual Sagittarius forward",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_aries_forward_fixed_leo_reverse_dual_sagittarius_forward",
                    "ayanamsa": "lahiri"
                  }
                },
                "d150_source_sign_base_reverse": {
                  "summary": "D150 beta; each source sign is the base, with fixed signs reversing",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "division": 150,
                    "d150_method": "movable_source_sign_forward_fixed_source_sign_reverse_dual_source_sign_forward",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VargaSvgResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/lunar-nodes": {
      "post": {
        "operationId": "calculateLunarNodes",
        "summary": "Calculate distinct mean and osculating lunar nodes (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Beta mean and distinct geometric osculating lunar nodes at a known civil instant. No coordinates, user ephemeris, chart input or URLs. Civil dates 1900–2050; timezone conversion can cross the UTC year boundary. Tropical default; optional sidereal mean P03 ayanamsa subtraction, with true-model nutation retained. Existing chart/timeline node fields are unchanged. All admitted attempts use one standard quota unit, including free plans. No practitioner sign-off is claimed.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LunarNodesRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic beta example; server-side API key required",
                  "value": {
                    "at": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC"
                    },
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LunarNodesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/returns": {
      "post": {
        "operationId": "calculateReturns",
        "summary": "Find the next solar or lunar return and its chart (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Beta first solar or lunar longitude return beyond after +1 millisecond, subject to the documented numerical equality allowance, followed by a physical chart at that root. after may precede birth. Both civil dates 1900–2050; birth UTC and the complete fixed search window (Sun 370 TT days, Moon 32 TT days) must stay in UTC 1900–2050; no window clipping. Tropical/Equal defaults. Sidereal uses each ephemeris date's mean P03 ayanamsa with nutation retained. Return location defaults to birth coordinates and changes houses, not the return instant. No Placidus, arbitrary bodies/targets/search tolerances, cycles or predictions. All admitted attempts use one standard quota unit, including free plans. No practitioner sign-off is claimed.\n\nEach admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReturnsRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Synthetic beta example; server-side API key required",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "body": "sun",
                    "after": {
                      "date": "2026-09-14",
                      "time": "12:00",
                      "timezone": "UTC"
                    },
                    "zodiac": "tropical",
                    "house_system": "equal"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReturnsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/solar-arcs": {
      "post": {
        "operationId": "calculateSolarArcs",
        "summary": "Calculate named symbolic solar-arc directions (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Symbolic direct solar-arc directions applied uniformly to natal planets and Ascendant/MC, not a physical sky chart. Omitted method and explicit true_solar_arc preserve the predecessor actual tropical apparent-Sun arc. Explicit mean_naibod applies exactly 0.98564733 degrees per elapsed model year in longitude and does not sample a progressed Sun. Input timing matches secondary progressions: target UTC >= birth, fixed 365.2421904-day TT year, civil dates 1900–2050, strict fields/enums/numbers and DST/polar rejection. Sidereal uses the natal-date ayanamsa only. Equal/Whole Sign houses are synthetic from directed Ascendant, with MC independently directed. No relocation, converse/right-ascension arc, MC-derived angle recalculation, aspects, nodes, speeds or arbitrary key. True-Sun evaluation is bounded to 152 progressed TT days and at most 5 Sun intervals of 32 days; mean Naibod uses one constant-rate multiplication.\n\nAll plans use one standard quota unit. Each admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry. The mean-Naibod addition has no practitioner sign-off.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SolarArcsRequest"
              },
              "examples": {
                "meanNaibod": {
                  "summary": "Explicit mean Naibod longitude example; server-side API key required",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "target": {
                      "date": "2026-09-15",
                      "time": "12:00",
                      "timezone": "UTC"
                    },
                    "zodiac": "tropical",
                    "house_system": "equal",
                    "method": "mean_naibod"
                  }
                },
                "defaultTrueSolarArc": {
                  "summary": "Predecessor-compatible omitted-method example",
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "target": {
                      "date": "2026-09-15",
                      "time": "12:00",
                      "timezone": "UTC"
                    },
                    "zodiac": "tropical",
                    "house_system": "equal"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SolarArcsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/moon-phases": {
      "post": {
        "operationId": "calculateMoonPhases",
        "summary": "Calculate Moon phase geometry or a bounded primary-phase calendar (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Explicit instant mode returns a named display sector, Moon-minus-Sun ecliptic longitude and separately calculated spherical illuminated fraction. Calendar mode returns primary longitude crossings, not eclipse predictions or visibility. Dates 1900–2050; calendar spans at most 366 UTC days. No coordinates, zodiac, user kernels or arbitrary search tuning. Uses existing DE421 and bundled time-scale data; future UTC assumes the bundled leap-second schedule. Experimental beta: one-second output and millisecond root convergence are not accuracy guarantees. Independent 2026 USNO comparison has a 60-second tolerance; broader epoch/time-scale acceptance remains separate. Each admitted request reserves one standard monthly quota unit, including invalid inputs and timeouts. All plans; no automatic retries. Source availability does not establish deployment. Each admitted request reserves one monthly usage unit before route validation or engine work; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoonPhaseRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Instant physical phase, displayed in New York",
                  "value": {
                    "mode": "instant",
                    "at": {
                      "date": "2026-01-18",
                      "time": "19:52",
                      "timezone": "UTC"
                    },
                    "display_timezone": "America/New_York"
                  }
                },
                "calendar": {
                  "summary": "Primary phases during January 2026",
                  "value": {
                    "mode": "calendar",
                    "start": {
                      "date": "2026-01-01",
                      "time": "00:00",
                      "timezone": "UTC"
                    },
                    "end": {
                      "date": "2026-02-01",
                      "time": "00:00",
                      "timezone": "UTC"
                    }
                  }
                },
                "icalendar": {
                  "summary": "Primary phases with opt-in .ics export",
                  "value": {
                    "mode": "calendar",
                    "start": {
                      "date": "2026-01-01",
                      "time": "00:00",
                      "timezone": "UTC"
                    },
                    "end": {
                      "date": "2026-02-01",
                      "time": "00:00",
                      "timezone": "UTC"
                    },
                    "include_ical": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Mode-specific beta geometry/calendar envelope.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MoonPhaseResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/planetary-events": {
      "post": {
        "operationId": "calculatePlanetaryEvents",
        "summary": "Search a bounded interval for planetary ingresses, stations and exact major aspects (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns only physical apparent-geocentric longitude events: selected-zodiac sign-boundary crossings, tropical-longitude motion reversals and exact major-aspect longitude crossings. No aspect orbs, tangential contacts, houses, interpretations, eclipse claims, arbitrary targets, user kernels or search tuning. UTC dates 1900–2050; whole-second start-inclusive/end-exclusive intervals span at most 31 days. One-second timestamps and a 0.05-second numerical root tolerance are not physical accuracy guarantees. Independent Swiss Ephemeris/Moshier fixtures cover representative 2026 ingresses, stations and an exact aspect within 30 seconds; broader epoch acceptance remains separate. Each admitted request reserves one standard monthly quota unit before route validation or engine work, including failures and timeouts; failed or timed-out admitted attempts are not refunded. All plans; do not automatically retry. Source availability does not establish deployment.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 30000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanetaryEventsRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "January ingresses, stations and exact major aspects for five bodies",
                  "value": {
                    "start_utc": "2026-01-01T00:00:00Z",
                    "end_utc": "2026-02-01T00:00:00Z",
                    "event_types": [
                      "sign_ingress",
                      "station",
                      "aspect"
                    ],
                    "bodies": [
                      "sun",
                      "moon",
                      "mercury",
                      "venus",
                      "mars"
                    ]
                  }
                },
                "sidereal_ingresses": {
                  "summary": "Lahiri sidereal sign ingresses",
                  "value": {
                    "start_utc": "2026-01-01T00:00:00Z",
                    "end_utc": "2026-01-08T00:00:00Z",
                    "event_types": [
                      "sign_ingress"
                    ],
                    "bodies": [
                      "sun",
                      "moon",
                      "mercury"
                    ],
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded beta planetary-event result.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlanetaryEventsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/house-ingresses": {
      "post": {
        "operationId": "calculateHouseIngresses",
        "summary": "Search transit crossings of fixed reference-chart house cusps (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Calculates Equal or Whole Sign cusps once from a known reference birth, then searches selected apparent-geocentric transit bodies for directed crossings of those fixed boundaries. This is a transit-through-reference-houses calculation, not continuously moving mundane houses. Placidus and Porphyry are excluded pending specialist acceptance. UTC dates 1900–2050; whole-second start-inclusive/end-exclusive intervals span at most 31 days. Exact crossing times are rounded to one second from a fixed 0.05-second numerical tolerance; neither is a physical accuracy guarantee. No interpretations, arbitrary targets, caller kernels, URLs, search tuning, or automatic retries. Each admitted request reserves one standard monthly quota unit before route validation or engine work; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-deployment-status": "deployed",
        "x-engine-timeout-ms": 30000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HouseIngressesRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Moon and Mercury crossing fixed Equal-house cusps",
                  "value": {
                    "reference_birth": {
                      "date": "1990-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "start_utc": "2026-01-01T00:00:00Z",
                    "end_utc": "2026-01-08T00:00:00Z",
                    "bodies": [
                      "moon",
                      "mercury"
                    ]
                  }
                },
                "sidereal_whole_sign": {
                  "summary": "Lahiri sidereal Whole Sign reference houses",
                  "value": {
                    "reference_birth": {
                      "date": "1990-01-01",
                      "time": "12:00:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "start_utc": "2026-01-01T00:00:00Z",
                    "end_utc": "2026-01-08T00:00:00Z",
                    "bodies": [
                      "moon"
                    ],
                    "house_system": "whole_sign",
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded fixed-reference house-ingress result.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HouseIngressesResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/aspect-windows": {
      "post": {
        "operationId": "calculateAspectWindows",
        "summary": "Find exact-hit-anchored major-aspect orb windows (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns bounded contiguous orb intervals only when the interval contains at least one exact major-aspect crossing. Tangential orb contacts without an exact crossing are excluded. Entry or exit is null when the true boundary lies outside the requested start-inclusive/end-exclusive interval, with the corresponding clipped flag set. Repeated exact hits caused by retrograde motion are numbered per body pair and aspect. Optional include_ical returns a bounded deterministic RFC 5545 calendar string in the JSON response; it does not create, publish or subscribe to an external calendar. UTC dates 1900-2050, whole-second intervals at most 31 days, ten bodies, five major aspects and 0.5-10.0 degree orbs in 0.1-degree increments. One-second timestamps and a 0.05-second numerical root tolerance are not physical accuracy guarantees. Each admitted request reserves one standard monthly quota unit before route validation or engine work, including failures and timeouts; failed or timed-out admitted attempts are not refunded. All plans; do not automatically retry. Source availability does not establish deployment.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 30000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AspectWindowsRequest"
              },
              "examples": {
                "retrograde_repeat": {
                  "summary": "Mercury-Neptune conjunction windows with two exact hits",
                  "value": {
                    "start_utc": "2025-03-01T00:00:00Z",
                    "end_utc": "2025-04-01T00:00:00Z",
                    "bodies": [
                      "mercury",
                      "neptune"
                    ],
                    "aspects": [
                      "conjunction"
                    ],
                    "orb_degrees": 3,
                    "include_ical": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded beta aspect-window result.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AspectWindowsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/event-calendar": {
      "post": {
        "operationId": "calculateEventCalendar",
        "summary": "Compose a bounded astrology event calendar (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Combines selected Moon phases, ingresses, stations, exact aspects and exact-hit-anchored aspect windows using their existing documented engines. Stable event and series IDs, local display timestamps, optional bounded RFC 5545 text, strict opt-in deterministic fixed-column RFC 4180 CSV, opt-in request-window aspect pass groups with deduplicated exact contacts, and optional exact primary Moon-phase filtering with an explainable before/after summary are returned. At most 31 days and 800 events. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 30000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventCalendarRequest"
              },
              "examples": {
                "moon_and_aspects": {
                  "value": {
                    "start_utc": "2026-09-01T00:00:00Z",
                    "end_utc": "2026-09-08T00:00:00Z",
                    "event_types": [
                      "moon_phase",
                      "aspect"
                    ],
                    "bodies": [
                      "sun",
                      "moon"
                    ],
                    "display_timezone": "UTC",
                    "include_csv": true,
                    "group_passes": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unified event calendar.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCalendarResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/event-rule-search": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Evaluate a bounded versioned Boolean event rule",
        "description": "Evaluates at most eight predicates in a depth-four all/any/not tree over a 15, 30, or 60 minute grid spanning at most seven UTC days. Supported facts are planet sign, planet motion, Moon phase sector, Ascendant sign, and major-aspect orb. validate_only returns normalization and a cost estimate without ephemeris sampling. Results are sampled filters, not continuous guarantees, rankings, recommendations, predictions, or interpretations. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EventRuleSearchRequest"
              },
              "examples": {
                "sampled_rule": {
                  "value": {
                    "rule_version": 1,
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 33.749,
                      "lon": -84.388
                    },
                    "sample_minutes": 60,
                    "rule": {
                      "all": [
                        {
                          "fact": "planet_sign",
                          "body": "moon",
                          "value": "Taurus"
                        },
                        {
                          "fact": "aspect",
                          "body_a": "venus",
                          "body_b": "jupiter",
                          "aspect": "trine",
                          "max_orb_degrees": 1.5
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded rule validation or sampled matches",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventRuleSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateEventRuleSearch",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 30000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/convention-compare": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Compare calculation conventions or trusted signed releases",
        "description": "Calculates the same birth under two explicit convention profiles, or verifies and compares two Cosmic Ephemeris-signed responses bound to the same route and canonical input. Release mode works for receipt-enabled releases and does not pretend to recalculate pre-receipt releases. It returns at most 500 field differences and never ranks conventions or provides interpretation. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConventionCompareRequest"
              },
              "examples": {
                "profiles": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "profiles": [
                      {
                        "zodiac": "tropical",
                        "house_system": "equal"
                      },
                      {
                        "zodiac": "sidereal",
                        "ayanamsa": "lahiri",
                        "house_system": "whole_sign"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Convention deltas or verified signed-release field differences",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConventionCompareResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateConventionCompare",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/chart-robustness": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Separate birth-time and convention sensitivity",
        "description": "Evaluates 22 sign and house facts over one shared UTC sample grid and two or three explicit convention profiles. Each fact is classified as stable, time-sensitive, convention-sensitive, or sensitive to both. Unknown time uses 25 samples across the complete local civil date; approximate time accepts symmetric 10–120 minute uncertainty in ten-minute increments. Results are sampled evidence, not statistical confidence, rectification, interpretation, prediction, or a ranking of conventions. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChartRobustnessRequest"
              },
              "examples": {
                "approximate_time_two_conventions": {
                  "value": {
                    "birth_time": {
                      "status": "approximate",
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "uncertainty_minutes": 30
                    },
                    "lat": 40.7128,
                    "lon": -74.006,
                    "profiles": [
                      {
                        "zodiac": "tropical",
                        "house_system": "equal"
                      },
                      {
                        "zodiac": "sidereal",
                        "ayanamsa": "lahiri",
                        "house_system": "whole_sign"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded two-axis robustness evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChartRobustnessResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateChartRobustness",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/civil-time-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit ambiguous or invalid local birth times without guessing",
        "description": "Resolves one pinned place and civil time with Cosmic Ephemeris's pinned IANA time-zone data. Unique times produce one 22-fact chart snapshot. Repeated times produce both valid UTC candidates and an exact fact-by-fact comparison; the service never selects one. Nonexistent clock times produce no chart and are never shifted. The convention profile is always explicit. No request-time network access, interpretation, prediction, or rectification. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CivilTimeAuditRequest"
              },
              "examples": {
                "new_york_fall_overlap": {
                  "value": {
                    "place_id": "geonames:5128581:2026-10-02",
                    "date": "2024-11-03",
                    "time": "01:30",
                    "profile": {
                      "zodiac": "tropical",
                      "house_system": "equal"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Never-guess civil-time resolution and bounded chart evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CivilTimeAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateCivilTimeAudit",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/chart-input-readiness": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Gate chart workflows against birth-time data quality",
        "description": "Classifies exact, approximate, or unknown birth-time input before a developer launches downstream chart workflows. Exact local times are resolved against pinned place and IANA data; repeated times retain both candidates and nonexistent times produce no facts. Approximate and unknown times expose explicitly sampled, non-exhaustive fact evidence while exact-chart routes remain blocked. The response never selects a representative time, rectifies a chart, ranks a convention, or returns statistical confidence. No request-time network access. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChartInputReadinessRequest"
              },
              "examples": {
                "new_york_repeated_time": {
                  "value": {
                    "place_id": "geonames:5128581:2026-10-02",
                    "birth_time": {
                      "status": "exact",
                      "date": "2024-11-03",
                      "time": "01:30"
                    },
                    "profile": {
                      "zodiac": "tropical",
                      "house_system": "equal"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Machine-readable workflow readiness and bounded chart-fact evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChartInputReadinessResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateChartInputReadiness",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/house-system-readiness": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Preflight every supported house system without fallback",
        "description": "Evaluates Cosmic Ephemeris's fixed 25-system house inventory for one exact birth geometry. Each system is reported as available or unavailable; successful cusp sets receive a deterministic fingerprint and geometrically undefined systems remain explicit failures. The route never substitutes a different house system, returns interpretations, or makes request-time network calls. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HouseSystemReadinessRequest"
              },
              "examples": {
                "polar_preflight": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 70,
                      "lon": 20
                    },
                    "profile": {
                      "zodiac": "tropical"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fixed-inventory availability matrix with no substitution",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HouseSystemReadinessResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateHouseSystemReadiness",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/house-placement-stability": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Measure planetary house-placement stability across supported systems",
        "description": "Evaluates the ten natal planets across Cosmic Ephemeris's fixed inventory of 24 comparable 12-house systems. Returns exact per-system house assignments, unweighted agreement ratios, tied most-common houses, deterministic placement-equivalence groups, unavailable polar geometries, and an explicit no-fallback guarantee. Gauquelin's 36 sectors are identified but excluded from 12-house comparison. Agreement is descriptive, not a recommendation or claim that a house system is correct. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HousePlacementStabilityRequest"
              },
              "examples": {
                "polar_stability": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 70,
                      "lon": 20
                    },
                    "profile": {
                      "zodiac": "tropical"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Unweighted multi-system house-placement stability audit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HousePlacementStabilityResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateHousePlacementStability",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/aspect-policy-stability": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Compare several explicit aspect-orb policies on one chart",
        "description": "Calculates one exact chart and evaluates 2–4 caller-declared, unweighted aspect policies over 3–10 selected planets. Returns every aspect admitted by at least one policy, exact separation and orb, per-policy configured boundary and signed margin, policy-set fingerprints, and deterministic equivalence groups. Aspects rejected by every policy are intentionally omitted. The result does not rank policies or claim strength, confidence, interpretation, prediction, or practitioner preference. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AspectPolicyStabilityRequest"
              },
              "examples": {
                "tight_vs_wide": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "points": [
                      "sun",
                      "moon",
                      "mercury",
                      "venus",
                      "mars"
                    ],
                    "policies": [
                      {
                        "id": "tight",
                        "aspects": [
                          {
                            "aspect": "conjunction",
                            "max_orb_degrees": 3
                          },
                          {
                            "aspect": "square",
                            "max_orb_degrees": 3
                          },
                          {
                            "aspect": "trine",
                            "max_orb_degrees": 3
                          },
                          {
                            "aspect": "opposition",
                            "max_orb_degrees": 3
                          }
                        ]
                      },
                      {
                        "id": "wide",
                        "aspects": [
                          {
                            "aspect": "conjunction",
                            "max_orb_degrees": 8
                          },
                          {
                            "aspect": "square",
                            "max_orb_degrees": 6
                          },
                          {
                            "aspect": "trine",
                            "max_orb_degrees": 7
                          },
                          {
                            "aspect": "opposition",
                            "max_orb_degrees": 8
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded cross-policy aspect admission audit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AspectPolicyStabilityResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateAspectPolicyStability",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/house-boundary-proximity": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit planet clearance from house cusps across every 12-house system",
        "description": "Calculates one exact chart and measures 1–10 selected planets against every available 12-house system in Cosmic Ephemeris's fixed inventory. Each system row returns the assigned house, preceding and following cusp, two-sided angular distance, normalized within-house position, nearest-cusp ties, and an inclusive caller-declared threshold flag. Undefined geometries remain explicit unavailable rows; Gauquelin's 36 sectors are excluded and no fallback or system substitution occurs. The result does not reinterpret or reassign cusp-near planets and makes no recommendation, interpretation, prediction, or practitioner-preference claim. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HouseBoundaryProximityRequest"
              },
              "examples": {
                "selected_planets": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "points": [
                      "sun",
                      "moon",
                      "mercury"
                    ],
                    "threshold_degrees": 2
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded cross-system house-boundary clearance audit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HouseBoundaryProximityResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateHouseBoundaryProximity",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/location-precision-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit chart sensitivity to birth-coordinate precision",
        "description": "Calculates one exact birth moment at the supplied coordinates and eight equally spaced bearings on a caller-declared spherical radius. It reports selected-planet house stability, explicit per-sample geometry failures, and maximum Ascendant, Midheaven, and cusp displacement from the center for one selected 12-house system. The nine samples describe only the center and perimeter points; they are not statistical confidence, do not guarantee every point inside the disk, and do not rank locations, rectify birth data, interpret a chart, or make predictions. Gauquelin is excluded because it is a 36-sector system. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationPrecisionAuditRequest"
              },
              "examples": {
                "city_precision": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical",
                      "house_system": "placidus"
                    },
                    "radius_km": 25,
                    "points": [
                      "sun",
                      "moon",
                      "mercury"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded coordinate-precision sensitivity audit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationPrecisionAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateLocationPrecisionAudit",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/location-transition-scan": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Scan outward for observed location-sensitive chart transitions",
        "description": "Calculates one exact birth moment at the supplied coordinates and eight equal radial checkpoints on each of eight fixed bearings, up to a caller-declared maximum radius. For Ascendant sign, Midheaven sign, all twelve cusp signs, and selected-planet houses, it returns the first observed checkpoint bracket on each bearing or an explicit no-transition or unavailable-geometry state. Brackets describe only consecutive sampled checkpoints; they do not prove the exact transition location, detect every intermediate transition, guarantee the unsampled disk, rank locations, rectify birth data, interpret a chart, or make predictions. Gauquelin is excluded because it is a 36-sector system. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationTransitionScanRequest"
              },
              "examples": {
                "city_transition_scan": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical",
                      "house_system": "placidus"
                    },
                    "max_radius_km": 100,
                    "points": [
                      "sun",
                      "moon",
                      "mercury"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded radial chart-state transition scan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationTransitionScanResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateLocationTransitionScan",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/chart-uncertainty-envelope": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Separate observed chart sensitivity across time and location uncertainty",
        "description": "Resolves one exact civil center instant, then evaluates a fixed full-factorial matrix of seven exact UTC instants and nine coordinates: the supplied center plus eight equal bearings on a caller-declared radius. For Ascendant and Midheaven signs, all twelve cusp signs, and selected-planet signs and houses, it reports observed time-axis, location-axis, combined, and interaction-only variation with traceable sample assignments. This is a bounded sampled envelope, not birth-time rectification, a continuous-time proof, a guarantee over the full location disk, statistical confidence, causal attribution, ranking, interpretation, or prediction. Gauquelin is excluded because it is a 36-sector system. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopeRequest"
              },
              "examples": {
                "recorded_birth_uncertainty": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical",
                      "house_system": "placidus"
                    },
                    "time_uncertainty_minutes": 30,
                    "location_radius_km": 25,
                    "points": [
                      "sun",
                      "moon",
                      "mercury"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded joint time-and-location uncertainty evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChartUncertaintyEnvelopeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateChartUncertaintyEnvelope",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-robustness-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Stress-test electional criteria across start-time and venue uncertainty",
        "description": "Resolves one exact civil event instant, then evaluates the existing caller-selected electional predicates over a fixed full-factorial matrix of seven exact UTC instants and nine coordinates: the supplied venue plus eight equal bearings on a caller-declared radius. Each criterion reports observed time-axis, location-axis, both-axis, combined-only, center-failure, stable-match, or non-evaluable evidence with traceable failing sample IDs. This is an operational sampled audit, not a best-time search, recommendation, ranking, continuous-time proof, guarantee over the full location disk, statistical confidence, causal attribution, interpretation, or prediction. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalRobustnessAuditRequest"
              },
              "examples": {
                "launch_time_and_venue_tolerance": {
                  "value": {
                    "event": {
                      "date": "2026-10-04",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    },
                    "time_tolerance_minutes": 30,
                    "location_radius_km": 25
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded criterion-level electional robustness evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalRobustnessAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalRobustnessAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-tolerance-frontier": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Measure observed electional rule tolerance in time and venue directions",
        "description": "Resolves one exact civil event instant, then walks outward through ten bounded samples in each earlier/later schedule direction and along each of eight venue bearings. Every selected electional criterion reports the last observed match, first observed failure, first unavailable sample, and traceable sample IDs. This is directional sampled evidence, not an exact boundary, continuous-time proof, monotonicity claim, whole-disk guarantee, recommendation, ranking, interpretation, prediction, or statistical confidence. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalToleranceFrontierRequest"
              },
              "examples": {
                "launch_rule_frontier": {
                  "value": {
                    "event": {
                      "date": "2026-10-04",
                      "time": "12:00",
                      "timezone": "America/New_York",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    },
                    "max_time_shift_minutes": 60,
                    "max_location_radius_km": 50
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded directional electional tolerance evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalToleranceFrontierResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalToleranceFrontier",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-feasibility-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Explain sampled electional feasibility and minimal observed rule relaxations",
        "description": "Evaluates the caller's existing electional predicates on a fixed 15, 30, or 60 minute UTC grid spanning at most seven days. It returns every sample's exact passed and failed criterion IDs, per-rule match/blocking ratios, every observed blocking signature, and inclusion-minimal failed-rule sets with witness samples. Minimal means set inclusion over observed evaluable samples; it does not recommend which rule to remove or assign weights. Unavailable geometry is explicit and excluded from feasibility. This is sampled evidence, not continuous-time proof, causal diagnosis, statistical confidence, interpretation, prediction, ranking, or advice. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalFeasibilityAuditRequest"
              },
              "examples": {
                "launch_constraints": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    },
                    "sample_minutes": 15
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded sampled feasibility and conflict evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalFeasibilityAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalFeasibilityAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-resolution-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Show which observed electional match runs coarser sampling misses",
        "description": "Evaluates the caller's existing electional predicates once on a fixed 15-minute, start-aligned UTC grid spanning at most seven days, then projects the same evidence to aligned 30- and 60-minute checkpoints. It returns every finest-grid sample, matching runs, per-resolution counts, and exact witness samples for runs missed by each coarser grid. A run is only a contiguous sequence of matching 15-minute samples; its boundaries are not interpolated. This is sampled evidence, not continuous-time proof, a guarantee that unsampled instants do not match, ranking, recommendation, interpretation, prediction, or statistical confidence. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
              },
              "examples": {
                "launch_constraints": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded cross-resolution sampling evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalResolutionAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalResolutionAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-sampling-phase-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Show whether electional results change with the sampling anchor",
        "description": "Evaluates the caller's existing electional predicates once on a fixed 15-minute, start-inclusive UTC grid spanning at most seven days. The same samples are projected onto both possible 30-minute phases and all four possible 60-minute phases, each measured from the request start. It returns every finest-grid sample, every observed matching run, each phase's exact matching samples, and exact witnesses for runs detected by some anchors but missed by others. A run is only a contiguous sequence of matching 15-minute samples; boundaries are not interpolated. This is sampled evidence, not continuous-time proof, probability, statistical confidence, ranking, recommendation, interpretation, or prediction. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalSamplingPhaseAuditRequest"
              },
              "examples": {
                "launch_constraints": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded sampling-anchor sensitivity evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalSamplingPhaseAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalSamplingPhaseAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-omission-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Measure which selected electional criteria uniquely exclude observed samples",
        "description": "Evaluates the caller's existing predicates once on a fixed 15, 30, or 60 minute UTC grid of at most seven days, then omits each criterion in turn without recalculating charts. It returns exact newly matching sample IDs, unique-failure and cofailure counts, and contiguous omission-match runs. The result is leave-one-rule-out sampled evidence, not causal attribution, continuous-time proof, weighting, ranking, recommendation, interpretation, prediction, or statistical confidence. Unavailable samples are explicit and break runs. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionOmissionAuditRequest"
              },
              "examples": {
                "constraint_impact": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    },
                    "sample_minutes": 15
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deterministic leave-one-criterion-out sampled evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionOmissionAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionOmissionAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-pair-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Expose observed two-criterion electional exclusion interactions",
        "description": "Evaluates the selected predicates once on a fixed 15, 30, or 60 minute UTC grid of at most seven days, then projects every unordered pair omission without recalculating charts. Exact witnesses identify samples admitted only after both named criteria are omitted. This is sampled leave-two-rules-out evidence, not causal attribution, continuous-time proof, weighting, ranking, recommendation, interpretation, prediction, or statistical confidence. Unavailable samples are explicit and break runs. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionPairAuditRequest"
              },
              "examples": {
                "pair_interaction": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    },
                    "sample_minutes": 15
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deterministic leave-two-criteria-out sampled evidence",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionPairAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionPairAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-relation-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Expose observed compatibility and redundancy among electional criteria",
        "description": "Evaluates selected predicates once on a fixed 15, 30, or 60 minute UTC grid of at most seven days, then returns every unordered pair's exact four-cell truth table. It identifies observed co-satisfaction, disjointness, equivalence and non-vacuous directional implication with exact counterexample sample IDs. These relations apply only to evaluable sampled instants; they are not universal logic, causal claims, continuous-time proof, weighting, ranking, recommendation, interpretation, prediction, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRelationAuditRequest"
              },
              "examples": {
                "rule_relations": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    },
                    "sample_minutes": 15
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deterministic pairwise criterion truth tables over one sampled grid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRelationAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRelationAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-budget-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Find every optimal electional rule-relaxation combination by exact omission budget",
        "description": "Evaluates caller-selected predicates once on a fixed 15, 30, or 60 minute UTC grid of at most seven days, then exhaustively projects every criterion subset. For each exact omission count it returns every tied combination maximizing observed matching samples, with exact sample witnesses. This is transparent sampled-set arithmetic, not astrological quality scoring, continuous-time proof, weighting, recommendation, interpretation, prediction, probability, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionBudgetAuditRequest"
              },
              "examples": {
                "relaxation_budget": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    },
                    "sample_minutes": 15
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact omission-budget frontier over one sampled grid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionBudgetAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionBudgetAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-budget-stability-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit whether optimal electional rule relaxations survive sampling-grid changes",
        "description": "Evaluates one fixed 15-minute grid, projects it onto every 30- and 60-minute phase, and exhaustively compares all tied optimum rule-relaxation sets at every exact omission budget. It reports universal and grid-sensitive optima without selecting or scoring one. This is transparent sampled-set arithmetic, not continuous-time proof, weighting, recommendation, interpretation, prediction, probability, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityAuditRequest"
              },
              "examples": {
                "sampling_stability": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact criterion-budget optimum stability across seven projected sampling grids",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionBudgetStabilityAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-budget-regret-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Find least sampling-sensitive electional rule relaxations by exact minimax regret",
        "description": "Evaluates one fixed 15-minute grid, projects it onto every 30- and 60-minute phase, and exhaustively computes each rule-relaxation set's exact proportional loss from every grid's optimum at every exact omission budget. It returns every minimax tie and every candidate's per-grid evidence without selecting or scoring one astrologically. This is transparent sampled-set arithmetic, not continuous-time proof, weighting, recommendation, interpretation, prediction, probability, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretAuditRequest"
              },
              "examples": {
                "minimax_regret": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact minimax-regret criterion options across seven projected sampling grids",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionBudgetRegretAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-budget-pareto-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Enumerate weight-free Pareto-efficient electional rule relaxations",
        "description": "Evaluates one fixed 15-minute grid, projects it onto every 30- and 60-minute phase, and returns every non-dominated rule-relaxation set at every exact omission budget. A candidate is dominated only when another candidate matches at least as many samples on every evaluable grid and strictly more on at least one; exact dominance certificates make every exclusion auditable. This is transparent sampled-set arithmetic, not continuous-time proof, weighting, recommendation, interpretation, prediction, probability, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionBudgetParetoAuditRequest"
              },
              "examples": {
                "pareto_frontier": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact Pareto frontiers and dominance certificates across seven sampling grids",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionBudgetParetoAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionBudgetParetoAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-shapley-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Attribute excluded electional samples fairly across interacting criteria",
        "description": "Evaluates one fixed 15-minute grid, projects it onto every 30- and 60-minute phase, and computes each criterion's exact Shapley contribution to samples excluded by the full rule set. The calculation enumerates every criterion coalition, uses exact rational arithmetic, treats every criterion ordering uniformly, and verifies that criterion contributions sum to the observed excluded-sample total on every evaluable grid. It is interaction-aware attribution, not causal proof, astrological quality scoring, criterion weighting, continuous-time proof, recommendation, interpretation, prediction, probability, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionShapleyAuditRequest"
              },
              "examples": {
                "exact_attribution": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact interaction-aware exclusion attribution across seven sampling grids",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionShapleyAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionShapleyAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-conflict-core-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Find the smallest electional rule combinations that make a window infeasible",
        "description": "Evaluates one fixed 15-minute grid and all 30- and 60-minute phase projections, then returns every inclusion-minimal criterion subset with zero matching available samples. Every reported core includes an immediate-relaxation certificate for each member and one deterministic sample witness showing that deleting that member restores feasibility. The result is exact for the returned sampled grids, not a continuous-time proof, causal claim, quality score, recommendation, interpretation, prediction, probability, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionConflictCoreAuditRequest"
              },
              "examples": {
                "minimal_conflicts": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact sampled inclusion-minimal conflict cores with relaxation witnesses",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionConflictCoreAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionConflictCoreAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-robust-repair-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Find the smallest criterion relaxations that work across every sampling grid",
        "description": "Evaluates one fixed 15-minute grid and all 30- and 60-minute phase projections, then returns every inclusion-minimal criterion omission set that restores at least one matching available sample on every evaluable grid. Each repair includes a deterministic witness per evaluable grid and a minimality certificate naming the grids blocked when each omitted criterion is restored. Results are exact for the returned sampled grids, not continuous-time proofs, causal claims, quality scores, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRobustRepairAuditRequest"
              },
              "examples": {
                "robust_repair": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact inclusion-minimal repairs robust across all evaluable grids",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRobustRepairAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRobustRepairAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-impact-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit what every minimal cross-grid criterion repair actually admits",
        "description": "Extends the robust-repair audit with an exact counterfactual consequence ledger. For every inclusion-minimal cross-grid repair, each evaluable grid reports baseline and repaired match counts, newly admitted samples, per-omitted-rule violation counts, a violation-cardinality histogram, and the deterministic earliest witness among samples minimizing waived-rule violations. It does not rank repairs or apply criterion weights. Results are exact for returned samples, not continuous-time proofs, causal claims, quality scores, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairImpactAuditRequest"
              },
              "examples": {
                "repair_impact": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact sampled consequence ledger for every minimal robust repair",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairImpactAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairImpactAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-distinction-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Prove how every pair of minimal cross-grid criterion repairs differs",
        "description": "Extends the robust-repair consequence audit with exact pairwise distinction certificates. Every unordered pair of returned inclusion-minimal cross-grid repairs receives the first deterministic sampled witness on an evaluable grid where their newly admitted sample sets differ, plus exact left- and right-exclusive observation counts. SHA-256 consequence fingerprints are display and comparison aids only; exact sample-ID sets decide distinctions. It does not rank repairs or apply criterion weights. Results are exact for returned samples, not continuous-time proofs, causal claims, quality scores, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairDistinctionAuditRequest"
              },
              "examples": {
                "repair_distinction": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact sampled distinction certificate for every minimal robust-repair pair",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairDistinctionAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairDistinctionAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-overlap-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Classify exact overlap and containment for every minimal repair pair",
        "description": "Extends the robust-repair consequence and distinction audits with exact set relations for every unordered pair of returned inclusion-minimal cross-grid repairs. Each pair is classified as disjoint, left strictly contained, right strictly contained, or overlapping incomparable across all evaluable grid/sample observations, with reduced exact overlap fractions, exact intersection/exclusivity/union counts, grid references, and the first deterministic shared and directional-exclusive witnesses when they exist. SHA-256 consequence fingerprints do not decide overlap. It does not rank repairs or apply criterion weights. Results are exact for returned samples, not continuous-time proofs, causal claims, quality scores, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairOverlapAuditRequest"
              },
              "examples": {
                "repair_overlap": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact sampled overlap classification for every minimal robust-repair pair",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairOverlapAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairOverlapAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-hierarchy-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Build the exact containment hierarchy of minimal repair consequences",
        "description": "Extends the exact robust-repair overlap audit into a consequence-containment partially ordered set. It returns every strict subset-to-superset relation, the Hasse diagram cover edges (transitive reduction), per-repair comparable and incomparable neighbors, a deterministic longest chain, an exact maximum antichain, and a deterministic minimum chain cover with a verified Dilworth identity. It does not rank repairs or apply criterion weights. Results are exact for returned grid/sample observations, not continuous-time proofs, causal claims, quality scores, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditRequest"
              },
              "examples": {
                "repair_hierarchy": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact sampled repair-consequence containment hierarchy and width/chain certificates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairHierarchyAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-coverage-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit exact observation support and single-repair coverage loss",
        "description": "Extends the exact minimal-repair consequence hierarchy with support multiplicity. It partitions every recovered grid/sample observation by the complete set of distinct minimal repairs that admit it, reports exact per-repair exclusive and multiply supported counts, and certifies the union-coverage loss caused by removing each repair. It does not rank repairs or apply criterion weights. Results are exact for returned grid/sample observations, not continuous-time proofs, causal claims, quality scores, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditRequest"
              },
              "examples": {
                "repair_coverage": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact repair-support groups and single-repair union-loss certificates",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairCoverageAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-resilience-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit exact multi-repair failure tolerance",
        "description": "Extends exact repair-support coverage with simultaneous repair-unavailability analysis. It returns every inclusion-minimal repair coalition whose joint loss can remove an observed grid/sample consequence, the exact observations lost by each coalition, the minimum union-reducing failure count, and a guaranteed-survival curve for every unavailable-repair budget. It does not assign failure probabilities, rank repairs, or apply criterion weights. Results are exact for returned grid/sample observations, not continuous-time proofs, causal claims, quality scores, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditRequest"
              },
              "examples": {
                "repair_resilience": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact minimal failure coalitions and repair-loss survival guarantees",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairResilienceAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-loss-frontier-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit exact worst-case repair-loss damage",
        "description": "Extends the repair-resilience audit with an exhaustive, weight-free damage frontier over every exact-size failure set from zero through three unavailable minimal repairs. Each point returns the maximum lost observation count, minimum surviving count, exact number of tied worst cases, a deterministic representative with lost-group witness, repairs present in every or any tied worst case, and a complete loss histogram. The fixed budget admits at most 57,226 enumerated failure sets under the 70-repair bound. Results are exact for returned grid/sample observations, not continuous-time proofs, probabilities, causal claims, quality scores, recommendations, interpretations, predictions, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditRequest"
              },
              "examples": {
                "repair_loss_frontier": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact bounded worst-case repair-loss frontier and complete loss distributions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairLossFrontierAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-hardening-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Audit exact single-repair hardening effects",
        "description": "Extends the repair-loss frontier with an exhaustive counterfactual for every minimal repair: assume that one repair remains available, then enumerate every exact-size failure set through three unavailable repairs among all remaining repairs. Each candidate returns baseline versus hardened worst-case observation loss, avoided loss, exact remaining tie count, a deterministic witness, and repairs present in every or any remaining worst case. At most 70 candidates, 280 candidate/budget points, and 3,836,700 repair/failure-set comparisons are admitted. Results are exact for returned grid/sample evidence, not continuous-time guarantees, probabilities, causal infrastructure claims, rankings, recommendations, interpretations, predictions, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditRequest"
              },
              "examples": {
                "repair_hardening": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact bounded single-repair hardening counterfactuals",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairHardeningAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-hardening-pareto-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Compare exact repair-hardening Pareto tradeoffs",
        "description": "Extends the single-repair hardening audit with a weight-free, exhaustive comparison of every protected-repair avoidance vector. Every pair is classified as equivalent, strictly dominated in one direction, or incomparable across the same zero-through-three exact repair-failure budgets. The response returns complete dominance certificates, equivalent hardening profiles, every undominated tie, and exact failure-budget witnesses for tradeoffs. At most 70 candidates, 2,415 pair relations, and 9,660 pair/budget comparisons are admitted. Results are exact for returned grid/sample evidence, not continuous-time guarantees, causal infrastructure claims, rankings, recommendations, interpretations, predictions, probabilities, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditRequest"
              },
              "examples": {
                "hardening_pareto": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact bounded hardening Pareto relations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairHardeningParetoAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-hardening-pareto-hierarchy-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Map the exact hierarchy of repair-hardening Pareto profiles",
        "description": "Extends the repair-hardening Pareto audit with the complete strict-dominance partial order over unique hardening profiles. It returns every dominance, exact transitive-reduction cover edges, successive Pareto layers, per-profile comparability, a deterministic longest chain, an exact maximum antichain, and a minimum chain cover. Equivalent repair candidates remain grouped in one profile. At most 70 profiles, 2,415 strict dominances, 70 Pareto layers, and 343,000 bounded hierarchy comparisons are admitted. Results are exact for returned sampled evidence and apply no weights, floating-point scores, rankings, recommendations, interpretations, predictions, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditRequest"
              },
              "examples": {
                "hardening_pareto_hierarchy": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact bounded hierarchy of hardening Pareto profiles",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairHardeningParetoHierarchyAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/electional-criterion-repair-hardening-regret-audit": {
      "post": {
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "summary": "Find every least-worst-regret repair-hardening profile",
        "description": "Extends the exact hardening-profile hierarchy with weight-free minimax regret across every analyzed simultaneous repair-failure budget. For each budget it returns the best observed avoided loss and every tied benchmark profile; for each profile it returns exact integer regret and witnesses, its worst regret, and every budget attaining it. All least-maximum-regret ties are returned. At most 70 profiles, four failure budgets, 280 profile-budget regret cells, and 19,600 benchmark references are admitted. Results are exact for returned sampled evidence and assign no budget probabilities, weights, floating-point scores, rankings, recommendations, interpretations, predictions, or statistical confidence. No licensed catalog, new dependency, or request-time network source is used. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded. Do not automatically retry.",
        "parameters": [
          {
            "name": "X-Cosmic-Ephemeris-Receipt",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "const": "v1"
            },
            "description": "Requests an embedded Ed25519 calculation receipt."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningRegretAuditRequest"
              },
              "examples": {
                "hardening_regret": {
                  "value": {
                    "start_utc": "2026-10-04T00:00:00Z",
                    "end_utc": "2026-10-05T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "profile": {
                      "zodiac": "tropical"
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Exact bounded minimax-regret audit over hardening profiles",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningRegretAuditResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        },
        "operationId": "calculateElectionalCriterionRepairHardeningRegretAudit",
        "x-deployment-status": "source-candidate",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api"
      }
    },
    "/api/astro/synastry-svg": {
      "post": {
        "operationId": "calculateSynastrySvg",
        "summary": "Render a deterministic synastry double wheel (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns an original 1200 by 1120 SVG in JSON. Person A supplies inner houses; major cross-chart aspects are optionally drawn. Opt-in include_png returns a deterministic metadata-free PNG derived from the same internal SVG; omission or false preserves the predecessor response exactly. No uploaded markup, image, font or URL is accepted. failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SynastrySvgRequest"
              },
              "examples": {
                "synthetic": {
                  "value": {
                    "personA": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "personB": {
                      "date": "1990-06-15",
                      "time": "08:30",
                      "timezone": "UTC",
                      "lat": 10,
                      "lon": 20
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-wrapped SVG.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelationshipSvgResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/transit-svg": {
      "post": {
        "operationId": "calculateTransitSvg",
        "summary": "Render a deterministic natal/transit double wheel (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns an original 1200 by 1120 SVG in JSON. Natal houses are inside; requested transit positions are outside. Opt-in include_png returns a deterministic metadata-free PNG derived from the same internal SVG; omission or false preserves the predecessor response exactly. No uploaded markup, image, font or URL is accepted. failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransitSvgRequest"
              },
              "examples": {
                "synthetic": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "transitDate": "2026-09-23",
                    "transitTime": "12:00",
                    "timezone": "UTC"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-wrapped SVG.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelationshipSvgResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/natal-report": {
      "post": {
        "operationId": "calculateNatalReport",
        "summary": "Build a calculation-fact natal report with HTML, PDF, DOCX, XLSX, ODS, EPUB, ODT, RTF, JSON, CSV, XML, NDJSON, TSV, Markdown, text, or ZIP delivery (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns bounded standalone HTML and a structured fact list whose IDs link each displayed value to its chart response path. Optional embedded original SVG. Optional report_branding adds an escaped, text-only HTML co-brand with one fixed contrast-tested accent; it accepts no logo, URL, markup, template, or remote resource and is invalid with non-HTML formats. Strict include_download:true adds a deterministic base64 artifact; HTML remains the default, while download_format selects PDF, editable macro-free DOCX, editable formula-free macro-free XLSX, editable formula-free macro-free ODF 1.3 ODS, offline script-free EPUB 3, editable macro-free ODF 1.3 ODT, editable dependency-free RTF, deterministic UTF-8 JSON, deterministic RFC 4180-style UTF-8 CSV, deterministic fixed-order UTF-8 XML, deterministic one-record-per-fact UTF-8 NDJSON, deterministic escaped UTF-8 TSV, deterministic UTF-8 Markdown, deterministic UTF-8 plain text, or the predecessor ZIP with fixed HTML, PDF and calculation-JSON members. Every format has a fixed filename, byte count, media type and SHA-256. Omission/false preserves the predecessor response; no report is stored. Contains no generated interpretation, prediction, scripts, macros, formulas, customer templates or external resources. failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NatalReportRequest"
              },
              "examples": {
                "branded_html": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "html",
                    "report_branding": {
                      "display_name": "North Star Studio",
                      "accent": "blue"
                    }
                  }
                },
                "ods_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "ods"
                  }
                },
                "xlsx_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "xlsx"
                  }
                },
                "tsv_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "tsv"
                  }
                },
                "ndjson_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "ndjson"
                  }
                },
                "xml_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "xml"
                  }
                },
                "csv_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "csv"
                  }
                },
                "json_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "json"
                  }
                },
                "rtf_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "rtf"
                  }
                },
                "odt_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "odt"
                  }
                },
                "text_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "text"
                  }
                },
                "markdown_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_svg": true,
                    "include_download": true,
                    "download_format": "markdown"
                  }
                },
                "docx_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_download": true,
                    "download_format": "docx"
                  }
                },
                "html_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_download": true
                  }
                },
                "pdf_download": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_download": true,
                    "download_format": "pdf"
                  }
                },
                "zip_bundle": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "include_download": true,
                    "download_format": "zip"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fact-linked report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NatalReportResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/birth-time-sensitivity": {
      "post": {
        "operationId": "calculateBirthTimeSensitivity",
        "summary": "Handle unknown/approximate birth time or sample an explicit interval (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "The predecessor explicit interval remains exact: five-minute samples across at most six civil hours. The additive birth_time workflow accepts either an unknown local date (complete date sampled every 30 minutes) or an approximate local time with symmetric 5–180 minute uncertainty in five-minute increments. It reports observed sign/house stability and transition brackets, never selects a representative time, and explicitly does not produce an exact natal chart or rectification; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 60000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BirthTimeSensitivityRequest"
              },
              "examples": {
                "unknown_time": {
                  "value": {
                    "birth_time": {
                      "status": "unknown",
                      "date": "2000-01-01",
                      "timezone": "UTC"
                    },
                    "lat": 0,
                    "lon": 0
                  }
                },
                "approximate_time": {
                  "value": {
                    "birth_time": {
                      "status": "approximate",
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "uncertainty_minutes": 30
                    },
                    "lat": 0,
                    "lon": 0
                  }
                },
                "explicit_interval": {
                  "value": {
                    "start": {
                      "date": "2000-01-01",
                      "time": "11:00",
                      "timezone": "UTC"
                    },
                    "end": {
                      "date": "2000-01-01",
                      "time": "13:00",
                      "timezone": "UTC"
                    },
                    "lat": 0,
                    "lon": 0
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Observed sensitivity samples.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BirthTimeSensitivityResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/fixed-stars": {
      "post": {
        "operationId": "calculateFixedStars",
        "summary": "Calculate six independently validated fixed stars (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns explicitly selected Aldebaran, Antares, Fomalhaut, Regulus, Sirius and Spica positions. Independent five-epoch Astropy/ERFA comparison stayed below 0.01 arcsecond. This fixed-star-only catalog is independent of the permanently retired minor-body feature. Runtime availability requires the immutable catalog feature flag; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FixedStarsRequest"
              },
              "examples": {
                "royal_stars": {
                  "value": {
                    "at": {
                      "date": "2026-09-23",
                      "time": "12:00",
                      "timezone": "UTC"
                    },
                    "stars": [
                      "aldebaran",
                      "antares",
                      "fomalhaut",
                      "regulus"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Selected fixed-star positions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FixedStarsResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/relocation-chart": {
      "post": {
        "operationId": "calculateRelocationChart",
        "summary": "Recalculate chart angles and houses for a new location (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Preserves the exact birth instant and apparent geocentric planet/node positions, then recalculates the Ascendant, Midheaven and selected house cusps at the supplied location. This is a calculation response without interpretation or location ranking. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelocationChartRequest"
              },
              "examples": {
                "london": {
                  "value": {
                    "birth": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 0,
                      "lon": 0
                    },
                    "location": {
                      "lat": 51.5074,
                      "lon": -0.1278
                    },
                    "house_system": "placidus"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Natal reference houses and relocated chart for the same UTC instant.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelocationChartResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/astrocartography": {
      "post": {
        "operationId": "calculateAstrocartography",
        "summary": "Calculate astrocartography geometry and optional downloadable maps (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns MC and IC meridians plus sampled geometric rising and setting curves for 1-10 selected DE421 bodies. Set include_geojson true for a deterministic RFC 7946 FeatureCollection with four ordered features per body. Set include_geojson_seq true for the same ordered features as a deterministic RFC 8142 GeoJSON Text Sequence. Set include_ndjson true for those features as deterministic LF-terminated newline-delimited JSON records. Set include_topojson true for deterministic unquantized TopoJSON with a named GeometryCollection and central arc inventory. Set include_kml true for a deterministic OGC KML 2.2 artifact with four ordered placemarks per body and integrity metadata. Set include_gpx true for a deterministic GPX 1.1 artifact with four ordered tracks per body and preserved date-line track segments. Set include_csv true for deterministic RFC 4180 rows that preserve every authoritative geometry point and date-line segment. Set include_wkt true for one deterministic WKT GEOMETRYCOLLECTION with fixed geometry ordering and preserved date-line segments. Set include_wkb true for the same collection as deterministic OGC WKB 1.x little-endian binary. Set include_gml true for deterministic GML 3.2 in a CRS84 MultiGeometry with preserved date-line curves. Set include_svg true for a deterministic 1200x800 coordinate-grid map and include_png true for its PNG derivative. Light, dark and monochrome themes are supported. Curves use a fixed two-degree calculation grid from -88 through +88 and split at the date line; the visual renderer connects fixed four-degree display samples. Set basemap natural-earth-110m with include_svg true for bundled public-domain coastline v4.1.0 and pinned provenance; default coordinate-grid-only is unchanged. No runtime map fetches, arbitrary sampling, map tiles, political boundaries, refraction, terrain, interpretation, ranking or recommended places are provided. One standard quota unit per admitted request, including any export; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AstrocartographyRequest"
              },
              "examples": {
                "sun_and_moon_map": {
                  "value": {
                    "at": {
                      "date": "2026-09-23",
                      "time": "12:00",
                      "timezone": "UTC"
                    },
                    "bodies": [
                      "sun",
                      "moon"
                    ],
                    "include_svg": true,
                    "include_png": true,
                    "theme": "dark",
                    "include_geojson": true,
                    "include_geojson_seq": true,
                    "include_ndjson": true,
                    "include_topojson": true,
                    "include_kml": true,
                    "include_gpx": true,
                    "include_csv": true,
                    "include_wkt": true,
                    "include_wkb": true,
                    "include_gml": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded angular-line geometry using signed longitudes, with optional deterministic GeoJSON, GeoJSON Text Sequences, NDJSON, TopoJSON, KML, GPX, CSV, WKT, WKB, GML, and SVG/PNG map exports.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AstrocartographyResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/eclipse-geometry": {
      "post": {
        "operationId": "calculateEclipseGeometry",
        "summary": "Search bounded global solar and lunar eclipse geometry (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Returns global/geocentric solar shadow-cone geometry and Skyfield Danjon lunar-shadow geometry over a maximum 366-day UTC interval. Optional observer coordinates add one fixed WGS84 sea-level, no-refraction topocentric snapshot at each event's rounded global maximum. The snapshot is not a local-maximum or contact-time solver and does not establish visibility at other instants. No path, map, terrain, weather, eye-safety guidance or interpretation is provided. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 30000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EclipseGeometryRequest"
              },
              "examples": {
                "calendar_year": {
                  "value": {
                    "start_utc": "2024-01-01T00:00:00Z",
                    "end_utc": "2025-01-01T00:00:00Z",
                    "eclipse_types": [
                      "solar",
                      "lunar"
                    ],
                    "observer": {
                      "lat": 25.286666667,
                      "lon": -104.138333333
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Chronological bounded global eclipse geometry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EclipseGeometryResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/electional-search": {
      "post": {
        "operationId": "calculateElectionalSearch",
        "summary": "Filter bounded hourly electional samples (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Evaluates an AND-only set of Moon-sign, Moon-phase-sector, Mercury-motion, Ascendant-sign and up to four major-aspect filters on a fixed hourly UTC grid over at most seven days. Results are sampled candidates, not continuous guarantees, ranking, recommendations, void-of-course analysis or interpretation. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 30000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ElectionalSearchRequest"
              },
              "examples": {
                "moon_and_mercury": {
                  "value": {
                    "start_utc": "2026-09-23T00:00:00Z",
                    "end_utc": "2026-09-24T00:00:00Z",
                    "location": {
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "filters": {
                      "moon_signs": [
                        "Aquarius",
                        "Pisces"
                      ],
                      "mercury_motion": "direct"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Matching hourly samples and sampled candidate-window summaries.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElectionalSearchResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/natal-analysis": {
      "post": {
        "operationId": "calculateNatalAnalysis",
        "summary": "Calculate natal geometry with optional graha drishti or partial Shadbala foundation (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Uses selected Sun-through-Pluto apparent geocentric longitudes from the existing DE421 chart model. Returns every configured aspect within its inclusive orb, optional two-antipodal midpoint axes, and exact configuration matches for Grand Trine, T-square, Grand Cross, and Yod. An explicit additional_points list may also request Vertex/Antivertex, Equatorial Ascendant/Descendant, and the sect-reversed Lots of Fortune/Spirit; these are returned separately and are not silently added to aspects or patterns. Strict include_graha_drishti true additionally requires explicit zodiac sidereal and returns only seven classical-graha, whole-sign, full Parashari aspects under ruleset parashari_whole_sign_full_aspects_v1. Nodes, partial strengths, dignity, interpretation, prediction, and claims of universal Jyotish practice are excluded. Omission preserves the predecessor response byte-for-byte. At most ten geometric points, six additional points, eleven unique aspect definitions, 45 midpoint axes, and seven graha-drishti rows. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NatalAnalysisRequest"
              },
              "examples": {
                "sidereal_graha_drishti": {
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "points": [
                      "sun",
                      "moon",
                      "mercury"
                    ],
                    "zodiac": "sidereal",
                    "ayanamsa": "lahiri",
                    "include_graha_drishti": true
                  }
                },
                "extended_patterns": {
                  "value": {
                    "birth": {
                      "date": "1990-01-01",
                      "time": "12:00",
                      "timezone": "UTC",
                      "lat": 40.7128,
                      "lon": -74.006
                    },
                    "points": [
                      "sun",
                      "moon",
                      "mercury",
                      "venus",
                      "mars"
                    ],
                    "additional_points": [
                      "vertex",
                      "equatorial_ascendant",
                      "lot_of_fortune",
                      "lot_of_spirit"
                    ],
                    "aspect_profile": "extended",
                    "include_midpoints": true,
                    "include_patterns": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bounded configurable geometric natal analysis.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NatalAnalysisResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/planetary-hours": {
      "post": {
        "operationId": "calculatePlanetaryHours",
        "summary": "Calculate classical unequal planetary hours for one local date (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Divides local sunrise-to-sunset and sunset-to-next-sunrise into twelve equal temporal intervals each, assigning rulers through the documented Chaldean order beginning with the civil weekday ruler. Solar events use the existing apparent DE421 center at a fixed -50 arcminute horizon. Dates without exactly one ordered sunrise, sunset, and following sunrise reject; no polar fallback, electional ranking, interpretation, or advice. One standard quota unit per admitted request; failed or timed-out admitted attempts are not refunded.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanetaryHoursRequest"
              },
              "examples": {
                "new_york": {
                  "value": {
                    "date": "2026-09-23",
                    "timezone": "America/New_York",
                    "lat": 40.7128,
                    "lon": -74.006
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Twenty-four contiguous unequal planetary-hour intervals.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlanetaryHoursResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    },
    "/api/astro/davison": {
      "post": {
        "operationId": "calculateDavison",
        "summary": "Calculate an uncorrected TT/arithmetic Davison relationship chart (beta)",
        "tags": [
          "Calculations",
          "Beta calculations"
        ],
        "description": "Uncorrected Davison with a uniform-TT time mean and arithmetic latitude/longitude after +180 is canonicalized to -180. Not a shortest-arc/spherical midpoint or corrected-MC chart. No nodes, relocation, Placidus or interpretations. Unknown fields and ambiguous/nonexistent civil times reject. See DAVISON_CONVENTIONS.md.\n\nEvery admitted attempt reserves one standard monthly unit; failed or timed-out admitted attempts are not refunded. No automatic retries. Local implementation is not proof of deployment.",
        "x-contract-status": "beta",
        "x-engine-timeout-ms": 15000,
        "x-quota-group": "api",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DavisonRequest"
              },
              "examples": {
                "canonical": {
                  "summary": "Physical sky at 2000-01-02 12:00 UTC, latitude 45, longitude -36",
                  "value": {
                    "personA": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "lat": 40,
                      "lon": -74
                    },
                    "personB": {
                      "date": "2000-01-03",
                      "time": "12:00",
                      "lat": 50,
                      "lon": 2
                    }
                  }
                },
                "sidereal": {
                  "summary": "Midpoint-date Raman ayanamsa with Whole Sign houses",
                  "value": {
                    "personA": {
                      "date": "2000-01-01",
                      "time": "12:00",
                      "lat": 40,
                      "lon": -74
                    },
                    "personB": {
                      "date": "2000-01-03",
                      "time": "12:00",
                      "lat": 50,
                      "lon": 2
                    },
                    "zodiac": "sidereal",
                    "ayanamsa": "raman",
                    "house_system": "whole_sign"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful calculation. Field nesting is specific to this route.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Pragma": {
                "schema": {
                  "type": "string",
                  "const": "no-cache"
                }
              },
              "X-Content-Type-Options": {
                "schema": {
                  "type": "string",
                  "const": "nosniff"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DavisonResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidInput"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "413": {
            "$ref": "#/components/responses/TooLarge"
          },
          "429": {
            "$ref": "#/components/responses/Limited"
          },
          "500": {
            "$ref": "#/components/responses/InternalFailure"
          },
          "502": {
            "$ref": "#/components/responses/EngineUnavailable"
          },
          "503": {
            "$ref": "#/components/responses/Busy"
          },
          "504": {
            "$ref": "#/components/responses/EngineTimeout"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "64 hexadecimal characters",
        "description": "Opaque 256-bit Cosmic Ephemeris key; not a Stripe key or dashboard JWT. Exact 'Bearer ' prefix."
      },
      "HeaderApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "Opaque 64-hex-character Cosmic Ephemeris key. Use instead of Authorization; a nonempty Bearer credential takes precedence if both are sent."
      }
    },
    "schemas": {
      "NumerologyRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth_date"
        ],
        "properties": {
          "birth_date": {
            "$ref": "#/components/schemas/Date"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 96,
            "pattern": "^[A-Za-z](?:[A-Za-z '\\-]{0,94}[A-Za-z])?(?![\\s\\S])",
            "description": "ASCII letters with internal spaces, apostrophes and hyphens only; no line breaks. Caller supplies any transliteration. No inference from language or pronunciation."
          },
          "master_numbers": {
            "type": "boolean",
            "default": true,
            "description": "Preserve 11, 22 and 33 at every date-component, name-total and final reduction. False reduces every result to one digit. Personal-year cycles always reduce to one digit."
          },
          "y_vowel": {
            "type": "boolean",
            "default": false,
            "description": "Requires name, including when false. All Y letters are either vowels or consonants according to this explicit option."
          },
          "year": {
            "type": "integer",
            "minimum": 1900,
            "maximum": 2050,
            "description": "Optional calendar-year cycle; never defaults to the server clock."
          }
        },
        "allOf": [
          {
            "if": {
              "type": "object",
              "properties": {
                "y_vowel": {}
              },
              "required": [
                "y_vowel"
              ]
            },
            "then": {
              "type": "object",
              "properties": {
                "name": {}
              },
              "required": [
                "name"
              ]
            }
          }
        ]
      },
      "NumerologyReduction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "total",
          "steps",
          "number",
          "master_number"
        ],
        "properties": {
          "total": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2093
          },
          "steps": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 2093
            }
          },
          "number": {
            "type": "integer",
            "enum": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              11,
              22,
              33
            ]
          },
          "master_number": {
            "type": "boolean"
          }
        }
      },
      "NumerologyResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "method",
          "input",
          "date_components",
          "numbers",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "numerology"
          },
          "status": {
            "const": "beta"
          },
          "method": {
            "const": "pythagorean_component_sum_v1"
          },
          "input": {
            "$ref": "#/components/schemas/NumerologyRequest"
          },
          "date_components": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "month",
              "day",
              "year"
            ],
            "properties": {
              "month": {
                "$ref": "#/components/schemas/NumerologyReduction"
              },
              "day": {
                "$ref": "#/components/schemas/NumerologyReduction"
              },
              "year": {
                "$ref": "#/components/schemas/NumerologyReduction"
              }
            }
          },
          "numbers": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "life_path",
              "birthday_root"
            ],
            "properties": {
              "life_path": {
                "$ref": "#/components/schemas/NumerologyReduction"
              },
              "birthday_root": {
                "$ref": "#/components/schemas/NumerologyReduction"
              },
              "expression": {
                "$ref": "#/components/schemas/NumerologyReduction"
              },
              "soul_urge": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/NumerologyReduction"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "personality": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/NumerologyReduction"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "personal_year": {
                "$ref": "#/components/schemas/NumerologyReduction"
              }
            }
          },
          "name_analysis": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "normalized_name",
              "letters"
            ],
            "properties": {
              "normalized_name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 96,
                "pattern": "^[A-Z]+$"
              },
              "letters": {
                "type": "array",
                "minItems": 1,
                "maxItems": 96,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "letter",
                    "value",
                    "vowel"
                  ],
                  "properties": {
                    "letter": {
                      "type": "string",
                      "pattern": "^[A-Z]$"
                    },
                    "value": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 9
                    },
                    "vowel": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "metadata": {
            "type": "object",
            "required": [
              "interpretations",
              "predictions",
              "scientifically_validated",
              "practitioner_review"
            ],
            "properties": {
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "scientifically_validated": {
                "const": false
              },
              "practitioner_review": {
                "const": "not_completed"
              }
            }
          }
        }
      },
      "PlaceSearchRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "minLength": 2,
            "maxLength": 200
          },
          "country_codes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            }
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 5
          }
        }
      },
      "PlaceProvenance": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "provider",
          "dataset_version",
          "source_id",
          "license_id",
          "attribution"
        ],
        "properties": {
          "provider": {
            "const": "geonames-self-hosted"
          },
          "dataset_version": {
            "const": "2026-10-02"
          },
          "source_id": {
            "type": "string",
            "pattern": "^[1-9][0-9]{0,11}$"
          },
          "license_id": {
            "const": "CC-BY-4.0"
          },
          "attribution": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        }
      },
      "PlaceCandidate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "place_id",
          "display_name",
          "country_code",
          "lat",
          "lon",
          "timezone",
          "provenance"
        ],
        "properties": {
          "place_id": {
            "type": "string",
            "pattern": "^geonames:[1-9][0-9]{0,11}:2026-10-02$"
          },
          "display_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 400
          },
          "country_code": {
            "type": "string",
            "pattern": "^[A-Z]{2}$"
          },
          "admin1": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "lat": {
            "$ref": "#/components/schemas/Latitude"
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone"
          },
          "provenance": {
            "$ref": "#/components/schemas/PlaceProvenance"
          }
        }
      },
      "PlaceSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "query",
          "results",
          "result_count",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "place_search"
          },
          "status": {
            "const": "beta"
          },
          "query": {
            "type": "string"
          },
          "results": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/PlaceCandidate"
            }
          },
          "result_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "TimezoneResolveRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "place_id",
          "date",
          "time"
        ],
        "properties": {
          "place_id": {
            "type": "string",
            "pattern": "^geonames:[1-9][0-9]{0,11}:2026-10-02$"
          },
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          }
        }
      },
      "CivilTimeCandidate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "utc",
          "utc_offset_seconds",
          "utc_offset",
          "abbreviation"
        ],
        "properties": {
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "utc_offset_seconds": {
            "type": "integer",
            "minimum": -86400,
            "maximum": 86400
          },
          "utc_offset": {
            "type": "string",
            "pattern": "^[+-][0-9]{2}:[0-9]{2}$"
          },
          "abbreviation": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          }
        }
      },
      "TimezoneResolveResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "place",
          "timezone",
          "civil_time",
          "calculation_ready",
          "resolved_input",
          "provenance"
        ],
        "properties": {
          "type": {
            "const": "timezone_resolution"
          },
          "status": {
            "const": "beta"
          },
          "place": {
            "type": "object"
          },
          "timezone": {
            "type": "object"
          },
          "civil_time": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "local",
              "status",
              "candidates"
            ],
            "properties": {
              "local": {
                "type": "string",
                "minLength": 16,
                "maxLength": 19
              },
              "status": {
                "type": "string",
                "enum": [
                  "unique",
                  "ambiguous",
                  "nonexistent"
                ]
              },
              "candidates": {
                "type": "array",
                "maxItems": 2,
                "items": {
                  "$ref": "#/components/schemas/CivilTimeCandidate"
                }
              }
            }
          },
          "calculation_ready": {
            "type": "boolean"
          },
          "resolved_input": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/BetaBirthInput"
              },
              {
                "type": "null"
              }
            ]
          },
          "provenance": {
            "type": "object"
          }
        }
      },
      "NatalContextFormat": {
        "type": "string",
        "enum": [
          "json",
          "xml",
          "markdown"
        ]
      },
      "NatalContextRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus"
            ]
          },
          "formats": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/NatalContextFormat"
            }
          }
        }
      },
      "NatalContextFact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "label",
          "value",
          "source"
        ],
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "source": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          }
        }
      },
      "NatalContextArtifact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "format",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "text"
        ],
        "properties": {
          "format": {
            "$ref": "#/components/schemas/NatalContextFormat"
          },
          "media_type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "encoding": {
            "const": "utf-8"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 262144
          }
        }
      },
      "NatalContextResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "schema",
          "input",
          "calculation_profile",
          "facts",
          "calculation_hash",
          "guardrails",
          "artifacts"
        ],
        "properties": {
          "type": {
            "const": "natal_context"
          },
          "status": {
            "const": "beta"
          },
          "schema": {
            "const": "cosmicephemeris-natal-context-v1"
          },
          "input": {
            "type": "object"
          },
          "calculation_profile": {
            "type": "object"
          },
          "facts": {
            "type": "array",
            "maxItems": 128,
            "items": {
              "$ref": "#/components/schemas/NatalContextFact"
            }
          },
          "calculation_hash": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "guardrails": {
            "type": "object"
          },
          "artifacts": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "items": {
              "$ref": "#/components/schemas/NatalContextArtifact"
            }
          }
        }
      },
      "Date": {
        "type": "string",
        "format": "date",
        "pattern": "^(?:19[0-9]{2}|20[0-4][0-9]|2050)-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$",
        "description": "Valid Gregorian YYYY-MM-DD local civil date, inclusive 1900-01-01 through 2050-12-31. Calendar validity and timezone conversion are checked by the server."
      },
      "Time": {
        "type": "string",
        "pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$",
        "description": "HH:MM or HH:MM:SS; no offset in this field. Use timezone to select the civil-time zone."
      },
      "Timezone": {
        "type": [
          "string",
          "null"
        ],
        "description": "IANA timezone name (for example America/New_York). Omission, null, or empty string means UTC for a birth input. Nonexistent or ambiguous local clock-change times return 400; provide the known UTC date/time with timezone UTC instead.",
        "examples": [
          "UTC",
          "America/New_York",
          "Asia/Kolkata"
        ]
      },
      "Zodiac": {
        "type": "string",
        "enum": [
          "tropical",
          "sidereal"
        ]
      },
      "Ayanamsa": {
        "type": "string",
        "enum": [
          "lahiri",
          "raman",
          "krishnamurti",
          "fagan_bradley",
          "yukteshwar",
          "sassanian",
          "true_chitra",
          "true_revati",
          "true_pushya",
          "galactic_center_0_sagittarius",
          "galactic_alignment_mardyks"
        ]
      },
      "AyanamsaResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          {
            "type": "null"
          }
        ],
        "description": "null for tropical charts; selected normalized ayanamsa for sidereal charts."
      },
      "ZodiacInput": {
        "type": [
          "string",
          "null"
        ],
        "pattern": "^\\s*(?:[Tt][Rr][Oo][Pp][Ii][Cc][Aa][Ll]|[Ss][Ii][Dd][Ee][Rr][Ee][Aa][Ll])\\s*$",
        "default": "tropical",
        "description": "tropical or sidereal; server trims whitespace and ignores case. Omitted/null selects tropical.",
        "x-canonical-values": [
          "tropical",
          "sidereal"
        ]
      },
      "AyanamsaInput": {
        "type": [
          "string",
          "null"
        ],
        "pattern": "\\S",
        "default": "lahiri",
        "description": "Sidereal supports lahiri, raman, krishnamurti, fagan_bradley, yukteshwar, sassanian, true_chitra, true_revati, true_pushya, galactic_center_0_sagittarius, galactic_alignment_mardyks, with case/whitespace normalization; other names return 400 in sidereal mode. Omitted/null selects lahiri. Tropical mode ignores a nonempty string and outputs null. This schema describes that compatibility behavior rather than claiming every string is a supported sidereal model.",
        "x-canonical-values": [
          "lahiri",
          "raman",
          "krishnamurti",
          "fagan_bradley",
          "yukteshwar",
          "sassanian",
          "true_chitra",
          "true_revati",
          "true_pushya",
          "galactic_center_0_sagittarius",
          "galactic_alignment_mardyks"
        ]
      },
      "Latitude": {
        "anyOf": [
          {
            "type": "number",
            "exclusiveMinimum": -90,
            "exclusiveMaximum": 90
          },
          {
            "type": "string",
            "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
          }
        ],
        "description": "WGS84 decimal latitude. JSON numbers are recommended; numeric strings are accepted by the current engine, then checked for finiteness/range. Exact poles and undefined Ascendant geometry return 400; supported successful latitude is strictly between -90 and 90. Boolean/null/object/array coordinates are invalid."
      },
      "Longitude": {
        "anyOf": [
          {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          {
            "type": "string",
            "pattern": "^\\s*[+-]?(?:[0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)(?:[eE][+-]?[0-9]+)?\\s*$"
          }
        ],
        "description": "WGS84 decimal longitude, east positive, within [-180,180]. JSON numbers are recommended; numeric strings are accepted then checked for finiteness/range."
      },
      "BirthInput": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone"
          },
          "lat": {
            "$ref": "#/components/schemas/Latitude"
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          }
        },
        "required": [
          "date",
          "time",
          "lat",
          "lon"
        ],
        "additionalProperties": true
      },
      "BirthChartRequest": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone"
          },
          "lat": {
            "$ref": "#/components/schemas/Latitude"
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "date",
          "time",
          "lat",
          "lon"
        ],
        "additionalProperties": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/SiderealFlagsConstraint"
          }
        ]
      },
      "AspectsRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BirthInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/SiderealFlagsConstraint"
          }
        ]
      },
      "HouseSystemInput": {
        "type": [
          "string",
          "null"
        ],
        "pattern": "^\\s*(?:[Ee][Qq][Uu][Aa][Ll]|[Ww][Hh][Oo][Ll][Ee](?:_[Ss][Ii][Gg][Nn])?|[pP][lL][aA][cC][iI][dD][uU][sS]|[pP][oO][rR][pP][hH][yY][rR][yY]|[mM][eE][rR][iI][dD][iI][aA][nN]|[cC][aA][mM][pP][aA][nN][uU][sS]|[rR][eE][gG][iI][oO][mM][oO][nN][tT][aA][nN][uU][sS]|[aA][lL][cC][aA][bB][iI][tT][iI][uU][sS]|[kK][oO][cC][hH]|[mM][oO][rR][iI][nN][uU][sS]|[tT][oO][pP][oO][cC][eE][nN][tT][rR][iI][cC]|[sS][rR][iI][pP][aA][tT][iI]|[vV][eE][hH][lL][oO][wW]|[hH][oO][rR][iI][zZ][oO][nN]|[kK][rR][uU][sS][iI][nN][sS][kK][iI]|[sS][uU][nN][sS][hH][iI][nN][eE](?:_[aA][lL][tT])?|[sS][aA][vV][aA][rR][dD]|[pP][uU][lL][lL][eE][nN]_[sS][dD]|[pP][uU][lL][lL][eE][nN]_[sS][rR]|[cC][aA][rR][tT][eE][rR]|[aA][pP][cC]|[eE][qQ][uU][aA][lL]_[mM][cC]|[nN][aA][tT][uU][rR][aA][lL]|[gG][aA][uU][qQ][uU][eE][lL][iI][nN])\\s*$",
        "default": "equal",
        "description": "equal, whole_sign, or alias whole. Server trims whitespace and ignores case; omitted/null defaults equal. Placidus, Porphyry, Meridian, Campanus, Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, Vehlow, Horizon/Azimuth, Krusinski-Pisa-Goelzer, Sunshine (Treindl), Sunshine alternative (Makransky), Savard-A, Pullen SD, Pullen SR, Carter Poli-Equatorial, APC, Equal MC, Natural, and Gauquelin sectors are opt-in beta systems with explicit rejection and no fallback.",
        "x-canonical-values": [
          "equal",
          "whole_sign",
          "whole",
          "placidus",
          "porphyry",
          "meridian",
          "campanus",
          "regiomontanus",
          "alcabitius",
          "koch",
          "morinus",
          "topocentric",
          "sripati",
          "vehlow",
          "horizon",
          "krusinski",
          "sunshine",
          "sunshine_alt",
          "savard",
          "pullen_sd",
          "pullen_sr",
          "carter",
          "apc",
          "equal_mc",
          "natural",
          "gauquelin"
        ]
      },
      "HousesRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BirthInput"
          },
          "system": {
            "$ref": "#/components/schemas/HouseSystemInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/SiderealFlagsConstraint"
          }
        ]
      },
      "SynastryRequest": {
        "type": "object",
        "properties": {
          "personA": {
            "$ref": "#/components/schemas/BirthInput"
          },
          "personB": {
            "$ref": "#/components/schemas/BirthInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "personA",
          "personB"
        ],
        "additionalProperties": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/SiderealFlagsConstraint"
          }
        ]
      },
      "OptionalTransitTime": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/Time"
          },
          {
            "type": "null"
          }
        ],
        "default": "12:00",
        "description": "Omitted/null means 12:00; false/empty string and malformed values are rejected."
      },
      "TransitsRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BirthInput"
          },
          "transitDate": {
            "$ref": "#/components/schemas/Date"
          },
          "transitTime": {
            "$ref": "#/components/schemas/OptionalTransitTime"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone",
            "description": "Transit timezone only; omitted/null falls back to birth.timezone, then UTC. Empty string selects UTC. Birth timezone is not overridden."
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "birth",
          "transitDate"
        ],
        "additionalProperties": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/SiderealFlagsConstraint"
          }
        ]
      },
      "HoroscopeRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BirthInput"
          },
          "transitDate": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Date"
              },
              {
                "type": "null"
              }
            ],
            "description": "Omitted/null selects the engine host current UTC date. Supply an explicit date for reproducible results."
          },
          "transitTime": {
            "$ref": "#/components/schemas/OptionalTransitTime"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone",
            "description": "Transit timezone only. Omitted/null/empty string means UTC, NOT the birth timezone. Birth timezone is not overridden."
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": true,
        "allOf": [
          {
            "$ref": "#/components/schemas/SiderealFlagsConstraint"
          }
        ]
      },
      "OffsetTimestamp": {
        "type": "string",
        "format": "date-time",
        "description": "ISO 8601 timestamp with Z or an explicit numeric UTC offset. Prefer RFC 3339, e.g. 2026-01-01T00:00:00Z. Naive local timestamps are rejected. The server normalizes offsets to UTC before comparing ordering, duration and the inclusive 1900-01-01 through 2050-12-31 UTC-date bounds."
      },
      "UtcTimestamp": {
        "type": "string",
        "format": "date-time",
        "pattern": "Z$",
        "description": "Normalized UTC timestamp; fractional seconds may be present."
      },
      "TimelinePlanet": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "rahu",
          "ketu"
        ]
      },
      "TimelineRequest": {
        "type": "object",
        "properties": {
          "planet": {
            "type": "string",
            "description": "One of sun, moon, mercury, venus, mars, jupiter, saturn, rahu, ketu. Case/whitespace are normalized. Rahu/Ketu are mean lunar nodes.",
            "x-canonical-values": [
              "sun",
              "moon",
              "mercury",
              "venus",
              "mars",
              "jupiter",
              "saturn",
              "rahu",
              "ketu"
            ],
            "pattern": "^\\s*(?:[Ss][Uu][Nn]|[Mm][Oo][Oo][Nn]|[Mm][Ee][Rr][Cc][Uu][Rr][Yy]|[Vv][Ee][Nn][Uu][Ss]|[Mm][Aa][Rr][Ss]|[Jj][Uu][Pp][Ii][Tt][Ee][Rr]|[Ss][Aa][Tt][Uu][Rr][Nn]|[Rr][Aa][Hh][Uu]|[Kk][Ee][Tt][Uu])\\s*$"
          },
          "start_utc": {
            "$ref": "#/components/schemas/OffsetTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/OffsetTimestamp",
            "description": "Must be strictly later than start_utc and at most 180 days later. Both UTC dates must be inside the public date window."
          },
          "ayanamsa": {
            "type": "string",
            "description": "Required even though chart endpoints default it. One of lahiri, raman, krishnamurti, fagan_bradley, yukteshwar, sassanian, true_chitra, true_revati, true_pushya, galactic_center_0_sagittarius, galactic_alignment_mardyks; case/whitespace are normalized.",
            "x-canonical-values": [
              "lahiri",
              "raman",
              "krishnamurti",
              "fagan_bradley",
              "yukteshwar",
              "sassanian",
              "true_chitra",
              "true_revati",
              "true_pushya",
              "galactic_center_0_sagittarius",
              "galactic_alignment_mardyks"
            ],
            "pattern": "^\\s*(?:[Ll][Aa][Hh][Ii][Rr][Ii]|[Rr][Aa][Mm][Aa][Nn]|[Kk][Rr][Ii][Ss][Hh][Nn][Aa][Mm][Uu][Rr][Tt][Ii]|[Ff][Aa][Gg][Aa][Nn]_[Bb][Rr][Aa][Dd][Ll][Ee][Yy]|[Yy][Uu][Kk][Tt][Ee][Ss][Hh][Ww][Aa][Rr]|[Ss][Aa][Ss][Ss][Aa][Nn][Ii][Aa][Nn]|[Tt][Rr][Uu][Ee]_[Cc][Hh][Ii][Tt][Rr][Aa]|[Tt][Rr][Uu][Ee]_[Rr][Ee][Vv][Aa][Tt][Ii]|[Tt][Rr][Uu][Ee]_[Pp][Uu][Ss][Hh][Yy][Aa]|[Gg][Aa][Ll][Aa][Cc][Tt][Ii][Cc]_[Cc][Ee][Nn][Tt][Ee][Rr]_0_[Ss][Aa][Gg][Ii][Tt][Tt][Aa][Rr][Ii][Uu][Ss]|[Gg][Aa][Ll][Aa][Cc][Tt][Ii][Cc]_[Aa][Ll][Ii][Gg][Nn][Mm][Ee][Nn][Tt]_[Mm][Aa][Rr][Dd][Yy][Kk][Ss])\\s*$"
          }
        },
        "required": [
          "planet",
          "start_utc",
          "end_utc",
          "ayanamsa"
        ],
        "additionalProperties": true,
        "description": "Pro only. Unknown fields are ignored; step_seconds is not a public control and is not passed to the engine. Each admitted request reserves one timeline unit, independent of range."
      },
      "PlanetName": {
        "type": "string",
        "enum": [
          "Sun",
          "Moon",
          "Mercury",
          "Venus",
          "Mars",
          "Jupiter",
          "Saturn",
          "Uranus",
          "Neptune",
          "Pluto"
        ]
      },
      "Sign": {
        "type": "string",
        "enum": [
          "Aries",
          "Taurus",
          "Gemini",
          "Cancer",
          "Leo",
          "Virgo",
          "Libra",
          "Scorpio",
          "Sagittarius",
          "Capricorn",
          "Aquarius",
          "Pisces"
        ]
      },
      "RoundedLongitude": {
        "type": "number",
        "minimum": 0,
        "maximum": 360,
        "description": "Ecliptic longitude in degrees, displayed to four decimals. Rounding of a value just below 360 can produce 360.0; do not recompute sign/pada from rounded display values."
      },
      "DegreeInSign": {
        "type": "number",
        "minimum": 0,
        "maximum": 30,
        "description": "Displayed to four decimals; rounding near the next sign can produce 30.0."
      },
      "Nakshatra": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 27
          },
          "name": {
            "type": "string"
          },
          "ruler": {
            "type": "string"
          },
          "pada": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "deg_into_nakshatra": {
            "type": "number",
            "minimum": 0,
            "maximum": 13.333334
          }
        },
        "required": [
          "index",
          "name",
          "ruler",
          "pada",
          "deg_into_nakshatra"
        ],
        "additionalProperties": true
      },
      "PlanetPosition": {
        "type": "object",
        "properties": {
          "lon": {
            "$ref": "#/components/schemas/RoundedLongitude"
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "deg_in_sign": {
            "$ref": "#/components/schemas/DegreeInSign"
          },
          "speed_deg_per_day": {
            "type": "number",
            "description": "Signed tropical longitude difference over the preceding one TT day, rounded to four decimals; not an instantaneous derivative."
          },
          "retrograde": {
            "type": "boolean"
          },
          "tropical_lon": {
            "$ref": "#/components/schemas/RoundedLongitude"
          },
          "sidereal_lon": {
            "$ref": "#/components/schemas/RoundedLongitude"
          },
          "nakshatra": {
            "$ref": "#/components/schemas/Nakshatra",
            "description": "Present only for the Moon in sidereal chart output."
          }
        },
        "required": [
          "lon",
          "sign",
          "deg_in_sign",
          "speed_deg_per_day",
          "retrograde",
          "tropical_lon"
        ],
        "additionalProperties": true,
        "description": "Apparent geocentric JPL DE421 ecliptic position. sidereal_lon is present in sidereal mode; nakshatra is present only on the sidereal Moon."
      },
      "Planets": {
        "type": "object",
        "properties": {
          "Sun": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Moon": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Mercury": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Venus": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Mars": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Jupiter": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Saturn": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Uranus": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Neptune": {
            "$ref": "#/components/schemas/PlanetPosition"
          },
          "Pluto": {
            "$ref": "#/components/schemas/PlanetPosition"
          }
        },
        "required": [
          "Sun",
          "Moon",
          "Mercury",
          "Venus",
          "Mars",
          "Jupiter",
          "Saturn",
          "Uranus",
          "Neptune",
          "Pluto"
        ],
        "additionalProperties": true
      },
      "AspectType": {
        "type": "string",
        "enum": [
          "conjunction",
          "opposition",
          "trine",
          "square",
          "sextile",
          "semisextile",
          "semisquare",
          "quintile",
          "sesquiquadrate",
          "biquintile"
        ]
      },
      "NatalAspect": {
        "type": "object",
        "properties": {
          "p1": {
            "$ref": "#/components/schemas/PlanetName"
          },
          "p2": {
            "$ref": "#/components/schemas/PlanetName"
          },
          "type": {
            "$ref": "#/components/schemas/AspectType"
          },
          "exact_angle": {
            "type": "number",
            "enum": [
              0,
              180,
              120,
              90,
              60,
              30,
              45,
              72,
              135,
              144
            ]
          },
          "distance": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "orb": {
            "type": "number",
            "minimum": 0,
            "maximum": 8
          }
        },
        "required": [
          "p1",
          "p2",
          "type",
          "exact_angle",
          "distance",
          "orb"
        ],
        "additionalProperties": true
      },
      "CrossAspect": {
        "type": "object",
        "properties": {
          "transit": {
            "$ref": "#/components/schemas/PlanetName",
            "description": "Transiting planet for /transits; person B planet for /synastry."
          },
          "natal": {
            "$ref": "#/components/schemas/PlanetName",
            "description": "Natal planet for /transits; person A planet for /synastry."
          },
          "type": {
            "$ref": "#/components/schemas/AspectType"
          },
          "exact_angle": {
            "type": "number",
            "enum": [
              0,
              180,
              120,
              90,
              60,
              30,
              45,
              72,
              135,
              144
            ]
          },
          "distance": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "orb": {
            "type": "number",
            "minimum": 0,
            "maximum": 8
          }
        },
        "required": [
          "transit",
          "natal",
          "type",
          "exact_angle",
          "distance",
          "orb"
        ],
        "additionalProperties": true
      },
      "Cusps": {
        "type": "object",
        "properties": {
          "1": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "2": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "3": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "4": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "5": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "6": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "7": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "8": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "9": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "10": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "11": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "12": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          }
        },
        "required": [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "10",
          "11",
          "12"
        ],
        "additionalProperties": false
      },
      "HouseSystem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "Equal",
              "Whole sign"
            ]
          },
          "houses": {
            "$ref": "#/components/schemas/Cusps"
          }
        },
        "required": [
          "name",
          "houses"
        ],
        "additionalProperties": true
      },
      "HouseSystems": {
        "type": "object",
        "properties": {
          "equal": {
            "$ref": "#/components/schemas/HouseSystem"
          },
          "whole_sign": {
            "$ref": "#/components/schemas/HouseSystem"
          }
        },
        "required": [],
        "additionalProperties": false,
        "minProperties": 1
      },
      "Houses": {
        "type": "object",
        "properties": {
          "ascendant": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "mc": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "systems": {
            "$ref": "#/components/schemas/HouseSystems"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              }
            },
            "required": [
              "zodiac",
              "ayanamsa"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "ascendant",
          "mc",
          "systems",
          "metadata"
        ],
        "additionalProperties": true,
        "description": "Legacy full-chart houses contain Equal and Whole Sign, sharing the eastern-horizon Ascendant and meridian MC. These chart routes do not opt into Placidus. The separate /houses selected-system response is described by SelectedHouses."
      },
      "NodePosition": {
        "type": "object",
        "properties": {
          "longitude": {
            "$ref": "#/components/schemas/RoundedLongitude"
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "deg_in_sign": {
            "$ref": "#/components/schemas/DegreeInSign"
          }
        },
        "required": [
          "longitude",
          "sign",
          "deg_in_sign"
        ],
        "additionalProperties": true
      },
      "Nodes": {
        "type": "object",
        "properties": {
          "mean": {
            "$ref": "#/components/schemas/NodePosition"
          },
          "true": {
            "$ref": "#/components/schemas/NodePosition",
            "description": "Legacy label: identical to mean, NOT an independently calculated true node."
          },
          "south": {
            "$ref": "#/components/schemas/NodePosition"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "mean",
          "true",
          "south",
          "note"
        ],
        "additionalProperties": true
      },
      "Chart": {
        "type": "object",
        "properties": {
          "status": {
            "const": "ok"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "planets": {
            "$ref": "#/components/schemas/Planets"
          },
          "houses": {
            "$ref": "#/components/schemas/Houses"
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NatalAspect"
            }
          },
          "nodes": {
            "$ref": "#/components/schemas/Nodes"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "note": {
                "type": "string"
              }
            },
            "required": [
              "note"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "status",
          "zodiac",
          "ayanamsa",
          "planets",
          "houses",
          "aspects",
          "nodes",
          "metadata"
        ],
        "additionalProperties": true,
        "description": "A full calculation chart, not a rendered wheel or interpretation. Sidereal longitudes subtract the selected documented date-aware ayanamsa from apparent tropical longitudes; this is not a promise of identity with every ephemeris convention."
      },
      "BirthChartEcho": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone"
          },
          "lat": {
            "$ref": "#/components/schemas/Latitude"
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "date",
          "time",
          "timezone",
          "lat",
          "lon"
        ],
        "additionalProperties": true,
        "description": "Original input values with omitted/null timezone replaced by UTC. Omitted zodiac/ayanamsa remain absent; use chart fields for normalized results. Numeric coordinate strings remain strings here."
      },
      "BirthChartResponse": {
        "type": "object",
        "properties": {
          "type": {
            "const": "birth-chart"
          },
          "input": {
            "$ref": "#/components/schemas/BirthChartEcho"
          },
          "chart": {
            "$ref": "#/components/schemas/Chart"
          }
        },
        "required": [
          "type",
          "input",
          "chart"
        ],
        "additionalProperties": true
      },
      "AspectsResponse": {
        "type": "object",
        "properties": {
          "type": {
            "const": "aspects"
          },
          "input": {
            "$ref": "#/components/schemas/AspectsRequest"
          },
          "aspects": {
            "$ref": "#/components/schemas/Chart"
          }
        },
        "required": [
          "type",
          "input",
          "aspects"
        ],
        "additionalProperties": true,
        "description": "The outer aspects property contains a full Chart. The aspect array is response.aspects.aspects."
      },
      "HousesResponse": {
        "type": "object",
        "properties": {
          "type": {
            "const": "houses"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus",
              "porphyry",
              "meridian",
              "campanus",
              "regiomontanus",
              "alcabitius",
              "koch",
              "morinus",
              "topocentric",
              "sripati",
              "vehlow",
              "horizon",
              "krusinski",
              "sunshine",
              "sunshine_alt",
              "savard",
              "pullen_sd",
              "pullen_sr",
              "carter",
              "apc",
              "equal_mc",
              "natural",
              "gauquelin"
            ]
          },
          "status": {
            "const": "ok"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "planets": {
            "$ref": "#/components/schemas/Planets"
          },
          "houses": {
            "$ref": "#/components/schemas/SelectedHouses"
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NatalAspect"
            }
          },
          "nodes": {
            "$ref": "#/components/schemas/Nodes"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "note": {
                "type": "string"
              }
            },
            "required": [
              "note"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "type",
          "house_system",
          "status",
          "zodiac",
          "ayanamsa",
          "planets",
          "houses",
          "aspects",
          "nodes",
          "metadata"
        ],
        "additionalProperties": true
      },
      "NormalizedBirth": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone"
          },
          "lat": {
            "type": "number",
            "exclusiveMinimum": -90,
            "exclusiveMaximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          }
        },
        "required": [
          "date",
          "time",
          "timezone",
          "lat",
          "lon",
          "zodiac",
          "ayanamsa"
        ],
        "additionalProperties": true,
        "description": "Synastry normalizes numeric coordinates, zodiac and ayanamsa. Supplied timezone is echoed (including null/empty string); omitted timezone is UTC."
      },
      "SynastryResponse": {
        "type": "object",
        "properties": {
          "type": {
            "const": "synastry"
          },
          "input": {
            "type": "object",
            "properties": {
              "personA": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "personB": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "zodiac": {
                "$ref": "#/components/schemas/ZodiacInput"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaInput"
              }
            },
            "required": [
              "personA",
              "personB",
              "zodiac",
              "ayanamsa"
            ],
            "additionalProperties": true
          },
          "charts": {
            "type": "object",
            "properties": {
              "personA": {
                "$ref": "#/components/schemas/Chart"
              },
              "personB": {
                "$ref": "#/components/schemas/Chart"
              }
            },
            "required": [
              "personA",
              "personB"
            ],
            "additionalProperties": true
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CrossAspect"
            }
          }
        },
        "required": [
          "type",
          "input",
          "charts",
          "aspects"
        ],
        "additionalProperties": true
      },
      "TransitsResult": {
        "type": "object",
        "properties": {
          "status": {
            "const": "ok"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "natal_chart": {
            "$ref": "#/components/schemas/Chart"
          },
          "transit_chart": {
            "$ref": "#/components/schemas/Chart"
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CrossAspect"
            }
          }
        },
        "required": [
          "status",
          "zodiac",
          "ayanamsa",
          "natal_chart",
          "transit_chart",
          "aspects"
        ],
        "additionalProperties": true
      },
      "TransitsEcho": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BirthInput"
          },
          "transitDate": {
            "$ref": "#/components/schemas/Date"
          },
          "transitTime": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone",
            "description": "Transit timezone only; omitted/null falls back to birth.timezone, then UTC. Empty string selects UTC. Birth timezone is not overridden."
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "required": [
          "birth",
          "transitDate",
          "transitTime",
          "timezone"
        ],
        "additionalProperties": true
      },
      "TransitsResponse": {
        "type": "object",
        "properties": {
          "type": {
            "const": "transits"
          },
          "input": {
            "$ref": "#/components/schemas/TransitsEcho"
          },
          "transits": {
            "$ref": "#/components/schemas/TransitsResult"
          }
        },
        "required": [
          "type",
          "input",
          "transits"
        ],
        "additionalProperties": true,
        "description": "Requested-instant transit-to-natal aspects. Not an event search, aspect windows, station prediction or house-transit report. Engine output remains nested under transits."
      },
      "InterpretationAtom": {
        "type": "object",
        "properties": {
          "planet": {
            "$ref": "#/components/schemas/PlanetName"
          },
          "planet_nature": {
            "type": "string",
            "enum": [
              "luminary",
              "neutral",
              "benefic",
              "malefic"
            ]
          },
          "planet_sect": {
            "type": "string",
            "enum": [
              "day",
              "night",
              "neutral"
            ]
          },
          "chart_sect": {
            "type": "string",
            "enum": [
              "day",
              "night"
            ],
            "description": "Natal apparent topocentric Sun center geometric altitude >0 degrees means day; WGS84 elevation zero, no atmospheric refraction."
          },
          "aspect": {
            "type": "string",
            "enum": [
              "Conjunction",
              "Opposition",
              "Square",
              "Trine",
              "Sextile"
            ]
          },
          "natal_point": {
            "$ref": "#/components/schemas/PlanetName"
          },
          "house": {
            "type": "null",
            "description": "No house assignment is implemented for this endpoint."
          },
          "house_topics": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 0
          },
          "tone": {
            "type": "string",
            "enum": [
              "intensifying",
              "polarizing",
              "challenging",
              "supportive",
              "opportunity"
            ]
          },
          "intensity": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 1,
            "description": "Deterministic traditional-rule heuristic, not a probability or scientifically validated prediction."
          },
          "tradition": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "hellenistic",
                "western"
              ]
            },
            "minItems": 2,
            "maxItems": 2
          },
          "summary_key": {
            "type": "string",
            "description": "Machine key such as saturn_square_sun, not authored/generated prose."
          }
        },
        "required": [
          "planet",
          "planet_nature",
          "planet_sect",
          "chart_sect",
          "aspect",
          "natal_point",
          "house",
          "house_topics",
          "tone",
          "intensity",
          "tradition",
          "summary_key"
        ],
        "additionalProperties": true
      },
      "Interpretation": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "object",
            "properties": {
              "overall_tone": {
                "type": "string",
                "enum": [
                  "supportive",
                  "challenging",
                  "mixed"
                ]
              },
              "intensity": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              }
            },
            "required": [
              "overall_tone",
              "intensity"
            ],
            "additionalProperties": true
          },
          "transits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InterpretationAtom"
            }
          }
        },
        "required": [
          "summary",
          "transits"
        ],
        "additionalProperties": true
      },
      "HoroscopeResponse": {
        "type": "object",
        "properties": {
          "type": {
            "const": "horoscope"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/BirthInput"
              },
              "transitDate": {
                "$ref": "#/components/schemas/Date"
              },
              "zodiac": {
                "$ref": "#/components/schemas/ZodiacInput"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaInput"
              }
            },
            "required": [
              "birth",
              "transitDate",
              "zodiac",
              "ayanamsa"
            ],
            "additionalProperties": true
          },
          "interpretation": {
            "$ref": "#/components/schemas/Interpretation"
          }
        },
        "required": [
          "type",
          "input",
          "interpretation"
        ],
        "additionalProperties": true,
        "description": "Beta deterministic structured major-aspect signals. No language model, prose, compatibility score, medical/financial prediction, or house topics. The input echo currently omits transitTime/timezone; retain your request for reproducibility."
      },
      "TimelineSegment": {
        "type": "object",
        "properties": {
          "planet": {
            "$ref": "#/components/schemas/TimelinePlanet"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "nakshatra_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 27
          },
          "nakshatra_name": {
            "type": "string"
          },
          "pada": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "sidereal_longitude_start": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "sidereal_longitude_end": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "retrograde": {
            "type": "boolean",
            "description": "Net direction across this returned residence segment, not a guarantee of uniform motion throughout a station-spanning segment."
          }
        },
        "required": [
          "planet",
          "ayanamsa",
          "nakshatra_index",
          "nakshatra_name",
          "pada",
          "start_utc",
          "end_utc",
          "sidereal_longitude_start",
          "sidereal_longitude_end",
          "retrograde"
        ],
        "additionalProperties": true
      },
      "TimelineResponse": {
        "type": "object",
        "properties": {
          "planet": {
            "$ref": "#/components/schemas/TimelinePlanet"
          },
          "zodiac_used": {
            "const": "sidereal"
          },
          "ayanamsa_used": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "step_seconds": {
            "const": 3600
          },
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimelineSegment"
            },
            "minItems": 1
          }
        },
        "required": [
          "planet",
          "zodiac_used",
          "ayanamsa_used",
          "start_utc",
          "end_utc",
          "step_seconds",
          "segments"
        ],
        "additionalProperties": true,
        "description": "Gap-free returned residence coverage with numerically refined boundaries. Hourly discovery can miss an out-and-back departure/re-entry entirely between samples. Boundary solver resolution is not physical absolute-time accuracy; this is not an exhaustive station/event finder."
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          },
          "required": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "object",
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  ]
                }
              }
            ]
          },
          "example": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": true,
        "description": "Current gateway errors guarantee an error string, not a universal code/details envelope. Some validation errors add required/example. Reverse-proxy failures can be HTML, so clients must not assume JSON for every non-2xx."
      },
      "SiderealFlagsConstraint": {
        "description": "Only supported ayanamsa names are valid when zodiac is sidereal; tropical retains its legacy ignore behavior.",
        "if": {
          "type": "object",
          "properties": {
            "zodiac": {
              "type": "string",
              "pattern": "^\\s*(?:[Ss][Ii][Dd][Ee][Rr][Ee][Aa][Ll])\\s*$"
            }
          },
          "required": [
            "zodiac"
          ]
        },
        "then": {
          "type": "object",
          "properties": {
            "ayanamsa": {
              "type": [
                "string",
                "null"
              ],
              "pattern": "^\\s*(?:[Ll][Aa][Hh][Ii][Rr][Ii]|[Rr][Aa][Mm][Aa][Nn]|[Kk][Rr][Ii][Ss][Hh][Nn][Aa][Mm][Uu][Rr][Tt][Ii])\\s*$"
            }
          }
        }
      },
      "SelectedHouseSystem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "Equal",
              "Whole sign",
              "Placidus",
              "Porphyry",
              "Meridian",
              "Campanus",
              "Regiomontanus",
              "Alcabitius",
              "Koch",
              "Morinus",
              "Topocentric",
              "Sripati",
              "Vehlow",
              "Horizon/Azimuth",
              "Krusinski-Pisa-Goelzer",
              "Sunshine",
              "Sunshine alternative",
              "Savard-A",
              "Pullen SD",
              "Pullen SR",
              "Carter Poli-Equatorial",
              "APC",
              "Equal MC",
              "Natural"
            ]
          },
          "houses": {
            "$ref": "#/components/schemas/Cusps"
          }
        },
        "required": [
          "name",
          "houses"
        ],
        "additionalProperties": false
      },
      "GauquelinSectors": {
        "type": "object",
        "properties": {
          "1": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "2": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "3": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "4": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "5": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "6": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "7": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "8": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "9": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "10": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "11": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "12": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "13": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "14": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "15": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "16": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "17": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "18": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "19": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "20": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "21": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "22": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "23": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "24": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "25": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "26": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "27": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "28": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "29": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "30": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "31": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "32": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "33": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "34": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "35": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "36": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          }
        },
        "required": [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "10",
          "11",
          "12",
          "13",
          "14",
          "15",
          "16",
          "17",
          "18",
          "19",
          "20",
          "21",
          "22",
          "23",
          "24",
          "25",
          "26",
          "27",
          "28",
          "29",
          "30",
          "31",
          "32",
          "33",
          "34",
          "35",
          "36"
        ],
        "additionalProperties": false,
        "description": "All 36 clockwise Gauquelin sector boundaries; 1 is the Ascendant, 10 the Midheaven, 19 the Descendant, and 28 the Imum Coeli."
      },
      "SelectedGauquelinSystem": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "const": "Gauquelin sectors"
          },
          "houses": {
            "$ref": "#/components/schemas/GauquelinSectors"
          }
        },
        "required": [
          "name",
          "houses"
        ],
        "additionalProperties": false
      },
      "SelectedHouseSystems": {
        "type": "object",
        "properties": {
          "equal": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "whole_sign": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "placidus": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "porphyry": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "meridian": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "campanus": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "regiomontanus": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "alcabitius": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "koch": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "morinus": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "topocentric": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "sripati": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "vehlow": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "horizon": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "krusinski": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "sunshine": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "sunshine_alt": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "savard": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "pullen_sd": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "pullen_sr": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "carter": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "apc": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "equal_mc": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "natural": {
            "$ref": "#/components/schemas/SelectedHouseSystem"
          },
          "gauquelin": {
            "$ref": "#/components/schemas/SelectedGauquelinSystem"
          }
        },
        "required": [],
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 1
      },
      "SelectedHouseMetadata": {
        "type": "object",
        "properties": {
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "fallback": {
            "type": "null"
          },
          "convention": {
            "type": "string",
            "enum": [
              "apparent-tropical-cusps-minus-selected-mean-ayanamsa",
              "ecliptic-quadrants-between-ascendant-midheaven-descendant-and-imum-coeli",
              "twelve_equal_right_ascension_divisions_from_ramc_projected_to_ecliptic",
              "twelve_equal_prime_vertical_divisions_projected_through_horizon_north_south_points",
              "twelve_equal_equatorial_divisions_projected_through_horizon_north_south_points",
              "ascendant_upper_and_lower_right_ascension_semi_arcs_trisected_and_projected_by_hour_circles",
              "natal_midheaven_rising_semiarc_trisected_by_intermediate_birthplace_ascendants",
              "twelve_equal_equatorial_points_from_ramc_transformed_to_ecliptic",
              "polich_page_trisected_tangent_pole_heights_on_30_degree_equatorial_offsets",
              "forward_midpoints_of_porphyry_house_sectors",
              "twelve_equal_ecliptic_divisions_with_ascendant_at_center_of_house_1",
              "twelve_equal_local_horizon_azimuth_divisions_projected_by_vertical_circles_to_ecliptic",
              "twelve_equal_ascendant_zenith_great_circle_divisions_projected_by_meridian_circles_to_ecliptic",
              "solar-diurnal-and-nocturnal-semi-arcs-trisected-by-house-circles",
              "makransky_solar_semiarc_points_projected_by_prime_vertical_geometry",
              "savard_a_one_third_two_thirds_latitude_circles_projected_from_prime_vertical_to_ecliptic",
              "pullen_sd_sinusoidal_delta_ecliptic_quadrants",
              "pullen_sr_sinusoidal_ratio_ecliptic_quadrants",
              "carter_equal_right_ascension_from_ascendant_projected_to_ecliptic",
              "ascendant_parallel_circle_divided_above_and_below_horizon_projected_to_ecliptic",
              "twelve_equal_ecliptic_divisions_with_midheaven_as_cusp_10",
              "twelve_equal_zodiacal_divisions_with_cusp_1_at_zero_degrees_aries",
              "thirty_six_clockwise_diurnal_and_nocturnal_semiarc_sectors"
            ]
          },
          "variant": {
            "type": "string",
            "enum": [
              "treindl-uppercase-I",
              "makransky-lowercase-i"
            ]
          },
          "sun_declination_frame": {
            "type": "string",
            "const": "apparent-geocentric-true-equator-of-date"
          },
          "polar_policy": {
            "type": "string",
            "enum": [
              "reject-without-fallback",
              "reject-geographic-poles-and-degenerate-quadrants"
            ]
          }
        },
        "required": [
          "zodiac",
          "ayanamsa"
        ],
        "additionalProperties": true
      },
      "SelectedHouses": {
        "type": "object",
        "properties": {
          "ascendant": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "mc": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "systems": {
            "$ref": "#/components/schemas/SelectedHouseSystems"
          },
          "metadata": {
            "$ref": "#/components/schemas/SelectedHouseMetadata"
          }
        },
        "required": [
          "ascendant",
          "mc",
          "systems",
          "metadata"
        ],
        "additionalProperties": true,
        "description": "Exactly the selected house system. Beta metadata is present only for explicit Placidus, Porphyry, Meridian, Campanus, Regiomontanus, Alcabitius, Koch, Morinus, Topocentric, Sripati, Vehlow, Horizon/Azimuth, Krusinski-Pisa-Goelzer, Sunshine (Treindl), Sunshine alternative (Makransky), Savard-A, Pullen SD, Pullen SR, Carter Poli-Equatorial, APC, Equal MC, Natural, or Gauquelin sectors; undefined geometry is rejected without another-system fallback."
      },
      "BetaBirthInput": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC",
            "description": "Valid IANA zone; UTC when omitted. Ambiguous and nonexistent civil times are rejected."
          },
          "lat": {
            "type": "number",
            "exclusiveMinimum": -90,
            "exclusiveMaximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "date",
          "time",
          "lat",
          "lon"
        ],
        "additionalProperties": false,
        "description": "Strict nested birth input; no unknown properties, nulls, booleans or numeric strings. Known civil time required; semantic date/DST/undefined-angle validation occurs on the server."
      },
      "NatalSvgRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac",
            "default": "tropical"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus",
              "porphyry",
              "meridian",
              "campanus",
              "regiomontanus",
              "alcabitius",
              "koch",
              "morinus",
              "topocentric",
              "sripati",
              "vehlow",
              "horizon",
              "krusinski",
              "sunshine",
              "sunshine_alt",
              "savard",
              "pullen_sd",
              "pullen_sr",
              "carter",
              "apc",
              "equal_mc",
              "natural"
            ],
            "default": "equal"
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ],
            "default": "light"
          },
          "show_aspects": {
            "type": "boolean",
            "default": true
          },
          "include_png": {
            "type": "boolean",
            "default": false,
            "description": "When true, also returns a deterministic PNG derived only from this response's server-rendered SVG. Omission or false preserves the predecessor response exactly."
          },
          "additional_points": {
            "$ref": "#/components/schemas/AdditionalChartPointSelection",
            "description": "Optional explicit beta point layer; omission preserves the original SVG and response shape."
          },
          "aspect_profile": {
            "$ref": "#/components/schemas/AspectProfile",
            "description": "Optional neutral preset, mutually exclusive with aspects. Omit both aspect selectors to preserve the original major-only SVG bytes."
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 11,
            "items": {
              "$ref": "#/components/schemas/NatalAnalysisAspectOption"
            },
            "description": "Custom unique aspect/orb options, mutually exclusive with aspect_profile."
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": false,
        "description": "Beta server-rendered natal wheel with optional deterministic PNG export. Inputs are calculation settings only; no SVG/chart/URL/image/font uploads. aspect_profile and aspects are mutually exclusive; omission preserves the original major-only SVG. Ayanamsa applies only to sidereal; exact lowercase enum remains required if supplied. Dense labels that cannot fit safely are rejected with 400, not silently omitted."
      },
      "PngExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "media_type",
          "base64",
          "bytes",
          "sha256",
          "width",
          "height",
          "renderer",
          "source_svg_sha256"
        ],
        "properties": {
          "media_type": {
            "type": "string",
            "const": "image/png"
          },
          "base64": {
            "type": "string",
            "minLength": 12,
            "maxLength": 1398104,
            "description": "Base64-encoded PNG bytes; decode as an image, never HTML."
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1048576
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "width": {
            "type": "integer",
            "const": 1200
          },
          "height": {
            "type": "integer",
            "enum": [
              800,
              1100,
              1120,
              1420
            ]
          },
          "renderer": {
            "type": "string",
            "const": "cosmicephemeris-original-png-v1"
          },
          "source_svg_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        },
        "description": "Deterministic, metadata-free PNG rendered from Cosmic Ephemeris's own SVG primitive subset. No uploaded SVG, URL, font, browser, or external rendering service is accepted."
      },
      "NatalSvgMetadata": {
        "type": "object",
        "properties": {
          "renderer": {
            "type": "string",
            "const": "cosmicephemeris-original-svg-v1"
          },
          "position_source": {
            "type": "string",
            "const": "engine-chart"
          },
          "layout": {
            "type": "string",
            "const": "1200x1100"
          },
          "aspects": {
            "type": "string",
            "enum": [
              "supplied-major-only",
              "configured",
              "hidden"
            ]
          },
          "house_status": {
            "type": "string",
            "enum": [
              "current",
              "beta"
            ]
          },
          "polar_policy": {
            "type": "string",
            "const": "reject-without-fallback"
          },
          "additional_points": {
            "type": "string",
            "const": "cosmicephemeris-natal-points-v1"
          }
        },
        "required": [
          "renderer",
          "position_source",
          "layout",
          "aspects",
          "house_status",
          "polar_policy"
        ],
        "additionalProperties": false
      },
      "NatalSvgResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "natal_svg"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "svg": {
            "type": "string",
            "minLength": 1,
            "maxLength": 131072,
            "description": "Original static SVG source in JSON, not a URL. UTF-8 renderer output capped at 128 KiB; do not treat arbitrary external SVG as trusted."
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus",
              "porphyry",
              "meridian",
              "campanus",
              "regiomontanus",
              "alcabitius",
              "koch",
              "morinus",
              "topocentric",
              "sripati",
              "vehlow",
              "horizon",
              "krusinski",
              "sunshine",
              "sunshine_alt",
              "savard",
              "pullen_sd",
              "pullen_sr",
              "carter",
              "apc",
              "equal_mc",
              "natural"
            ]
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ]
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "metadata": {
            "$ref": "#/components/schemas/NatalSvgMetadata"
          },
          "additional_points": {
            "$ref": "#/components/schemas/AdditionalPointsResult"
          },
          "aspect_configuration": {
            "$ref": "#/components/schemas/AspectConfiguration",
            "description": "Present only when aspect_profile or aspects was explicitly supplied."
          },
          "png": {
            "$ref": "#/components/schemas/PngExport",
            "description": "Present only when include_png is true."
          }
        },
        "required": [
          "type",
          "status",
          "svg",
          "house_system",
          "theme",
          "zodiac",
          "ayanamsa",
          "metadata"
        ],
        "additionalProperties": false
      },
      "VargasRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "division": {
            "type": "integer",
            "enum": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              16,
              20,
              24,
              27,
              30,
              40,
              45,
              60,
              81,
              108,
              144,
              150
            ],
            "default": 9
          },
          "d150_method": {
            "type": "string",
            "enum": [
              "pvr_jhora_own_sign_uniform_direct",
              "deva_keralam_chandra_kala_nadi_non_uniform",
              "deva_keralam_chandra_kala_nadi_uniform_direct",
              "parivritti_cyclic",
              "movable_aries_forward_fixed_taurus_reverse_dual_gemini_forward",
              "movable_aries_forward_fixed_scorpio_reverse_dual_sagittarius_forward",
              "movable_aries_forward_fixed_leo_reverse_dual_sagittarius_forward",
              "movable_source_sign_forward_fixed_source_sign_reverse_dual_source_sign_forward"
            ],
            "description": "Optional only with division 150. Omission preserves the P.V.R./JHora uniform-direct R170 response."
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": false,
        "description": "Sidereal-only D1/D2/D3/D4/D5/D6/D7/D8/D9/D10/D11/D12/D16/D20/D24/D27/D30/D40/D45/D60/D81/D108/D144/D150 beta with explicit per-division conventions. Half-open, lower-inclusive divisions use unrounded binary64 longitudes. Traditional nine bodies and Ascendant only; no outer planets or interpretation text. Optional d150_method is valid only with explicit division 150; omission retains uniform-direct D150.",
        "if": {
          "type": "object",
          "properties": {
            "d150_method": {
              "type": "string"
            }
          },
          "required": [
            "d150_method"
          ]
        },
        "then": {
          "type": "object",
          "properties": {
            "division": {
              "type": "integer",
              "const": 150
            }
          },
          "required": [
            "division"
          ]
        }
      },
      "VimshottariRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "depth": {
            "type": "integer",
            "enum": [
              2,
              3,
              4
            ],
            "default": 2,
            "description": "Only 2, 3, or 4; no null, string or boolean. Explicit 2 is output-identical to omission."
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": false,
        "description": "Sidereal-only beta with fixed Julian years of 365.25 days and a 120-year cycle anchored at the theoretical start of the birth mahadasha. Omitted depth or explicit 2 returns the unchanged two-level response. Opt-in depth 3 adds 729 pratyantardashas; depth 4 adds 6,561 sookshma-dasha leaves. Both use exact proportional integer-microsecond durations and explicit active-lord/count metadata. No arbitrary depth, date query, range or year model."
      },
      "VargaPosition": {
        "type": "object",
        "properties": {
          "sidereal_longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "divisional_longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "degree_in_sign": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 30
          },
          "division_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 150
          }
        },
        "required": [
          "sidereal_longitude",
          "divisional_longitude",
          "sign_index",
          "sign",
          "degree_in_sign",
          "division_index"
        ],
        "additionalProperties": false
      },
      "VargaBodies": {
        "type": "object",
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "moon": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "mercury": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "venus": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "mars": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "jupiter": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "saturn": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "rahu": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "ketu": {
            "$ref": "#/components/schemas/VargaPosition"
          }
        },
        "required": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "rahu",
          "ketu"
        ],
        "additionalProperties": false
      },
      "VargasMetadata": {
        "type": "object",
        "properties": {
          "calculation_status": {
            "type": "string",
            "const": "experimental_beta"
          },
          "practitioner_review": {
            "type": "string",
            "const": "not_completed"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_sidereal_retained_nutation"
          },
          "node_model": {
            "type": "string",
            "const": "mean_ascending_and_opposite_descending"
          },
          "classification_precision": {
            "type": "string",
            "const": "unrounded_binary64"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "mapping": {
            "type": "string",
            "enum": [
              "parashari_d1_d9_d10",
              "parashari_d2",
              "parashari_d3",
              "parashari_d4",
              "pvr_d5_panchamsha",
              "pvr_d6_shashthamsha",
              "pvr_d8_ashtamsha",
              "pvr_d11_rudramsha",
              "pvr_d40_khavedamsha",
              "pvr_d45_akshavedamsha",
              "harmonic_d81_navanavamsha",
              "compound_d108_ashtottaramsa",
              "compound_d144_dwadas_dwadasamsa",
              "pvr_d150_nadiamsa",
              "deva_keralam_d150_chandra_kala_nadi",
              "deva_keralam_d150_chandra_kala_nadi_uniform_direct",
              "parivritti_cyclic_d150_nadiamsa",
              "movable_aries_fixed_taurus_dual_gemini_d150_nadiamsa",
              "movable_aries_fixed_scorpio_dual_sagittarius_d150_nadiamsa",
              "movable_aries_fixed_leo_dual_sagittarius_d150_nadiamsa",
              "source_sign_base_d150_nadiamsa",
              "parashari_d7",
              "parashari_d12",
              "parashari_d16",
              "parashari_d20",
              "parashari_d24",
              "parashari_d27",
              "parashari_d30",
              "parashari_d60"
            ]
          },
          "boundaries": {
            "type": "string",
            "const": "half_open_lower_inclusive"
          },
          "divisional_degrees": {
            "type": "string",
            "const": "linear_progress_within_assigned_sign"
          },
          "d2_convention": {
            "type": "string",
            "const": "odd_sun_leo_then_moon_cancer_even_reversed"
          },
          "d5_convention": {
            "type": "string",
            "const": "odd_aries_aquarius_sagittarius_gemini_libra_even_taurus_virgo_pisces_capricorn_scorpio"
          },
          "d6_convention": {
            "type": "string",
            "const": "odd_aries_forward_six_even_libra_forward_six"
          },
          "d8_convention": {
            "type": "string",
            "const": "movable_aries_fixed_sagittarius_dual_leo_forward_eight"
          },
          "d11_convention": {
            "type": "string",
            "const": "reverse_source_index_from_aries_then_forward_eleven"
          },
          "d40_convention": {
            "type": "string",
            "const": "odd_aries_forward_forty_even_libra_forward_forty"
          },
          "d45_convention": {
            "type": "string",
            "const": "movable_aries_fixed_leo_dual_sagittarius_forward_forty_five"
          },
          "d81_convention": {
            "type": "string",
            "const": "direct_eighty_one_equal_parts_navamsa_of_navamsa"
          },
          "d108_convention": {
            "type": "string",
            "const": "navamsa_then_dwadasamsa_one_hundred_eight_equal_parts"
          },
          "d144_convention": {
            "type": "string",
            "const": "dwadasamsa_then_dwadasamsa_one_hundred_forty_four_equal_parts"
          },
          "d150_convention": {
            "type": "string",
            "enum": [
              "pvr_jhora_own_sign_uniform_direct_one_hundred_fifty_equal_parts",
              "deva_keralam_chandra_kala_nadi_non_uniform_shodashavarga_boundary_union_movable_aries_forward_fixed_taurus_reverse_dual_gemini_forward",
              "deva_keralam_chandra_kala_nadi_uniform_direct_one_hundred_fifty_equal_parts_movable_aries_forward_fixed_taurus_forward_dual_gemini_forward",
              "parivritti_cyclic_one_hundred_fifty_equal_parts_continuous_zodiacal_sequence",
              "one_hundred_fifty_equal_parts_movable_aries_forward_fixed_taurus_reverse_dual_gemini_forward",
              "one_hundred_fifty_equal_parts_movable_aries_forward_fixed_scorpio_reverse_dual_sagittarius_forward",
              "one_hundred_fifty_equal_parts_movable_aries_forward_fixed_leo_reverse_dual_sagittarius_forward",
              "one_hundred_fifty_equal_parts_movable_source_sign_forward_fixed_source_sign_reverse_dual_source_sign_forward"
            ]
          },
          "segment_model": {
            "type": "string",
            "const": "five_unequal_traditional_segments"
          },
          "d60_convention": {
            "type": "string",
            "const": "jhora_forward_from_source_sign"
          }
        },
        "required": [
          "calculation_status",
          "practitioner_review",
          "frame",
          "node_model",
          "classification_precision",
          "interpretations",
          "mapping",
          "boundaries",
          "divisional_degrees"
        ],
        "additionalProperties": false
      },
      "VargasResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "vargas"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              "division": {
                "type": "integer",
                "enum": [
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  16,
                  20,
                  24,
                  27,
                  30,
                  40,
                  45,
                  60,
                  81,
                  108,
                  144,
                  150
                ]
              },
              "d150_method": {
                "type": "string",
                "enum": [
                  "pvr_jhora_own_sign_uniform_direct",
                  "deva_keralam_chandra_kala_nadi_non_uniform",
                  "deva_keralam_chandra_kala_nadi_uniform_direct",
                  "parivritti_cyclic",
                  "movable_aries_forward_fixed_taurus_reverse_dual_gemini_forward",
                  "movable_aries_forward_fixed_scorpio_reverse_dual_sagittarius_forward",
                  "movable_aries_forward_fixed_leo_reverse_dual_sagittarius_forward",
                  "movable_source_sign_forward_fixed_source_sign_reverse_dual_source_sign_forward"
                ]
              }
            },
            "required": [
              "birth",
              "ayanamsa",
              "division"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "division": {
            "type": "integer",
            "enum": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              16,
              20,
              24,
              27,
              30,
              40,
              45,
              60,
              81,
              108,
              144,
              150
            ]
          },
          "zodiac": {
            "type": "string",
            "const": "sidereal"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "ascendant": {
            "$ref": "#/components/schemas/VargaPosition"
          },
          "bodies": {
            "$ref": "#/components/schemas/VargaBodies"
          },
          "metadata": {
            "$ref": "#/components/schemas/VargasMetadata"
          }
        },
        "required": [
          "status",
          "type",
          "input",
          "birth_utc",
          "division",
          "zodiac",
          "ayanamsa",
          "ascendant",
          "bodies",
          "metadata"
        ],
        "additionalProperties": false
      },
      "DashaLord": {
        "type": "string",
        "enum": [
          "ketu",
          "venus",
          "sun",
          "moon",
          "mars",
          "rahu",
          "jupiter",
          "saturn",
          "mercury"
        ]
      },
      "DashaSubperiod": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "years": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          }
        },
        "required": [
          "lord",
          "years",
          "start_utc",
          "end_utc",
          "active_at_birth"
        ],
        "additionalProperties": false
      },
      "DashaPeriod": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "years": {
            "type": "integer",
            "enum": [
              7,
              20,
              6,
              10,
              18,
              16,
              19,
              17
            ]
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          },
          "subperiods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaSubperiod"
            },
            "minItems": 9,
            "maxItems": 9
          }
        },
        "required": [
          "lord",
          "years",
          "start_utc",
          "end_utc",
          "active_at_birth",
          "subperiods"
        ],
        "additionalProperties": false
      },
      "VimshottariMetadata": {
        "type": "object",
        "properties": {
          "calculation_status": {
            "type": "string",
            "const": "experimental_beta"
          },
          "practitioner_review": {
            "type": "string",
            "const": "not_completed"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_sidereal_retained_nutation"
          },
          "node_model": {
            "type": "string",
            "const": "mean_ascending_and_opposite_descending"
          },
          "classification_precision": {
            "type": "string",
            "const": "unrounded_binary64"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "year_length": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "const": "julian_365_25_days"
              },
              "days": {
                "type": "number",
                "const": 365.25
              },
              "seconds": {
                "type": "number",
                "const": 31557600
              }
            },
            "required": [
              "name",
              "days",
              "seconds"
            ],
            "additionalProperties": false
          },
          "interval": {
            "type": "string",
            "const": "[start_utc,end_utc)"
          },
          "timestamp_resolution": {
            "type": "string",
            "const": "microsecond"
          },
          "birth_balance_rounding": {
            "type": "string",
            "const": "elapsed_duration_floored_to_microseconds"
          },
          "cycle_anchor": {
            "type": "string",
            "const": "start_of_birth_mahadasha"
          },
          "period_timestamps": {
            "type": "string",
            "const": "theoretical_offsets_may_extend_beyond_birth_ephemeris_window_no_ephemeris_extrapolation"
          }
        },
        "required": [
          "calculation_status",
          "practitioner_review",
          "frame",
          "node_model",
          "classification_precision",
          "interpretations",
          "year_length",
          "interval",
          "timestamp_resolution",
          "birth_balance_rounding",
          "cycle_anchor",
          "period_timestamps"
        ],
        "additionalProperties": false
      },
      "VimshottariResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VimshottariResponseDepth2"
          },
          {
            "$ref": "#/components/schemas/VimshottariResponseDepth3"
          },
          {
            "$ref": "#/components/schemas/VimshottariResponseDepth4"
          }
        ],
        "description": "Depth omitted/2 returns exactly the legacy response without depth fields. Depth 3 requires all 729 third-level periods. Depth 4 requires all 6,561 fourth-level leaves. Each opt-in variant requires its complete active birth path and exact depth/count metadata; mixed or partial variants are invalid."
      },
      "AshtakootaRequest": {
        "type": "object",
        "properties": {
          "groom": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "bride": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          }
        },
        "required": [
          "groom",
          "bride"
        ],
        "additionalProperties": false,
        "description": "Directional North-Indian Ashtakoota beta input. Groom and bride are explicit traditional table roles; reversing them can change asymmetric components."
      },
      "AshtakootaClassification": {
        "type": "object",
        "properties": {
          "sidereal_moon_longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "moon_sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "moon_sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "nakshatra_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 27
          },
          "nakshatra": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32
          },
          "pada": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "varna": {
            "type": "string",
            "enum": [
              "brahmin",
              "kshatriya",
              "vaishya",
              "shudra"
            ]
          },
          "vashya": {
            "type": "string",
            "enum": [
              "quadruped",
              "human",
              "jalachara",
              "leo",
              "scorpio"
            ]
          },
          "yoni": {
            "type": "string",
            "enum": [
              "horse",
              "elephant",
              "sheep",
              "serpent",
              "dog",
              "cat",
              "rat",
              "cow",
              "buffalo",
              "tiger",
              "deer",
              "monkey",
              "mongoose",
              "lion"
            ]
          },
          "gana": {
            "type": "string",
            "enum": [
              "deva",
              "manushya",
              "rakshasa"
            ]
          },
          "nadi": {
            "type": "string",
            "enum": [
              "adi",
              "madhya",
              "antya"
            ]
          }
        },
        "required": [
          "sidereal_moon_longitude",
          "moon_sign_index",
          "moon_sign",
          "nakshatra_index",
          "nakshatra",
          "pada",
          "varna",
          "vashya",
          "yoni",
          "gana",
          "nadi"
        ],
        "additionalProperties": false
      },
      "AshtakootaBasicScore": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "minimum": 0,
            "maximum": 8,
            "multipleOf": 0.5
          },
          "maximum": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          },
          "groom_value": {
            "type": "string"
          },
          "bride_value": {
            "type": "string"
          }
        },
        "required": [
          "score",
          "maximum",
          "groom_value",
          "bride_value"
        ],
        "additionalProperties": false
      },
      "AshtakootaTaraScore": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "enum": [
              0,
              1.5,
              3
            ]
          },
          "maximum": {
            "type": "integer",
            "const": 3
          },
          "groom_value": {
            "type": "string"
          },
          "bride_value": {
            "type": "string"
          },
          "groom_to_bride_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 27
          },
          "bride_to_groom_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 27
          },
          "groom_to_bride_score": {
            "type": "number",
            "enum": [
              0,
              1.5
            ]
          },
          "bride_to_groom_score": {
            "type": "number",
            "enum": [
              0,
              1.5
            ]
          }
        },
        "required": [
          "score",
          "maximum",
          "groom_value",
          "bride_value",
          "groom_to_bride_count",
          "bride_to_groom_count",
          "groom_to_bride_score",
          "bride_to_groom_score"
        ],
        "additionalProperties": false
      },
      "AshtakootaGrahaMaitriScore": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "minimum": 0,
            "maximum": 5
          },
          "maximum": {
            "type": "integer",
            "const": 5
          },
          "groom_value": {
            "type": "string"
          },
          "bride_value": {
            "type": "string"
          },
          "groom_lord_to_bride_lord": {
            "type": "string",
            "enum": [
              "friend",
              "neutral",
              "enemy"
            ]
          },
          "bride_lord_to_groom_lord": {
            "type": "string",
            "enum": [
              "friend",
              "neutral",
              "enemy"
            ]
          }
        },
        "required": [
          "score",
          "maximum",
          "groom_value",
          "bride_value",
          "groom_lord_to_bride_lord",
          "bride_lord_to_groom_lord"
        ],
        "additionalProperties": false
      },
      "AshtakootaBhakootScore": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number",
            "enum": [
              0,
              7
            ]
          },
          "maximum": {
            "type": "integer",
            "const": 7
          },
          "groom_value": {
            "$ref": "#/components/schemas/Sign"
          },
          "bride_value": {
            "$ref": "#/components/schemas/Sign"
          },
          "groom_to_bride_sign_distance": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "bride_to_groom_sign_distance": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          }
        },
        "required": [
          "score",
          "maximum",
          "groom_value",
          "bride_value",
          "groom_to_bride_sign_distance",
          "bride_to_groom_sign_distance"
        ],
        "additionalProperties": false
      },
      "AshtakootaKootas": {
        "type": "object",
        "properties": {
          "varna": {
            "$ref": "#/components/schemas/AshtakootaBasicScore"
          },
          "vashya": {
            "$ref": "#/components/schemas/AshtakootaBasicScore"
          },
          "tara": {
            "$ref": "#/components/schemas/AshtakootaTaraScore"
          },
          "yoni": {
            "$ref": "#/components/schemas/AshtakootaBasicScore"
          },
          "graha_maitri": {
            "$ref": "#/components/schemas/AshtakootaGrahaMaitriScore"
          },
          "gana": {
            "$ref": "#/components/schemas/AshtakootaBasicScore"
          },
          "bhakoot": {
            "$ref": "#/components/schemas/AshtakootaBhakootScore"
          },
          "nadi": {
            "$ref": "#/components/schemas/AshtakootaBasicScore"
          }
        },
        "required": [
          "varna",
          "vashya",
          "tara",
          "yoni",
          "graha_maitri",
          "gana",
          "bhakoot",
          "nadi"
        ],
        "additionalProperties": false
      },
      "AshtakootaResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "ashtakoota"
          },
          "input": {
            "type": "object",
            "properties": {
              "groom": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "bride": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              }
            },
            "required": [
              "groom",
              "bride",
              "ayanamsa"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "type": "object",
            "properties": {
              "groom": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "bride": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "groom",
              "bride"
            ],
            "additionalProperties": false
          },
          "zodiac": {
            "type": "string",
            "const": "sidereal"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "groom": {
            "$ref": "#/components/schemas/AshtakootaClassification"
          },
          "bride": {
            "$ref": "#/components/schemas/AshtakootaClassification"
          },
          "kootas": {
            "$ref": "#/components/schemas/AshtakootaKootas"
          },
          "total": {
            "type": "object",
            "properties": {
              "score": {
                "type": "number",
                "minimum": 0,
                "maximum": 36,
                "multipleOf": 0.5
              },
              "maximum": {
                "type": "integer",
                "const": 36
              }
            },
            "required": [
              "score",
              "maximum"
            ],
            "additionalProperties": false
          },
          "metadata": {
            "type": "object",
            "properties": {
              "ruleset": {
                "type": "string",
                "const": "saravali_cc_by_sa_4_0_v1"
              },
              "source": {
                "type": "string",
                "const": "https://saravali.github.io/astrology/astakoota.html"
              },
              "source_license": {
                "type": "string",
                "const": "CC-BY-SA-4.0"
              },
              "role_order": {
                "type": "string",
                "const": "groom_then_bride_directional_tables"
              },
              "classification_precision": {
                "type": "string",
                "const": "unrounded_binary64"
              },
              "frame": {
                "type": "string",
                "const": "apparent_geocentric_sidereal_retained_nutation"
              },
              "practitioner_review": {
                "type": "string",
                "const": "not_completed"
              },
              "interpretations": {
                "type": "boolean",
                "const": false
              },
              "threshold_verdict": {
                "type": "boolean",
                "const": false
              },
              "dosha_cancellations": {
                "type": "boolean",
                "const": false
              },
              "medical_or_relationship_advice": {
                "type": "boolean",
                "const": false
              }
            },
            "required": [
              "ruleset",
              "source",
              "source_license",
              "role_order",
              "classification_precision",
              "frame",
              "practitioner_review",
              "interpretations",
              "threshold_verdict",
              "dosha_cancellations",
              "medical_or_relationship_advice"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "status",
          "type",
          "input",
          "birth_utc",
          "zodiac",
          "ayanamsa",
          "groom",
          "bride",
          "kootas",
          "total",
          "metadata"
        ],
        "additionalProperties": false
      },
      "AshtakavargaRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "include_reductions": {
            "type": "boolean",
            "default": false,
            "description": "Explicitly include the declared BPHS chapters 67-69 Trikona and Ekadhipatya reductions and Pinda arithmetic."
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": false
      },
      "AshtakavargaSignPosition": {
        "type": "object",
        "properties": {
          "sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          }
        },
        "required": [
          "sign_index",
          "sign"
        ],
        "additionalProperties": false
      },
      "AshtakavargaSignPositions": {
        "type": "object",
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          },
          "moon": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          },
          "mars": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          },
          "mercury": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          },
          "jupiter": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          },
          "venus": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          },
          "saturn": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          },
          "ascendant": {
            "$ref": "#/components/schemas/AshtakavargaSignPosition"
          }
        },
        "required": [
          "sun",
          "moon",
          "mars",
          "mercury",
          "jupiter",
          "venus",
          "saturn",
          "ascendant"
        ],
        "additionalProperties": false
      },
      "AshtakavargaBhinnaRow": {
        "type": "object",
        "properties": {
          "benefic_points": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 8
            },
            "minItems": 12,
            "maxItems": 12
          },
          "total": {
            "type": "integer",
            "minimum": 39,
            "maximum": 56
          }
        },
        "required": [
          "benefic_points",
          "total"
        ],
        "additionalProperties": false
      },
      "AshtakavargaBhinna": {
        "type": "object",
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/AshtakavargaBhinnaRow"
          },
          "moon": {
            "$ref": "#/components/schemas/AshtakavargaBhinnaRow"
          },
          "mars": {
            "$ref": "#/components/schemas/AshtakavargaBhinnaRow"
          },
          "mercury": {
            "$ref": "#/components/schemas/AshtakavargaBhinnaRow"
          },
          "jupiter": {
            "$ref": "#/components/schemas/AshtakavargaBhinnaRow"
          },
          "venus": {
            "$ref": "#/components/schemas/AshtakavargaBhinnaRow"
          },
          "saturn": {
            "$ref": "#/components/schemas/AshtakavargaBhinnaRow"
          }
        },
        "required": [
          "sun",
          "moon",
          "mars",
          "mercury",
          "jupiter",
          "venus",
          "saturn"
        ],
        "additionalProperties": false
      },
      "AshtakavargaBinaryRow": {
        "type": "array",
        "items": {
          "type": "integer",
          "enum": [
            0,
            1
          ]
        },
        "minItems": 12,
        "maxItems": 12
      },
      "AshtakavargaPrastaraTarget": {
        "type": "object",
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          },
          "moon": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          },
          "mars": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          },
          "mercury": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          },
          "jupiter": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          },
          "venus": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          },
          "saturn": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          },
          "ascendant": {
            "$ref": "#/components/schemas/AshtakavargaBinaryRow"
          }
        },
        "required": [
          "sun",
          "moon",
          "mars",
          "mercury",
          "jupiter",
          "venus",
          "saturn",
          "ascendant"
        ],
        "additionalProperties": false
      },
      "AshtakavargaPrastara": {
        "type": "object",
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/AshtakavargaPrastaraTarget"
          },
          "moon": {
            "$ref": "#/components/schemas/AshtakavargaPrastaraTarget"
          },
          "mars": {
            "$ref": "#/components/schemas/AshtakavargaPrastaraTarget"
          },
          "mercury": {
            "$ref": "#/components/schemas/AshtakavargaPrastaraTarget"
          },
          "jupiter": {
            "$ref": "#/components/schemas/AshtakavargaPrastaraTarget"
          },
          "venus": {
            "$ref": "#/components/schemas/AshtakavargaPrastaraTarget"
          },
          "saturn": {
            "$ref": "#/components/schemas/AshtakavargaPrastaraTarget"
          }
        },
        "required": [
          "sun",
          "moon",
          "mars",
          "mercury",
          "jupiter",
          "venus",
          "saturn"
        ],
        "additionalProperties": false
      },
      "AshtakavargaHouse": {
        "type": "object",
        "properties": {
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "benefic_points": {
            "type": "integer",
            "minimum": 0,
            "maximum": 56
          }
        },
        "required": [
          "house",
          "sign_index",
          "sign",
          "benefic_points"
        ],
        "additionalProperties": false
      },
      "AshtakavargaSarva": {
        "type": "object",
        "properties": {
          "benefic_points": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 56
            },
            "minItems": 12,
            "maxItems": 12
          },
          "total": {
            "type": "integer",
            "const": 337
          },
          "houses_from_ascendant": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AshtakavargaHouse"
            },
            "minItems": 12,
            "maxItems": 12
          }
        },
        "required": [
          "benefic_points",
          "total",
          "houses_from_ascendant"
        ],
        "additionalProperties": false
      },
      "AshtakavargaPointRow": {
        "type": "array",
        "items": {
          "type": "integer",
          "minimum": 0,
          "maximum": 8
        },
        "minItems": 12,
        "maxItems": 12
      },
      "AshtakavargaGrahaTerms": {
        "type": "object",
        "properties": {
          "sun": {
            "type": "integer",
            "minimum": 0
          },
          "moon": {
            "type": "integer",
            "minimum": 0
          },
          "mars": {
            "type": "integer",
            "minimum": 0
          },
          "mercury": {
            "type": "integer",
            "minimum": 0
          },
          "jupiter": {
            "type": "integer",
            "minimum": 0
          },
          "venus": {
            "type": "integer",
            "minimum": 0
          },
          "saturn": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "sun",
          "moon",
          "mars",
          "mercury",
          "jupiter",
          "venus",
          "saturn"
        ],
        "additionalProperties": false
      },
      "AshtakavargaPinda": {
        "type": "object",
        "properties": {
          "rashi": {
            "type": "integer",
            "minimum": 0
          },
          "graha": {
            "type": "integer",
            "minimum": 0
          },
          "shodhya": {
            "type": "integer",
            "minimum": 0
          },
          "graha_terms": {
            "$ref": "#/components/schemas/AshtakavargaGrahaTerms"
          }
        },
        "required": [
          "rashi",
          "graha",
          "shodhya",
          "graha_terms"
        ],
        "additionalProperties": false
      },
      "AshtakavargaReductionRow": {
        "type": "object",
        "properties": {
          "before_reduction": {
            "$ref": "#/components/schemas/AshtakavargaPointRow"
          },
          "after_trikona_shodhana": {
            "$ref": "#/components/schemas/AshtakavargaPointRow"
          },
          "after_ekadhipatya_shodhana": {
            "$ref": "#/components/schemas/AshtakavargaPointRow"
          },
          "pinda": {
            "$ref": "#/components/schemas/AshtakavargaPinda"
          }
        },
        "required": [
          "before_reduction",
          "after_trikona_shodhana",
          "after_ekadhipatya_shodhana",
          "pinda"
        ],
        "additionalProperties": false
      },
      "AshtakavargaReductionRows": {
        "type": "object",
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/AshtakavargaReductionRow"
          },
          "moon": {
            "$ref": "#/components/schemas/AshtakavargaReductionRow"
          },
          "mars": {
            "$ref": "#/components/schemas/AshtakavargaReductionRow"
          },
          "mercury": {
            "$ref": "#/components/schemas/AshtakavargaReductionRow"
          },
          "jupiter": {
            "$ref": "#/components/schemas/AshtakavargaReductionRow"
          },
          "venus": {
            "$ref": "#/components/schemas/AshtakavargaReductionRow"
          },
          "saturn": {
            "$ref": "#/components/schemas/AshtakavargaReductionRow"
          }
        },
        "required": [
          "sun",
          "moon",
          "mars",
          "mercury",
          "jupiter",
          "venus",
          "saturn"
        ],
        "additionalProperties": false
      },
      "AshtakavargaReductions": {
        "type": "object",
        "properties": {
          "ruleset": {
            "type": "string",
            "const": "parashara_bphs_chapters_67_69_reductions_pinda_v1"
          },
          "source": {
            "type": "string",
            "const": "Brihat Parashara Hora Shastra chapters 67-69"
          },
          "conventions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "occupied_sign_indexes": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 12
            },
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true
          },
          "rows": {
            "$ref": "#/components/schemas/AshtakavargaReductionRows"
          },
          "reduced_row_summary": {
            "type": "object",
            "properties": {
              "benefic_points": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 56
                },
                "minItems": 12,
                "maxItems": 12
              },
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 337
              },
              "classical_sarvashtakavarga": {
                "type": "boolean",
                "const": false
              }
            },
            "required": [
              "benefic_points",
              "total",
              "classical_sarvashtakavarga"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "ruleset",
          "source",
          "conventions",
          "occupied_sign_indexes",
          "rows",
          "reduced_row_summary"
        ],
        "additionalProperties": false
      },
      "AshtakavargaMetadata": {
        "type": "object",
        "properties": {
          "ruleset": {
            "type": "string",
            "const": "parashara_bphs_chapter_66_benefic_places_v1"
          },
          "source": {
            "type": "string",
            "const": "Brihat Parashara Hora Shastra chapter 66 benefic-place tables"
          },
          "calculation_status": {
            "type": "string",
            "const": "experimental_beta"
          },
          "practitioner_review": {
            "type": "string",
            "const": "not_completed"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_sidereal_retained_nutation"
          },
          "ascendant": {
            "type": "string",
            "const": "apparent_sidereal_ecliptic_ascendant"
          },
          "point_terminology": {
            "type": "string",
            "const": "benefic_point_modern_bindu_usage"
          },
          "reductions": {
            "type": "boolean"
          },
          "pinda_sadhana": {
            "type": "boolean"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "predictions": {
            "type": "boolean",
            "const": false
          }
        },
        "required": [
          "ruleset",
          "source",
          "calculation_status",
          "practitioner_review",
          "frame",
          "ascendant",
          "point_terminology",
          "reductions",
          "pinda_sadhana",
          "interpretations",
          "predictions"
        ],
        "additionalProperties": false
      },
      "AshtakavargaResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "ashtakavarga"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              "include_reductions": {
                "type": "boolean",
                "const": true
              }
            },
            "required": [
              "birth",
              "ayanamsa"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "zodiac": {
            "type": "string",
            "const": "sidereal"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "sign_positions": {
            "$ref": "#/components/schemas/AshtakavargaSignPositions"
          },
          "bhinnashtakavarga": {
            "$ref": "#/components/schemas/AshtakavargaBhinna"
          },
          "prastara": {
            "$ref": "#/components/schemas/AshtakavargaPrastara"
          },
          "sarvashtakavarga": {
            "$ref": "#/components/schemas/AshtakavargaSarva"
          },
          "reductions": {
            "$ref": "#/components/schemas/AshtakavargaReductions"
          },
          "metadata": {
            "$ref": "#/components/schemas/AshtakavargaMetadata"
          }
        },
        "required": [
          "status",
          "type",
          "input",
          "birth_utc",
          "zodiac",
          "ayanamsa",
          "sign_positions",
          "bhinnashtakavarga",
          "prastara",
          "sarvashtakavarga",
          "metadata"
        ],
        "additionalProperties": false
      },
      "CivilTimeInput": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC"
          }
        },
        "required": [
          "date",
          "time"
        ],
        "additionalProperties": false
      },
      "BetaMomentResult": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC",
            "description": "Valid IANA zone; UTC when omitted. Ambiguous and nonexistent civil times are rejected."
          },
          "lat": {
            "type": "number",
            "exclusiveMinimum": -90,
            "exclusiveMaximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "date",
          "time",
          "timezone",
          "lat",
          "lon"
        ],
        "additionalProperties": false
      },
      "PanchangRequest": {
        "type": "object",
        "properties": {
          "at": {
            "$ref": "#/components/schemas/PanchangMomentInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          }
        },
        "required": [
          "at"
        ],
        "additionalProperties": false,
        "description": "Strict civil snapshot at the requested instant, not automatically at sunrise. Sidereal Lahiri default. Sunrise/sunset belong to the requested local civil date at elevation zero; ambiguous/nonexistent midnight boundaries return 400. No festivals, regional calendar or arbitrary event search. Latitude is restricted to inclusive [-88,88] for the verified solar-event solver domain. Returned solar candidates must satisfy a geometric crossing check; unsupported near-tangent geometry returns 400 instead of invented events. A solar event inside a recorded leap second returns 400 because its local civil timestamp cannot represent second 60."
      },
      "PanchangWeekday": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "minimum": 0,
            "maximum": 6
          },
          "name": {
            "type": "string",
            "enum": [
              "Sunday",
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday"
            ]
          }
        },
        "required": [
          "index",
          "name"
        ],
        "additionalProperties": false
      },
      "PanchangVara": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "const": "available"
              },
              "index": {
                "type": "integer",
                "minimum": 0,
                "maximum": 6
              },
              "name": {
                "type": "string"
              },
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "status",
              "index",
              "name",
              "start_utc"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "unavailable_no_sunrise",
                  "unavailable_previous_date"
                ]
              },
              "index": {
                "type": "null"
              },
              "name": {
                "type": "null"
              },
              "start_utc": {
                "type": "null"
              }
            },
            "required": [
              "status",
              "index",
              "name",
              "start_utc"
            ],
            "additionalProperties": false
          }
        ],
        "description": "Most recent sunrise on the current/previous civil date, Sunday index0. No extension through a polar season. Explicit nulls when the bounded sunrise cannot define vara."
      },
      "LocalSolarTimestamp": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}[+-]\\d{2}:\\d{2}(?::\\d{2})?$",
        "description": "ISO local timestamp with historical IANA offsets, which can include offset seconds (not always RFC3339). Use the adjacent utc field for interoperable instant parsing."
      },
      "SolarEvent": {
        "type": "object",
        "properties": {
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "local": {
            "$ref": "#/components/schemas/LocalSolarTimestamp"
          }
        },
        "required": [
          "utc",
          "local"
        ],
        "additionalProperties": false
      },
      "PanchangSolarEvents": {
        "type": "object",
        "properties": {
          "local_date": {
            "$ref": "#/components/schemas/Date"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "sunrise": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SolarEvent"
            },
            "maxItems": 3
          },
          "sunset": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SolarEvent"
            },
            "maxItems": 3
          },
          "sunrise_status": {
            "type": "string",
            "enum": [
              "occurs",
              "no_event"
            ]
          },
          "sunset_status": {
            "type": "string",
            "enum": [
              "occurs",
              "no_event"
            ]
          },
          "model": {
            "type": "string",
            "const": "usno_standard_50_arcminutes"
          },
          "horizon_degrees": {
            "type": "number",
            "const": -0.8333333333333334
          },
          "elevation_m": {
            "type": "number",
            "const": 0
          }
        },
        "required": [
          "local_date",
          "timezone",
          "start_utc",
          "end_utc",
          "sunrise",
          "sunset",
          "sunrise_status",
          "sunset_status",
          "model",
          "horizon_degrees",
          "elevation_m"
        ],
        "additionalProperties": false,
        "description": "Bounded [start_utc,end_utc) local civil day; 23/25-hour DST days supported. Standard USNO -50 arcminute horizon at elevation 0, not Hindu-geocentric sunrise. Polar no-event results remain empty arrays; no transit-as-sunrise fallback."
      },
      "PanchangMetadata": {
        "type": "object",
        "properties": {
          "calculation_status": {
            "type": "string",
            "const": "experimental_beta"
          },
          "practitioner_review": {
            "type": "string",
            "const": "not_completed"
          },
          "classification_precision": {
            "type": "string",
            "const": "unrounded_binary64"
          },
          "classification_time": {
            "type": "string",
            "const": "requested_instant"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_sidereal_retained_nutation"
          },
          "intervals": {
            "type": "string",
            "const": "half_open"
          },
          "weekday_basis": {
            "type": "string",
            "const": "local_civil_midnight"
          },
          "vara_basis": {
            "type": "string",
            "const": "most_recent_sunrise_on_current_or_previous_civil_date"
          },
          "regional_calendar": {
            "type": "boolean",
            "const": false
          },
          "festivals": {
            "type": "boolean",
            "const": false
          }
        },
        "required": [
          "calculation_status",
          "practitioner_review",
          "classification_precision",
          "classification_time",
          "frame",
          "intervals",
          "weekday_basis",
          "vara_basis",
          "regional_calendar",
          "festivals"
        ],
        "additionalProperties": false
      },
      "PanchangResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "panchang"
          },
          "input": {
            "type": "object",
            "properties": {
              "at": {
                "$ref": "#/components/schemas/PanchangMomentResult"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              }
            },
            "required": [
              "at",
              "ayanamsa"
            ],
            "additionalProperties": false
          },
          "at_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "zodiac": {
            "type": "string",
            "const": "sidereal"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "longitudes": {
            "type": "object",
            "properties": {
              "sun_tropical": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "moon_tropical": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "sun_sidereal": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "moon_sidereal": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              }
            },
            "required": [
              "sun_tropical",
              "moon_tropical",
              "sun_sidereal",
              "moon_sidereal"
            ],
            "additionalProperties": false
          },
          "tithi": {
            "type": "object",
            "properties": {
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 30
              },
              "name": {
                "type": "string"
              },
              "paksha": {
                "type": "string",
                "enum": [
                  "shukla",
                  "krishna"
                ]
              },
              "paksha_index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 15
              },
              "elongation_degrees": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              }
            },
            "required": [
              "index",
              "name",
              "paksha",
              "paksha_index",
              "elongation_degrees"
            ],
            "additionalProperties": false
          },
          "nakshatra": {
            "type": "object",
            "properties": {
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 27
              },
              "name": {
                "type": "string"
              },
              "lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "pada": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4
              },
              "sidereal_longitude": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              }
            },
            "required": [
              "index",
              "name",
              "lord",
              "pada",
              "sidereal_longitude"
            ],
            "additionalProperties": false
          },
          "yoga": {
            "type": "object",
            "properties": {
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 27
              },
              "name": {
                "type": "string"
              },
              "sum_degrees": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              }
            },
            "required": [
              "index",
              "name",
              "sum_degrees"
            ],
            "additionalProperties": false
          },
          "karana": {
            "type": "object",
            "properties": {
              "index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 60
              },
              "name": {
                "type": "string"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "fixed",
                  "repeating"
                ]
              }
            },
            "required": [
              "index",
              "name",
              "kind"
            ],
            "additionalProperties": false
          },
          "weekday": {
            "$ref": "#/components/schemas/PanchangWeekday"
          },
          "vara": {
            "$ref": "#/components/schemas/PanchangVara"
          },
          "solar_events": {
            "$ref": "#/components/schemas/PanchangSolarEvents"
          },
          "metadata": {
            "$ref": "#/components/schemas/PanchangMetadata"
          }
        },
        "required": [
          "status",
          "type",
          "input",
          "at_utc",
          "zodiac",
          "ayanamsa",
          "longitudes",
          "tithi",
          "nakshatra",
          "yoga",
          "karana",
          "weekday",
          "vara",
          "solar_events",
          "metadata"
        ],
        "additionalProperties": false
      },
      "VargaSvgRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "division": {
            "type": "integer",
            "enum": [
              1,
              2,
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              16,
              20,
              24,
              27,
              30,
              40,
              45,
              60,
              81,
              108,
              144,
              150
            ],
            "default": 1
          },
          "layout": {
            "type": "string",
            "enum": [
              "north_indian",
              "south_indian"
            ],
            "default": "north_indian"
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ],
            "default": "dark"
          },
          "include_png": {
            "type": "boolean",
            "default": false,
            "description": "When true, also returns a deterministic PNG derived only from this response's server-rendered SVG. Omission or false preserves the predecessor response exactly."
          },
          "d150_method": {
            "type": "string",
            "enum": [
              "pvr_jhora_own_sign_uniform_direct",
              "deva_keralam_chandra_kala_nadi_non_uniform",
              "deva_keralam_chandra_kala_nadi_uniform_direct",
              "parivritti_cyclic",
              "movable_aries_forward_fixed_taurus_reverse_dual_gemini_forward",
              "movable_aries_forward_fixed_scorpio_reverse_dual_sagittarius_forward",
              "movable_aries_forward_fixed_leo_reverse_dual_sagittarius_forward",
              "movable_source_sign_forward_fixed_source_sign_reverse_dual_source_sign_forward"
            ],
            "description": "Optional only with division 150. Omission preserves the P.V.R./JHora uniform-direct R170 response."
          }
        },
        "required": [
          "birth"
        ],
        "additionalProperties": false,
        "description": "Original sidereal D1/D2/D3/D4/D5/D6/D7/D8/D9/D10/D11/D12/D16/D20/D24/D27/D30/D40/D45/D60/D81/D108/D144/D150 sign-placement SVG. Default division1 differs from /vargas default9. North fixes houses; South fixes signs. No supplied markup/chart/URL, and no bhava-chalit, outer planets or interpretation controls. Optional d150_method is valid only with explicit division 150; omission retains uniform-direct D150.",
        "if": {
          "type": "object",
          "properties": {
            "d150_method": {
              "type": "string"
            }
          },
          "required": [
            "d150_method"
          ]
        },
        "then": {
          "type": "object",
          "properties": {
            "division": {
              "type": "integer",
              "const": 150
            }
          },
          "required": [
            "division"
          ]
        }
      },
      "VargaSvgResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "varga_svg"
          },
          "svg": {
            "type": "string",
            "minLength": 1,
            "maxLength": 131072,
            "description": "Original static SVG source inside JSON, capped at 128 KiB UTF-8; display as an image, not arbitrary HTML."
          },
          "layout": {
            "type": "string",
            "enum": [
              "north_indian",
              "south_indian"
            ]
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ]
          },
          "chart": {
            "$ref": "#/components/schemas/VargasResponse"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "renderer": {
                "type": "string",
                "const": "cosmicephemeris-original-varga-svg-v1"
              },
              "layout_size": {
                "type": "string",
                "const": "1200x1420"
              },
              "position_source": {
                "type": "string",
                "const": "unrounded-vargas-response"
              },
              "house_convention": {
                "type": "string",
                "const": "signs_from_divisional_ascendant"
              },
              "interpretations": {
                "type": "boolean",
                "const": false
              }
            },
            "required": [
              "renderer",
              "layout_size",
              "position_source",
              "house_convention",
              "interpretations"
            ],
            "additionalProperties": false
          },
          "png": {
            "$ref": "#/components/schemas/PngExport",
            "description": "Present only when include_png is true."
          }
        },
        "required": [
          "status",
          "type",
          "svg",
          "layout",
          "theme",
          "chart",
          "metadata"
        ],
        "additionalProperties": false
      },
      "CompositeRequest": {
        "type": "object",
        "properties": {
          "personA": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "personB": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac",
            "default": "tropical"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign"
            ],
            "default": "equal"
          }
        },
        "required": [
          "personA",
          "personB"
        ],
        "additionalProperties": false,
        "description": "Shortest-arc midpoint composite. Antipodal/near-antipodal points reject; no arbitrary flip. Houses are synthetic Equal/Whole Sign from midpoint Ascendant, not physical geographic cusps. Not a Davison chart; no Placidus, node, speed or interpretation option."
      },
      "SecondaryProgressionsRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "target": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac",
            "default": "tropical"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign"
            ],
            "default": "equal"
          }
        },
        "required": [
          "birth",
          "target"
        ],
        "additionalProperties": false,
        "description": "Day-for-year secondary-progressed PLANETS only. Required target>=birth instant; all civil dates 1900–2050, times known, UTC defaults and DST rejection. Fixed365.2421904-day year in TT. Returned angles/houses are explicitly natal context, never progressed. No progressed angles, houses, aspects, nodes, speed or arbitrary year model."
      },
      "WesternPoint": {
        "type": "object",
        "properties": {
          "lon": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "deg_in_sign": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 30
          }
        },
        "required": [
          "lon",
          "sign",
          "deg_in_sign"
        ],
        "additionalProperties": false
      },
      "WesternPlanets": {
        "type": "object",
        "properties": {
          "Sun": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Moon": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Mercury": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Venus": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Mars": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Jupiter": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Saturn": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Uranus": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Neptune": {
            "$ref": "#/components/schemas/WesternPoint"
          },
          "Pluto": {
            "$ref": "#/components/schemas/WesternPoint"
          }
        },
        "required": [
          "Sun",
          "Moon",
          "Mercury",
          "Venus",
          "Mars",
          "Jupiter",
          "Saturn",
          "Uranus",
          "Neptune",
          "Pluto"
        ],
        "additionalProperties": false
      },
      "WesternAngles": {
        "type": "object",
        "properties": {
          "ascendant": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "mc": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          }
        },
        "required": [
          "ascendant",
          "mc"
        ],
        "additionalProperties": false
      },
      "WesternHouses": {
        "type": "object",
        "properties": {
          "system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign"
            ]
          },
          "cusps": {
            "type": "object",
            "properties": {
              "1": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "2": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "3": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "4": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "5": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "6": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "7": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "8": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "9": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "10": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "11": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "12": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              }
            },
            "required": [
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10",
              "11",
              "12"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "system",
          "cusps"
        ],
        "additionalProperties": false
      },
      "CompositeMetadata": {
        "type": "object",
        "properties": {
          "physical_chart": {
            "type": "boolean",
            "const": false
          },
          "source_frame": {
            "type": "string",
            "const": "apparent-geocentric-ecliptic-of-each-birth-date"
          },
          "position_precision": {
            "type": "string",
            "const": "unrounded-binary64"
          },
          "angle_policy": {
            "type": "string",
            "const": "independent-shortest-arc-ascendant-and-mc-midpoints"
          },
          "house_policy": {
            "type": "string",
            "enum": [
              "synthetic-equal-from-midpoint-ascendant",
              "synthetic-whole-sign-from-midpoint-ascendant"
            ]
          },
          "antipodal_policy": {
            "type": "string",
            "const": "reject-within-1e-10-degrees"
          },
          "inner_planet_policy": {
            "type": "string",
            "const": "no-180-degree-flips"
          },
          "sidereal_policy": {
            "type": "string",
            "enum": [
              "per-birth-date-ayanamsa-before-midpoint",
              "not-applicable"
            ]
          },
          "aspect_policy": {
            "type": "string",
            "const": "existing-natal-longitude-orbs"
          },
          "nodes": {
            "type": "string",
            "const": "not-included"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "practitioner_review": {
            "type": "string",
            "const": "not-completed"
          }
        },
        "required": [
          "physical_chart",
          "source_frame",
          "position_precision",
          "angle_policy",
          "house_policy",
          "antipodal_policy",
          "inner_planet_policy",
          "sidereal_policy",
          "aspect_policy",
          "nodes",
          "interpretations",
          "practitioner_review"
        ],
        "additionalProperties": false
      },
      "CompositeResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "composite"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "method": {
            "type": "string",
            "const": "shortest_arc_midpoint"
          },
          "input": {
            "type": "object",
            "properties": {
              "personA": {
                "$ref": "#/components/schemas/BetaMomentResult"
              },
              "personB": {
                "$ref": "#/components/schemas/BetaMomentResult"
              },
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              },
              "house_system": {
                "type": "string",
                "enum": [
                  "equal",
                  "whole_sign"
                ]
              }
            },
            "required": [
              "personA",
              "personB",
              "zodiac",
              "ayanamsa",
              "house_system"
            ],
            "additionalProperties": false
          },
          "source_utc": {
            "type": "object",
            "properties": {
              "personA": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "personB": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "personA",
              "personB"
            ],
            "additionalProperties": false
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "planets": {
            "$ref": "#/components/schemas/WesternPlanets"
          },
          "angles": {
            "$ref": "#/components/schemas/WesternAngles"
          },
          "houses": {
            "$ref": "#/components/schemas/WesternHouses"
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NatalAspect"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/CompositeMetadata"
          }
        },
        "required": [
          "type",
          "status",
          "method",
          "input",
          "source_utc",
          "zodiac",
          "ayanamsa",
          "planets",
          "angles",
          "houses",
          "aspects",
          "metadata"
        ],
        "additionalProperties": false
      },
      "ProgressedUtcTimestamp": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:(?:[0-5]\\d|60)\\.\\d{6}Z$",
        "description": "Derived UTC instant with six fractional digits. Second 60 is preserved during an actual recorded leap second; JavaScript Date and Python datetime cannot directly parse that value. Use progressed_tt_jd for display/reference only; no single-JD round-trip was used in the calculation."
      },
      "SecondaryProgressionsMetadata": {
        "type": "object",
        "properties": {
          "source_frame": {
            "type": "string",
            "const": "apparent-geocentric-ecliptic-of-each-ephemeris-date"
          },
          "position_precision": {
            "type": "string",
            "const": "unrounded-binary64"
          },
          "year_convention": {
            "type": "string",
            "const": "fixed-365.2421904-days-not-calendar-birthdays"
          },
          "time_policy": {
            "type": "string",
            "const": "uniform-TT-elapsed-days-divided-by-year-days"
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "utc_output": {
            "type": "string",
            "const": "leap-second-aware-ISO-8601"
          },
          "progressed_angles": {
            "type": "string",
            "const": "not-calculated"
          },
          "progressed_houses": {
            "type": "string",
            "const": "not-calculated"
          },
          "angle_policy": {
            "type": "string",
            "const": "fixed-natal-context-only"
          },
          "location_policy": {
            "type": "string",
            "const": "birth-location-for-natal-context-only"
          },
          "sidereal_policy": {
            "type": "string",
            "enum": [
              "per-ephemeris-date-ayanamsa",
              "not-applicable"
            ]
          },
          "aspects": {
            "type": "string",
            "const": "not-included"
          },
          "nodes": {
            "type": "string",
            "const": "not-included"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "practitioner_review": {
            "type": "string",
            "const": "not-completed"
          }
        },
        "required": [
          "source_frame",
          "position_precision",
          "year_convention",
          "time_policy",
          "timescale_data",
          "utc_output",
          "progressed_angles",
          "progressed_houses",
          "angle_policy",
          "location_policy",
          "sidereal_policy",
          "aspects",
          "nodes",
          "interpretations",
          "practitioner_review"
        ],
        "additionalProperties": false
      },
      "SecondaryProgressionsResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "secondary_progressions"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "method": {
            "type": "string",
            "const": "day_for_year"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/BetaMomentResult"
              },
              "target": {
                "type": "object",
                "properties": {
                  "date": {
                    "$ref": "#/components/schemas/Date"
                  },
                  "time": {
                    "$ref": "#/components/schemas/Time"
                  },
                  "timezone": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "required": [
                  "date",
                  "time",
                  "timezone"
                ],
                "additionalProperties": false
              },
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              },
              "house_system": {
                "type": "string",
                "enum": [
                  "equal",
                  "whole_sign"
                ]
              }
            },
            "required": [
              "birth",
              "target",
              "zodiac",
              "ayanamsa",
              "house_system"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "target_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "progressed_utc": {
            "$ref": "#/components/schemas/ProgressedUtcTimestamp"
          },
          "timing": {
            "type": "object",
            "properties": {
              "year_days": {
                "type": "number",
                "const": 365.2421904
              },
              "elapsed_years": {
                "type": "number",
                "minimum": 0
              },
              "progressed_days": {
                "type": "number",
                "minimum": 0
              },
              "time_scale": {
                "type": "string",
                "const": "TT"
              },
              "progressed_tt_jd": {
                "type": "number"
              }
            },
            "required": [
              "year_days",
              "elapsed_years",
              "progressed_days",
              "time_scale",
              "progressed_tt_jd"
            ],
            "additionalProperties": false
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "progressed_planets": {
            "$ref": "#/components/schemas/WesternPlanets"
          },
          "natal_context": {
            "type": "object",
            "properties": {
              "planets": {
                "$ref": "#/components/schemas/WesternPlanets"
              },
              "angles": {
                "$ref": "#/components/schemas/WesternAngles"
              },
              "houses": {
                "$ref": "#/components/schemas/WesternHouses"
              }
            },
            "required": [
              "planets",
              "angles",
              "houses"
            ],
            "additionalProperties": false
          },
          "metadata": {
            "$ref": "#/components/schemas/SecondaryProgressionsMetadata"
          }
        },
        "required": [
          "type",
          "status",
          "method",
          "input",
          "birth_utc",
          "target_utc",
          "progressed_utc",
          "timing",
          "zodiac",
          "ayanamsa",
          "progressed_planets",
          "natal_context",
          "metadata"
        ],
        "additionalProperties": false
      },
      "PanchangMomentInput": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC",
            "description": "Valid IANA zone; UTC when omitted. Ambiguous and nonexistent civil times are rejected."
          },
          "lat": {
            "type": "number",
            "minimum": -88,
            "maximum": 88,
            "description": "Panchang beta sunrise admission is limited to inclusive [-88,88] latitude."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "date",
          "time",
          "lat",
          "lon"
        ],
        "additionalProperties": false,
        "description": "Strict nested birth input; no unknown properties, nulls, booleans or numeric strings. Known civil time required; semantic date/DST/undefined-angle validation occurs on the server."
      },
      "PanchangMomentResult": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC",
            "description": "Valid IANA zone; UTC when omitted. Ambiguous and nonexistent civil times are rejected."
          },
          "lat": {
            "type": "number",
            "minimum": -88,
            "maximum": 88,
            "description": "Panchang beta sunrise admission is limited to inclusive [-88,88] latitude."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "date",
          "time",
          "timezone",
          "lat",
          "lon"
        ],
        "additionalProperties": false,
        "description": "Strict nested birth input; no unknown properties, nulls, booleans or numeric strings. Known civil time required; semantic date/DST/undefined-angle validation occurs on the server."
      },
      "LunarNodesRequest": {
        "type": "object",
        "properties": {
          "at": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac",
            "default": "tropical"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          }
        },
        "required": [
          "at"
        ],
        "additionalProperties": false,
        "description": "Beta mean and distinct geometric osculating lunar nodes at a known civil instant. No coordinates, user ephemeris, chart input or URLs. Civil dates 1900–2050; timezone conversion can cross the UTC year boundary. Tropical default; optional sidereal mean P03 ayanamsa subtraction, with true-model nutation retained. Existing chart/timeline node fields are unchanged."
      },
      "LunarNodePosition": {
        "type": "object",
        "properties": {
          "longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "deg_in_sign": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 30
          },
          "tropical_longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          }
        },
        "required": [
          "longitude",
          "sign",
          "deg_in_sign",
          "tropical_longitude"
        ],
        "additionalProperties": false,
        "description": "Four-decimal degrees are serialization resolution, not claimed physical accuracy. Longitude carries normalize before sign assignment."
      },
      "MeanLunarNodePair": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "const": "meeus-mean-node"
          },
          "frame": {
            "type": "string",
            "const": "mean-ecliptic-equinox-of-date"
          },
          "north": {
            "$ref": "#/components/schemas/LunarNodePosition"
          },
          "south": {
            "$ref": "#/components/schemas/LunarNodePosition"
          }
        },
        "required": [
          "model",
          "frame",
          "north",
          "south"
        ],
        "additionalProperties": false
      },
      "TrueLunarNodePair": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "const": "de421-osculating-node"
          },
          "frame": {
            "type": "string",
            "const": "true-ecliptic-equinox-of-date"
          },
          "north": {
            "$ref": "#/components/schemas/LunarNodePosition"
          },
          "south": {
            "$ref": "#/components/schemas/LunarNodePosition"
          }
        },
        "required": [
          "model",
          "frame",
          "north",
          "south"
        ],
        "additionalProperties": false
      },
      "LunarNodesMetadata": {
        "type": "object",
        "properties": {
          "ephemeris": {
            "type": "string",
            "const": "JPL DE421"
          },
          "mean_source": {
            "type": "string",
            "const": "existing engine/app/nodes.py TT mean-node polynomial"
          },
          "true_source": {
            "type": "string",
            "const": "same-instant geometric Moon-minus-Earth position and inertial velocity"
          },
          "true_geometry": {
            "type": "string",
            "const": "ascending intersection of instantaneous orbital plane and date ecliptic"
          },
          "corrections": {
            "type": "string",
            "const": "no light time, aberration, observer location, or rotating-frame velocity term"
          },
          "frame_policy": {
            "type": "string",
            "const": "frame names identify tropical source axes before any sidereal subtraction"
          },
          "sidereal_policy": {
            "type": "string",
            "const": "existing mean IAU 2006/P03 ayanamsa subtraction; true-model nutation retained"
          },
          "legacy_compatibility": {
            "type": "string",
            "const": "existing chart true equals mean; chart nodes and timeline Rahu/Ketu are unchanged"
          },
          "limitations": {
            "type": "string",
            "const": "osculating true is an instantaneous model, not an eclipse/event prediction or universal true-node convention"
          },
          "precision": {
            "type": "string",
            "const": "four decimal degrees are output resolution, not an accuracy guarantee"
          }
        },
        "required": [
          "ephemeris",
          "mean_source",
          "true_source",
          "true_geometry",
          "corrections",
          "frame_policy",
          "sidereal_policy",
          "legacy_compatibility",
          "limitations",
          "precision"
        ],
        "additionalProperties": false
      },
      "NormalizedCivilTime": {
        "type": "object",
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC"
          }
        },
        "required": [
          "date",
          "time",
          "timezone"
        ],
        "additionalProperties": false
      },
      "LunarNodesResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "lunar_nodes"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "at": {
            "type": "object",
            "properties": {
              "date": {
                "$ref": "#/components/schemas/Date"
              },
              "time": {
                "$ref": "#/components/schemas/Time"
              },
              "timezone": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100,
                "default": "UTC"
              },
              "utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "date",
              "time",
              "timezone",
              "utc"
            ],
            "additionalProperties": false
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "mean": {
            "$ref": "#/components/schemas/MeanLunarNodePair"
          },
          "true": {
            "$ref": "#/components/schemas/TrueLunarNodePair"
          },
          "metadata": {
            "$ref": "#/components/schemas/LunarNodesMetadata"
          }
        },
        "required": [
          "type",
          "status",
          "at",
          "zodiac",
          "ayanamsa",
          "mean",
          "true",
          "metadata"
        ],
        "additionalProperties": false
      },
      "ReturnLocation": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "exclusiveMinimum": -90,
            "exclusiveMaximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "lat",
          "lon"
        ],
        "additionalProperties": false
      },
      "ReturnsRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "body": {
            "type": "string",
            "enum": [
              "sun",
              "moon"
            ]
          },
          "after": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac",
            "default": "tropical"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign"
            ],
            "default": "equal"
          },
          "location": {
            "$ref": "#/components/schemas/ReturnLocation"
          }
        },
        "required": [
          "birth",
          "body",
          "after"
        ],
        "additionalProperties": false,
        "description": "Beta first solar or lunar longitude return beyond after +1 millisecond, subject to the documented numerical equality allowance, followed by a physical chart at that root. after may precede birth. Both civil dates 1900–2050; birth UTC and the complete fixed search window (Sun 370 TT days, Moon 32 TT days) must stay in UTC 1900–2050; no window clipping. Tropical/Equal defaults. Sidereal uses each ephemeris date's mean P03 ayanamsa with nutation retained. Return location defaults to birth coordinates and changes houses, not the return instant. No Placidus, arbitrary bodies/targets/search tolerances, cycles or predictions."
      },
      "ReturnUtcTimestamp": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}T(?:[01]\\d|2[0-3]):[0-5]\\d:(?:[0-5]\\d|60)\\.\\d{6}Z$",
        "description": "Root or bracket UTC instant with six fractional digits; actual leap second60 is preserved. JavaScript Date/Python datetime cannot directly parse second60. Numerical subsecond tolerance is not physical event-time accuracy. The single TT JD is a display/reference field; the chart is calculated using the two-part root Time object."
      },
      "ReturnSearch": {
        "type": "object",
        "properties": {
          "time_scale": {
            "type": "string",
            "const": "TT"
          },
          "max_days": {
            "type": "integer",
            "enum": [
              370,
              32
            ]
          },
          "sample_step_days": {
            "type": "number",
            "enum": [
              2,
              0.25
            ]
          },
          "samples": {
            "type": "integer",
            "enum": [
              186,
              129
            ]
          },
          "iterations": {
            "type": "integer",
            "minimum": 1,
            "maximum": 48
          },
          "max_iterations": {
            "type": "number",
            "const": 48
          },
          "start_exclusion_seconds": {
            "type": "number",
            "const": 0.001
          },
          "root_tt_jd": {
            "type": "number"
          },
          "residual_deg": {
            "type": "number",
            "minimum": -1e-7,
            "maximum": 1e-7
          },
          "angular_tolerance_deg": {
            "type": "number",
            "const": 1e-7
          },
          "time_tolerance_seconds": {
            "type": "number",
            "const": 0.001
          },
          "bracket": {
            "type": "object",
            "properties": {
              "start_utc": {
                "$ref": "#/components/schemas/ReturnUtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/ReturnUtcTimestamp"
              },
              "width_seconds": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 0.001
              }
            },
            "required": [
              "start_utc",
              "end_utc",
              "width_seconds"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "time_scale",
          "max_days",
          "sample_step_days",
          "samples",
          "iterations",
          "max_iterations",
          "start_exclusion_seconds",
          "root_tt_jd",
          "residual_deg",
          "angular_tolerance_deg",
          "time_tolerance_seconds",
          "bracket"
        ],
        "additionalProperties": false
      },
      "ReturnChart": {
        "type": "object",
        "properties": {
          "status": {
            "const": "ok"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "planets": {
            "$ref": "#/components/schemas/Planets"
          },
          "houses": {
            "type": "object",
            "properties": {
              "ascendant": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "mc": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "systems": {
                "type": "object",
                "properties": {
                  "equal": {
                    "$ref": "#/components/schemas/HouseSystem"
                  },
                  "whole_sign": {
                    "$ref": "#/components/schemas/HouseSystem"
                  }
                },
                "required": [],
                "additionalProperties": false,
                "minProperties": 1,
                "maxProperties": 1
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "zodiac": {
                    "$ref": "#/components/schemas/Zodiac"
                  },
                  "ayanamsa": {
                    "$ref": "#/components/schemas/AyanamsaResult"
                  }
                },
                "required": [
                  "zodiac",
                  "ayanamsa"
                ],
                "additionalProperties": true
              }
            },
            "required": [
              "ascendant",
              "mc",
              "systems",
              "metadata"
            ],
            "additionalProperties": true,
            "description": "Physical return-location houses; exactly one selected Equal/Whole Sign system."
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NatalAspect"
            }
          },
          "nodes": {
            "$ref": "#/components/schemas/Nodes"
          },
          "metadata": {
            "type": "object",
            "properties": {
              "note": {
                "type": "string"
              }
            },
            "required": [
              "note"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "status",
          "zodiac",
          "ayanamsa",
          "planets",
          "houses",
          "aspects",
          "nodes",
          "metadata"
        ],
        "additionalProperties": true,
        "description": "Existing chart serialization evaluated at the exact root Time object and requested location. Exactly one selected Equal/Whole Sign house system. Legacy chart mean-node aliases and rounding conventions remain unchanged; use lunar-nodes separately for a distinct osculating node model."
      },
      "ReturnsMetadata": {
        "type": "object",
        "properties": {
          "ephemeris": {
            "type": "string",
            "const": "JPL-DE421"
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "source_frame": {
            "type": "string",
            "const": "apparent-geocentric-ecliptic-of-each-ephemeris-date"
          },
          "target_policy": {
            "type": "string",
            "const": "unrounded-natal-longitude-in-selected-zodiac"
          },
          "sidereal_policy": {
            "type": "string",
            "enum": [
              "per-ephemeris-date-mean-P03-ayanamsa-with-nutation-retained",
              "not-applicable"
            ]
          },
          "search_policy": {
            "type": "string",
            "const": "first-forward-crossing-after-one-millisecond-start-exclusion"
          },
          "window_policy": {
            "type": "string",
            "const": "full-fixed-TT-window-required-without-clipping"
          },
          "location_policy": {
            "type": "string",
            "enum": [
              "explicit-return-location",
              "birth-location"
            ]
          },
          "chart_time_policy": {
            "type": "string",
            "const": "root-Time-object-without-civil-roundtrip"
          },
          "chart_precision": {
            "type": "string",
            "const": "existing-chart-serialization"
          },
          "utc_output": {
            "type": "string",
            "const": "leap-second-aware-ISO-8601"
          },
          "root_tt_jd_policy": {
            "type": "string",
            "const": "display-only-single-float-not-used-for-chart"
          },
          "root_precision": {
            "type": "string",
            "const": "numerical-tolerance-not-physical-event-accuracy"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign"
            ]
          },
          "nodes": {
            "type": "string",
            "const": "existing-mean-node-contract"
          },
          "aspects": {
            "type": "string",
            "const": "existing-natal-longitude-orbs"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "practitioner_review": {
            "type": "string",
            "const": "not-completed"
          }
        },
        "required": [
          "ephemeris",
          "timescale_data",
          "source_frame",
          "target_policy",
          "sidereal_policy",
          "search_policy",
          "window_policy",
          "location_policy",
          "chart_time_policy",
          "chart_precision",
          "utc_output",
          "root_tt_jd_policy",
          "root_precision",
          "house_system",
          "nodes",
          "aspects",
          "interpretations",
          "practitioner_review"
        ],
        "additionalProperties": false
      },
      "ReturnsResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "returns"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "method": {
            "type": "string",
            "const": "next_longitude_return"
          },
          "body": {
            "type": "string",
            "enum": [
              "sun",
              "moon"
            ]
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/BetaMomentResult"
              },
              "body": {
                "type": "string",
                "enum": [
                  "sun",
                  "moon"
                ]
              },
              "after": {
                "$ref": "#/components/schemas/NormalizedCivilTime"
              },
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              },
              "house_system": {
                "type": "string",
                "enum": [
                  "equal",
                  "whole_sign"
                ]
              },
              "location": {
                "$ref": "#/components/schemas/ReturnLocation"
              }
            },
            "required": [
              "birth",
              "body",
              "after",
              "zodiac",
              "ayanamsa",
              "house_system",
              "location"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "after_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "return_utc": {
            "$ref": "#/components/schemas/ReturnUtcTimestamp"
          },
          "natal_longitude_deg": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "return_longitude_deg": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "chart": {
            "$ref": "#/components/schemas/ReturnChart"
          },
          "search": {
            "$ref": "#/components/schemas/ReturnSearch"
          },
          "metadata": {
            "$ref": "#/components/schemas/ReturnsMetadata"
          }
        },
        "required": [
          "type",
          "status",
          "method",
          "body",
          "zodiac",
          "ayanamsa",
          "input",
          "birth_utc",
          "after_utc",
          "return_utc",
          "natal_longitude_deg",
          "return_longitude_deg",
          "chart",
          "search",
          "metadata"
        ],
        "additionalProperties": false
      },
      "VimshottariResponseDepth2": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "vimshottari"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              }
            },
            "required": [
              "birth",
              "ayanamsa"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "zodiac": {
            "type": "string",
            "const": "sidereal"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "moon": {
            "type": "object",
            "properties": {
              "sidereal_longitude": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "nakshatra": {
                "type": "object",
                "properties": {
                  "index": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 27
                  },
                  "name": {
                    "type": "string"
                  },
                  "lord": {
                    "$ref": "#/components/schemas/DashaLord"
                  },
                  "pada": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4
                  },
                  "fraction_elapsed": {
                    "type": "number",
                    "minimum": 0,
                    "exclusiveMaximum": 1
                  }
                },
                "required": [
                  "index",
                  "name",
                  "lord",
                  "pada",
                  "fraction_elapsed"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "sidereal_longitude",
              "nakshatra"
            ],
            "additionalProperties": false
          },
          "birth_balance": {
            "type": "object",
            "properties": {
              "lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "subperiod_lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "elapsed_years": {
                "type": "number",
                "minimum": 0
              },
              "remaining_years": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "remaining_days": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "lord",
              "subperiod_lord",
              "elapsed_years",
              "remaining_years",
              "remaining_days",
              "start_utc",
              "end_utc"
            ],
            "additionalProperties": false
          },
          "cycle": {
            "type": "object",
            "properties": {
              "years": {
                "type": "number",
                "const": 120
              },
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "years",
              "start_utc",
              "end_utc"
            ],
            "additionalProperties": false
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaPeriod"
            },
            "minItems": 9,
            "maxItems": 9
          },
          "metadata": {
            "$ref": "#/components/schemas/VimshottariMetadata"
          }
        },
        "required": [
          "status",
          "type",
          "input",
          "birth_utc",
          "zodiac",
          "ayanamsa",
          "moon",
          "birth_balance",
          "cycle",
          "periods",
          "metadata"
        ],
        "additionalProperties": false,
        "description": "All period timestamps are UTC with microsecond resolution and half-open intervals. Derived period offsets may extend beyond the birth ephemeris window; this does not extrapolate ephemeris positions. Unrounded Moon determines nakshatra and birth balance; elapsed duration is floored to microseconds. Experimental beta without practitioner sign-off."
      },
      "DashaAntardashaDepth3": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "years": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          },
          "subperiods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaSubperiod"
            },
            "minItems": 9,
            "maxItems": 9
          }
        },
        "required": [
          "lord",
          "years",
          "start_utc",
          "end_utc",
          "active_at_birth",
          "subperiods"
        ],
        "additionalProperties": false
      },
      "DashaPeriodDepth3": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "years": {
            "type": "integer",
            "enum": [
              7,
              20,
              6,
              10,
              18,
              16,
              19,
              17
            ]
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          },
          "subperiods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaAntardashaDepth3"
            },
            "minItems": 9,
            "maxItems": 9
          }
        },
        "required": [
          "lord",
          "years",
          "start_utc",
          "end_utc",
          "active_at_birth",
          "subperiods"
        ],
        "additionalProperties": false
      },
      "VimshottariMetadataDepth3": {
        "type": "object",
        "properties": {
          "calculation_status": {
            "type": "string",
            "const": "experimental_beta"
          },
          "practitioner_review": {
            "type": "string",
            "const": "not_completed"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_sidereal_retained_nutation"
          },
          "node_model": {
            "type": "string",
            "const": "mean_ascending_and_opposite_descending"
          },
          "classification_precision": {
            "type": "string",
            "const": "unrounded_binary64"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "year_length": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "const": "julian_365_25_days"
              },
              "days": {
                "type": "number",
                "const": 365.25
              },
              "seconds": {
                "type": "number",
                "const": 31557600
              }
            },
            "required": [
              "name",
              "days",
              "seconds"
            ],
            "additionalProperties": false
          },
          "interval": {
            "type": "string",
            "const": "[start_utc,end_utc)"
          },
          "timestamp_resolution": {
            "type": "string",
            "const": "microsecond"
          },
          "birth_balance_rounding": {
            "type": "string",
            "const": "elapsed_duration_floored_to_microseconds"
          },
          "cycle_anchor": {
            "type": "string",
            "const": "start_of_birth_mahadasha"
          },
          "period_timestamps": {
            "type": "string",
            "const": "theoretical_offsets_may_extend_beyond_birth_ephemeris_window_no_ephemeris_extrapolation"
          },
          "depth": {
            "type": "integer",
            "const": 3
          },
          "levels": {
            "type": "array",
            "const": [
              "mahadasha",
              "antardasha",
              "pratyantardasha"
            ],
            "items": {
              "type": "string"
            },
            "minItems": 3,
            "maxItems": 3
          },
          "period_counts": {
            "type": "object",
            "properties": {
              "mahadasha": {
                "type": "integer",
                "const": 9
              },
              "antardasha": {
                "type": "integer",
                "const": 81
              },
              "pratyantardasha": {
                "type": "integer",
                "const": 729
              }
            },
            "required": [
              "mahadasha",
              "antardasha",
              "pratyantardasha"
            ],
            "additionalProperties": false
          },
          "duration_arithmetic": {
            "type": "string",
            "const": "exact_integer_microseconds_proportional_parent_duration"
          }
        },
        "required": [
          "calculation_status",
          "practitioner_review",
          "frame",
          "node_model",
          "classification_precision",
          "interpretations",
          "year_length",
          "interval",
          "timestamp_resolution",
          "birth_balance_rounding",
          "cycle_anchor",
          "period_timestamps",
          "depth",
          "levels",
          "period_counts",
          "duration_arithmetic"
        ],
        "additionalProperties": false
      },
      "VimshottariResponseDepth3": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "vimshottari"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              "depth": {
                "type": "integer",
                "const": 3
              }
            },
            "required": [
              "birth",
              "ayanamsa",
              "depth"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "zodiac": {
            "type": "string",
            "const": "sidereal"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "moon": {
            "type": "object",
            "properties": {
              "sidereal_longitude": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "nakshatra": {
                "type": "object",
                "properties": {
                  "index": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 27
                  },
                  "name": {
                    "type": "string"
                  },
                  "lord": {
                    "$ref": "#/components/schemas/DashaLord"
                  },
                  "pada": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 4
                  },
                  "fraction_elapsed": {
                    "type": "number",
                    "minimum": 0,
                    "exclusiveMaximum": 1
                  }
                },
                "required": [
                  "index",
                  "name",
                  "lord",
                  "pada",
                  "fraction_elapsed"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "sidereal_longitude",
              "nakshatra"
            ],
            "additionalProperties": false
          },
          "birth_balance": {
            "type": "object",
            "properties": {
              "lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "subperiod_lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "elapsed_years": {
                "type": "number",
                "minimum": 0
              },
              "remaining_years": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "remaining_days": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "pratyantardasha_lord": {
                "$ref": "#/components/schemas/DashaLord"
              }
            },
            "required": [
              "lord",
              "subperiod_lord",
              "elapsed_years",
              "remaining_years",
              "remaining_days",
              "start_utc",
              "end_utc",
              "pratyantardasha_lord"
            ],
            "additionalProperties": false
          },
          "cycle": {
            "type": "object",
            "properties": {
              "years": {
                "type": "number",
                "const": 120
              },
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "years",
              "start_utc",
              "end_utc"
            ],
            "additionalProperties": false
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaPeriodDepth3"
            },
            "minItems": 9,
            "maxItems": 9
          },
          "metadata": {
            "$ref": "#/components/schemas/VimshottariMetadataDepth3"
          }
        },
        "required": [
          "status",
          "type",
          "input",
          "birth_utc",
          "zodiac",
          "ayanamsa",
          "moon",
          "birth_balance",
          "cycle",
          "periods",
          "metadata"
        ],
        "additionalProperties": false,
        "description": "All period timestamps are UTC with microsecond resolution and half-open intervals. Derived period offsets may extend beyond the birth ephemeris window; this does not extrapolate ephemeris positions. Unrounded Moon determines nakshatra and birth balance; elapsed duration is floored to microseconds. Experimental beta without practitioner sign-off."
      },
      "DashaSookshmaPeriod": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          }
        },
        "required": [
          "lord",
          "start_utc",
          "end_utc",
          "active_at_birth"
        ],
        "additionalProperties": false,
        "description": "Fourth-level leaf. Exact duration is end_utc minus start_utc; the redundant display-only years field is omitted to preserve the existing 1 MiB response ceiling."
      },
      "DashaPratyantardashaDepth4": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "years": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          },
          "subperiods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaSookshmaPeriod"
            },
            "minItems": 9,
            "maxItems": 9
          }
        },
        "required": [
          "lord",
          "years",
          "start_utc",
          "end_utc",
          "active_at_birth",
          "subperiods"
        ],
        "additionalProperties": false,
        "description": "One third-level period with exactly nine fourth-level sookshma-dasha children."
      },
      "DashaAntardashaDepth4": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "years": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          },
          "subperiods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaPratyantardashaDepth4"
            },
            "minItems": 9,
            "maxItems": 9
          }
        },
        "required": [
          "lord",
          "years",
          "start_utc",
          "end_utc",
          "active_at_birth",
          "subperiods"
        ],
        "additionalProperties": false
      },
      "DashaPeriodDepth4": {
        "type": "object",
        "properties": {
          "lord": {
            "$ref": "#/components/schemas/DashaLord"
          },
          "years": {
            "type": "integer",
            "enum": [
              7,
              20,
              6,
              10,
              18,
              16,
              19,
              17
            ]
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "active_at_birth": {
            "type": "boolean"
          },
          "subperiods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaAntardashaDepth4"
            },
            "minItems": 9,
            "maxItems": 9
          }
        },
        "required": [
          "lord",
          "years",
          "start_utc",
          "end_utc",
          "active_at_birth",
          "subperiods"
        ],
        "additionalProperties": false
      },
      "VimshottariMetadataDepth4": {
        "type": "object",
        "properties": {
          "calculation_status": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/calculation_status"
          },
          "practitioner_review": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/practitioner_review"
          },
          "frame": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/frame"
          },
          "node_model": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/node_model"
          },
          "classification_precision": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/classification_precision"
          },
          "interpretations": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/interpretations"
          },
          "year_length": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/year_length"
          },
          "interval": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/interval"
          },
          "timestamp_resolution": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/timestamp_resolution"
          },
          "birth_balance_rounding": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/birth_balance_rounding"
          },
          "cycle_anchor": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/cycle_anchor"
          },
          "period_timestamps": {
            "$ref": "#/components/schemas/VimshottariMetadata/properties/period_timestamps"
          },
          "depth": {
            "type": "integer",
            "const": 4
          },
          "levels": {
            "type": "array",
            "const": [
              "mahadasha",
              "antardasha",
              "pratyantardasha",
              "sookshma_dasha"
            ],
            "items": {
              "type": "string"
            },
            "minItems": 4,
            "maxItems": 4
          },
          "period_counts": {
            "type": "object",
            "properties": {
              "mahadasha": {
                "type": "integer",
                "const": 9
              },
              "antardasha": {
                "type": "integer",
                "const": 81
              },
              "pratyantardasha": {
                "type": "integer",
                "const": 729
              },
              "sookshma_dasha": {
                "type": "integer",
                "const": 6561
              }
            },
            "required": [
              "mahadasha",
              "antardasha",
              "pratyantardasha",
              "sookshma_dasha"
            ],
            "additionalProperties": false
          },
          "duration_arithmetic": {
            "type": "string",
            "const": "exact_integer_microseconds_proportional_parent_duration"
          }
        },
        "required": [
          "calculation_status",
          "practitioner_review",
          "frame",
          "node_model",
          "classification_precision",
          "interpretations",
          "year_length",
          "interval",
          "timestamp_resolution",
          "birth_balance_rounding",
          "cycle_anchor",
          "period_timestamps",
          "depth",
          "levels",
          "period_counts",
          "duration_arithmetic"
        ],
        "additionalProperties": false
      },
      "VimshottariResponseDepth4": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "const": "beta"
          },
          "type": {
            "type": "string",
            "const": "vimshottari"
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/NormalizedBirth"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              "depth": {
                "type": "integer",
                "const": 4
              }
            },
            "required": [
              "birth",
              "ayanamsa",
              "depth"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "zodiac": {
            "type": "string",
            "const": "sidereal"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "moon": {
            "$ref": "#/components/schemas/VimshottariResponseDepth2/properties/moon"
          },
          "birth_balance": {
            "type": "object",
            "properties": {
              "lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "subperiod_lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "elapsed_years": {
                "type": "number",
                "minimum": 0
              },
              "remaining_years": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "remaining_days": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "pratyantardasha_lord": {
                "$ref": "#/components/schemas/DashaLord"
              },
              "sookshma_dasha_lord": {
                "$ref": "#/components/schemas/DashaLord"
              }
            },
            "required": [
              "lord",
              "subperiod_lord",
              "elapsed_years",
              "remaining_years",
              "remaining_days",
              "start_utc",
              "end_utc",
              "pratyantardasha_lord",
              "sookshma_dasha_lord"
            ],
            "additionalProperties": false
          },
          "cycle": {
            "$ref": "#/components/schemas/VimshottariResponseDepth2/properties/cycle"
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DashaPeriodDepth4"
            },
            "minItems": 9,
            "maxItems": 9
          },
          "metadata": {
            "$ref": "#/components/schemas/VimshottariMetadataDepth4"
          }
        },
        "required": [
          "status",
          "type",
          "input",
          "birth_utc",
          "zodiac",
          "ayanamsa",
          "moon",
          "birth_balance",
          "cycle",
          "periods",
          "metadata"
        ],
        "additionalProperties": false,
        "description": "Bounded depth-four Vimshottari beta with exactly 6,561 sookshma-dasha leaves and no arbitrary recursion."
      },
      "SolarArcsRequest": {
        "type": "object",
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "target": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac",
            "default": "tropical"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign"
            ],
            "default": "equal"
          },
          "method": {
            "type": "string",
            "enum": [
              "true_solar_arc",
              "mean_naibod"
            ],
            "default": "true_solar_arc"
          }
        },
        "required": [
          "birth",
          "target"
        ],
        "additionalProperties": false,
        "description": "Symbolic direct solar-arc directions applied uniformly to natal planets and Ascendant/MC, not a physical sky chart. Omitted method and explicit true_solar_arc preserve the existing actual tropical apparent-Sun arc. Explicit mean_naibod applies exactly 0.98564733 degrees per elapsed model year in longitude and does not sample a progressed Sun. Input timing matches secondary progressions: target UTC >= birth, fixed 365.2421904-day TT year, civil dates 1900–2050, strict fields/enums/numbers and DST/polar rejection. Sidereal uses the natal-date ayanamsa only. Equal/Whole Sign houses are synthetic from directed Ascendant, with MC independently directed. No relocation, converse/right-ascension arc, MC-derived angle recalculation, aspects, nodes, speeds or arbitrary key. True-Sun evaluation is bounded to 152 progressed TT days and at most 5 Sun intervals of 32 days; mean Naibod uses one constant-rate multiplication."
      },
      "SolarArcsMetadata": {
        "type": "object",
        "properties": {
          "physical_chart": {
            "type": "boolean",
            "const": false
          },
          "source_frame": {
            "type": "string",
            "enum": [
              "apparent-geocentric-ecliptic-of-each-ephemeris-date",
              "natal-apparent-geocentric-ecliptic-of-date-plus-fixed-mean-key"
            ]
          },
          "position_precision": {
            "type": "string",
            "const": "unrounded-binary64"
          },
          "year_convention": {
            "type": "string",
            "const": "fixed-365.2421904-days-not-calendar-birthdays"
          },
          "time_policy": {
            "type": "string",
            "const": "uniform-TT-elapsed-days-divided-by-year-days"
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "utc_output": {
            "type": "string",
            "const": "leap-second-aware-ISO-8601"
          },
          "arc_policy": {
            "type": "string",
            "enum": [
              "direct-true-tropical-solar-arc-not-mean-naibod",
              "direct-mean-naibod-longitude-0.98564733-degrees-per-year"
            ]
          },
          "arc_unwrap": {
            "type": "string",
            "enum": [
              "positive-steps-at-most-32-TT-days-total-at-most-152-days",
              "constant-positive-rate-no-ephemeris-sun-sampling"
            ]
          },
          "angle_policy": {
            "type": "string",
            "const": "same-ecliptic-arc-added-to-natal-ascendant-and-mc"
          },
          "house_policy": {
            "type": "string",
            "enum": [
              "synthetic-equal-from-directed-ascendant",
              "synthetic-whole-sign-from-directed-ascendant"
            ]
          },
          "location_policy": {
            "type": "string",
            "const": "birth-location-for-natal-angles-no-relocation"
          },
          "sidereal_policy": {
            "type": "string",
            "enum": [
              "tropical-arc-on-natal-sidereal-points-natal-ayanamsa-only",
              "not-applicable"
            ]
          },
          "aspects": {
            "type": "string",
            "const": "not-included"
          },
          "nodes": {
            "type": "string",
            "const": "not-included"
          },
          "speeds": {
            "type": "string",
            "const": "not-included"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "practitioner_review": {
            "type": "string",
            "const": "not-completed"
          }
        },
        "required": [
          "physical_chart",
          "source_frame",
          "position_precision",
          "year_convention",
          "time_policy",
          "timescale_data",
          "utc_output",
          "arc_policy",
          "arc_unwrap",
          "angle_policy",
          "house_policy",
          "location_policy",
          "sidereal_policy",
          "aspects",
          "nodes",
          "speeds",
          "interpretations",
          "practitioner_review"
        ],
        "additionalProperties": false
      },
      "SolarArcsResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "solar_arcs"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "method": {
            "type": "string",
            "enum": [
              "true_solar_arc",
              "mean_naibod"
            ]
          },
          "input": {
            "type": "object",
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/BetaMomentResult"
              },
              "target": {
                "type": "object",
                "properties": {
                  "date": {
                    "$ref": "#/components/schemas/Date"
                  },
                  "time": {
                    "$ref": "#/components/schemas/Time"
                  },
                  "timezone": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "required": [
                  "date",
                  "time",
                  "timezone"
                ],
                "additionalProperties": false
              },
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              },
              "house_system": {
                "type": "string",
                "enum": [
                  "equal",
                  "whole_sign"
                ]
              },
              "method": {
                "type": "string",
                "const": "mean_naibod"
              }
            },
            "required": [
              "birth",
              "target",
              "zodiac",
              "ayanamsa",
              "house_system"
            ],
            "additionalProperties": false
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "target_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "progressed_utc": {
            "$ref": "#/components/schemas/ProgressedUtcTimestamp"
          },
          "timing": {
            "type": "object",
            "properties": {
              "year_days": {
                "type": "number",
                "const": 365.2421904
              },
              "elapsed_years": {
                "type": "number",
                "minimum": 0,
                "maximum": 152
              },
              "progressed_days": {
                "type": "number",
                "minimum": 0,
                "maximum": 152
              },
              "time_scale": {
                "type": "string",
                "const": "TT"
              },
              "progressed_tt_jd": {
                "type": "number"
              }
            },
            "required": [
              "year_days",
              "elapsed_years",
              "progressed_days",
              "time_scale",
              "progressed_tt_jd"
            ],
            "additionalProperties": false
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "natal_context": {
            "type": "object",
            "properties": {
              "planets": {
                "$ref": "#/components/schemas/WesternPlanets"
              },
              "angles": {
                "$ref": "#/components/schemas/WesternAngles"
              },
              "houses": {
                "$ref": "#/components/schemas/WesternHouses"
              }
            },
            "required": [
              "planets",
              "angles",
              "houses"
            ],
            "additionalProperties": false
          },
          "metadata": {
            "$ref": "#/components/schemas/SolarArcsMetadata"
          },
          "arc": {
            "type": "object",
            "properties": {
              "degrees": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 180
              },
              "direction": {
                "type": "string",
                "const": "direct"
              },
              "basis": {
                "type": "string",
                "enum": [
                  "tropical-apparent-sun",
                  "mean-naibod-longitude"
                ]
              },
              "natal_sun_longitude": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "progressed_sun_longitude": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "key_degrees_per_year": {
                "type": "number",
                "const": 0.98564733
              }
            },
            "required": [
              "degrees",
              "direction",
              "basis"
            ],
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "basis": {
                    "const": "tropical-apparent-sun"
                  },
                  "natal_sun_longitude": {
                    "type": "number"
                  },
                  "progressed_sun_longitude": {
                    "type": "number"
                  }
                },
                "required": [
                  "natal_sun_longitude",
                  "progressed_sun_longitude"
                ],
                "maxProperties": 5
              },
              {
                "type": "object",
                "properties": {
                  "basis": {
                    "const": "mean-naibod-longitude"
                  },
                  "key_degrees_per_year": {
                    "const": 0.98564733
                  }
                },
                "required": [
                  "key_degrees_per_year"
                ],
                "maxProperties": 4
              }
            ],
            "additionalProperties": false
          },
          "directed_planets": {
            "$ref": "#/components/schemas/WesternPlanets"
          },
          "directed_angles": {
            "$ref": "#/components/schemas/WesternAngles"
          },
          "directed_houses": {
            "$ref": "#/components/schemas/WesternHouses"
          }
        },
        "required": [
          "type",
          "status",
          "method",
          "input",
          "birth_utc",
          "target_utc",
          "progressed_utc",
          "timing",
          "zodiac",
          "ayanamsa",
          "natal_context",
          "metadata",
          "arc",
          "directed_planets",
          "directed_angles",
          "directed_houses"
        ],
        "allOf": [
          {
            "if": {
              "type": "object",
              "properties": {
                "method": {
                  "const": "true_solar_arc"
                }
              },
              "required": [
                "method"
              ]
            },
            "then": {
              "type": "object",
              "properties": {
                "input": {
                  "type": "object",
                  "maxProperties": 5
                },
                "metadata": {
                  "type": "object",
                  "properties": {
                    "source_frame": {
                      "const": "apparent-geocentric-ecliptic-of-each-ephemeris-date"
                    },
                    "arc_policy": {
                      "const": "direct-true-tropical-solar-arc-not-mean-naibod"
                    },
                    "arc_unwrap": {
                      "const": "positive-steps-at-most-32-TT-days-total-at-most-152-days"
                    }
                  }
                },
                "arc": {
                  "type": "object",
                  "properties": {
                    "basis": {
                      "const": "tropical-apparent-sun"
                    }
                  }
                }
              }
            }
          },
          {
            "if": {
              "type": "object",
              "properties": {
                "method": {
                  "const": "mean_naibod"
                }
              },
              "required": [
                "method"
              ]
            },
            "then": {
              "type": "object",
              "properties": {
                "input": {
                  "type": "object",
                  "properties": {
                    "method": {
                      "const": "mean_naibod"
                    }
                  },
                  "required": [
                    "method"
                  ],
                  "minProperties": 6
                },
                "metadata": {
                  "type": "object",
                  "properties": {
                    "source_frame": {
                      "const": "natal-apparent-geocentric-ecliptic-of-date-plus-fixed-mean-key"
                    },
                    "arc_policy": {
                      "const": "direct-mean-naibod-longitude-0.98564733-degrees-per-year"
                    },
                    "arc_unwrap": {
                      "const": "constant-positive-rate-no-ephemeris-sun-sampling"
                    }
                  }
                },
                "arc": {
                  "type": "object",
                  "properties": {
                    "basis": {
                      "const": "mean-naibod-longitude"
                    }
                  }
                }
              }
            }
          }
        ],
        "additionalProperties": false
      },
      "MoonPhaseRequest": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/MoonPhaseInstantRequest"
          },
          {
            "$ref": "#/components/schemas/MoonPhaseCalendarRequest"
          }
        ]
      },
      "MoonPhaseInstantRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "mode",
          "at"
        ],
        "properties": {
          "mode": {
            "type": "string",
            "const": "instant"
          },
          "at": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "display_timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC"
          }
        }
      },
      "MoonPhaseCalendarRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "mode",
          "start",
          "end"
        ],
        "description": "Start-inclusive/end-exclusive interval, greater than zero and at most 366 elapsed UTC days after civil-time conversion. Both civil dates must be within 1900–2050; UTC coverage is separately checked. Invalid calendars, DST gaps/folds and unavailable timezones return 400.",
        "properties": {
          "mode": {
            "type": "string",
            "const": "calendar"
          },
          "start": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "end": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "display_timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "UTC"
          },
          "include_ical": {
            "type": "boolean",
            "default": false,
            "description": "Opt in to result.ical: a bounded RFC 5545 UTC point-event export, or null when no events occur. Calendar mode only. No extra quota unit, subscription feed, reminders or external calendar writes."
          }
        }
      },
      "MoonPhaseMetadata": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "frame",
          "timescale_data",
          "phase_definition",
          "illumination_model",
          "interpretations"
        ],
        "properties": {
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_ecliptic_of_date"
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "phase_definition": {
            "type": "string",
            "const": "moon_minus_sun_ecliptic_longitude"
          },
          "illumination_model": {
            "type": "string",
            "const": "spherical_geometric_no_eclipse_shadow"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          }
        }
      },
      "MoonPhaseSnapshot": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "utc",
          "local",
          "timezone",
          "phase_sector",
          "elongation_degrees",
          "longitude_cycle",
          "illuminated_fraction",
          "model"
        ],
        "properties": {
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "local": {
            "type": "string",
            "format": "date-time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "phase_sector": {
            "type": "string",
            "enum": [
              "new_moon",
              "waxing_crescent",
              "first_quarter",
              "waxing_gibbous",
              "full_moon",
              "waning_gibbous",
              "last_quarter",
              "waning_crescent"
            ],
            "description": "Nearest 45-degree display sector, not an exact event or measured brightness."
          },
          "elongation_degrees": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360,
            "description": "Moon minus Sun ecliptic longitude, not great-circle angular separation."
          },
          "longitude_cycle": {
            "type": "string",
            "enum": [
              "waxing",
              "waning"
            ],
            "description": "Waxing for longitude difference below 180 degrees; not the derivative of illuminated area."
          },
          "illuminated_fraction": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "model": {
            "type": "string",
            "const": "de421-geocentric-moon-phase-v1"
          }
        }
      },
      "MoonPhaseEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "phase",
          "target_degrees",
          "utc",
          "local"
        ],
        "properties": {
          "phase": {
            "type": "string",
            "enum": [
              "new_moon",
              "first_quarter",
              "full_moon",
              "last_quarter"
            ]
          },
          "target_degrees": {
            "type": "integer",
            "enum": [
              0,
              90,
              180,
              270
            ]
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "local": {
            "type": "string",
            "format": "date-time"
          }
        },
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "phase": {
                "const": "new_moon"
              },
              "target_degrees": {
                "const": 0
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "phase": {
                "const": "first_quarter"
              },
              "target_degrees": {
                "const": 90
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "phase": {
                "const": "full_moon"
              },
              "target_degrees": {
                "const": 180
              }
            }
          },
          {
            "type": "object",
            "properties": {
              "phase": {
                "const": "last_quarter"
              },
              "target_degrees": {
                "const": 270
              }
            }
          }
        ]
      },
      "MoonPhaseCalendar": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "timezone",
          "events",
          "model",
          "interval",
          "timestamp_resolution_seconds",
          "search_tolerance_seconds"
        ],
        "properties": {
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "events": {
            "type": "array",
            "maxItems": 52,
            "items": {
              "$ref": "#/components/schemas/MoonPhaseEvent"
            }
          },
          "model": {
            "type": "string",
            "const": "de421-geocentric-moon-phase-v1"
          },
          "interval": {
            "type": "string",
            "const": "start_inclusive_end_exclusive"
          },
          "timestamp_resolution_seconds": {
            "type": "integer",
            "const": 1
          },
          "search_tolerance_seconds": {
            "type": "number",
            "const": 0.001,
            "description": "Numerical root convergence only; not a physical event-time accuracy guarantee."
          },
          "ical": {
            "description": "Present only for include_ical:true. Save the decoded string as UTF-8 .ics; CRLF and folded content lines are already supplied. Null means no events and no file. UTC DTSTART preserves instants across calendar display timezones. UIDs bind model, phase and reported second; DTSTAMP is export assembly time and can change across calls. No METHOD, recurrence, attendees, organizer, alarms, attachments or subscription URL.",
            "oneOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 32768
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "MoonPhaseInstantResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "mode",
          "result",
          "metadata"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "moon_phases"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "mode": {
            "type": "string",
            "const": "instant"
          },
          "result": {
            "$ref": "#/components/schemas/MoonPhaseSnapshot"
          },
          "metadata": {
            "$ref": "#/components/schemas/MoonPhaseMetadata"
          }
        }
      },
      "MoonPhaseCalendarResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "mode",
          "result",
          "metadata"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "moon_phases"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "mode": {
            "type": "string",
            "const": "calendar"
          },
          "result": {
            "$ref": "#/components/schemas/MoonPhaseCalendar"
          },
          "metadata": {
            "$ref": "#/components/schemas/MoonPhaseMetadata"
          }
        }
      },
      "MoonPhaseResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/MoonPhaseInstantResponse"
          },
          {
            "$ref": "#/components/schemas/MoonPhaseCalendarResponse"
          }
        ]
      },
      "PlanetaryEventBody": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "uranus",
          "neptune",
          "pluto"
        ]
      },
      "PlanetaryEventType": {
        "type": "string",
        "enum": [
          "sign_ingress",
          "station",
          "aspect"
        ]
      },
      "PlanetaryEventAspect": {
        "type": "string",
        "enum": [
          "conjunction",
          "sextile",
          "square",
          "trine",
          "opposition"
        ]
      },
      "PlanetaryEventsRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "event_types",
          "bodies"
        ],
        "description": "Whole-second UTC, start-inclusive/end-exclusive interval greater than zero and at most 31 elapsed days. Both endpoints must fit UTC 1900-01-01T00:00:00Z through 2051-01-01T00:00:00Z, where the latter is an exclusive end only. Arrays use exact, unique enum values. Aspects defaults to all five major aspects when aspect is selected; aspects is forbidden otherwise, and aspect searches require at least two bodies.",
        "properties": {
          "start_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "end_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "event_types": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventType"
            }
          },
          "bodies": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventBody"
            }
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventAspect"
            },
            "default": [
              "conjunction",
              "sextile",
              "square",
              "trine",
              "opposition"
            ]
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        }
      },
      "PlanetarySignName": {
        "type": "string",
        "enum": [
          "aries",
          "taurus",
          "gemini",
          "cancer",
          "leo",
          "virgo",
          "libra",
          "scorpio",
          "sagittarius",
          "capricorn",
          "aquarius",
          "pisces"
        ]
      },
      "PlanetaryEventLongitude": {
        "type": "number",
        "minimum": 0,
        "exclusiveMaximum": 360
      },
      "PlanetarySignIngressEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "utc",
          "body",
          "direction",
          "from_sign",
          "to_sign",
          "boundary_degrees",
          "longitude_degrees"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "sign_ingress"
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "body": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "direction": {
            "type": "string",
            "enum": [
              "direct",
              "retrograde"
            ]
          },
          "from_sign": {
            "$ref": "#/components/schemas/PlanetarySignName"
          },
          "to_sign": {
            "$ref": "#/components/schemas/PlanetarySignName"
          },
          "boundary_degrees": {
            "type": "integer",
            "minimum": 0,
            "maximum": 330,
            "multipleOf": 30
          },
          "longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          }
        }
      },
      "PlanetaryStationEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "utc",
          "body",
          "motion_after",
          "longitude_degrees"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "station"
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "body": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "motion_after": {
            "type": "string",
            "enum": [
              "direct",
              "retrograde"
            ]
          },
          "longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          }
        }
      },
      "PlanetaryExactAspectEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "utc",
          "body1",
          "body2",
          "aspect",
          "angle_degrees",
          "body1_longitude_degrees",
          "body2_longitude_degrees"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "aspect"
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "body1": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "body2": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "aspect": {
            "$ref": "#/components/schemas/PlanetaryEventAspect"
          },
          "angle_degrees": {
            "type": "integer",
            "enum": [
              0,
              60,
              90,
              120,
              180
            ]
          },
          "body1_longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          },
          "body2_longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          }
        }
      },
      "PlanetaryEvent": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/PlanetarySignIngressEvent"
          },
          {
            "$ref": "#/components/schemas/PlanetaryStationEvent"
          },
          {
            "$ref": "#/components/schemas/PlanetaryExactAspectEvent"
          }
        ]
      },
      "PlanetaryEventsResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "events",
          "event_count",
          "model",
          "interval",
          "timestamp_resolution_seconds"
        ],
        "properties": {
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "events": {
            "type": "array",
            "maxItems": 512,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEvent"
            }
          },
          "event_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 512
          },
          "model": {
            "type": "string",
            "const": "de421-apparent-geocentric-planetary-events-v1"
          },
          "interval": {
            "type": "string",
            "const": "start_inclusive_end_exclusive"
          },
          "timestamp_resolution_seconds": {
            "type": "integer",
            "const": 1
          }
        }
      },
      "PlanetaryEventsMetadata": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ephemeris",
          "frame",
          "zodiac",
          "ayanamsa",
          "station_frame",
          "station_speed_definition",
          "aspect_policy",
          "timescale_data",
          "search_step_hours",
          "root_tolerance_seconds",
          "interpretations"
        ],
        "properties": {
          "ephemeris": {
            "type": "string",
            "const": "JPL-DE421"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_ecliptic_of_date"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "lahiri",
                  "raman",
                  "krishnamurti",
                  "fagan_bradley",
                  "yukteshwar",
                  "sassanian",
                  "true_chitra",
                  "true_revati",
                  "true_pushya",
                  "galactic_center_0_sagittarius",
                  "galactic_alignment_mardyks"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "station_frame": {
            "type": "string",
            "const": "tropical_longitude"
          },
          "station_speed_definition": {
            "type": "string",
            "const": "centered_one_hour_finite_difference"
          },
          "aspect_policy": {
            "type": "string",
            "const": "exact_longitude_crossings_only_no_orbs_no_tangencies"
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "search_step_hours": {
            "type": "integer",
            "const": 6
          },
          "root_tolerance_seconds": {
            "type": "number",
            "const": 0.05
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          }
        }
      },
      "PlanetaryEventsResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "result",
          "metadata"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "planetary_events"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "result": {
            "$ref": "#/components/schemas/PlanetaryEventsResult"
          },
          "metadata": {
            "$ref": "#/components/schemas/PlanetaryEventsMetadata"
          }
        }
      },
      "HouseIngressSystem": {
        "type": "string",
        "enum": [
          "equal",
          "whole_sign"
        ]
      },
      "HouseIngressesRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "reference_birth",
          "start_utc",
          "end_utc",
          "bodies"
        ],
        "description": "The reference birth fixes the selected twelve cusps for the entire search. Whole-second UTC interval is start-inclusive/end-exclusive, greater than zero and at most 31 elapsed days. Arrays use exact unique enum values. Equal is the default house system; only Equal and Whole Sign are admitted.",
        "properties": {
          "reference_birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "start_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "end_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "bodies": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventBody"
            }
          },
          "house_system": {
            "$ref": "#/components/schemas/HouseIngressSystem",
            "default": "equal"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        }
      },
      "HouseIngressEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "utc",
          "body",
          "direction",
          "from_house",
          "to_house",
          "cusp_house",
          "cusp_longitude_degrees",
          "longitude_degrees"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "house_ingress"
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "body": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "direction": {
            "type": "string",
            "enum": [
              "direct",
              "retrograde"
            ]
          },
          "from_house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "to_house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "cusp_house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "cusp_longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          },
          "longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          }
        }
      },
      "HouseIngressesResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "reference_birth",
          "start_utc",
          "end_utc",
          "house_system",
          "cusps",
          "events",
          "event_count",
          "model",
          "interval",
          "timestamp_resolution_seconds"
        ],
        "properties": {
          "reference_birth": {
            "$ref": "#/components/schemas/NormalizedBirth"
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "house_system": {
            "$ref": "#/components/schemas/HouseIngressSystem"
          },
          "cusps": {
            "$ref": "#/components/schemas/Cusps"
          },
          "events": {
            "type": "array",
            "maxItems": 512,
            "items": {
              "$ref": "#/components/schemas/HouseIngressEvent"
            }
          },
          "event_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 512
          },
          "model": {
            "type": "string",
            "const": "de421-fixed-reference-house-ingresses-v1"
          },
          "interval": {
            "type": "string",
            "const": "start_inclusive_end_exclusive"
          },
          "timestamp_resolution_seconds": {
            "type": "integer",
            "const": 1
          }
        }
      },
      "HouseIngressesMetadata": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ephemeris",
          "frame",
          "zodiac",
          "ayanamsa",
          "house_policy",
          "moving_house_search",
          "timescale_data",
          "search_step_hours",
          "root_tolerance_seconds",
          "interpretations"
        ],
        "properties": {
          "ephemeris": {
            "type": "string",
            "const": "JPL-DE421"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_ecliptic_of_date"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "house_policy": {
            "type": "string",
            "const": "fixed_reference_chart_cusps_half_open"
          },
          "moving_house_search": {
            "type": "boolean",
            "const": false
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "search_step_hours": {
            "type": "integer",
            "const": 6
          },
          "root_tolerance_seconds": {
            "type": "number",
            "const": 0.05
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          }
        }
      },
      "HouseIngressesResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "result",
          "metadata"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "house_ingresses"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "result": {
            "$ref": "#/components/schemas/HouseIngressesResult"
          },
          "metadata": {
            "$ref": "#/components/schemas/HouseIngressesMetadata"
          }
        }
      },
      "AspectWindowsRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "bodies"
        ],
        "description": "Whole-second UTC, start-inclusive/end-exclusive interval greater than zero and at most 31 elapsed days. Returns only contiguous orb intervals containing at least one exact crossing; tangential orb-only contacts are excluded. Arrays use exact, unique enum values.",
        "properties": {
          "start_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "end_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "bodies": {
            "type": "array",
            "minItems": 2,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventBody"
            }
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventAspect"
            },
            "default": [
              "conjunction",
              "sextile",
              "square",
              "trine",
              "opposition"
            ]
          },
          "orb_degrees": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10,
            "multipleOf": 0.1,
            "default": 3
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          },
          "include_ical": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "AspectWindowExactHit": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "utc",
          "relative_motion",
          "phase_before",
          "phase_after",
          "body1_longitude_degrees",
          "body2_longitude_degrees",
          "repeat_index",
          "repeat_total"
        ],
        "properties": {
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "relative_motion": {
            "type": "string",
            "enum": [
              "increasing",
              "decreasing"
            ]
          },
          "phase_before": {
            "type": "string",
            "const": "applying"
          },
          "phase_after": {
            "type": "string",
            "const": "separating"
          },
          "body1_longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          },
          "body2_longitude_degrees": {
            "$ref": "#/components/schemas/PlanetaryEventLongitude"
          },
          "repeat_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 512
          },
          "repeat_total": {
            "type": "integer",
            "minimum": 1,
            "maximum": 512
          }
        }
      },
      "AspectWindow": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "body1",
          "body2",
          "aspect",
          "angle_degrees",
          "orb_degrees",
          "window_start_utc",
          "window_end_utc",
          "entry_utc",
          "exit_utc",
          "clipped_start",
          "clipped_end",
          "exact_hits"
        ],
        "properties": {
          "body1": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "body2": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "aspect": {
            "$ref": "#/components/schemas/PlanetaryEventAspect"
          },
          "angle_degrees": {
            "type": "integer",
            "enum": [
              0,
              60,
              90,
              120,
              180
            ]
          },
          "orb_degrees": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10
          },
          "window_start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "window_end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "entry_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          },
          "exit_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          },
          "clipped_start": {
            "type": "boolean"
          },
          "clipped_end": {
            "type": "boolean"
          },
          "exact_hits": {
            "type": "array",
            "minItems": 1,
            "maxItems": 512,
            "items": {
              "$ref": "#/components/schemas/AspectWindowExactHit"
            }
          }
        }
      },
      "AspectWindowsResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "windows",
          "window_count",
          "exact_hit_count",
          "model",
          "interval",
          "timestamp_resolution_seconds"
        ],
        "properties": {
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "windows": {
            "type": "array",
            "maxItems": 256,
            "items": {
              "$ref": "#/components/schemas/AspectWindow"
            }
          },
          "window_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 256
          },
          "exact_hit_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 512
          },
          "model": {
            "type": "string",
            "const": "de421-apparent-geocentric-aspect-windows-v1"
          },
          "interval": {
            "type": "string",
            "const": "start_inclusive_end_exclusive"
          },
          "timestamp_resolution_seconds": {
            "type": "integer",
            "const": 1
          },
          "ical": {
            "oneOf": [
              {
                "type": "string",
                "maxLength": 131072
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "AspectWindowsMetadata": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ephemeris",
          "frame",
          "zodiac",
          "ayanamsa",
          "orb_degrees",
          "window_policy",
          "tangential_contacts",
          "aspect_policy",
          "timescale_data",
          "search_step_hours",
          "boundary_step_hours",
          "root_tolerance_seconds",
          "interpretations"
        ],
        "properties": {
          "ephemeris": {
            "type": "string",
            "const": "JPL-DE421"
          },
          "frame": {
            "type": "string",
            "const": "apparent_geocentric_ecliptic_of_date"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "lahiri",
                  "raman",
                  "krishnamurti",
                  "fagan_bradley",
                  "yukteshwar",
                  "sassanian",
                  "true_chitra",
                  "true_revati",
                  "true_pushya",
                  "galactic_center_0_sagittarius",
                  "galactic_alignment_mardyks"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "orb_degrees": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10
          },
          "window_policy": {
            "type": "string",
            "const": "exact_hit_anchored_contiguous_orb_intervals"
          },
          "tangential_contacts": {
            "type": "boolean",
            "const": false
          },
          "aspect_policy": {
            "type": "string",
            "const": "five_major_longitude_aspects"
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "search_step_hours": {
            "type": "integer",
            "const": 6
          },
          "boundary_step_hours": {
            "type": "integer",
            "const": 3
          },
          "root_tolerance_seconds": {
            "type": "number",
            "const": 0.05
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          }
        }
      },
      "AspectWindowsResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "result",
          "metadata"
        ],
        "properties": {
          "type": {
            "type": "string",
            "const": "aspect_windows"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "result": {
            "$ref": "#/components/schemas/AspectWindowsResult"
          },
          "metadata": {
            "$ref": "#/components/schemas/AspectWindowsMetadata"
          }
        }
      },
      "EventCalendarType": {
        "type": "string",
        "enum": [
          "moon_phase",
          "sign_ingress",
          "station",
          "aspect",
          "aspect_window"
        ]
      },
      "EventCalendarRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "event_types"
        ],
        "description": "Start-inclusive/end-exclusive whole-second UTC interval, greater than zero and at most 31 elapsed days. bodies is required for any non-lunar event and forbidden for lunar-only requests. Two bodies are required for aspect or aspect_window. aspects is valid only for those aspect types; orb_degrees only for aspect_window. moon_phase_filter requires moon_phase and selects named primary phases. include_csv is a strict opt-in deterministic fixed-column RFC 4180 export. group_passes is an opt-in request-window grouping and requires aspect or aspect_window. These cross-field rules are enforced by the server.",
        "properties": {
          "start_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "end_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "event_types": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/EventCalendarType"
            }
          },
          "bodies": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventBody"
            }
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventAspect"
            }
          },
          "orb_degrees": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10,
            "default": 3
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          },
          "display_timezone": {
            "$ref": "#/components/schemas/Timezone"
          },
          "include_ical": {
            "type": "boolean",
            "default": false
          },
          "include_csv": {
            "type": "boolean",
            "default": false,
            "description": "When true, result.csv contains deterministic UTF-8 RFC 4180 text with a fixed 30-column header and one row per result event. Omission or false preserves the predecessor response."
          },
          "group_passes": {
            "type": "boolean",
            "default": false,
            "description": "When true, result.pass_groups groups selected aspect events by stable series identity and deduplicates exact contacts. Omission or false preserves the predecessor response."
          },
          "moon_phase_filter": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "new_moon",
                "first_quarter",
                "full_moon",
                "last_quarter"
              ]
            },
            "description": "Only with moon_phase event type. Exact named primary-phase selection; result.filter_summary reports lunar counts before and after. Omission preserves predecessor output."
          }
        }
      },
      "RelationshipSvgOptions": {
        "type": "object",
        "properties": {
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus"
            ],
            "default": "equal"
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ],
            "default": "dark"
          },
          "show_aspects": {
            "type": "boolean",
            "default": true
          },
          "include_png": {
            "type": "boolean",
            "default": false,
            "description": "When true, also returns a deterministic PNG derived only from this response's server-rendered SVG. Omission or false preserves the predecessor response exactly."
          }
        }
      },
      "SynastrySvgRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/RelationshipSvgOptions"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "personA",
              "personB"
            ],
            "properties": {
              "personA": {
                "$ref": "#/components/schemas/BetaBirthInput"
              },
              "personB": {
                "$ref": "#/components/schemas/BetaBirthInput"
              },
              "zodiac": {},
              "ayanamsa": {},
              "house_system": {},
              "theme": {},
              "show_aspects": {},
              "include_png": {}
            }
          }
        ]
      },
      "TransitSvgRequest": {
        "allOf": [
          {
            "$ref": "#/components/schemas/RelationshipSvgOptions"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "birth",
              "transitDate"
            ],
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/BetaBirthInput"
              },
              "transitDate": {
                "$ref": "#/components/schemas/Date"
              },
              "transitTime": {
                "$ref": "#/components/schemas/Time"
              },
              "timezone": {
                "$ref": "#/components/schemas/Timezone"
              },
              "zodiac": {},
              "ayanamsa": {},
              "house_system": {},
              "theme": {},
              "show_aspects": {},
              "include_png": {}
            }
          }
        ]
      },
      "ReportBranding": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "display_name"
        ],
        "properties": {
          "display_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[A-Za-z0-9](?:[A-Za-z0-9 &'().-]{0,62}[A-Za-z0-9])?(?![\\s\\S])"
          },
          "accent": {
            "type": "string",
            "enum": [
              "amber",
              "blue",
              "green"
            ],
            "default": "amber"
          }
        },
        "description": "Optional text-only HTML co-brand. ASCII display name is escaped; accent selects a fixed contrast-tested palette. No logo, URL, HTML, prose template, remote resource, or non-HTML artifact is accepted."
      },
      "NatalReportRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus"
            ],
            "default": "equal"
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ],
            "default": "dark"
          },
          "include_svg": {
            "type": "boolean",
            "default": true
          },
          "include_download": {
            "type": "boolean",
            "default": false,
            "description": "When true, response.download contains the selected deterministic artifact as strict base64 plus its fixed safe filename, byte count, media type, and SHA-256. Omission or false preserves the predecessor response."
          },
          "download_format": {
            "type": "string",
            "enum": [
              "html",
              "pdf",
              "docx",
              "xlsx",
              "ods",
              "epub",
              "odt",
              "rtf",
              "json",
              "csv",
              "xml",
              "ndjson",
              "tsv",
              "markdown",
              "text",
              "zip"
            ],
            "default": "html",
            "description": "Optional only with include_download:true. Omission retains the HTML download. DOCX and XLSX are editable macro-free OOXML; XLSX contains formula-free inline-string fact rows. ODS is an editable formula-free and macro-free ODF 1.3 spreadsheet. EPUB is an offline script-free EPUB 3 publication. ODT is editable macro-free ODF 1.3 text; RTF is an editable dependency-free rich-text document; JSON, CSV, XML, NDJSON, TSV, Markdown, and text are deterministic UTF-8 fact documents. ZIP retains its fixed HTML, PDF, and calculation-JSON members."
          },
          "report_branding": {
            "$ref": "#/components/schemas/ReportBranding"
          }
        },
        "allOf": [
          {
            "if": {
              "type": "object",
              "properties": {
                "download_format": {}
              },
              "required": [
                "download_format"
              ]
            },
            "then": {
              "type": "object",
              "required": [
                "include_download"
              ],
              "properties": {
                "include_download": {
                  "const": true
                }
              }
            }
          },
          {
            "if": {
              "type": "object",
              "properties": {
                "report_branding": {},
                "download_format": {}
              },
              "required": [
                "report_branding",
                "download_format"
              ]
            },
            "then": {
              "type": "object",
              "properties": {
                "download_format": {
                  "const": "html"
                }
              }
            }
          }
        ]
      },
      "UnknownBirthTimeInput": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "date",
          "timezone"
        ],
        "properties": {
          "status": {
            "const": "unknown"
          },
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Required IANA timezone name; UTC is explicit."
          }
        },
        "description": "A known local civil date with no known time. The workflow samples the complete local date and never chooses a representative natal time."
      },
      "ApproximateBirthTimeInput": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "date",
          "time",
          "timezone",
          "uncertainty_minutes"
        ],
        "properties": {
          "status": {
            "const": "approximate"
          },
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Required IANA timezone name; UTC is explicit."
          },
          "uncertainty_minutes": {
            "type": "integer",
            "minimum": 5,
            "maximum": 180,
            "multipleOf": 5
          }
        },
        "description": "A known approximate local civil time plus symmetric absolute uncertainty. Five-minute samples cover center minus/plus the supplied uncertainty."
      },
      "BirthTimeWorkflowInput": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/UnknownBirthTimeInput"
          },
          {
            "$ref": "#/components/schemas/ApproximateBirthTimeInput"
          }
        ]
      },
      "BirthTimeSensitivityRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "lat",
          "lon"
        ],
        "oneOf": [
          {
            "type": "object",
            "required": [
              "start",
              "end"
            ],
            "properties": {
              "start": {},
              "end": {}
            }
          },
          {
            "type": "object",
            "required": [
              "birth_time"
            ],
            "properties": {
              "birth_time": {}
            }
          }
        ],
        "description": "Use either the predecessor explicit interval or one strict unknown/approximate birth_time workflow. Explicit intervals span at most six hours with five-minute samples. Unknown time samples the complete local civil date every 30 minutes; approximate time accepts symmetric 5–180 minute uncertainty in five-minute increments. Results are observed, non-exhaustive, and never rectification or an invented exact chart.",
        "properties": {
          "start": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "end": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "birth_time": {
            "$ref": "#/components/schemas/BirthTimeWorkflowInput"
          },
          "lat": {
            "$ref": "#/components/schemas/Latitude"
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus"
            ],
            "default": "equal"
          }
        }
      },
      "FixedStar": {
        "type": "string",
        "enum": [
          "aldebaran",
          "antares",
          "fomalhaut",
          "regulus",
          "sirius",
          "spica"
        ]
      },
      "FixedStarsRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "at",
          "stars"
        ],
        "properties": {
          "at": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "stars": {
            "type": "array",
            "minItems": 1,
            "maxItems": 6,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/FixedStar"
            }
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "description": "Fixed-star-only calculation. It does not use or expose minor-body artifacts; that never-live feature is permanently retired. Runtime availability requires the operator-admitted immutable six-star catalog."
      },
      "EventPassContact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "utc",
          "local",
          "body1_longitude_degrees",
          "body2_longitude_degrees",
          "repeat_index",
          "repeat_total",
          "source_event_ids"
        ],
        "properties": {
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "local": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "body1_longitude_degrees": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "body2_longitude_degrees": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "repeat_index": {
            "type": "integer",
            "minimum": 1
          },
          "repeat_total": {
            "type": "integer",
            "minimum": 1
          },
          "relative_motion": {
            "type": "string",
            "enum": [
              "increasing",
              "decreasing"
            ]
          },
          "phase_before": {
            "const": "applying"
          },
          "phase_after": {
            "const": "separating"
          },
          "source_event_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^evt_[a-f0-9]{32}$"
            }
          }
        }
      },
      "EventPassGroup": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "series_id",
          "body1",
          "body2",
          "aspect",
          "angle_degrees",
          "event_ids",
          "event_count",
          "observed_start_utc",
          "observed_end_utc",
          "local_observed_start",
          "local_observed_end",
          "clipped_start",
          "clipped_end",
          "exact_contacts",
          "exact_contact_count"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^pass_[a-f0-9]{32}$"
          },
          "series_id": {
            "type": "string",
            "pattern": "^series_[a-f0-9]{32}$"
          },
          "body1": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "body2": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "aspect": {
            "$ref": "#/components/schemas/PlanetaryEventAspect"
          },
          "angle_degrees": {
            "type": "number",
            "enum": [
              0,
              60,
              90,
              120,
              180
            ]
          },
          "event_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 800,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^evt_[a-f0-9]{32}$"
            }
          },
          "event_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 800
          },
          "observed_start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "observed_end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "local_observed_start": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "local_observed_end": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "clipped_start": {
            "type": "boolean"
          },
          "clipped_end": {
            "type": "boolean"
          },
          "exact_contacts": {
            "type": "array",
            "minItems": 1,
            "maxItems": 800,
            "items": {
              "$ref": "#/components/schemas/EventPassContact"
            }
          },
          "exact_contact_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 800
          }
        },
        "description": "One request-window view of a stable selected aspect series. Bounds and clipping are observations of this request only, not a universal retrograde-cycle claim."
      },
      "EventCalendarResponse": {
        "type": "object",
        "required": [
          "type",
          "status",
          "result",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "event_calendar"
          },
          "status": {
            "const": "beta"
          },
          "result": {
            "type": "object",
            "required": [
              "events",
              "event_count"
            ],
            "properties": {
              "events": {
                "type": "array",
                "maxItems": 800,
                "items": {
                  "type": "object"
                }
              },
              "event_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 800
              },
              "csv": {
                "type": "string",
                "maxLength": 262144,
                "description": "Present only for include_csv:true. Deterministic UTF-8 RFC 4180 text with CRLF records, a fixed header, and event order identical to result.events."
              },
              "pass_groups": {
                "type": "array",
                "maxItems": 225,
                "items": {
                  "$ref": "#/components/schemas/EventPassGroup"
                }
              },
              "pass_group_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 225
              },
              "filter_summary": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "moon_phase_filter",
                  "moon_phases_before",
                  "moon_phases_after",
                  "policy"
                ],
                "properties": {
                  "moon_phase_filter": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4,
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "enum": [
                        "new_moon",
                        "first_quarter",
                        "full_moon",
                        "last_quarter"
                      ]
                    }
                  },
                  "moon_phases_before": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "moon_phases_after": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "policy": {
                    "const": "exact_primary_phase_name"
                  }
                }
              }
            }
          },
          "metadata": {
            "type": "object"
          }
        },
        "description": "csv is present only for include_csv:true. pass_groups and pass_group_count are both present only for group_passes:true; their counts match their arrays. filter_summary appears only with moon_phase_filter."
      },
      "EventRule": {
        "type": "object",
        "minProperties": 1,
        "maxProperties": 5,
        "description": "Version-1 bounded all/any/not branch or documented deterministic fact predicate."
      },
      "EventRuleSearchRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "rule_version",
          "start_utc",
          "end_utc",
          "location",
          "rule"
        ],
        "properties": {
          "rule_version": {
            "type": "integer",
            "const": 1
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "location": {
            "$ref": "#/components/schemas/GeographicLocation"
          },
          "rule": {
            "$ref": "#/components/schemas/EventRule"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ],
            "default": 60
          },
          "validate_only": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "EventRuleSearchResponse": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "type",
          "status",
          "rule",
          "rule_analysis",
          "matching_samples",
          "sampled_candidate_windows",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "event_rule_search"
          },
          "status": {
            "const": "beta"
          },
          "rule": {
            "$ref": "#/components/schemas/EventRule"
          },
          "rule_analysis": {
            "type": "object"
          },
          "matching_samples": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "sampled_candidate_windows": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "metadata": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ConventionProfile": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "zodiac",
          "house_system"
        ],
        "properties": {
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus"
            ]
          }
        }
      },
      "ConventionProfileCompareRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profiles"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "profiles": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "$ref": "#/components/schemas/ConventionProfile"
            }
          }
        }
      },
      "SignedCalculationResponse": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "receipt"
        ],
        "properties": {
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ReleaseCompareRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "releases"
        ],
        "properties": {
          "releases": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "$ref": "#/components/schemas/SignedCalculationResponse"
            }
          }
        }
      },
      "ConventionCompareRequest": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ConventionProfileCompareRequest"
          },
          {
            "$ref": "#/components/schemas/ReleaseCompareRequest"
          }
        ]
      },
      "ConventionProfileCompareResponse": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "type",
          "status",
          "birth",
          "profiles",
          "differences",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "convention_compare"
          },
          "status": {
            "const": "beta"
          },
          "birth": {
            "type": "object"
          },
          "profiles": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "object"
            }
          },
          "differences": {
            "type": "object"
          },
          "metadata": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ReleaseCompareResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "route",
          "normalized_input_sha256",
          "releases",
          "differences",
          "truncated",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "release_compare"
          },
          "status": {
            "const": "beta"
          },
          "route": {
            "type": "string"
          },
          "normalized_input_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "releases": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "object"
            }
          },
          "differences": {
            "type": "array",
            "maxItems": 500,
            "items": {
              "type": "object",
              "required": [
                "path",
                "left",
                "right"
              ],
              "properties": {
                "path": {
                  "type": "string"
                },
                "left": {},
                "right": {}
              }
            }
          },
          "truncated": {
            "type": "boolean"
          },
          "metadata": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ConventionCompareResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ConventionProfileCompareResponse"
          },
          {
            "$ref": "#/components/schemas/ReleaseCompareResponse"
          }
        ]
      },
      "CalculationReceipt": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schema",
          "kid",
          "algorithm",
          "canonicalization",
          "input_normalization",
          "route",
          "release",
          "issued_at",
          "normalized_input_sha256",
          "result_sha256",
          "calculation_profile",
          "service_dataset_versions",
          "calculation_fingerprint",
          "verification_uri",
          "signature"
        ],
        "properties": {
          "schema": {
            "const": "cosmicephemeris-calculation-receipt-v1"
          },
          "kid": {
            "type": "string"
          },
          "algorithm": {
            "const": "Ed25519"
          },
          "canonicalization": {
            "const": "cosmicephemeris-canonical-data-v1"
          },
          "input_normalization": {
            "const": "public-request-canonical-data-v1"
          },
          "route": {
            "type": "string"
          },
          "release": {
            "type": "string"
          },
          "issued_at": {
            "type": "string",
            "format": "date-time"
          },
          "normalized_input_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "result_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "calculation_profile": {
            "type": "object"
          },
          "service_dataset_versions": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "calculation_fingerprint": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "verification_uri": {
            "type": "string",
            "pattern": "^https://api\\.cosmicephemeris\\.io/\\.well-known/jwks\\.json$"
          },
          "signature": {
            "type": "string"
          }
        }
      },
      "ChartRobustnessBirthTime": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "date",
              "timezone"
            ],
            "properties": {
              "status": {
                "const": "unknown"
              },
              "date": {
                "$ref": "#/components/schemas/Date"
              },
              "timezone": {
                "$ref": "#/components/schemas/Timezone"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "date",
              "time",
              "timezone",
              "uncertainty_minutes"
            ],
            "properties": {
              "status": {
                "const": "approximate"
              },
              "date": {
                "$ref": "#/components/schemas/Date"
              },
              "time": {
                "$ref": "#/components/schemas/Time"
              },
              "timezone": {
                "$ref": "#/components/schemas/Timezone"
              },
              "uncertainty_minutes": {
                "type": "integer",
                "minimum": 10,
                "maximum": 120,
                "multipleOf": 10
              }
            }
          }
        ]
      },
      "ChartRobustnessRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth_time",
          "lat",
          "lon",
          "profiles"
        ],
        "properties": {
          "birth_time": {
            "$ref": "#/components/schemas/ChartRobustnessBirthTime"
          },
          "lat": {
            "$ref": "#/components/schemas/Latitude"
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          },
          "profiles": {
            "type": "array",
            "minItems": 2,
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/ConventionProfile"
            }
          }
        }
      },
      "ChartRobustnessFact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "point",
          "fact",
          "classification",
          "stable_across_matrix",
          "time_sensitive",
          "convention_sensitive",
          "observed_values",
          "dominant_sample_ratio",
          "profiles"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "point": {
            "type": "string"
          },
          "fact": {
            "type": "string",
            "enum": [
              "sign",
              "house"
            ]
          },
          "classification": {
            "type": "string",
            "enum": [
              "stable",
              "time_sensitive",
              "convention_sensitive",
              "time_and_convention_sensitive"
            ]
          },
          "stable_across_matrix": {
            "type": "boolean"
          },
          "time_sensitive": {
            "type": "boolean"
          },
          "convention_sensitive": {
            "type": "boolean"
          },
          "observed_values": {
            "type": "array",
            "minItems": 1,
            "items": {}
          },
          "dominant_sample_ratio": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "profiles": {
            "type": "array",
            "minItems": 2,
            "maxItems": 3,
            "items": {
              "type": "object"
            }
          }
        }
      },
      "ChartRobustnessResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "workflow",
          "profiles",
          "summary",
          "facts",
          "evidence",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "chart_robustness"
          },
          "status": {
            "const": "beta"
          },
          "workflow": {
            "type": "object"
          },
          "profiles": {
            "type": "array",
            "minItems": 2,
            "maxItems": 3,
            "items": {
              "type": "object"
            }
          },
          "summary": {
            "type": "object"
          },
          "facts": {
            "type": "array",
            "minItems": 22,
            "maxItems": 22,
            "items": {
              "$ref": "#/components/schemas/ChartRobustnessFact"
            }
          },
          "evidence": {
            "type": "object"
          },
          "metadata": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "CivilTimeAuditRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "place_id",
          "date",
          "time",
          "profile"
        ],
        "properties": {
          "place_id": {
            "type": "string",
            "pattern": "^geonames:[1-9][0-9]{0,11}:2026-10-02$"
          },
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "profile": {
            "$ref": "#/components/schemas/ConventionProfile"
          }
        }
      },
      "CivilTimeAuditProfile": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "zodiac",
          "ayanamsa",
          "house_system"
        ],
        "properties": {
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              {
                "type": "null"
              }
            ]
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus"
            ]
          }
        }
      },
      "CivilTimeAuditFacts": {
        "type": "object",
        "minProperties": 22,
        "maxProperties": 22,
        "additionalProperties": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 12
            }
          ]
        },
        "description": "Exactly 22 facts: Sun through Pluto sign and house, plus Ascendant and Midheaven sign."
      },
      "CivilTimeAuditCandidate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "occurrence",
          "utc",
          "utc_offset_seconds",
          "utc_offset",
          "abbreviation",
          "facts",
          "facts_sha256"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "c1",
              "c2"
            ]
          },
          "occurrence": {
            "type": "string",
            "enum": [
              "only",
              "earlier",
              "later"
            ]
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "utc_offset_seconds": {
            "type": "integer",
            "minimum": -86400,
            "maximum": 86400
          },
          "utc_offset": {
            "type": "string",
            "pattern": "^[+-][0-9]{2}:[0-9]{2}$"
          },
          "abbreviation": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          },
          "facts": {
            "$ref": "#/components/schemas/CivilTimeAuditFacts"
          },
          "facts_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        }
      },
      "CivilTimeAuditChangedFact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "earlier",
          "later"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "earlier": {},
          "later": {}
        }
      },
      "CivilTimeAuditComparison": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "candidate_separation_seconds",
          "changed_fact_count",
          "unchanged_fact_count",
          "changed_facts",
          "unchanged_fact_ids"
        ],
        "properties": {
          "candidate_separation_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 86400
          },
          "changed_fact_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 22
          },
          "unchanged_fact_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 22
          },
          "changed_facts": {
            "type": "array",
            "maxItems": 22,
            "items": {
              "$ref": "#/components/schemas/CivilTimeAuditChangedFact"
            }
          },
          "unchanged_fact_ids": {
            "type": "array",
            "maxItems": 22,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CivilTimeAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "resolution",
          "profile",
          "calculation_ready",
          "requires_selection",
          "next_action",
          "candidates",
          "comparison",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "civil_time_audit"
          },
          "status": {
            "const": "beta"
          },
          "resolution": {
            "type": "object"
          },
          "profile": {
            "$ref": "#/components/schemas/CivilTimeAuditProfile"
          },
          "calculation_ready": {
            "type": "boolean"
          },
          "requires_selection": {
            "type": "boolean"
          },
          "next_action": {
            "type": "string",
            "enum": [
              "use_only_candidate",
              "select_candidate_from_source_record",
              "correct_local_time"
            ]
          },
          "candidates": {
            "type": "array",
            "maxItems": 2,
            "items": {
              "$ref": "#/components/schemas/CivilTimeAuditCandidate"
            }
          },
          "comparison": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CivilTimeAuditComparison"
              },
              {
                "type": "null"
              }
            ]
          },
          "metadata": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ChartInputReadinessExactTime": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "date",
          "time"
        ],
        "properties": {
          "status": {
            "const": "exact"
          },
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          }
        }
      },
      "ChartInputReadinessApproximateTime": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "date",
          "time",
          "uncertainty_minutes"
        ],
        "properties": {
          "status": {
            "const": "approximate"
          },
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "uncertainty_minutes": {
            "type": "integer",
            "minimum": 5,
            "maximum": 180,
            "multipleOf": 5
          }
        }
      },
      "ChartInputReadinessUnknownTime": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "date"
        ],
        "properties": {
          "status": {
            "const": "unknown"
          },
          "date": {
            "$ref": "#/components/schemas/Date"
          }
        }
      },
      "ChartInputReadinessRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "place_id",
          "birth_time",
          "profile"
        ],
        "properties": {
          "place_id": {
            "type": "string",
            "pattern": "^geonames:[1-9][0-9]{0,11}:2026-10-02$"
          },
          "birth_time": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChartInputReadinessExactTime"
              },
              {
                "$ref": "#/components/schemas/ChartInputReadinessApproximateTime"
              },
              {
                "$ref": "#/components/schemas/ChartInputReadinessUnknownTime"
              }
            ]
          },
          "profile": {
            "$ref": "#/components/schemas/ConventionProfile"
          }
        }
      },
      "ChartInputReadinessFact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "status",
          "values"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "resolved",
              "candidate_stable",
              "candidate_variable",
              "observed_stable",
              "observed_variable"
            ]
          },
          "values": {
            "type": "array",
            "minItems": 1,
            "maxItems": 12,
            "uniqueItems": true,
            "items": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 12
                }
              ]
            }
          }
        }
      },
      "ChartInputReadinessWorkflow": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "routes",
          "status",
          "reason_code",
          "additional_route_inputs_required"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "exact_birth_calculations",
              "civil_time_audit",
              "birth_time_sensitivity",
              "chart_robustness"
            ]
          },
          "routes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 27,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "ready",
              "blocked",
              "not_applicable"
            ]
          },
          "reason_code": {
            "type": "string"
          },
          "additional_route_inputs_required": {
            "type": "boolean"
          }
        }
      },
      "ChartInputReadinessResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "birth_time_status",
          "profile",
          "resolution",
          "exact_chart_ready",
          "next_action",
          "workflows",
          "fact_evidence",
          "summary",
          "evidence",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "chart_input_readiness"
          },
          "status": {
            "const": "beta"
          },
          "birth_time_status": {
            "type": "string",
            "enum": [
              "exact",
              "approximate",
              "unknown"
            ]
          },
          "profile": {
            "$ref": "#/components/schemas/CivilTimeAuditProfile"
          },
          "resolution": {
            "type": "object"
          },
          "exact_chart_ready": {
            "type": "boolean"
          },
          "next_action": {
            "type": "string",
            "enum": [
              "run_exact_birth_calculation",
              "select_civil_time_candidate",
              "correct_local_time",
              "resolve_approximate_center",
              "use_uncertainty_workflow_or_supply_exact_time"
            ]
          },
          "workflows": {
            "type": "array",
            "minItems": 4,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ChartInputReadinessWorkflow"
            }
          },
          "fact_evidence": {
            "type": "array",
            "maxItems": 22,
            "items": {
              "$ref": "#/components/schemas/ChartInputReadinessFact"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "fact_count",
              "status_counts"
            ],
            "properties": {
              "fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 22
              },
              "status_counts": {
                "type": "object",
                "additionalProperties": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 22
                }
              }
            }
          },
          "evidence": {
            "oneOf": [
              {
                "type": "object"
              },
              {
                "type": "null"
              }
            ]
          },
          "metadata": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "HouseSystemReadinessBirth": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "date",
          "time",
          "timezone",
          "lat",
          "lon"
        ],
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "time": {
            "$ref": "#/components/schemas/Time"
          },
          "timezone": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        }
      },
      "HouseSystemReadinessProfile": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac"
            ],
            "properties": {
              "zodiac": {
                "const": "tropical"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "ayanamsa"
            ],
            "properties": {
              "zodiac": {
                "const": "sidereal"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              }
            }
          }
        ]
      },
      "HouseSystemReadinessRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profile"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/HouseSystemReadinessProfile"
          }
        }
      },
      "HouseSystemReadinessSystemId": {
        "type": "string",
        "enum": [
          "equal",
          "whole_sign",
          "placidus",
          "porphyry",
          "meridian",
          "campanus",
          "regiomontanus",
          "alcabitius",
          "koch",
          "morinus",
          "topocentric",
          "sripati",
          "vehlow",
          "horizon",
          "krusinski",
          "sunshine",
          "sunshine_alt",
          "savard",
          "pullen_sd",
          "pullen_sr",
          "carter",
          "apc",
          "equal_mc",
          "natural",
          "gauquelin"
        ]
      },
      "HouseSystemReadinessItem": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "status",
          "sector_count",
          "cusps_sha256",
          "houses_route_ready",
          "natal_svg_route_ready",
          "reason_code"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/HouseSystemReadinessSystemId"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ]
          },
          "sector_count": {
            "type": "integer",
            "enum": [
              12,
              36
            ]
          },
          "cusps_sha256": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "houses_route_ready": {
            "type": "boolean"
          },
          "natal_svg_route_ready": {
            "type": "boolean"
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "const": "undefined_for_input_geometry"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "HouseSystemReadinessResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "profile",
          "systems",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "house_system_readiness"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "date",
              "time",
              "timezone",
              "lat",
              "lon"
            ],
            "properties": {
              "date": {
                "$ref": "#/components/schemas/Date"
              },
              "time": {
                "$ref": "#/components/schemas/Time"
              },
              "timezone": {
                "type": "string"
              },
              "lat": {
                "type": "number"
              },
              "lon": {
                "type": "number"
              }
            }
          },
          "profile": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "ayanamsa"
            ],
            "properties": {
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Ayanamsa"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            }
          },
          "systems": {
            "type": "array",
            "minItems": 25,
            "maxItems": 25,
            "items": {
              "$ref": "#/components/schemas/HouseSystemReadinessItem"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "system_count",
              "available_count",
              "unavailable_count",
              "houses_route_ready_count",
              "natal_svg_route_ready_count"
            ],
            "properties": {
              "system_count": {
                "type": "integer",
                "const": 25
              },
              "available_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 25
              },
              "unavailable_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 25
              },
              "houses_route_ready_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 25
              },
              "natal_svg_route_ready_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 24
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "HousePlacementStabilityRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profile"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/HouseSystemReadinessProfile"
          }
        }
      },
      "HousePlacementMap": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "Sun",
          "Moon",
          "Mercury",
          "Venus",
          "Mars",
          "Jupiter",
          "Saturn",
          "Uranus",
          "Neptune",
          "Pluto"
        ],
        "properties": {
          "Sun": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Moon": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Mercury": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Venus": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Mars": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Jupiter": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Saturn": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Uranus": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Neptune": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "Pluto": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          }
        }
      },
      "HousePlacementStabilitySystem": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "status",
          "reason_code",
          "placements"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/HouseSystemReadinessSystemId"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable",
              "excluded"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "undefined_for_input_geometry",
                  "non_twelve_sector_system"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "placements": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/HousePlacementMap"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "HousePlacementAssignment": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "house",
          "system_count",
          "systems"
        ],
        "properties": {
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "system_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24
          },
          "systems": {
            "type": "array",
            "minItems": 1,
            "maxItems": 24,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/HouseSystemReadinessSystemId"
            }
          }
        }
      },
      "HousePlacementPlanetStability": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "longitude",
          "available_system_count",
          "distinct_house_count",
          "stable",
          "agreement_ratio",
          "most_common_houses",
          "assignments"
        ],
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "Sun",
              "Moon",
              "Mercury",
              "Venus",
              "Mars",
              "Jupiter",
              "Saturn",
              "Uranus",
              "Neptune",
              "Pluto"
            ]
          },
          "longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "available_system_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24
          },
          "distinct_house_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "stable": {
            "type": "boolean"
          },
          "agreement_ratio": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "most_common_houses": {
            "type": "array",
            "minItems": 1,
            "maxItems": 12,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 12
            }
          },
          "assignments": {
            "type": "array",
            "minItems": 1,
            "maxItems": 12,
            "items": {
              "$ref": "#/components/schemas/HousePlacementAssignment"
            }
          }
        }
      },
      "HousePlacementGroup": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "placements_sha256",
          "systems",
          "placements"
        ],
        "properties": {
          "placements_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "systems": {
            "type": "array",
            "minItems": 1,
            "maxItems": 24,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/HouseSystemReadinessSystemId"
            }
          },
          "placements": {
            "$ref": "#/components/schemas/HousePlacementMap"
          }
        }
      },
      "HousePlacementStabilityResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "profile",
          "systems",
          "planets",
          "placement_groups",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "house_placement_stability"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/HouseSystemReadinessResponse/properties/input"
          },
          "profile": {
            "$ref": "#/components/schemas/HouseSystemReadinessResponse/properties/profile"
          },
          "systems": {
            "type": "array",
            "minItems": 25,
            "maxItems": 25,
            "items": {
              "$ref": "#/components/schemas/HousePlacementStabilitySystem"
            }
          },
          "planets": {
            "type": "array",
            "minItems": 10,
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/HousePlacementPlanetStability"
            }
          },
          "placement_groups": {
            "type": "array",
            "minItems": 1,
            "maxItems": 24,
            "items": {
              "$ref": "#/components/schemas/HousePlacementGroup"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "inventory_system_count",
              "comparable_system_count",
              "unavailable_system_count",
              "excluded_system_count",
              "planet_count",
              "stable_planet_count",
              "sensitive_planet_count",
              "placement_group_count"
            ],
            "properties": {
              "inventory_system_count": {
                "type": "integer",
                "const": 25
              },
              "comparable_system_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              },
              "unavailable_system_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23
              },
              "excluded_system_count": {
                "type": "integer",
                "const": 1
              },
              "planet_count": {
                "type": "integer",
                "const": 10
              },
              "stable_planet_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10
              },
              "sensitive_planet_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10
              },
              "placement_group_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "fixed_inventory",
              "unweighted_systems",
              "max_system_evaluations",
              "gauquelin_comparable",
              "agreement_is_recommendation",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-house-placement-stability-v1"
              },
              "fixed_inventory": {
                "const": true
              },
              "unweighted_systems": {
                "const": true
              },
              "max_system_evaluations": {
                "type": "integer",
                "const": 24
              },
              "gauquelin_comparable": {
                "const": false
              },
              "agreement_is_recommendation": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "AspectPolicyStabilityPoint": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "uranus",
          "neptune",
          "pluto"
        ]
      },
      "AspectPolicyStabilityPolicy": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "aspects"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,31}$"
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 11,
            "items": {
              "$ref": "#/components/schemas/NatalAnalysisAspectOption"
            }
          }
        }
      },
      "AspectPolicyStabilityRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profile",
          "policies"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/HouseSystemReadinessProfile"
          },
          "points": {
            "type": "array",
            "minItems": 3,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/AspectPolicyStabilityPoint"
            }
          },
          "policies": {
            "type": "array",
            "minItems": 2,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/AspectPolicyStabilityPolicy"
            }
          }
        }
      },
      "AspectPolicyStabilityPositions": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 3,
        "maxProperties": 10,
        "properties": {
          "sun": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "moon": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "mercury": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "venus": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "mars": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "jupiter": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "saturn": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "uranus": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "neptune": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "pluto": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          }
        }
      },
      "AspectPolicyStabilityPolicyEvaluation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "policy_id",
          "status",
          "max_orb_degrees",
          "margin_degrees",
          "admitted"
        ],
        "properties": {
          "policy_id": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,31}$"
          },
          "status": {
            "type": "string",
            "enum": [
              "admitted",
              "outside_orb",
              "not_configured"
            ]
          },
          "max_orb_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0.1,
                "maximum": 10
              },
              {
                "type": "null"
              }
            ]
          },
          "margin_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": -180,
                "maximum": 10
              },
              {
                "type": "null"
              }
            ]
          },
          "admitted": {
            "type": "boolean"
          }
        }
      },
      "AspectPolicyStabilityEvaluation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "body_a",
          "body_b",
          "aspect",
          "exact_angle_degrees",
          "separation_degrees",
          "orb_degrees",
          "admitted_policy_count",
          "admission_ratio",
          "stable_across_policies",
          "policy_dependent",
          "policy_results"
        ],
        "properties": {
          "body_a": {
            "$ref": "#/components/schemas/AspectPolicyStabilityPoint"
          },
          "body_b": {
            "$ref": "#/components/schemas/AspectPolicyStabilityPoint"
          },
          "aspect": {
            "$ref": "#/components/schemas/NatalAnalysisAspectName"
          },
          "exact_angle_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "separation_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "orb_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 10
          },
          "admitted_policy_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4
          },
          "admission_ratio": {
            "type": "number",
            "minimum": 0.25,
            "maximum": 1
          },
          "stable_across_policies": {
            "type": "boolean"
          },
          "policy_dependent": {
            "type": "boolean"
          },
          "policy_results": {
            "type": "array",
            "minItems": 2,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/AspectPolicyStabilityPolicyEvaluation"
            }
          }
        }
      },
      "AspectPolicyStabilityPolicyResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "policy_id",
          "admitted_aspect_count",
          "aspect_set_sha256"
        ],
        "properties": {
          "policy_id": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,31}$"
          },
          "admitted_aspect_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 495
          },
          "aspect_set_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        }
      },
      "AspectPolicyStabilityPolicyGroup": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "aspect_set_sha256",
          "policy_ids",
          "admitted_aspect_count"
        ],
        "properties": {
          "aspect_set_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "policy_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,31}$"
            }
          },
          "admitted_aspect_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 495
          }
        }
      },
      "AspectPolicyStabilityResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "positions",
          "evaluations",
          "policy_results",
          "policy_groups",
          "summary",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "aspect_policy_stability"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "birth",
              "profile",
              "points",
              "policies"
            ],
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/HouseSystemReadinessResponse/properties/input"
              },
              "profile": {
                "$ref": "#/components/schemas/HouseSystemReadinessResponse/properties/profile"
              },
              "points": {
                "type": "array",
                "minItems": 3,
                "maxItems": 10,
                "uniqueItems": true,
                "items": {
                  "$ref": "#/components/schemas/AspectPolicyStabilityPoint"
                }
              },
              "policies": {
                "type": "array",
                "minItems": 2,
                "maxItems": 4,
                "items": {
                  "$ref": "#/components/schemas/AspectPolicyStabilityPolicy"
                }
              }
            }
          },
          "positions": {
            "$ref": "#/components/schemas/AspectPolicyStabilityPositions"
          },
          "evaluations": {
            "type": "array",
            "maxItems": 495,
            "items": {
              "$ref": "#/components/schemas/AspectPolicyStabilityEvaluation"
            }
          },
          "policy_results": {
            "type": "array",
            "minItems": 2,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/AspectPolicyStabilityPolicyResult"
            }
          },
          "policy_groups": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/AspectPolicyStabilityPolicyGroup"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "point_count",
              "policy_count",
              "candidate_aspect_count",
              "stable_aspect_count",
              "policy_dependent_aspect_count",
              "policy_group_count"
            ],
            "properties": {
              "point_count": {
                "type": "integer",
                "minimum": 3,
                "maximum": 10
              },
              "policy_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 4
              },
              "candidate_aspect_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 495
              },
              "stable_aspect_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 495
              },
              "policy_dependent_aspect_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 495
              },
              "policy_group_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "single_chart_calculation",
              "candidate_rows_only",
              "all_rejected_candidates_omitted",
              "max_policies",
              "max_policy_aspect_evaluations",
              "inclusive_orb_boundary",
              "unweighted_policies",
              "strengths",
              "confidence",
              "recommendations",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-aspect-policy-stability-v1"
              },
              "single_chart_calculation": {
                "const": true
              },
              "candidate_rows_only": {
                "const": true
              },
              "all_rejected_candidates_omitted": {
                "const": true
              },
              "max_policies": {
                "type": "integer",
                "const": 4
              },
              "max_policy_aspect_evaluations": {
                "type": "integer",
                "const": 1980
              },
              "inclusive_orb_boundary": {
                "const": true
              },
              "unweighted_policies": {
                "const": true
              },
              "strengths": {
                "const": false
              },
              "confidence": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "HouseBoundaryProximityPoint": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "uranus",
          "neptune",
          "pluto"
        ]
      },
      "HouseBoundaryProximityRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profile"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/HouseSystemReadinessProfile"
          },
          "points": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/HouseBoundaryProximityPoint"
            }
          },
          "threshold_degrees": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 10,
            "multipleOf": 0.1,
            "default": 2
          }
        }
      },
      "HouseBoundaryProximityMeasurement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "longitude",
          "house",
          "start_cusp_house",
          "end_cusp_house",
          "start_cusp_longitude",
          "end_cusp_longitude",
          "house_span_degrees",
          "distance_from_start_degrees",
          "distance_to_end_degrees",
          "normalized_house_position",
          "nearest_boundary",
          "nearest_cusp_houses",
          "clearance_degrees",
          "within_threshold"
        ],
        "properties": {
          "name": {
            "$ref": "#/components/schemas/HouseBoundaryProximityPoint"
          },
          "longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "start_cusp_house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "end_cusp_house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "start_cusp_longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "end_cusp_longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "house_span_degrees": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 360
          },
          "distance_from_start_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 360
          },
          "distance_to_end_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 360
          },
          "normalized_house_position": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "nearest_boundary": {
            "type": "string",
            "enum": [
              "start",
              "end",
              "tie"
            ]
          },
          "nearest_cusp_houses": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 12
            }
          },
          "clearance_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "within_threshold": {
            "type": "boolean"
          }
        }
      },
      "HouseBoundaryProximitySystem": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "status",
          "reason_code",
          "points"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/HouseSystemReadinessSystemId"
          },
          "name": {
            "type": "string",
            "minLength": 1
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable",
              "excluded"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "undefined_for_input_geometry",
                  "non_twelve_sector_system"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "points": {
            "oneOf": [
              {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "items": {
                  "$ref": "#/components/schemas/HouseBoundaryProximityMeasurement"
                }
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "HouseBoundaryProximityPointSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "longitude",
          "available_system_count",
          "within_threshold_system_count",
          "within_threshold_systems",
          "minimum_clearance_degrees",
          "minimum_clearance_systems",
          "clear_across_all_available_systems"
        ],
        "properties": {
          "name": {
            "$ref": "#/components/schemas/HouseBoundaryProximityPoint"
          },
          "longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "available_system_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24
          },
          "within_threshold_system_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 24
          },
          "within_threshold_systems": {
            "type": "array",
            "maxItems": 24,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/HouseSystemReadinessSystemId"
            }
          },
          "minimum_clearance_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "minimum_clearance_systems": {
            "type": "array",
            "minItems": 1,
            "maxItems": 24,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/HouseSystemReadinessSystemId"
            }
          },
          "clear_across_all_available_systems": {
            "type": "boolean"
          }
        }
      },
      "HouseBoundaryProximityResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "systems",
          "point_summaries",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "house_boundary_proximity"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "birth",
              "profile",
              "points",
              "threshold_degrees"
            ],
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/HouseSystemReadinessResponse/properties/input"
              },
              "profile": {
                "$ref": "#/components/schemas/HouseSystemReadinessResponse/properties/profile"
              },
              "points": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "uniqueItems": true,
                "items": {
                  "$ref": "#/components/schemas/HouseBoundaryProximityPoint"
                }
              },
              "threshold_degrees": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 10
              }
            }
          },
          "systems": {
            "type": "array",
            "minItems": 25,
            "maxItems": 25,
            "items": {
              "$ref": "#/components/schemas/HouseBoundaryProximitySystem"
            }
          },
          "point_summaries": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/HouseBoundaryProximityPointSummary"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "inventory_system_count",
              "comparable_system_count",
              "unavailable_system_count",
              "excluded_system_count",
              "point_count",
              "measurement_count",
              "within_threshold_measurement_count"
            ],
            "properties": {
              "inventory_system_count": {
                "type": "integer",
                "const": 25
              },
              "comparable_system_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 24
              },
              "unavailable_system_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 23
              },
              "excluded_system_count": {
                "type": "integer",
                "const": 1
              },
              "point_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10
              },
              "measurement_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 240
              },
              "within_threshold_measurement_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 240
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "fixed_inventory",
              "unweighted_systems",
              "max_system_evaluations",
              "max_measurements",
              "threshold_is_caller_declared",
              "threshold_changes_assignment",
              "gauquelin_comparable",
              "recommendations",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-house-boundary-proximity-v1"
              },
              "fixed_inventory": {
                "const": true
              },
              "unweighted_systems": {
                "const": true
              },
              "max_system_evaluations": {
                "type": "integer",
                "const": 24
              },
              "max_measurements": {
                "type": "integer",
                "const": 240
              },
              "threshold_is_caller_declared": {
                "const": true
              },
              "threshold_changes_assignment": {
                "const": false
              },
              "gauquelin_comparable": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "LocationPrecisionAuditPoint": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "uranus",
          "neptune",
          "pluto"
        ]
      },
      "LocationPrecisionAuditHouseSystem": {
        "type": "string",
        "enum": [
          "equal",
          "whole_sign",
          "placidus",
          "porphyry",
          "meridian",
          "campanus",
          "regiomontanus",
          "alcabitius",
          "koch",
          "morinus",
          "topocentric",
          "sripati",
          "vehlow",
          "horizon",
          "krusinski",
          "sunshine",
          "sunshine_alt",
          "savard",
          "pullen_sd",
          "pullen_sr",
          "carter",
          "apc",
          "equal_mc",
          "natural"
        ]
      },
      "LocationPrecisionAuditProfile": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "house_system"
            ],
            "properties": {
              "zodiac": {
                "const": "tropical"
              },
              "house_system": {
                "$ref": "#/components/schemas/LocationPrecisionAuditHouseSystem"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "ayanamsa",
              "house_system"
            ],
            "properties": {
              "zodiac": {
                "const": "sidereal"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              "house_system": {
                "$ref": "#/components/schemas/LocationPrecisionAuditHouseSystem"
              }
            }
          }
        ]
      },
      "LocationPrecisionAuditRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profile",
          "radius_km"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/LocationPrecisionAuditProfile"
          },
          "radius_km": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 500
          },
          "points": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/LocationPrecisionAuditPoint"
            }
          }
        }
      },
      "LocationPrecisionAuditPlacement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "longitude",
          "house"
        ],
        "properties": {
          "longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          }
        }
      },
      "LocationPrecisionAuditPlacements": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 10,
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "moon": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "mercury": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "venus": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "mars": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "jupiter": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "saturn": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "uranus": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "neptune": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          },
          "pluto": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPlacement"
          }
        }
      },
      "LocationPrecisionAuditSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "bearing_degrees",
          "distance_km",
          "lat",
          "lon",
          "status",
          "reason_code",
          "ascendant",
          "mc",
          "cusps",
          "placements"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "center",
              "north",
              "northeast",
              "east",
              "southeast",
              "south",
              "southwest",
              "west",
              "northwest"
            ]
          },
          "bearing_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 315
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "const": "undefined_for_input_geometry"
              },
              {
                "type": "null"
              }
            ]
          },
          "ascendant": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              {
                "type": "null"
              }
            ]
          },
          "mc": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              {
                "type": "null"
              }
            ]
          },
          "cusps": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Cusps"
              },
              {
                "type": "null"
              }
            ]
          },
          "placements": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/LocationPrecisionAuditPlacements"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "LocationPrecisionAuditAssignment": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "house",
          "sample_count",
          "sample_ids"
        ],
        "properties": {
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9
          },
          "sample_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 9,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "center",
                "north",
                "northeast",
                "east",
                "southeast",
                "south",
                "southwest",
                "west",
                "northwest"
              ]
            }
          }
        }
      },
      "LocationPrecisionAuditPointSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "center_longitude",
          "center_house",
          "evaluable",
          "available_sample_count",
          "unavailable_sample_count",
          "stable_across_available_samples",
          "observed_houses",
          "assignments"
        ],
        "properties": {
          "name": {
            "$ref": "#/components/schemas/LocationPrecisionAuditPoint"
          },
          "center_longitude": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              {
                "type": "null"
              }
            ]
          },
          "center_house": {
            "oneOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 12
              },
              {
                "type": "null"
              }
            ]
          },
          "evaluable": {
            "type": "boolean"
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9
          },
          "stable_across_available_samples": {
            "type": "boolean"
          },
          "observed_houses": {
            "type": "array",
            "maxItems": 9,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 12
            }
          },
          "assignments": {
            "type": "array",
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/LocationPrecisionAuditAssignment"
            }
          }
        }
      },
      "LocationPrecisionAuditShiftSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "center_longitude",
          "maximum_absolute_shift_degrees",
          "maximum_shift_sample_ids"
        ],
        "properties": {
          "center_longitude": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              {
                "type": "null"
              }
            ]
          },
          "maximum_absolute_shift_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 180
              },
              {
                "type": "null"
              }
            ]
          },
          "maximum_shift_sample_ids": {
            "type": "array",
            "maxItems": 9,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "center",
                "north",
                "northeast",
                "east",
                "southeast",
                "south",
                "southwest",
                "west",
                "northwest"
              ]
            }
          }
        }
      },
      "LocationPrecisionAuditCuspSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "house",
          "center_longitude",
          "maximum_absolute_shift_degrees",
          "maximum_shift_sample_ids"
        ],
        "properties": {
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "center_longitude": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              {
                "type": "null"
              }
            ]
          },
          "maximum_absolute_shift_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 180
              },
              {
                "type": "null"
              }
            ]
          },
          "maximum_shift_sample_ids": {
            "type": "array",
            "maxItems": 9,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "center",
                "north",
                "northeast",
                "east",
                "southeast",
                "south",
                "southwest",
                "west",
                "northwest"
              ]
            }
          }
        }
      },
      "LocationPrecisionAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "samples",
          "point_summaries",
          "angle_summaries",
          "cusp_summaries",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "location_precision_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "birth",
              "profile",
              "radius_km",
              "points"
            ],
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/HouseSystemReadinessBirth"
              },
              "profile": {
                "$ref": "#/components/schemas/LocationPrecisionAuditProfile"
              },
              "radius_km": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 500
              },
              "points": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "uniqueItems": true,
                "items": {
                  "$ref": "#/components/schemas/LocationPrecisionAuditPoint"
                }
              }
            }
          },
          "samples": {
            "type": "array",
            "minItems": 9,
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/LocationPrecisionAuditSample"
            }
          },
          "point_summaries": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/LocationPrecisionAuditPointSummary"
            }
          },
          "angle_summaries": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "ascendant",
              "midheaven"
            ],
            "properties": {
              "ascendant": {
                "$ref": "#/components/schemas/LocationPrecisionAuditShiftSummary"
              },
              "midheaven": {
                "$ref": "#/components/schemas/LocationPrecisionAuditShiftSummary"
              }
            }
          },
          "cusp_summaries": {
            "type": "array",
            "minItems": 12,
            "maxItems": 12,
            "items": {
              "$ref": "#/components/schemas/LocationPrecisionAuditCuspSummary"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "center_available",
              "point_count",
              "stable_point_count",
              "sensitive_point_count"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "const": 9
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9
              },
              "center_available": {
                "type": "boolean"
              },
              "point_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10
              },
              "stable_point_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10
              },
              "sensitive_point_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "house_system_name",
              "sampling_method",
              "earth_radius_km",
              "perimeter_only",
              "entire_disk_guarantee",
              "statistical_confidence",
              "max_chart_evaluations",
              "max_placement_evaluations",
              "recommendations",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-location-precision-audit-v1"
              },
              "house_system_name": {
                "type": "string",
                "minLength": 1
              },
              "sampling_method": {
                "const": "center_plus_eight_equal_bearings_on_spherical_radius"
              },
              "earth_radius_km": {
                "type": "number",
                "const": 6371.0088
              },
              "perimeter_only": {
                "const": true
              },
              "entire_disk_guarantee": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "max_chart_evaluations": {
                "type": "integer",
                "const": 9
              },
              "max_placement_evaluations": {
                "type": "integer",
                "const": 90
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "LocationTransitionScanPoint": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "uranus",
          "neptune",
          "pluto"
        ]
      },
      "LocationTransitionScanHouseSystem": {
        "type": "string",
        "enum": [
          "equal",
          "whole_sign",
          "placidus",
          "porphyry",
          "meridian",
          "campanus",
          "regiomontanus",
          "alcabitius",
          "koch",
          "morinus",
          "topocentric",
          "sripati",
          "vehlow",
          "horizon",
          "krusinski",
          "sunshine",
          "sunshine_alt",
          "savard",
          "pullen_sd",
          "pullen_sr",
          "carter",
          "apc",
          "equal_mc",
          "natural"
        ]
      },
      "LocationTransitionScanProfile": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "house_system"
            ],
            "properties": {
              "zodiac": {
                "const": "tropical"
              },
              "house_system": {
                "$ref": "#/components/schemas/LocationTransitionScanHouseSystem"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "ayanamsa",
              "house_system"
            ],
            "properties": {
              "zodiac": {
                "const": "sidereal"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              "house_system": {
                "$ref": "#/components/schemas/LocationTransitionScanHouseSystem"
              }
            }
          }
        ]
      },
      "LocationTransitionScanRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profile",
          "max_radius_km"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/LocationTransitionScanProfile"
          },
          "max_radius_km": {
            "type": "number",
            "minimum": 1,
            "maximum": 500
          },
          "points": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/LocationTransitionScanPoint"
            }
          }
        }
      },
      "LocationTransitionScanAngle": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "longitude",
          "sign"
        ],
        "properties": {
          "longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          }
        }
      },
      "LocationTransitionScanAngles": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ascendant",
          "midheaven"
        ],
        "properties": {
          "ascendant": {
            "$ref": "#/components/schemas/LocationTransitionScanAngle"
          },
          "midheaven": {
            "$ref": "#/components/schemas/LocationTransitionScanAngle"
          }
        }
      },
      "LocationTransitionScanCuspSigns": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "10",
          "11",
          "12"
        ],
        "properties": {
          "1": {
            "$ref": "#/components/schemas/Sign"
          },
          "2": {
            "$ref": "#/components/schemas/Sign"
          },
          "3": {
            "$ref": "#/components/schemas/Sign"
          },
          "4": {
            "$ref": "#/components/schemas/Sign"
          },
          "5": {
            "$ref": "#/components/schemas/Sign"
          },
          "6": {
            "$ref": "#/components/schemas/Sign"
          },
          "7": {
            "$ref": "#/components/schemas/Sign"
          },
          "8": {
            "$ref": "#/components/schemas/Sign"
          },
          "9": {
            "$ref": "#/components/schemas/Sign"
          },
          "10": {
            "$ref": "#/components/schemas/Sign"
          },
          "11": {
            "$ref": "#/components/schemas/Sign"
          },
          "12": {
            "$ref": "#/components/schemas/Sign"
          }
        }
      },
      "LocationTransitionScanPlacement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "longitude",
          "house"
        ],
        "properties": {
          "longitude": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          }
        }
      },
      "LocationTransitionScanPlacements": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 10,
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "moon": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "mercury": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "venus": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "mars": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "jupiter": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "saturn": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "uranus": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "neptune": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          },
          "pluto": {
            "$ref": "#/components/schemas/LocationTransitionScanPlacement"
          }
        }
      },
      "LocationTransitionScanSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "bearing_id",
          "bearing_degrees",
          "step",
          "distance_km",
          "lat",
          "lon",
          "status",
          "reason_code",
          "angles",
          "cusp_signs",
          "placements"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(center|(north|northeast|east|southeast|south|southwest|west|northwest)_[1-8])$"
          },
          "bearing_id": {
            "oneOf": [
              {
                "type": "string",
                "enum": [
                  "north",
                  "northeast",
                  "east",
                  "southeast",
                  "south",
                  "southwest",
                  "west",
                  "northwest"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "bearing_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 315
              },
              {
                "type": "null"
              }
            ]
          },
          "step": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "distance_km": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "const": "undefined_for_input_geometry"
              },
              {
                "type": "null"
              }
            ]
          },
          "angles": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/LocationTransitionScanAngles"
              },
              {
                "type": "null"
              }
            ]
          },
          "cusp_signs": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/LocationTransitionScanCuspSigns"
              },
              {
                "type": "null"
              }
            ]
          },
          "placements": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/LocationTransitionScanPlacements"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "LocationTransitionScanBearingEvidence": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "bearing_id",
          "bearing_degrees",
          "status",
          "from_value",
          "to_value",
          "lower_sample_id",
          "upper_sample_id",
          "lower_distance_km",
          "upper_distance_km",
          "blocking_sample_id"
        ],
        "properties": {
          "bearing_id": {
            "type": "string",
            "enum": [
              "north",
              "northeast",
              "east",
              "southeast",
              "south",
              "southwest",
              "west",
              "northwest"
            ]
          },
          "bearing_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 315
          },
          "status": {
            "type": "string",
            "enum": [
              "transition_bracket",
              "no_observed_transition",
              "blocked_by_unavailable_geometry",
              "center_unavailable"
            ]
          },
          "from_value": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "to_value": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "lower_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^(center|(north|northeast|east|southeast|south|southwest|west|northwest)_[1-8])$"
              },
              {
                "type": "null"
              }
            ]
          },
          "upper_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^(north|northeast|east|southeast|south|southwest|west|northwest)_[1-8]$"
              },
              {
                "type": "null"
              }
            ]
          },
          "lower_distance_km": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 500
              },
              {
                "type": "null"
              }
            ]
          },
          "upper_distance_km": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 500
              },
              {
                "type": "null"
              }
            ]
          },
          "blocking_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^(center|(north|northeast|east|southeast|south|southwest|west|northwest)_[1-8])$"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "LocationTransitionScanFact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kind",
          "id",
          "center_value",
          "scan_status",
          "all_bearings_evaluable",
          "transition_observed",
          "nearest_observed_upper_distance_km",
          "nearest_bearing_ids",
          "bearings"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "angle",
              "cusp",
              "point"
            ]
          },
          "id": {
            "type": "string",
            "minLength": 1
          },
          "center_value": {
            "oneOf": [
              {
                "type": "string",
                "minLength": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "scan_status": {
            "type": "string",
            "enum": [
              "transition_observed",
              "no_observed_transition",
              "incomplete_geometry",
              "center_unavailable"
            ]
          },
          "all_bearings_evaluable": {
            "type": "boolean"
          },
          "transition_observed": {
            "type": "boolean"
          },
          "nearest_observed_upper_distance_km": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 500
              },
              {
                "type": "null"
              }
            ]
          },
          "nearest_bearing_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "north",
                "northeast",
                "east",
                "southeast",
                "south",
                "southwest",
                "west",
                "northwest"
              ]
            }
          },
          "bearings": {
            "type": "array",
            "minItems": 8,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/LocationTransitionScanBearingEvidence"
            }
          }
        }
      },
      "LocationTransitionScanResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "samples",
          "facts",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "location_transition_scan"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "birth",
              "profile",
              "max_radius_km",
              "points"
            ],
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/HouseSystemReadinessBirth"
              },
              "profile": {
                "$ref": "#/components/schemas/LocationTransitionScanProfile"
              },
              "max_radius_km": {
                "type": "number",
                "minimum": 1,
                "maximum": 500
              },
              "points": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "uniqueItems": true,
                "items": {
                  "$ref": "#/components/schemas/LocationTransitionScanPoint"
                }
              }
            }
          },
          "samples": {
            "type": "array",
            "minItems": 65,
            "maxItems": 65,
            "items": {
              "$ref": "#/components/schemas/LocationTransitionScanSample"
            }
          },
          "facts": {
            "type": "array",
            "minItems": 15,
            "maxItems": 24,
            "items": {
              "$ref": "#/components/schemas/LocationTransitionScanFact"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "fact_count",
              "transition_observed_fact_count",
              "no_observed_transition_fact_count",
              "incomplete_fact_count"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "const": 65
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 65
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 65
              },
              "fact_count": {
                "type": "integer",
                "minimum": 15,
                "maximum": 24
              },
              "transition_observed_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 24
              },
              "no_observed_transition_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 24
              },
              "incomplete_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 24
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "house_system_name",
              "sampling_method",
              "earth_radius_km",
              "radial_step_count",
              "bearing_count",
              "max_chart_evaluations",
              "max_placement_evaluations",
              "checkpoint_brackets_only",
              "intermediate_transition_detection_guarantee",
              "entire_disk_guarantee",
              "statistical_confidence",
              "recommendations",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-location-transition-scan-v1"
              },
              "house_system_name": {
                "type": "string",
                "minLength": 1
              },
              "sampling_method": {
                "const": "center_plus_eight_bearings_with_eight_equal_radial_steps"
              },
              "earth_radius_km": {
                "type": "number",
                "const": 6371.0088
              },
              "radial_step_count": {
                "type": "integer",
                "const": 8
              },
              "bearing_count": {
                "type": "integer",
                "const": 8
              },
              "max_chart_evaluations": {
                "type": "integer",
                "const": 65
              },
              "max_placement_evaluations": {
                "type": "integer",
                "const": 650
              },
              "checkpoint_brackets_only": {
                "const": true
              },
              "intermediate_transition_detection_guarantee": {
                "const": false
              },
              "entire_disk_guarantee": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ChartUncertaintyEnvelopePoint": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "uranus",
          "neptune",
          "pluto"
        ]
      },
      "ChartUncertaintyEnvelopeHouseSystem": {
        "type": "string",
        "enum": [
          "equal",
          "whole_sign",
          "placidus",
          "porphyry",
          "meridian",
          "campanus",
          "regiomontanus",
          "alcabitius",
          "koch",
          "morinus",
          "topocentric",
          "sripati",
          "vehlow",
          "horizon",
          "krusinski",
          "sunshine",
          "sunshine_alt",
          "savard",
          "pullen_sd",
          "pullen_sr",
          "carter",
          "apc",
          "equal_mc",
          "natural"
        ]
      },
      "ChartUncertaintyEnvelopeProfile": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "house_system"
            ],
            "properties": {
              "zodiac": {
                "const": "tropical"
              },
              "house_system": {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopeHouseSystem"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "ayanamsa",
              "house_system"
            ],
            "properties": {
              "zodiac": {
                "const": "sidereal"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              "house_system": {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopeHouseSystem"
              }
            }
          }
        ]
      },
      "ChartUncertaintyEnvelopeRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "profile",
          "time_uncertainty_minutes",
          "location_radius_km"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopeProfile"
          },
          "time_uncertainty_minutes": {
            "type": "integer",
            "minimum": 5,
            "maximum": 180,
            "multipleOf": 5
          },
          "location_radius_km": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 500
          },
          "points": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopePoint"
            }
          }
        }
      },
      "ChartUncertaintyEnvelopeTimeSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "offset_seconds",
          "at_utc"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "minus_3",
              "minus_2",
              "minus_1",
              "center",
              "plus_1",
              "plus_2",
              "plus_3"
            ]
          },
          "offset_seconds": {
            "type": "integer",
            "minimum": -10800,
            "maximum": 10800
          },
          "at_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          }
        }
      },
      "ChartUncertaintyEnvelopeLocationSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "bearing_degrees",
          "distance_km",
          "lat",
          "lon"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "center",
              "north",
              "northeast",
              "east",
              "southeast",
              "south",
              "southwest",
              "west",
              "northwest"
            ]
          },
          "bearing_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 315
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        }
      },
      "ChartUncertaintyEnvelopeAngles": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ascendant",
          "midheaven"
        ],
        "properties": {
          "ascendant": {
            "$ref": "#/components/schemas/Sign"
          },
          "midheaven": {
            "$ref": "#/components/schemas/Sign"
          }
        }
      },
      "ChartUncertaintyEnvelopeCuspSigns": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "1",
          "2",
          "3",
          "4",
          "5",
          "6",
          "7",
          "8",
          "9",
          "10",
          "11",
          "12"
        ],
        "properties": {
          "1": {
            "$ref": "#/components/schemas/Sign"
          },
          "2": {
            "$ref": "#/components/schemas/Sign"
          },
          "3": {
            "$ref": "#/components/schemas/Sign"
          },
          "4": {
            "$ref": "#/components/schemas/Sign"
          },
          "5": {
            "$ref": "#/components/schemas/Sign"
          },
          "6": {
            "$ref": "#/components/schemas/Sign"
          },
          "7": {
            "$ref": "#/components/schemas/Sign"
          },
          "8": {
            "$ref": "#/components/schemas/Sign"
          },
          "9": {
            "$ref": "#/components/schemas/Sign"
          },
          "10": {
            "$ref": "#/components/schemas/Sign"
          },
          "11": {
            "$ref": "#/components/schemas/Sign"
          },
          "12": {
            "$ref": "#/components/schemas/Sign"
          }
        }
      },
      "ChartUncertaintyEnvelopePlacement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "sign",
          "house"
        ],
        "properties": {
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          }
        }
      },
      "ChartUncertaintyEnvelopePlacements": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 10,
        "properties": {
          "sun": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "moon": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "mercury": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "venus": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "mars": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "jupiter": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "saturn": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "uranus": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "neptune": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          },
          "pluto": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacement"
          }
        }
      },
      "ChartUncertaintyEnvelopeSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "time_sample_id",
          "time_offset_seconds",
          "at_utc",
          "location_sample_id",
          "bearing_degrees",
          "distance_km",
          "lat",
          "lon",
          "status",
          "reason_code",
          "angles",
          "cusp_signs",
          "placements"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(minus_3|minus_2|minus_1|center|plus_1|plus_2|plus_3)__(center|north|northeast|east|southeast|south|southwest|west|northwest)$"
          },
          "time_sample_id": {
            "type": "string",
            "enum": [
              "minus_3",
              "minus_2",
              "minus_1",
              "center",
              "plus_1",
              "plus_2",
              "plus_3"
            ]
          },
          "time_offset_seconds": {
            "type": "integer",
            "minimum": -10800,
            "maximum": 10800
          },
          "at_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "location_sample_id": {
            "type": "string",
            "enum": [
              "center",
              "north",
              "northeast",
              "east",
              "southeast",
              "south",
              "southwest",
              "west",
              "northwest"
            ]
          },
          "bearing_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 315
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "const": "undefined_for_input_geometry"
              },
              {
                "type": "null"
              }
            ]
          },
          "angles": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopeAngles"
              },
              {
                "type": "null"
              }
            ]
          },
          "cusp_signs": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopeCuspSigns"
              },
              {
                "type": "null"
              }
            ]
          },
          "placements": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopePlacements"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ChartUncertaintyEnvelopeValue": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/Sign"
          },
          {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          }
        ]
      },
      "ChartUncertaintyEnvelopeAssignment": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "value",
          "sample_count",
          "sample_ids"
        ],
        "properties": {
          "value": {
            "$ref": "#/components/schemas/ChartUncertaintyEnvelopeValue"
          },
          "sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 63
          },
          "sample_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 63,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(minus_3|minus_2|minus_1|center|plus_1|plus_2|plus_3)__(center|north|northeast|east|southeast|south|southwest|west|northwest)$"
            }
          }
        }
      },
      "ChartUncertaintyEnvelopeFact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kind",
          "id",
          "attribute",
          "center_value",
          "attribution",
          "time_variation_observed",
          "location_variation_observed",
          "combined_variation_observed",
          "all_samples_evaluable",
          "available_sample_count",
          "unavailable_sample_count",
          "time_axis_values",
          "location_axis_values",
          "combined_values",
          "assignments"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "angle",
              "cusp",
              "point"
            ]
          },
          "id": {
            "type": "string",
            "minLength": 1
          },
          "attribute": {
            "type": "string",
            "enum": [
              "sign",
              "house"
            ]
          },
          "center_value": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopeValue"
              },
              {
                "type": "null"
              }
            ]
          },
          "attribution": {
            "type": "string",
            "enum": [
              "not_evaluable",
              "stable_across_available_samples",
              "time_only_observed",
              "location_only_observed",
              "time_and_location_observed",
              "combined_only_observed"
            ]
          },
          "time_variation_observed": {
            "type": "boolean"
          },
          "location_variation_observed": {
            "type": "boolean"
          },
          "combined_variation_observed": {
            "type": "boolean"
          },
          "all_samples_evaluable": {
            "type": "boolean"
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63
          },
          "time_axis_values": {
            "type": "array",
            "maxItems": 12,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeValue"
            }
          },
          "location_axis_values": {
            "type": "array",
            "maxItems": 12,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeValue"
            }
          },
          "combined_values": {
            "type": "array",
            "maxItems": 12,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeValue"
            }
          },
          "assignments": {
            "type": "array",
            "maxItems": 12,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeAssignment"
            }
          }
        }
      },
      "ChartUncertaintyEnvelopeResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "time_samples",
          "location_samples",
          "samples",
          "facts",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "chart_uncertainty_envelope"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "birth",
              "profile",
              "time_uncertainty_minutes",
              "location_radius_km",
              "points"
            ],
            "properties": {
              "birth": {
                "$ref": "#/components/schemas/HouseSystemReadinessBirth"
              },
              "profile": {
                "$ref": "#/components/schemas/ChartUncertaintyEnvelopeProfile"
              },
              "time_uncertainty_minutes": {
                "type": "integer",
                "minimum": 5,
                "maximum": 180,
                "multipleOf": 5
              },
              "location_radius_km": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 500
              },
              "points": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "uniqueItems": true,
                "items": {
                  "$ref": "#/components/schemas/ChartUncertaintyEnvelopePoint"
                }
              }
            }
          },
          "time_samples": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeTimeSample"
            }
          },
          "location_samples": {
            "type": "array",
            "minItems": 9,
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeLocationSample"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 63,
            "maxItems": 63,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeSample"
            }
          },
          "facts": {
            "type": "array",
            "minItems": 16,
            "maxItems": 34,
            "items": {
              "$ref": "#/components/schemas/ChartUncertaintyEnvelopeFact"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "fact_count",
              "stable_fact_count",
              "time_only_observed_fact_count",
              "location_only_observed_fact_count",
              "time_and_location_observed_fact_count",
              "combined_only_observed_fact_count",
              "not_evaluable_fact_count",
              "incomplete_fact_count"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "const": 63
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 63
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 63
              },
              "fact_count": {
                "type": "integer",
                "minimum": 16,
                "maximum": 34
              },
              "stable_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 34
              },
              "time_only_observed_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 34
              },
              "location_only_observed_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 34
              },
              "time_and_location_observed_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 34
              },
              "combined_only_observed_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 34
              },
              "not_evaluable_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 34
              },
              "incomplete_fact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 34
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "house_system_name",
              "sampling_method",
              "time_axis",
              "time_sample_count",
              "location_sample_count",
              "full_factorial",
              "perimeter_only",
              "continuous_time_guarantee",
              "entire_disk_guarantee",
              "interaction_causality",
              "statistical_confidence",
              "max_chart_evaluations",
              "max_placement_evaluations",
              "recommendations",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-chart-uncertainty-envelope-v1"
              },
              "house_system_name": {
                "type": "string",
                "minLength": 1
              },
              "sampling_method": {
                "const": "seven_exact_utc_times_by_center_plus_eight_perimeter_locations_full_factorial"
              },
              "time_axis": {
                "const": "absolute_seconds_from_resolved_center_instant"
              },
              "time_sample_count": {
                "type": "integer",
                "const": 7
              },
              "location_sample_count": {
                "type": "integer",
                "const": 9
              },
              "full_factorial": {
                "const": true
              },
              "perimeter_only": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "entire_disk_guarantee": {
                "const": false
              },
              "interaction_causality": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "max_chart_evaluations": {
                "type": "integer",
                "const": 63
              },
              "max_placement_evaluations": {
                "type": "integer",
                "const": 630
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalRobustnessAuditProfile": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac"
            ],
            "properties": {
              "zodiac": {
                "const": "tropical"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "zodiac",
              "ayanamsa"
            ],
            "properties": {
              "zodiac": {
                "const": "sidereal"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/Ayanamsa"
              }
            }
          }
        ]
      },
      "ElectionalRobustnessAuditRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event",
          "profile",
          "filters",
          "time_tolerance_minutes",
          "location_radius_km"
        ],
        "properties": {
          "event": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
          },
          "filters": {
            "$ref": "#/components/schemas/ElectionalFilters"
          },
          "time_tolerance_minutes": {
            "type": "integer",
            "minimum": 5,
            "maximum": 180,
            "multipleOf": 5
          },
          "location_radius_km": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 500
          }
        }
      },
      "ElectionalRobustnessAuditTimeSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "offset_seconds",
          "at_utc"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "minus_3",
              "minus_2",
              "minus_1",
              "center",
              "plus_1",
              "plus_2",
              "plus_3"
            ]
          },
          "offset_seconds": {
            "type": "integer",
            "minimum": -10800,
            "maximum": 10800
          },
          "at_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          }
        }
      },
      "ElectionalRobustnessAuditLocationSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "bearing_degrees",
          "distance_km",
          "lat",
          "lon"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "center",
              "north",
              "northeast",
              "east",
              "southeast",
              "south",
              "southwest",
              "west",
              "northwest"
            ]
          },
          "bearing_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 315
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        }
      },
      "ElectionalRobustnessAuditObservedValue": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ElectionalSignName"
          },
          {
            "$ref": "#/components/schemas/MoonPhaseSector"
          },
          {
            "type": "string",
            "enum": [
              "direct",
              "retrograde",
              "stationary"
            ]
          },
          {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          }
        ]
      },
      "ElectionalRobustnessAuditEvaluation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind",
          "matched",
          "observed"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "matched": {
            "type": "boolean"
          },
          "observed": {
            "$ref": "#/components/schemas/ElectionalRobustnessAuditObservedValue"
          }
        }
      },
      "ElectionalRobustnessAuditSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "time_sample_id",
          "time_offset_seconds",
          "at_utc",
          "location_sample_id",
          "bearing_degrees",
          "distance_km",
          "lat",
          "lon",
          "status",
          "reason_code",
          "matches_all",
          "criteria"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(minus_3|minus_2|minus_1|center|plus_1|plus_2|plus_3)__(center|north|northeast|east|southeast|south|southwest|west|northwest)$"
          },
          "time_sample_id": {
            "type": "string",
            "enum": [
              "minus_3",
              "minus_2",
              "minus_1",
              "center",
              "plus_1",
              "plus_2",
              "plus_3"
            ]
          },
          "time_offset_seconds": {
            "type": "integer",
            "minimum": -10800,
            "maximum": 10800
          },
          "at_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "location_sample_id": {
            "type": "string",
            "enum": [
              "center",
              "north",
              "northeast",
              "east",
              "southeast",
              "south",
              "southwest",
              "west",
              "northwest"
            ]
          },
          "bearing_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 315
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "const": "undefined_for_input_geometry"
              },
              {
                "type": "null"
              }
            ]
          },
          "matches_all": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "criteria": {
            "oneOf": [
              {
                "type": "array",
                "minItems": 1,
                "maxItems": 8,
                "items": {
                  "$ref": "#/components/schemas/ElectionalRobustnessAuditEvaluation"
                }
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalRobustnessAuditCriterion": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind",
          "center_match",
          "attribution",
          "time_axis_failure_observed",
          "location_axis_failure_observed",
          "combined_failure_observed",
          "all_samples_evaluable",
          "available_sample_count",
          "unavailable_sample_count",
          "matching_sample_count",
          "failing_sample_count",
          "failing_sample_ids"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "center_match": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "attribution": {
            "type": "string",
            "enum": [
              "not_evaluable",
              "center_does_not_match",
              "stable_match_across_available_samples",
              "time_only_failure_observed",
              "location_only_failure_observed",
              "time_and_location_failure_observed",
              "combined_only_failure_observed"
            ]
          },
          "time_axis_failure_observed": {
            "type": "boolean"
          },
          "location_axis_failure_observed": {
            "type": "boolean"
          },
          "combined_failure_observed": {
            "type": "boolean"
          },
          "all_samples_evaluable": {
            "type": "boolean"
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63
          },
          "failing_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63
          },
          "failing_sample_ids": {
            "type": "array",
            "maxItems": 63,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(minus_3|minus_2|minus_1|center|plus_1|plus_2|plus_3)__(center|north|northeast|east|southeast|south|southwest|west|northwest)$"
            }
          }
        }
      },
      "ElectionalRobustnessAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "time_samples",
          "location_samples",
          "samples",
          "criteria",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_robustness_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "event",
              "profile",
              "filters",
              "time_tolerance_minutes",
              "location_radius_km"
            ],
            "properties": {
              "event": {
                "$ref": "#/components/schemas/HouseSystemReadinessBirth"
              },
              "profile": {
                "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
              },
              "filters": {
                "$ref": "#/components/schemas/ElectionalFilters"
              },
              "time_tolerance_minutes": {
                "type": "integer",
                "minimum": 5,
                "maximum": 180,
                "multipleOf": 5
              },
              "location_radius_km": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 500
              }
            }
          },
          "time_samples": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalRobustnessAuditTimeSample"
            }
          },
          "location_samples": {
            "type": "array",
            "minItems": 9,
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/ElectionalRobustnessAuditLocationSample"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 63,
            "maxItems": 63,
            "items": {
              "$ref": "#/components/schemas/ElectionalRobustnessAuditSample"
            }
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalRobustnessAuditCriterion"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "passing_sample_count",
              "failing_sample_count",
              "center_evaluable",
              "center_matches_all",
              "all_available_samples_match_all",
              "criterion_count",
              "stable_criterion_count",
              "center_failure_criterion_count",
              "time_only_failure_criterion_count",
              "location_only_failure_criterion_count",
              "time_and_location_failure_criterion_count",
              "combined_only_failure_criterion_count",
              "not_evaluable_criterion_count"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "const": 63
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 63
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 63
              },
              "passing_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 63
              },
              "failing_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 63
              },
              "center_evaluable": {
                "type": "boolean"
              },
              "center_matches_all": {
                "oneOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "all_available_samples_match_all": {
                "type": "boolean"
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "stable_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "center_failure_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "time_only_failure_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "location_only_failure_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "time_and_location_failure_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "combined_only_failure_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "not_evaluable_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "time_axis",
              "time_sample_count",
              "location_sample_count",
              "full_factorial",
              "perimeter_only",
              "filter_logic",
              "continuous_time_guarantee",
              "entire_disk_guarantee",
              "interaction_causality",
              "statistical_confidence",
              "max_chart_evaluations",
              "max_criterion_evaluations",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-robustness-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "seven_exact_utc_times_by_center_plus_eight_perimeter_locations_full_factorial"
              },
              "time_axis": {
                "const": "absolute_seconds_from_resolved_center_instant"
              },
              "time_sample_count": {
                "type": "integer",
                "const": 7
              },
              "location_sample_count": {
                "type": "integer",
                "const": 9
              },
              "full_factorial": {
                "const": true
              },
              "perimeter_only": {
                "const": true
              },
              "filter_logic": {
                "const": "all_selected_filters_must_match"
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "entire_disk_guarantee": {
                "const": false
              },
              "interaction_causality": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "max_chart_evaluations": {
                "type": "integer",
                "const": 63
              },
              "max_criterion_evaluations": {
                "type": "integer",
                "const": 504
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalToleranceFrontierRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event",
          "profile",
          "filters",
          "max_time_shift_minutes",
          "max_location_radius_km"
        ],
        "properties": {
          "event": {
            "$ref": "#/components/schemas/HouseSystemReadinessBirth"
          },
          "profile": {
            "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
          },
          "filters": {
            "$ref": "#/components/schemas/ElectionalFilters"
          },
          "max_time_shift_minutes": {
            "type": "integer",
            "minimum": 5,
            "maximum": 180,
            "multipleOf": 5
          },
          "max_location_radius_km": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 500
          }
        }
      },
      "ElectionalToleranceFrontierTimeSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "offset_seconds",
          "at_utc"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(earlier|later)_(0[1-9]|10)$"
          },
          "offset_seconds": {
            "oneOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 10800
              },
              {
                "type": "integer",
                "minimum": -10800,
                "maximum": -1
              }
            ]
          },
          "at_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          }
        }
      },
      "ElectionalToleranceFrontierLocationSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "bearing_degrees",
          "distance_km",
          "lat",
          "lon"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(north|northeast|east|southeast|south|southwest|west|northwest)_(0[1-9]|10)$"
          },
          "bearing_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 315
          },
          "distance_km": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        }
      },
      "ElectionalToleranceFrontierSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "time_sample_id",
          "time_offset_seconds",
          "at_utc",
          "location_sample_id",
          "bearing_degrees",
          "distance_km",
          "lat",
          "lon",
          "status",
          "reason_code",
          "matches_all",
          "criteria"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(center__center|(earlier|later)_(0[1-9]|10)__center|center__(north|northeast|east|southeast|south|southwest|west|northwest)_(0[1-9]|10))$"
          },
          "time_sample_id": {
            "type": "string",
            "pattern": "^(center|(earlier|later)_(0[1-9]|10))$"
          },
          "time_offset_seconds": {
            "type": "integer",
            "minimum": -10800,
            "maximum": 10800
          },
          "at_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "location_sample_id": {
            "type": "string",
            "pattern": "^(center|(north|northeast|east|southeast|south|southwest|west|northwest)_(0[1-9]|10))$"
          },
          "bearing_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 315
              },
              {
                "type": "null"
              }
            ]
          },
          "distance_km": {
            "type": "number",
            "minimum": 0,
            "maximum": 500
          },
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "const": "undefined_for_input_geometry"
              },
              {
                "type": "null"
              }
            ]
          },
          "matches_all": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "criteria": {
            "oneOf": [
              {
                "type": "array",
                "minItems": 1,
                "maxItems": 8,
                "items": {
                  "$ref": "#/components/schemas/ElectionalRobustnessAuditEvaluation"
                }
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalToleranceFrontierEvidence": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "limit",
          "step",
          "last_observed_matching_value",
          "first_observed_failing_value",
          "first_unavailable_value",
          "all_samples_evaluable",
          "sample_ids"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "not_evaluable_at_center",
              "center_does_not_match",
              "failure_observed",
              "no_failure_observed_within_limit",
              "indeterminate_within_limit"
            ]
          },
          "limit": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 10800
          },
          "step": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 10800
          },
          "last_observed_matching_value": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 10800
              },
              {
                "type": "null"
              }
            ]
          },
          "first_observed_failing_value": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 10800
              },
              {
                "type": "null"
              }
            ]
          },
          "first_unavailable_value": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 10800
              },
              {
                "type": "null"
              }
            ]
          },
          "all_samples_evaluable": {
            "type": "boolean"
          },
          "sample_ids": {
            "type": "array",
            "minItems": 10,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ElectionalToleranceFrontierLocationEvidence": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "bearing_id",
          "bearing_degrees",
          "status",
          "limit",
          "step",
          "last_observed_matching_value",
          "first_observed_failing_value",
          "first_unavailable_value",
          "all_samples_evaluable",
          "sample_ids"
        ],
        "properties": {
          "bearing_id": {
            "type": "string",
            "enum": [
              "north",
              "northeast",
              "east",
              "southeast",
              "south",
              "southwest",
              "west",
              "northwest"
            ]
          },
          "bearing_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 315
          },
          "status": {
            "type": "string",
            "enum": [
              "not_evaluable_at_center",
              "center_does_not_match",
              "failure_observed",
              "no_failure_observed_within_limit",
              "indeterminate_within_limit"
            ]
          },
          "limit": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 10800
          },
          "step": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 10800
          },
          "last_observed_matching_value": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 10800
              },
              {
                "type": "null"
              }
            ]
          },
          "first_observed_failing_value": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 10800
              },
              {
                "type": "null"
              }
            ]
          },
          "first_unavailable_value": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 10800
              },
              {
                "type": "null"
              }
            ]
          },
          "all_samples_evaluable": {
            "type": "boolean"
          },
          "sample_ids": {
            "type": "array",
            "minItems": 10,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "ElectionalToleranceFrontierCriterion": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind",
          "center_match",
          "time",
          "location"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "center_match": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "time": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "earlier",
              "later"
            ],
            "properties": {
              "earlier": {
                "$ref": "#/components/schemas/ElectionalToleranceFrontierEvidence"
              },
              "later": {
                "$ref": "#/components/schemas/ElectionalToleranceFrontierEvidence"
              }
            }
          },
          "location": {
            "type": "array",
            "minItems": 8,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalToleranceFrontierLocationEvidence"
            }
          }
        }
      },
      "ElectionalToleranceFrontierResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "center",
          "time_samples",
          "location_samples",
          "samples",
          "criteria",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_tolerance_frontier"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "event",
              "profile",
              "filters",
              "max_time_shift_minutes",
              "max_location_radius_km"
            ],
            "properties": {
              "event": {
                "$ref": "#/components/schemas/HouseSystemReadinessBirth"
              },
              "profile": {
                "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
              },
              "filters": {
                "$ref": "#/components/schemas/ElectionalFilters"
              },
              "max_time_shift_minutes": {
                "type": "integer",
                "minimum": 5,
                "maximum": 180,
                "multipleOf": 5
              },
              "max_location_radius_km": {
                "type": "number",
                "minimum": 0.1,
                "maximum": 500
              }
            }
          },
          "center": {
            "$ref": "#/components/schemas/ElectionalToleranceFrontierSample"
          },
          "time_samples": {
            "type": "array",
            "minItems": 20,
            "maxItems": 20,
            "items": {
              "$ref": "#/components/schemas/ElectionalToleranceFrontierTimeSample"
            }
          },
          "location_samples": {
            "type": "array",
            "minItems": 80,
            "maxItems": 80,
            "items": {
              "$ref": "#/components/schemas/ElectionalToleranceFrontierLocationSample"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 101,
            "maxItems": 101,
            "items": {
              "$ref": "#/components/schemas/ElectionalToleranceFrontierSample"
            }
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalToleranceFrontierCriterion"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "criterion_count",
              "center_matching_criterion_count",
              "center_failing_criterion_count",
              "center_not_evaluable_criterion_count",
              "criteria_with_time_failure_observed",
              "criteria_with_location_failure_observed",
              "nearest_observed_time_failure_seconds",
              "nearest_observed_location_failure_km",
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count"
            ],
            "properties": {
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "center_matching_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "center_failing_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "center_not_evaluable_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "criteria_with_time_failure_observed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "criteria_with_location_failure_observed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "nearest_observed_time_failure_seconds": {
                "oneOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 10800
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "nearest_observed_location_failure_km": {
                "oneOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 500
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "sample_count": {
                "type": "integer",
                "const": 101
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 101
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 101
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "time_axis",
              "steps_per_direction",
              "time_direction_count",
              "location_bearing_count",
              "time_sample_count",
              "location_sample_count",
              "center_shared",
              "full_factorial",
              "filter_logic",
              "exact_boundary_guarantee",
              "continuous_time_guarantee",
              "entire_disk_guarantee",
              "monotonicity_assumption",
              "statistical_confidence",
              "max_chart_evaluations",
              "max_criterion_evaluations",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-tolerance-frontier-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "ten_outward_steps_on_two_time_directions_and_eight_location_bearings"
              },
              "time_axis": {
                "const": "absolute_seconds_from_resolved_center_instant"
              },
              "steps_per_direction": {
                "const": 10,
                "type": "integer"
              },
              "time_direction_count": {
                "const": 2,
                "type": "integer"
              },
              "location_bearing_count": {
                "const": 8,
                "type": "integer"
              },
              "time_sample_count": {
                "const": 20,
                "type": "integer"
              },
              "location_sample_count": {
                "const": 80,
                "type": "integer"
              },
              "center_shared": {
                "const": true
              },
              "full_factorial": {
                "const": false
              },
              "filter_logic": {
                "const": "all_selected_filters_must_match"
              },
              "exact_boundary_guarantee": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "entire_disk_guarantee": {
                "const": false
              },
              "monotonicity_assumption": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "max_chart_evaluations": {
                "const": 101,
                "type": "integer"
              },
              "max_criterion_evaluations": {
                "const": 808,
                "type": "integer"
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalFeasibilityAuditRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "location",
          "profile",
          "filters",
          "sample_minutes"
        ],
        "properties": {
          "start_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "end_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "location": {
            "$ref": "#/components/schemas/GeographicLocation"
          },
          "profile": {
            "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
          },
          "filters": {
            "$ref": "#/components/schemas/ElectionalFilters"
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ]
          }
        }
      },
      "ElectionalFeasibilityAuditSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "utc",
          "status",
          "reason_code",
          "matches_all",
          "matched_criterion_ids",
          "failed_criterion_ids",
          "criteria"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "status": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ]
          },
          "reason_code": {
            "oneOf": [
              {
                "type": "string",
                "const": "undefined_for_input_geometry"
              },
              {
                "type": "null"
              }
            ]
          },
          "matches_all": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "matched_criterion_ids": {
            "oneOf": [
              {
                "type": "array",
                "maxItems": 8,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "failed_criterion_ids": {
            "oneOf": [
              {
                "type": "array",
                "maxItems": 8,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "criteria": {
            "oneOf": [
              {
                "type": "array",
                "minItems": 1,
                "maxItems": 8,
                "items": {
                  "$ref": "#/components/schemas/ElectionalRobustnessAuditEvaluation"
                }
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalFeasibilityAuditCriterion": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind",
          "available_sample_count",
          "matching_sample_count",
          "failing_sample_count",
          "matching_ratio",
          "blocking_ratio",
          "ever_matches",
          "always_matches_when_evaluable"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "failing_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "matching_ratio": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "blocking_ratio": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "ever_matches": {
            "type": "boolean"
          },
          "always_matches_when_evaluable": {
            "type": "boolean"
          }
        }
      },
      "ElectionalFeasibilityBlockingSignature": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "failed_criterion_ids",
          "sample_count",
          "sample_ids",
          "first_sample_utc",
          "last_sample_utc"
        ],
        "properties": {
          "failed_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            },
            "minItems": 1
          },
          "sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            },
            "minItems": 1
          },
          "first_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "last_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          }
        }
      },
      "ElectionalFeasibilityMinimalRelaxationSet": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "criterion_ids",
          "criterion_count",
          "witness_sample_count",
          "witness_sample_ids",
          "first_witness_utc"
        ],
        "properties": {
          "criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "witness_sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "witness_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            },
            "minItems": 1
          },
          "first_witness_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          }
        }
      },
      "ElectionalFeasibilityAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "feasibility",
          "samples",
          "criteria",
          "blocking_signatures",
          "minimal_relaxation_sets",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_feasibility_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "start_utc",
              "end_utc",
              "location",
              "profile",
              "filters",
              "sample_minutes"
            ],
            "properties": {
              "start_utc": {
                "type": "string",
                "format": "date-time",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
              },
              "end_utc": {
                "type": "string",
                "format": "date-time",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
              },
              "location": {
                "$ref": "#/components/schemas/GeographicLocation"
              },
              "profile": {
                "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
              },
              "filters": {
                "$ref": "#/components/schemas/ElectionalFilters"
              },
              "sample_minutes": {
                "type": "integer",
                "enum": [
                  15,
                  30,
                  60
                ]
              }
            }
          },
          "feasibility": {
            "type": "string",
            "enum": [
              "feasible_without_relaxation",
              "infeasible_across_evaluable_samples",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditCriterion"
            }
          },
          "blocking_signatures": {
            "type": "array",
            "maxItems": 255,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityBlockingSignature"
            }
          },
          "minimal_relaxation_sets": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityMinimalRelaxationSet"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "matching_sample_count",
              "failing_sample_count",
              "criterion_count",
              "blocking_signature_count",
              "minimal_relaxation_set_count"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "matching_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "failing_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "blocking_signature_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "minimal_relaxation_set_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "maximum_interval_days",
              "maximum_sample_count",
              "maximum_criterion_count",
              "maximum_criterion_evaluations",
              "filter_logic",
              "relaxation_semantics",
              "unavailable_samples_excluded_from_feasibility",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "causal_conflict_claim",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network",
              "sample_interval_minutes"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-feasibility-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "fixed_utc_grid"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "maximum_interval_days": {
                "const": 7,
                "type": "integer"
              },
              "maximum_sample_count": {
                "const": 672,
                "type": "integer"
              },
              "maximum_criterion_count": {
                "const": 8,
                "type": "integer"
              },
              "maximum_criterion_evaluations": {
                "const": 5376,
                "type": "integer"
              },
              "filter_logic": {
                "const": "all_selected_filters_must_match"
              },
              "relaxation_semantics": {
                "const": "inclusion_minimal_failed_criterion_sets_observed_at_one_or_more_evaluable_samples"
              },
              "unavailable_samples_excluded_from_feasibility": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "causal_conflict_claim": {
                "const": false
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              },
              "sample_interval_minutes": {
                "type": "integer",
                "enum": [
                  15,
                  30,
                  60
                ]
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalResolutionAuditRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "location",
          "profile",
          "filters"
        ],
        "properties": {
          "start_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "end_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "location": {
            "$ref": "#/components/schemas/GeographicLocation"
          },
          "profile": {
            "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
          },
          "filters": {
            "$ref": "#/components/schemas/ElectionalFilters"
          }
        }
      },
      "ElectionalResolutionAuditCriterion": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          }
        }
      },
      "ElectionalResolutionSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "sample_minutes",
          "sample_count",
          "available_sample_count",
          "unavailable_sample_count",
          "matching_sample_count",
          "failing_sample_count",
          "matching_sample_ids",
          "first_matching_utc",
          "last_matching_utc"
        ],
        "properties": {
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ]
          },
          "sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "failing_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "matching_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "first_matching_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_matching_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalResolutionMatchingRun": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "first_sample_id",
          "first_sample_utc",
          "last_sample_id",
          "last_sample_utc",
          "matching_sample_count",
          "observed_span_minutes",
          "witnessed_by_30_minute_grid",
          "witnessed_by_60_minute_grid",
          "witness_30_minute_sample_id",
          "witness_60_minute_sample_id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^run_[0-9]{4}$"
          },
          "first_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "last_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "last_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "observed_span_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10065
          },
          "witnessed_by_30_minute_grid": {
            "type": "boolean"
          },
          "witnessed_by_60_minute_grid": {
            "type": "boolean"
          },
          "witness_30_minute_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^sample_[0-9]{4}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "witness_60_minute_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^sample_[0-9]{4}$"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalResolutionComparison": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "coarse_sample_minutes",
          "fine_sample_minutes",
          "finest_matching_run_count",
          "witnessed_run_count",
          "missed_run_count",
          "missed_run_ids",
          "missed_run_witness_sample_ids"
        ],
        "properties": {
          "coarse_sample_minutes": {
            "type": "integer",
            "enum": [
              30,
              60
            ]
          },
          "fine_sample_minutes": {
            "type": "integer",
            "const": 15
          },
          "finest_matching_run_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "witnessed_run_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "missed_run_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "missed_run_ids": {
            "type": "array",
            "maxItems": 336,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^run_[0-9]{4}$"
            }
          },
          "missed_run_witness_sample_ids": {
            "type": "array",
            "maxItems": 336,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          }
        }
      },
      "ElectionalResolutionAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "resolution_status",
          "criteria",
          "samples",
          "resolutions",
          "finest_matching_runs",
          "comparisons",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_resolution_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
          },
          "resolution_status": {
            "type": "string",
            "enum": [
              "coarse_grids_cover_all_observed_runs",
              "finer_grid_recovers_observed_runs",
              "no_matches_observed",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "resolutions": {
            "type": "array",
            "minItems": 3,
            "maxItems": 3,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionSummary"
            }
          },
          "finest_matching_runs": {
            "type": "array",
            "maxItems": 336,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionMatchingRun"
            }
          },
          "comparisons": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionComparison"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "finest_matching_sample_count",
              "finest_matching_run_count",
              "runs_missed_by_60_minute_grid",
              "runs_missed_by_30_minute_grid",
              "criterion_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_matching_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_matching_run_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 336
              },
              "runs_missed_by_60_minute_grid": {
                "type": "integer",
                "minimum": 0,
                "maximum": 336
              },
              "runs_missed_by_30_minute_grid": {
                "type": "integer",
                "minimum": 0,
                "maximum": 336
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "resolution_minutes",
              "finest_sample_minutes",
              "coarse_grids_aligned_to_request_start",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_criterion_evaluations",
              "observed_run_semantics",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "run_boundaries_interpolated",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-resolution-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "single_finest_grid_with_aligned_projections"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "resolution_minutes": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "enum": [
                    15,
                    30,
                    60
                  ]
                },
                "minItems": 3,
                "maxItems": 3,
                "uniqueItems": true
              },
              "finest_sample_minutes": {
                "const": 15,
                "type": "integer"
              },
              "coarse_grids_aligned_to_request_start": {
                "const": true
              },
              "maximum_interval_days": {
                "const": 7,
                "type": "integer"
              },
              "maximum_chart_evaluations": {
                "const": 672,
                "type": "integer"
              },
              "maximum_criterion_count": {
                "const": 8,
                "type": "integer"
              },
              "maximum_criterion_evaluations": {
                "const": 5376,
                "type": "integer"
              },
              "observed_run_semantics": {
                "const": "contiguous_matching_samples_on_the_15_minute_grid"
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "run_boundaries_interpolated": {
                "const": false
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalSamplingPhaseAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalSamplingPhaseGrid": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "sample_minutes",
          "phase_offset_minutes",
          "sample_count",
          "available_sample_count",
          "unavailable_sample_count",
          "matching_sample_count",
          "matching_sample_ids",
          "witnessed_run_ids",
          "missed_run_ids"
        ],
        "properties": {
          "id": {
            "type": "string",
            "enum": [
              "phase_60_00",
              "phase_60_15",
              "phase_60_30",
              "phase_60_45",
              "phase_30_00",
              "phase_30_15"
            ]
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              30,
              60
            ]
          },
          "phase_offset_minutes": {
            "type": "integer",
            "enum": [
              0,
              15,
              30,
              45
            ]
          },
          "sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "matching_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "witnessed_run_ids": {
            "type": "array",
            "maxItems": 336,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^run_[0-9]{4}$"
            }
          },
          "missed_run_ids": {
            "type": "array",
            "maxItems": 336,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^run_[0-9]{4}$"
            }
          }
        }
      },
      "ElectionalSamplingPhaseMatchingRun": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "first_sample_id",
          "first_sample_utc",
          "last_sample_id",
          "last_sample_utc",
          "matching_sample_count",
          "observed_span_minutes",
          "witnessed_30_minute_phase_offsets",
          "missed_30_minute_phase_offsets",
          "phase_sensitive_at_30_minutes",
          "witnessed_60_minute_phase_offsets",
          "missed_60_minute_phase_offsets",
          "phase_sensitive_at_60_minutes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^run_[0-9]{4}$"
          },
          "first_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "last_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "last_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "observed_span_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10065
          },
          "witnessed_30_minute_phase_offsets": {
            "type": "array",
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "enum": [
                0,
                15,
                30,
                45
              ]
            }
          },
          "missed_30_minute_phase_offsets": {
            "type": "array",
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "enum": [
                0,
                15,
                30,
                45
              ]
            }
          },
          "phase_sensitive_at_30_minutes": {
            "type": "boolean"
          },
          "witnessed_60_minute_phase_offsets": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "enum": [
                0,
                15,
                30,
                45
              ]
            }
          },
          "missed_60_minute_phase_offsets": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "enum": [
                0,
                15,
                30,
                45
              ]
            }
          },
          "phase_sensitive_at_60_minutes": {
            "type": "boolean"
          }
        }
      },
      "ElectionalSamplingPhaseComparison": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "sample_minutes",
          "phase_count",
          "phase_offsets_minutes",
          "finest_matching_run_count",
          "phase_invariant_run_count",
          "phase_invariant_run_ids",
          "phase_sensitive_run_count",
          "phase_sensitive_run_ids",
          "phase_sensitive_run_witness_sample_ids",
          "phases_with_any_match_count",
          "phases_without_any_match_count",
          "phases_without_any_match_ids"
        ],
        "properties": {
          "sample_minutes": {
            "type": "integer",
            "enum": [
              30,
              60
            ]
          },
          "phase_count": {
            "type": "integer",
            "enum": [
              2,
              4
            ]
          },
          "phase_offsets_minutes": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "enum": [
                0,
                15,
                30,
                45
              ]
            }
          },
          "finest_matching_run_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "phase_invariant_run_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "phase_invariant_run_ids": {
            "type": "array",
            "maxItems": 336,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^run_[0-9]{4}$"
            }
          },
          "phase_sensitive_run_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 336
          },
          "phase_sensitive_run_ids": {
            "type": "array",
            "maxItems": 336,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^run_[0-9]{4}$"
            }
          },
          "phase_sensitive_run_witness_sample_ids": {
            "type": "array",
            "maxItems": 336,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "phases_with_any_match_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4
          },
          "phases_without_any_match_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4
          },
          "phases_without_any_match_ids": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "phase_60_00",
                "phase_60_15",
                "phase_60_30",
                "phase_60_45",
                "phase_30_00",
                "phase_30_15"
              ]
            }
          }
        }
      },
      "ElectionalSamplingPhaseAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "phase_status",
          "criteria",
          "samples",
          "phase_grids",
          "finest_matching_runs",
          "comparisons",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_sampling_phase_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalSamplingPhaseAuditRequest"
          },
          "phase_status": {
            "type": "string",
            "enum": [
              "all_observed_runs_phase_invariant",
              "sampling_phase_changes_observed_run_detection",
              "no_matches_observed",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "phase_grids": {
            "type": "array",
            "minItems": 6,
            "maxItems": 6,
            "items": {
              "$ref": "#/components/schemas/ElectionalSamplingPhaseGrid"
            }
          },
          "finest_matching_runs": {
            "type": "array",
            "maxItems": 336,
            "items": {
              "$ref": "#/components/schemas/ElectionalSamplingPhaseMatchingRun"
            }
          },
          "comparisons": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "$ref": "#/components/schemas/ElectionalSamplingPhaseComparison"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "finest_matching_sample_count",
              "finest_matching_run_count",
              "phase_sensitive_60_minute_run_count",
              "phase_sensitive_30_minute_run_count",
              "criterion_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_matching_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_matching_run_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 336
              },
              "phase_sensitive_60_minute_run_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 336
              },
              "phase_sensitive_30_minute_run_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 336
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "finest_sample_minutes",
              "coarse_resolution_minutes",
              "phase_offset_origin",
              "phase_offsets_minutes",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_criterion_evaluations",
              "observed_run_semantics",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "run_boundaries_interpolated",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-sampling-phase-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "single_finest_grid_with_all_coarse_phase_projections"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "finest_sample_minutes": {
                "type": "integer",
                "const": 15
              },
              "coarse_resolution_minutes": {
                "type": "array",
                "minItems": 2,
                "maxItems": 2,
                "uniqueItems": true,
                "items": {
                  "type": "integer",
                  "enum": [
                    30,
                    60
                  ]
                }
              },
              "phase_offset_origin": {
                "const": "request_start"
              },
              "phase_offsets_minutes": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "30",
                  "60"
                ],
                "properties": {
                  "30": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "uniqueItems": true,
                    "items": {
                      "type": "integer",
                      "enum": [
                        0,
                        15
                      ]
                    }
                  },
                  "60": {
                    "type": "array",
                    "minItems": 4,
                    "maxItems": 4,
                    "uniqueItems": true,
                    "items": {
                      "type": "integer",
                      "enum": [
                        0,
                        15,
                        30,
                        45
                      ]
                    }
                  }
                }
              },
              "maximum_interval_days": {
                "type": "integer",
                "const": 7
              },
              "maximum_chart_evaluations": {
                "type": "integer",
                "const": 672
              },
              "maximum_criterion_count": {
                "type": "integer",
                "const": 8
              },
              "maximum_criterion_evaluations": {
                "type": "integer",
                "const": 5376
              },
              "observed_run_semantics": {
                "const": "contiguous_matching_samples_on_the_15_minute_grid"
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "run_boundaries_interpolated": {
                "const": false
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionOmissionAuditRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "location",
          "profile",
          "filters",
          "sample_minutes"
        ],
        "properties": {
          "start_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "end_utc": {
            "type": "string",
            "format": "date-time",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
          },
          "location": {
            "$ref": "#/components/schemas/GeographicLocation"
          },
          "profile": {
            "$ref": "#/components/schemas/ElectionalRobustnessAuditProfile"
          },
          "filters": {
            "$ref": "#/components/schemas/ElectionalFilters"
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ]
          }
        }
      },
      "ElectionalCriterionOmissionRun": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "first_sample_id",
          "last_sample_id",
          "first_sample_utc",
          "last_sample_utc",
          "sample_count",
          "observed_span_minutes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^run_[0-9]{4}$"
          },
          "first_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "last_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "last_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "observed_span_minutes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 40260
          }
        }
      },
      "ElectionalCriterionOmissionResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind",
          "classification",
          "failed_sample_count",
          "uniquely_failed_sample_count",
          "cofailed_sample_count",
          "baseline_matching_sample_count",
          "omission_matching_sample_count",
          "newly_matching_sample_count",
          "newly_matching_sample_ids",
          "first_newly_matching_sample_id",
          "first_newly_matching_utc",
          "omission_matching_sample_ids",
          "omission_matching_runs"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "classification": {
            "type": "string",
            "enum": [
              "uniquely_excluding_observed_samples",
              "only_cofailing_observed_samples",
              "never_failed_observed_samples",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "failed_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "uniquely_failed_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "cofailed_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "baseline_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "omission_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "newly_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "newly_matching_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "first_newly_matching_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^sample_[0-9]{4}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_newly_matching_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          },
          "omission_matching_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "omission_matching_runs": {
            "type": "array",
            "maxItems": 336,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionOmissionRun"
            }
          }
        }
      },
      "ElectionalCriterionOmissionAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "omission_status",
          "baseline_feasibility",
          "samples",
          "criteria",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_omission_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionOmissionAuditRequest"
          },
          "omission_status": {
            "type": "string",
            "enum": [
              "criterion_omission_changes_observed_matches",
              "no_single_criterion_omission_changes_observed_matches",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "baseline_feasibility": {
            "type": "string",
            "enum": [
              "feasible_without_relaxation",
              "infeasible_across_evaluable_samples",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionOmissionResult"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "baseline_matching_sample_count",
              "criterion_count",
              "criteria_with_new_matches_count",
              "total_newly_matching_observations"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "baseline_matching_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "criteria_with_new_matches_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              },
              "total_newly_matching_observations": {
                "type": "integer",
                "minimum": 0,
                "maximum": 5376
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "sample_interval_minutes",
              "maximum_interval_days",
              "maximum_sample_count",
              "maximum_criterion_count",
              "maximum_chart_evaluations",
              "maximum_in_memory_omission_evaluations",
              "analysis_method",
              "chart_recalculation_for_omissions",
              "filter_logic",
              "unavailable_samples_excluded_from_omission_analysis",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "causal_attribution",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-omission-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "fixed_utc_grid"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "sample_interval_minutes": {
                "type": "integer",
                "enum": [
                  15,
                  30,
                  60
                ]
              },
              "maximum_interval_days": {
                "type": "integer",
                "const": 7
              },
              "maximum_sample_count": {
                "type": "integer",
                "const": 672
              },
              "maximum_criterion_count": {
                "type": "integer",
                "const": 8
              },
              "maximum_chart_evaluations": {
                "type": "integer",
                "const": 672
              },
              "maximum_in_memory_omission_evaluations": {
                "type": "integer",
                "const": 5376
              },
              "analysis_method": {
                "const": "leave_one_criterion_out_over_existing_sample_evaluations"
              },
              "chart_recalculation_for_omissions": {
                "const": false
              },
              "filter_logic": {
                "const": "all_non_omitted_filters_must_match"
              },
              "unavailable_samples_excluded_from_omission_analysis": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "causal_attribution": {
                "const": false
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionPairAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionOmissionAuditRequest"
      },
      "ElectionalCriterionPairRun": {
        "$ref": "#/components/schemas/ElectionalCriterionOmissionRun"
      },
      "ElectionalCriterionPairDefinition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          }
        }
      },
      "ElectionalCriterionPairResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "criterion_ids",
          "criterion_kinds",
          "classification",
          "baseline_matching_sample_count",
          "first_criterion_single_new_count",
          "second_criterion_single_new_count",
          "pair_omission_matching_sample_count",
          "newly_matching_sample_count",
          "newly_matching_sample_ids",
          "jointly_excluding_sample_count",
          "jointly_excluding_sample_ids",
          "first_jointly_excluding_sample_id",
          "first_jointly_excluding_utc",
          "pair_omission_matching_sample_ids",
          "pair_omission_matching_runs"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^pair_[0-9]{2}$"
          },
          "criterion_ids": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "criterion_kinds": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "classification": {
            "type": "string",
            "enum": [
              "joint_exclusion_observed",
              "only_single_criterion_effects_observed",
              "no_pair_omission_change_observed",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "baseline_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "first_criterion_single_new_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "second_criterion_single_new_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "pair_omission_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "newly_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "newly_matching_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "jointly_excluding_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "jointly_excluding_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "first_jointly_excluding_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^sample_[0-9]{4}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_jointly_excluding_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          },
          "pair_omission_matching_sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "pair_omission_matching_runs": {
            "type": "array",
            "maxItems": 336,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionPairRun"
            }
          }
        }
      },
      "ElectionalCriterionPairAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "pair_status",
          "baseline_feasibility",
          "criteria",
          "samples",
          "pairs",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_pair_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionPairAuditRequest"
          },
          "pair_status": {
            "type": "string",
            "enum": [
              "joint_criterion_exclusion_observed",
              "pair_omission_changes_without_joint_exclusion",
              "no_pair_omission_changes_observed",
              "insufficient_criteria_for_pair_analysis",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "baseline_feasibility": {
            "type": "string",
            "enum": [
              "feasible_without_relaxation",
              "infeasible_across_evaluable_samples",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionPairDefinition"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "pairs": {
            "type": "array",
            "maxItems": 28,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionPairResult"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "baseline_matching_sample_count",
              "criterion_count",
              "pair_count",
              "pairs_with_new_matches_count",
              "joint_exclusion_pair_count",
              "total_jointly_excluding_observations"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "baseline_matching_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "pairs_with_new_matches_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "joint_exclusion_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "total_jointly_excluding_observations": {
                "type": "integer",
                "minimum": 0,
                "maximum": 18816
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "sample_interval_minutes",
              "maximum_interval_days",
              "maximum_sample_count",
              "maximum_criterion_count",
              "maximum_pair_count",
              "maximum_chart_evaluations",
              "maximum_in_memory_pair_evaluations",
              "analysis_method",
              "chart_recalculation_for_pairs",
              "joint_exclusion_semantics",
              "unavailable_samples_excluded_from_pair_analysis",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "causal_interaction_claim",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-pair-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "fixed_utc_grid"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "sample_interval_minutes": {
                "type": "integer",
                "enum": [
                  15,
                  30,
                  60
                ]
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_sample_count": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_pair_count": {
                "const": 28
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_in_memory_pair_evaluations": {
                "const": 18816
              },
              "analysis_method": {
                "const": "leave_two_criteria_out_over_existing_sample_evaluations"
              },
              "chart_recalculation_for_pairs": {
                "const": false
              },
              "joint_exclusion_semantics": {
                "const": "sample_matches_only_after_both_named_criteria_are_omitted"
              },
              "unavailable_samples_excluded_from_pair_analysis": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "causal_interaction_claim": {
                "const": false
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRelationAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionOmissionAuditRequest"
      },
      "ElectionalCriterionRelationDefinition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          }
        }
      },
      "ElectionalCriterionRelationResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "criterion_ids",
          "criterion_kinds",
          "classification",
          "available_sample_count",
          "first_matching_sample_count",
          "second_matching_sample_count",
          "both_matching_sample_count",
          "first_only_matching_sample_count",
          "second_only_matching_sample_count",
          "neither_matching_sample_count",
          "both_matching_sample_ids",
          "first_only_matching_sample_ids",
          "second_only_matching_sample_ids",
          "neither_matching_sample_ids",
          "first_both_matching_sample_id",
          "first_both_matching_utc",
          "observed_co_satisfiable",
          "observed_disjoint",
          "observed_first_implies_second",
          "observed_second_implies_first",
          "observed_equivalent"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^relation_[0-9]{2}$"
          },
          "criterion_ids": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "criterion_kinds": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "classification": {
            "type": "string",
            "enum": [
              "observed_overlap_without_implication",
              "observed_disjoint",
              "observed_equivalent",
              "first_observed_implies_second",
              "second_observed_implies_first",
              "first_criterion_never_observed_matching",
              "second_criterion_never_observed_matching",
              "neither_criterion_observed_matching",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "first_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "second_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "both_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "first_only_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "second_only_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "neither_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "both_matching_sample_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRelationSampleIds"
          },
          "first_only_matching_sample_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRelationSampleIds"
          },
          "second_only_matching_sample_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRelationSampleIds"
          },
          "neither_matching_sample_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRelationSampleIds"
          },
          "first_both_matching_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^sample_[0-9]{4}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_both_matching_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          },
          "observed_co_satisfiable": {
            "type": "boolean"
          },
          "observed_disjoint": {
            "type": "boolean"
          },
          "observed_first_implies_second": {
            "type": "boolean"
          },
          "observed_second_implies_first": {
            "type": "boolean"
          },
          "observed_equivalent": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRelationSampleIds": {
        "type": "array",
        "maxItems": 672,
        "uniqueItems": true,
        "items": {
          "type": "string",
          "pattern": "^sample_[0-9]{4}$"
        }
      },
      "ElectionalCriterionRelationAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "relation_status",
          "baseline_feasibility",
          "criteria",
          "samples",
          "relations",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_relation_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRelationAuditRequest"
          },
          "relation_status": {
            "type": "string",
            "enum": [
              "criterion_relations_observed",
              "insufficient_criteria_for_relation_analysis",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "baseline_feasibility": {
            "type": "string",
            "enum": [
              "feasible_without_relaxation",
              "infeasible_across_evaluable_samples",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRelationDefinition"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "relations": {
            "type": "array",
            "maxItems": 28,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRelationResult"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "criterion_count",
              "relation_count",
              "co_satisfiable_relation_count",
              "disjoint_relation_count",
              "directional_implication_relation_count",
              "equivalent_relation_count",
              "never_matching_criterion_count"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "co_satisfiable_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "disjoint_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "directional_implication_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "equivalent_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 28
              },
              "never_matching_criterion_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 8
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "sample_interval_minutes",
              "maximum_interval_days",
              "maximum_sample_count",
              "maximum_criterion_count",
              "maximum_relation_count",
              "maximum_chart_evaluations",
              "maximum_in_memory_relation_evaluations",
              "analysis_method",
              "chart_recalculation_for_relations",
              "implication_semantics",
              "unavailable_samples_excluded_from_relation_analysis",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "logical_universality_claim",
              "causal_relation_claim",
              "ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-relation-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "fixed_utc_grid"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "sample_interval_minutes": {
                "type": "integer",
                "enum": [
                  15,
                  30,
                  60
                ]
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_sample_count": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_relation_count": {
                "const": 28
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_in_memory_relation_evaluations": {
                "const": 18816
              },
              "analysis_method": {
                "const": "pairwise_truth_tables_over_existing_sample_evaluations"
              },
              "chart_recalculation_for_relations": {
                "const": false
              },
              "implication_semantics": {
                "const": "non_vacuous_over_evaluable_samples_only"
              },
              "unavailable_samples_excluded_from_relation_analysis": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "logical_universality_claim": {
                "const": false
              },
              "causal_relation_claim": {
                "const": false
              },
              "ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionBudgetAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionOmissionAuditRequest"
      },
      "ElectionalCriterionBudgetOption": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_ids",
          "omitted_criterion_kinds",
          "retained_criterion_ids",
          "matching_sample_count",
          "matching_sample_ids",
          "newly_matching_sample_count",
          "newly_matching_sample_ids",
          "first_matching_sample_id",
          "first_matching_utc",
          "last_matching_sample_id",
          "last_matching_utc"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^budget_0[0-8]_option_[0-9]{3}$"
          },
          "omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_kinds": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "retained_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "matching_sample_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRelationSampleIds"
          },
          "newly_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "newly_matching_sample_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRelationSampleIds"
          },
          "first_matching_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^sample_[0-9]{4}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "first_matching_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_matching_sample_id": {
            "oneOf": [
              {
                "type": "string",
                "pattern": "^sample_[0-9]{4}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "last_matching_utc": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalCriterionBudget": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_count",
          "evaluated_subset_count",
          "maximum_matching_sample_count",
          "gain_from_previous_budget",
          "optimal_option_count",
          "options"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^budget_0[0-8]$"
          },
          "omitted_criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "evaluated_subset_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "maximum_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "gain_from_previous_budget": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "optimal_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "options": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetOption"
            }
          }
        }
      },
      "ElectionalCriterionBudgetAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "budget_status",
          "baseline_feasibility",
          "criteria",
          "samples",
          "budgets",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_budget_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionBudgetAuditRequest"
          },
          "budget_status": {
            "type": "string",
            "enum": [
              "criterion_budget_frontier_observed",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "baseline_feasibility": {
            "type": "string",
            "enum": [
              "feasible_without_relaxation",
              "infeasible_across_evaluable_samples",
              "indeterminate_no_evaluable_samples"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRelationDefinition"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "budgets": {
            "type": "array",
            "minItems": 2,
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudget"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sample_count",
              "available_sample_count",
              "unavailable_sample_count",
              "baseline_matching_sample_count",
              "criterion_count",
              "budget_count",
              "evaluated_subset_count",
              "returned_optimal_option_count",
              "minimum_omissions_for_any_match"
            ],
            "properties": {
              "sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "baseline_matching_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "budget_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 9
              },
              "evaluated_subset_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 256
              },
              "returned_optimal_option_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 256
              },
              "minimum_omissions_for_any_match": {
                "oneOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 8
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "sample_interval_minutes",
              "maximum_interval_days",
              "maximum_sample_count",
              "maximum_criterion_count",
              "maximum_budget_count",
              "maximum_evaluated_subset_count",
              "maximum_chart_evaluations",
              "maximum_in_memory_subset_sample_projections",
              "analysis_method",
              "optimization_objective",
              "all_optimal_ties_returned",
              "chart_recalculation_for_subset_projections",
              "unavailable_samples_excluded_from_optimization",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "astrological_quality_ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-budget-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "fixed_utc_grid"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "sample_interval_minutes": {
                "type": "integer",
                "enum": [
                  15,
                  30,
                  60
                ]
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_sample_count": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_budget_count": {
                "const": 9
              },
              "maximum_evaluated_subset_count": {
                "const": 256
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_in_memory_subset_sample_projections": {
                "const": 172032
              },
              "analysis_method": {
                "const": "exhaustive_exact_omission_budget_projection_over_existing_sample_evaluations"
              },
              "optimization_objective": {
                "const": "maximum_observed_matching_sample_count_for_exact_omission_count"
              },
              "all_optimal_ties_returned": {
                "const": true
              },
              "chart_recalculation_for_subset_projections": {
                "const": false
              },
              "unavailable_samples_excluded_from_optimization": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "astrological_quality_ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionBudgetStabilityAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionBudgetStabilityOption": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "omitted_criterion_ids",
          "omitted_criterion_kinds"
        ],
        "properties": {
          "omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_kinds": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          }
        }
      },
      "ElectionalCriterionBudgetStabilityGrid": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "sample_minutes",
          "phase_offset_minutes",
          "sample_count",
          "available_sample_count",
          "unavailable_sample_count",
          "sample_ids"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ]
          },
          "phase_offset_minutes": {
            "type": "integer",
            "enum": [
              0,
              15,
              30,
              45
            ]
          },
          "sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "sample_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          }
        }
      },
      "ElectionalCriterionBudgetStabilityGridResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "grid_id",
          "maximum_matching_sample_count",
          "optimal_option_count",
          "optimal_options"
        ],
        "properties": {
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "maximum_matching_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "optimal_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "optimal_options": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityOption"
            }
          }
        }
      },
      "ElectionalCriterionBudgetStabilityBudget": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_count",
          "evaluated_subset_count_per_grid",
          "grid_results",
          "candidate_optimal_option_count",
          "universally_optimal_option_count",
          "universally_optimal_options",
          "grid_sensitive_option_count",
          "grid_sensitive_options",
          "stability"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^budget_0[0-8]$"
          },
          "omitted_criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "evaluated_subset_count_per_grid": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "grid_results": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityGridResult"
            }
          },
          "candidate_optimal_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "universally_optimal_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "universally_optimal_options": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityOption"
            }
          },
          "grid_sensitive_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "grid_sensitive_options": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityOption"
            }
          },
          "stability": {
            "type": "string",
            "enum": [
              "universal_optimum_observed",
              "optimum_changes_across_grids",
              "indeterminate_incomplete_grid_evidence"
            ]
          }
        }
      },
      "ElectionalCriterionBudgetStabilityAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "stability_status",
          "criteria",
          "samples",
          "grids",
          "budgets",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_budget_stability_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityAuditRequest"
          },
          "stability_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "budget_optima_change_across_sampling_grids",
              "all_budget_optima_stable_across_sampling_grids"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRelationDefinition"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityGrid"
            }
          },
          "budgets": {
            "type": "array",
            "minItems": 2,
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityBudget"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "budget_count",
              "evaluated_subset_optimization_count",
              "returned_grid_optimal_option_count",
              "universally_stable_budget_count",
              "grid_sensitive_budget_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "budget_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 9
              },
              "evaluated_subset_optimization_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "returned_grid_optimal_option_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1792
              },
              "universally_stable_budget_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9
              },
              "grid_sensitive_budget_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "finest_sample_minutes",
              "grid_specs",
              "phase_offset_origin",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_grid_count",
              "maximum_budget_count",
              "maximum_subset_count_per_grid",
              "maximum_subset_optimization_count",
              "maximum_in_memory_subset_sample_projections",
              "optimization_objective",
              "universal_optimum_semantics",
              "all_optimal_ties_returned",
              "chart_recalculation_for_grid_projections",
              "unavailable_samples_excluded_from_optimization",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "astrological_quality_ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-budget-stability-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "single_15_minute_grid_with_all_30_and_60_minute_phase_projections"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "finest_sample_minutes": {
                "const": 15
              },
              "grid_specs": {
                "type": "array",
                "minItems": 7,
                "maxItems": 7,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "sample_minutes",
                    "phase_offset_minutes"
                  ],
                  "properties": {
                    "sample_minutes": {
                      "type": "integer",
                      "enum": [
                        15,
                        30,
                        60
                      ]
                    },
                    "phase_offset_minutes": {
                      "type": "integer",
                      "enum": [
                        0,
                        15,
                        30,
                        45
                      ]
                    }
                  }
                }
              },
              "phase_offset_origin": {
                "const": "request_start"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_grid_count": {
                "const": 7
              },
              "maximum_budget_count": {
                "const": 9
              },
              "maximum_subset_count_per_grid": {
                "const": 256
              },
              "maximum_subset_optimization_count": {
                "const": 1792
              },
              "maximum_in_memory_subset_sample_projections": {
                "const": 516096
              },
              "optimization_objective": {
                "const": "maximum_observed_matching_sample_count_for_exact_omission_count_within_each_grid"
              },
              "universal_optimum_semantics": {
                "const": "same_omission_set_is_tied_optimal_on_every_evaluable_grid"
              },
              "all_optimal_ties_returned": {
                "const": true
              },
              "chart_recalculation_for_grid_projections": {
                "const": false
              },
              "unavailable_samples_excluded_from_optimization": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "astrological_quality_ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionBudgetRegretAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionBudgetRegretFraction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "numerator",
          "denominator"
        ],
        "properties": {
          "numerator": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "denominator": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          }
        }
      },
      "ElectionalCriterionBudgetRegretGridResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "grid_id",
          "status",
          "matching_sample_count",
          "grid_maximum_matching_sample_count",
          "regret_sample_count",
          "regret_fraction_of_available_samples"
        ],
        "properties": {
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "grid_maximum_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "regret_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "regret_fraction_of_available_samples": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretFraction"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalCriterionBudgetRegretOption": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_ids",
          "omitted_criterion_kinds",
          "grid_results",
          "maximum_regret_fraction_of_available_samples",
          "worst_grid_ids",
          "zero_regret_on_every_evaluable_grid"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^budget_0[0-8]_option_[0-9]{3}$"
          },
          "omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_kinds": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "grid_results": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretGridResult"
            }
          },
          "maximum_regret_fraction_of_available_samples": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretFraction"
              },
              {
                "type": "null"
              }
            ]
          },
          "worst_grid_ids": {
            "type": "array",
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "zero_regret_on_every_evaluable_grid": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ElectionalCriterionBudgetRegretBudget": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_count",
          "evaluated_subset_count_per_grid",
          "candidate_option_count",
          "options",
          "minimax_regret_fraction_of_available_samples",
          "minimax_option_count",
          "minimax_option_ids",
          "regret_status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^budget_0[0-8]$"
          },
          "omitted_criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "evaluated_subset_count_per_grid": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "candidate_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "options": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretOption"
            }
          },
          "minimax_regret_fraction_of_available_samples": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretFraction"
              },
              {
                "type": "null"
              }
            ]
          },
          "minimax_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "minimax_option_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^budget_0[0-8]_option_[0-9]{3}$"
            }
          },
          "regret_status": {
            "type": "string",
            "enum": [
              "zero_regret_option_observed",
              "positive_minimax_regret_observed",
              "indeterminate_incomplete_grid_evidence"
            ]
          }
        }
      },
      "ElectionalCriterionBudgetRegretAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "regret_status",
          "criteria",
          "samples",
          "grids",
          "budgets",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_budget_regret_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretAuditRequest"
          },
          "regret_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "positive_minimax_regret_required_for_some_budgets",
              "zero_regret_option_exists_for_every_budget"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRelationDefinition"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityGrid"
            }
          },
          "budgets": {
            "type": "array",
            "minItems": 2,
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetRegretBudget"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "budget_count",
              "evaluated_subset_optimization_count",
              "returned_candidate_option_count",
              "returned_option_grid_result_count",
              "zero_regret_budget_count",
              "positive_minimax_regret_budget_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "budget_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 9
              },
              "evaluated_subset_optimization_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "returned_candidate_option_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 256
              },
              "returned_option_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1792
              },
              "zero_regret_budget_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9
              },
              "positive_minimax_regret_budget_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "finest_sample_minutes",
              "grid_specs",
              "phase_offset_origin",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_grid_count",
              "maximum_budget_count",
              "maximum_subset_count_per_grid",
              "maximum_subset_optimization_count",
              "maximum_in_memory_subset_sample_projections",
              "maximum_returned_candidate_option_count",
              "maximum_returned_option_grid_result_count",
              "regret_definition",
              "optimization_objective",
              "all_minimax_ties_returned",
              "exact_fraction_comparison",
              "chart_recalculation_for_grid_projections",
              "unavailable_samples_excluded_from_optimization",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "astrological_quality_ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-budget-regret-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "single_15_minute_grid_with_all_30_and_60_minute_phase_projections"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "finest_sample_minutes": {
                "const": 15
              },
              "grid_specs": {
                "type": "array",
                "minItems": 7,
                "maxItems": 7,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "sample_minutes",
                    "phase_offset_minutes"
                  ],
                  "properties": {
                    "sample_minutes": {
                      "type": "integer",
                      "enum": [
                        15,
                        30,
                        60
                      ]
                    },
                    "phase_offset_minutes": {
                      "type": "integer",
                      "enum": [
                        0,
                        15,
                        30,
                        45
                      ]
                    }
                  }
                }
              },
              "phase_offset_origin": {
                "const": "request_start"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_grid_count": {
                "const": 7
              },
              "maximum_budget_count": {
                "const": 9
              },
              "maximum_subset_count_per_grid": {
                "const": 256
              },
              "maximum_subset_optimization_count": {
                "const": 1792
              },
              "maximum_in_memory_subset_sample_projections": {
                "const": 516096
              },
              "maximum_returned_candidate_option_count": {
                "const": 256
              },
              "maximum_returned_option_grid_result_count": {
                "const": 1792
              },
              "regret_definition": {
                "const": "grid_optimum_matching_sample_count_minus_option_matching_sample_count_divided_by_grid_available_sample_count"
              },
              "optimization_objective": {
                "const": "minimize_maximum_exact_regret_fraction_across_all_evaluable_grids_within_each_exact_omission_budget"
              },
              "all_minimax_ties_returned": {
                "const": true
              },
              "exact_fraction_comparison": {
                "const": true
              },
              "chart_recalculation_for_grid_projections": {
                "const": false
              },
              "unavailable_samples_excluded_from_optimization": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "astrological_quality_ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionBudgetParetoAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionBudgetParetoGridResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "grid_id",
          "status",
          "matching_sample_count",
          "grid_maximum_matching_sample_count",
          "deficit_from_grid_optimum_sample_count"
        ],
        "properties": {
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "grid_maximum_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "deficit_from_grid_optimum_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          }
        }
      },
      "ElectionalCriterionBudgetParetoDominanceCertificate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "dominating_option_id",
          "strict_improvement_grid_ids"
        ],
        "properties": {
          "dominating_option_id": {
            "type": "string",
            "pattern": "^budget_0[0-8]_option_[0-9]{3}$"
          },
          "strict_improvement_grid_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          }
        }
      },
      "ElectionalCriterionBudgetParetoOption": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_ids",
          "omitted_criterion_kinds",
          "grid_results",
          "pareto_optimal",
          "dominated_by_option_count",
          "domination_certificates"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^budget_0[0-8]_option_[0-9]{3}$"
          },
          "omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_kinds": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "grid_results": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetParetoGridResult"
            }
          },
          "pareto_optimal": {
            "type": "boolean"
          },
          "dominated_by_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 69
          },
          "domination_certificates": {
            "type": "array",
            "maxItems": 69,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetParetoDominanceCertificate"
            }
          }
        }
      },
      "ElectionalCriterionBudgetParetoBudget": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_count",
          "evaluated_subset_count_per_grid",
          "candidate_option_count",
          "options",
          "pareto_option_count",
          "pareto_option_ids",
          "strictly_dominated_option_count",
          "dominance_relation_count",
          "pareto_status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^budget_0[0-8]$"
          },
          "omitted_criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "evaluated_subset_count_per_grid": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "candidate_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "options": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetParetoOption"
            }
          },
          "pareto_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "pareto_option_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^budget_0[0-8]_option_[0-9]{3}$"
            }
          },
          "strictly_dominated_option_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "dominance_relation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2415
          },
          "pareto_status": {
            "type": "string",
            "enum": [
              "pareto_frontier_observed",
              "indeterminate_incomplete_grid_evidence"
            ]
          }
        }
      },
      "ElectionalCriterionBudgetParetoAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "pareto_status",
          "criteria",
          "samples",
          "grids",
          "budgets",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_budget_pareto_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionBudgetParetoAuditRequest"
          },
          "pareto_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "pareto_frontiers_observed"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRelationDefinition"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetStabilityGrid"
            }
          },
          "budgets": {
            "type": "array",
            "minItems": 2,
            "maxItems": 9,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionBudgetParetoBudget"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "budget_count",
              "evaluated_subset_optimization_count",
              "returned_candidate_option_count",
              "returned_option_grid_result_count",
              "returned_pareto_option_count",
              "returned_dominance_relation_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "budget_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 9
              },
              "evaluated_subset_optimization_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "returned_candidate_option_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 256
              },
              "returned_option_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1792
              },
              "returned_pareto_option_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 256
              },
              "returned_dominance_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 6307
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "finest_sample_minutes",
              "grid_specs",
              "phase_offset_origin",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_grid_count",
              "maximum_budget_count",
              "maximum_subset_count_per_grid",
              "maximum_subset_optimization_count",
              "maximum_in_memory_subset_sample_projections",
              "maximum_returned_candidate_option_count",
              "maximum_returned_option_grid_result_count",
              "maximum_returned_dominance_relation_count",
              "dominance_definition",
              "pareto_semantics",
              "all_pareto_ties_returned",
              "weights_applied",
              "floating_point_comparison",
              "chart_recalculation_for_grid_projections",
              "unavailable_samples_excluded_from_dominance",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "astrological_quality_ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-budget-pareto-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "single_15_minute_grid_with_all_30_and_60_minute_phase_projections"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "finest_sample_minutes": {
                "const": 15
              },
              "grid_specs": {
                "type": "array",
                "minItems": 7,
                "maxItems": 7,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "sample_minutes",
                    "phase_offset_minutes"
                  ],
                  "properties": {
                    "sample_minutes": {
                      "type": "integer",
                      "enum": [
                        15,
                        30,
                        60
                      ]
                    },
                    "phase_offset_minutes": {
                      "type": "integer",
                      "enum": [
                        0,
                        15,
                        30,
                        45
                      ]
                    }
                  }
                }
              },
              "phase_offset_origin": {
                "const": "request_start"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_grid_count": {
                "const": 7
              },
              "maximum_budget_count": {
                "const": 9
              },
              "maximum_subset_count_per_grid": {
                "const": 256
              },
              "maximum_subset_optimization_count": {
                "const": 1792
              },
              "maximum_in_memory_subset_sample_projections": {
                "const": 516096
              },
              "maximum_returned_candidate_option_count": {
                "const": 256
              },
              "maximum_returned_option_grid_result_count": {
                "const": 1792
              },
              "maximum_returned_dominance_relation_count": {
                "const": 6307
              },
              "dominance_definition": {
                "const": "at_least_as_many_matching_samples_on_every_evaluable_grid_and_strictly_more_on_at_least_one"
              },
              "pareto_semantics": {
                "const": "option_is_not_dominated_by_any_other_option_within_the_same_exact_omission_budget"
              },
              "all_pareto_ties_returned": {
                "const": true
              },
              "weights_applied": {
                "const": false
              },
              "floating_point_comparison": {
                "const": false
              },
              "chart_recalculation_for_grid_projections": {
                "const": false
              },
              "unavailable_samples_excluded_from_dominance": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "astrological_quality_ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionShapleyAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionShapleyFraction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "numerator",
          "denominator"
        ],
        "properties": {
          "numerator": {
            "type": "integer",
            "minimum": 0,
            "maximum": 27095040
          },
          "denominator": {
            "type": "integer",
            "minimum": 1,
            "maximum": 27095040
          }
        }
      },
      "ElectionalCriterionShapleyGridResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "criterion_id",
          "criterion_kind",
          "grid_id",
          "status",
          "available_sample_count",
          "full_criteria_matching_sample_count",
          "full_criteria_excluded_sample_count",
          "permutation_count",
          "coalition_context_count",
          "marginal_exclusion_sum_across_permutations",
          "shapley_exclusion_sample_count",
          "shapley_exclusion_share",
          "minimum_marginal_exclusion_sample_count",
          "maximum_marginal_exclusion_sample_count",
          "zero_contribution"
        ],
        "properties": {
          "criterion_id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "criterion_kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "full_criteria_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "full_criteria_excluded_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "permutation_count": {
            "type": "integer",
            "enum": [
              1,
              2,
              6,
              24,
              120,
              720,
              5040,
              40320
            ]
          },
          "coalition_context_count": {
            "type": "integer",
            "enum": [
              1,
              2,
              4,
              8,
              16,
              32,
              64,
              128
            ]
          },
          "marginal_exclusion_sum_across_permutations": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 27095040
          },
          "shapley_exclusion_sample_count": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ElectionalCriterionShapleyFraction"
              },
              {
                "type": "null"
              }
            ]
          },
          "shapley_exclusion_share": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ElectionalCriterionShapleyFraction"
              },
              {
                "type": "null"
              }
            ]
          },
          "minimum_marginal_exclusion_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "maximum_marginal_exclusion_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "zero_contribution": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ElectionalCriterionShapleyCriterion": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "kind",
          "grid_results",
          "evaluable_grid_count",
          "positive_contribution_grid_count",
          "zero_contribution_grid_count"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "grid_results": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionShapleyGridResult"
            }
          },
          "evaluable_grid_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7
          },
          "positive_contribution_grid_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7
          },
          "zero_contribution_grid_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 7
          }
        }
      },
      "ElectionalCriterionShapleyGrid": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "sample_minutes",
          "phase_offset_minutes",
          "sample_count",
          "available_sample_count",
          "unavailable_sample_count",
          "sample_ids",
          "status",
          "full_criteria_matching_sample_count",
          "full_criteria_excluded_sample_count",
          "subset_evaluation_count",
          "attribution_sum_exclusion_sample_count",
          "efficiency_verified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ]
          },
          "phase_offset_minutes": {
            "type": "integer",
            "enum": [
              0,
              15,
              30,
              45
            ]
          },
          "sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "full_criteria_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "full_criteria_excluded_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "subset_evaluation_count": {
            "type": "integer",
            "minimum": 2,
            "maximum": 256
          },
          "attribution_sum_exclusion_sample_count": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ElectionalCriterionShapleyFraction"
              },
              {
                "type": "null"
              }
            ]
          },
          "efficiency_verified": {
            "type": [
              "boolean",
              "null"
            ]
          }
        }
      },
      "ElectionalCriterionShapleyAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "attribution_status",
          "criteria",
          "samples",
          "grids",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_shapley_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionShapleyAuditRequest"
          },
          "attribution_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_exclusions_observed",
              "exact_shapley_attributions_observed"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionShapleyCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionShapleyGrid"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "subset_evaluation_count",
              "marginal_coalition_context_count",
              "returned_criterion_grid_attribution_count",
              "efficiency_verified_grid_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "subset_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "marginal_coalition_context_count": {
                "type": "integer",
                "minimum": 7,
                "maximum": 7168
              },
              "returned_criterion_grid_attribution_count": {
                "type": "integer",
                "minimum": 7,
                "maximum": 56
              },
              "efficiency_verified_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "sampling_method",
              "interval",
              "finest_sample_minutes",
              "grid_specs",
              "phase_offset_origin",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_grid_count",
              "maximum_subset_count_per_grid",
              "maximum_subset_evaluation_count",
              "maximum_in_memory_subset_sample_projections",
              "maximum_permutation_count",
              "maximum_marginal_coalition_context_count",
              "maximum_marginal_contribution_sum_across_permutations",
              "maximum_returned_criterion_grid_attribution_count",
              "value_function",
              "attribution_method",
              "efficiency_identity",
              "exact_fraction_arithmetic",
              "criterion_weights_applied",
              "floating_point_comparison",
              "chart_recalculation_for_grid_projections",
              "unavailable_samples_excluded_from_attribution",
              "continuous_time_guarantee",
              "unsampled_instants_evaluated",
              "causal_attribution",
              "astrological_quality_ranking",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-shapley-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "sampling_method": {
                "const": "single_15_minute_grid_with_all_30_and_60_minute_phase_projections"
              },
              "interval": {
                "const": "start_inclusive_end_exclusive"
              },
              "finest_sample_minutes": {
                "const": 15
              },
              "grid_specs": {
                "type": "array",
                "minItems": 7,
                "maxItems": 7,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "sample_minutes",
                    "phase_offset_minutes"
                  ],
                  "properties": {
                    "sample_minutes": {
                      "type": "integer",
                      "enum": [
                        15,
                        30,
                        60
                      ]
                    },
                    "phase_offset_minutes": {
                      "type": "integer",
                      "enum": [
                        0,
                        15,
                        30,
                        45
                      ]
                    }
                  }
                }
              },
              "phase_offset_origin": {
                "const": "request_start"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_grid_count": {
                "const": 7
              },
              "maximum_subset_count_per_grid": {
                "const": 256
              },
              "maximum_subset_evaluation_count": {
                "const": 1792
              },
              "maximum_in_memory_subset_sample_projections": {
                "const": 516096
              },
              "maximum_permutation_count": {
                "const": 40320
              },
              "maximum_marginal_coalition_context_count": {
                "const": 7168
              },
              "maximum_marginal_contribution_sum_across_permutations": {
                "const": 27095040
              },
              "maximum_returned_criterion_grid_attribution_count": {
                "const": 56
              },
              "value_function": {
                "const": "available_sample_count_minus_matching_sample_count_for_the_enforced_criterion_coalition"
              },
              "attribution_method": {
                "const": "exact_shapley_value_uniform_over_all_criterion_orderings"
              },
              "efficiency_identity": {
                "const": "sum_of_criterion_shapley_exclusion_values_equals_samples_excluded_by_all_criteria"
              },
              "exact_fraction_arithmetic": {
                "const": true
              },
              "criterion_weights_applied": {
                "const": false
              },
              "floating_point_comparison": {
                "const": false
              },
              "chart_recalculation_for_grid_projections": {
                "const": false
              },
              "unavailable_samples_excluded_from_attribution": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "unsampled_instants_evaluated": {
                "const": false
              },
              "causal_attribution": {
                "const": false
              },
              "astrological_quality_ranking": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionConflictCoreAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionConflictCoreMinimalityCertificate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "removed_criterion_id",
          "removed_criterion_kind",
          "relaxed_matching_sample_count",
          "witness_sample_id"
        ],
        "properties": {
          "removed_criterion_id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "removed_criterion_kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "relaxed_matching_sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "witness_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          }
        }
      },
      "ElectionalCriterionConflictCore": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "criterion_ids",
          "criterion_kinds",
          "criterion_count",
          "matching_sample_count",
          "minimality_certificates"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^core_[0-9]{3}$"
          },
          "criterion_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "criterion_kinds": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "criterion_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          },
          "matching_sample_count": {
            "const": 0
          },
          "minimality_certificates": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionConflictCoreMinimalityCertificate"
            }
          }
        }
      },
      "ElectionalCriterionConflictCoreCatalogEntry": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "criterion_ids",
          "criterion_kinds",
          "criterion_count",
          "core_grid_ids",
          "core_grid_count",
          "universal_across_evaluable_grids"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^core_[0-9]{3}$"
          },
          "criterion_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "criterion_kinds": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "criterion_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          },
          "core_grid_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "core_grid_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7
          },
          "universal_across_evaluable_grids": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionConflictCoreGrid": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "sample_minutes",
          "phase_offset_minutes",
          "sample_count",
          "available_sample_count",
          "unavailable_sample_count",
          "sample_ids",
          "status",
          "full_criteria_matching_sample_count",
          "subset_evaluation_count",
          "conflict_core_count",
          "minimum_conflict_core_size",
          "conflict_cores"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ]
          },
          "phase_offset_minutes": {
            "type": "integer",
            "enum": [
              0,
              15,
              30,
              45
            ]
          },
          "sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "full_criteria_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "subset_evaluation_count": {
            "type": "integer",
            "minimum": 2,
            "maximum": 256
          },
          "conflict_core_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "minimum_conflict_core_size": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 8
          },
          "conflict_cores": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionConflictCore"
            }
          }
        }
      },
      "ElectionalCriterionConflictCoreAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "conflict_status",
          "criteria",
          "samples",
          "grids",
          "conflict_cores",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_conflict_core_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionConflictCoreAuditRequest"
          },
          "conflict_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_window_level_conflicts_observed",
              "exact_minimal_conflict_cores_observed"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionConflictCoreGrid"
            }
          },
          "conflict_cores": {
            "type": "array",
            "maxItems": 255,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionConflictCoreCatalogEntry"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "infeasible_grid_count",
              "subset_evaluation_count",
              "returned_grid_conflict_core_count",
              "distinct_conflict_core_count",
              "universal_conflict_core_count",
              "returned_minimality_certificate_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "infeasible_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "subset_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "returned_grid_conflict_core_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "distinct_conflict_core_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 255
              },
              "universal_conflict_core_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_minimality_certificate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "model",
              "ephemeris",
              "maximum_conflict_cores_per_grid",
              "maximum_returned_grid_conflict_core_count",
              "maximum_distinct_conflict_core_count",
              "maximum_returned_minimality_certificate_count",
              "conflict_definition",
              "minimality_definition",
              "all_minimal_cores_returned",
              "one_deterministic_witness_per_immediate_relaxation",
              "continuous_time_guarantee",
              "causal_conflict_claim",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-conflict-core-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_conflict_cores_per_grid": {
                "const": 70
              },
              "maximum_returned_grid_conflict_core_count": {
                "const": 490
              },
              "maximum_distinct_conflict_core_count": {
                "const": 255
              },
              "maximum_returned_minimality_certificate_count": {
                "const": 3920
              },
              "conflict_definition": {
                "const": "enforced_criterion_subset_has_zero_matching_available_samples"
              },
              "minimality_definition": {
                "const": "deleting_any_one_core_criterion_restores_at_least_one_match"
              },
              "all_minimal_cores_returned": {
                "const": true
              },
              "one_deterministic_witness_per_immediate_relaxation": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_conflict_claim": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRobustRepairAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionRobustRepairMinimalityCertificate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "restored_criterion_id",
          "restored_criterion_kind",
          "blocking_grid_ids",
          "blocking_grid_count"
        ],
        "properties": {
          "restored_criterion_id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "restored_criterion_kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "blocking_grid_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "blocking_grid_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7
          }
        }
      },
      "ElectionalCriterionRobustRepairGridResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "grid_id",
          "status",
          "matching_sample_count",
          "witness_sample_id",
          "witness_utc"
        ],
        "properties": {
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 672
          },
          "witness_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "witness_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "ElectionalCriterionRobustRepair": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_ids",
          "omitted_criterion_kinds",
          "retained_criterion_ids",
          "omitted_criterion_count",
          "grid_results",
          "minimum_matching_sample_count_across_evaluable_grids",
          "minimality_certificates"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_kinds": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "retained_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "grid_results": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepairGridResult"
            }
          },
          "minimum_matching_sample_count_across_evaluable_grids": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "minimality_certificates": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepairMinimalityCertificate"
            }
          }
        }
      },
      "ElectionalCriterionRobustRepairGrid": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "sample_minutes",
          "phase_offset_minutes",
          "sample_count",
          "available_sample_count",
          "unavailable_sample_count",
          "sample_ids",
          "status",
          "full_criteria_matching_sample_count",
          "subset_evaluation_count"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "sample_minutes": {
            "type": "integer",
            "enum": [
              15,
              30,
              60
            ]
          },
          "phase_offset_minutes": {
            "type": "integer",
            "enum": [
              0,
              15,
              30,
              45
            ]
          },
          "sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "available_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "unavailable_sample_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "sample_ids": {
            "type": "array",
            "maxItems": 672,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^sample_[0-9]{4}$"
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "full_criteria_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "subset_evaluation_count": {
            "type": "integer",
            "minimum": 2,
            "maximum": 256
          }
        }
      },
      "ElectionalCriterionRobustRepairAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "repair_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_robust_repair_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRobustRepairAuditRequest"
          },
          "repair_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "exact_minimal_robust_repairs_observed"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepairGrid"
            }
          },
          "repairs": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepair"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "baseline_infeasible_grid_count",
              "subset_grid_evaluation_count",
              "robust_repair_count",
              "minimum_omitted_criterion_count",
              "returned_repair_grid_result_count",
              "returned_minimality_certificate_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "baseline_infeasible_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "subset_grid_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "robust_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_omitted_criterion_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "maximum": 8
              },
              "returned_repair_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "returned_minimality_certificate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 560
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "model",
              "ephemeris",
              "maximum_robust_repair_count",
              "maximum_returned_repair_grid_result_count",
              "maximum_returned_minimality_certificate_count",
              "repair_definition",
              "minimality_definition",
              "all_minimal_robust_repairs_returned",
              "one_deterministic_witness_per_evaluable_grid",
              "continuous_time_guarantee",
              "causal_repair_claim",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-robust-repair-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_returned_repair_grid_result_count": {
                "const": 490
              },
              "maximum_returned_minimality_certificate_count": {
                "const": 560
              },
              "repair_definition": {
                "const": "omitted_criteria_restore_at_least_one_matching_sample_on_every_evaluable_grid"
              },
              "minimality_definition": {
                "const": "restoring_any_one_omitted_criterion_makes_at_least_one_evaluable_grid_infeasible"
              },
              "all_minimal_robust_repairs_returned": {
                "const": true
              },
              "one_deterministic_witness_per_evaluable_grid": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_repair_claim": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairImpactAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionRepairCriterionImpact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "criterion_id",
          "criterion_kind",
          "violated_by_new_sample_count",
          "first_violation_sample_id",
          "first_violation_utc"
        ],
        "properties": {
          "criterion_id": {
            "type": "string",
            "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
          },
          "criterion_kind": {
            "type": "string",
            "enum": [
              "moon_signs",
              "moon_phase_sectors",
              "mercury_motion",
              "ascendant_signs",
              "aspect"
            ]
          },
          "violated_by_new_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "first_violation_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_violation_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "ElectionalCriterionRepairViolationCardinalityBin": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "violated_omitted_criterion_count",
          "newly_admitted_sample_count",
          "first_sample_id",
          "first_sample_utc"
        ],
        "properties": {
          "violated_omitted_criterion_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          },
          "newly_admitted_sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 672
          },
          "first_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_sample_utc": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ElectionalCriterionRepairImpactGridResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "grid_id",
          "status",
          "baseline_matching_sample_count",
          "repaired_matching_sample_count",
          "newly_admitted_sample_count",
          "omitted_criterion_violation_incidence_count",
          "minimum_violated_omitted_criterion_count",
          "maximum_violated_omitted_criterion_count",
          "least_violation_witness_sample_id",
          "least_violation_witness_utc",
          "least_violation_witness_failed_omitted_criterion_ids",
          "criterion_impacts",
          "violation_cardinality_histogram"
        ],
        "properties": {
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "baseline_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "repaired_matching_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "newly_admitted_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "omitted_criterion_violation_incidence_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 5376
          },
          "minimum_violated_omitted_criterion_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 8
          },
          "maximum_violated_omitted_criterion_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 8
          },
          "least_violation_witness_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "least_violation_witness_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "least_violation_witness_failed_omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "criterion_impacts": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairCriterionImpact"
            }
          },
          "violation_cardinality_histogram": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairViolationCardinalityBin"
            }
          }
        }
      },
      "ElectionalCriterionRepairImpact": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_ids",
          "omitted_criterion_kinds",
          "retained_criterion_ids",
          "omitted_criterion_count",
          "grid_results",
          "total_newly_admitted_observation_count",
          "total_omitted_criterion_violation_incidence_count",
          "maximum_newly_admitted_sample_count_on_one_grid"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_kinds": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "retained_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "grid_results": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairImpactGridResult"
            }
          },
          "total_newly_admitted_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "total_omitted_criterion_violation_incidence_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 16128
          },
          "maximum_newly_admitted_sample_count_on_one_grid": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          }
        }
      },
      "ElectionalCriterionRepairImpactAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "impact_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_impact_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairImpactAuditRequest"
          },
          "impact_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "exact_robust_repair_impacts_observed"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepairGrid"
            }
          },
          "repairs": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairImpact"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "baseline_infeasible_grid_count",
              "subset_grid_evaluation_count",
              "robust_repair_count",
              "minimum_omitted_criterion_count",
              "returned_repair_grid_result_count",
              "returned_minimality_certificate_count",
              "returned_repair_criterion_impact_count",
              "returned_violation_cardinality_bin_count",
              "total_newly_admitted_observation_count",
              "total_omitted_criterion_violation_incidence_count"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string"
                }
              },
              "baseline_infeasible_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "subset_grid_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "robust_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_omitted_criterion_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "maximum": 8
              },
              "returned_repair_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "returned_minimality_certificate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 560
              },
              "returned_repair_criterion_impact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "returned_violation_cardinality_bin_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "total_newly_admitted_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 141120
              },
              "total_omitted_criterion_violation_incidence_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1128960
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_repair_grid_result_count",
              "maximum_repair_criterion_impact_count",
              "maximum_violation_cardinality_bin_count",
              "maximum_additional_impact_sample_projections",
              "impact_definition",
              "violation_incidence_definition",
              "least_violation_witness_definition",
              "criterion_weights_applied",
              "repairs_ranked",
              "chart_recalculation_for_impact_analysis",
              "all_minimal_robust_repairs_included",
              "continuous_time_guarantee",
              "causal_impact_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-impact-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_repair_grid_result_count": {
                "const": 490
              },
              "maximum_repair_criterion_impact_count": {
                "const": 3920
              },
              "maximum_violation_cardinality_bin_count": {
                "const": 3920
              },
              "maximum_additional_impact_sample_projections": {
                "const": 141120
              },
              "impact_definition": {
                "type": "string"
              },
              "violation_incidence_definition": {
                "type": "string"
              },
              "least_violation_witness_definition": {
                "type": "string"
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_impact_analysis": {
                "const": false
              },
              "all_minimal_robust_repairs_included": {
                "const": true
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_impact_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairDistinctionAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionRepairConsequenceGridResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "grid_id",
          "status",
          "newly_admitted_sample_count",
          "first_newly_admitted_sample_id",
          "first_newly_admitted_utc",
          "last_newly_admitted_sample_id",
          "last_newly_admitted_utc",
          "newly_admitted_sample_ids_sha256"
        ],
        "properties": {
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "status": {
            "type": "string",
            "enum": [
              "evaluable",
              "unavailable"
            ]
          },
          "newly_admitted_sample_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 672
          },
          "first_newly_admitted_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_newly_admitted_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "last_newly_admitted_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "last_newly_admitted_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "newly_admitted_sample_ids_sha256": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-f0-9]{64}$"
          }
        }
      },
      "ElectionalCriterionRepairConsequence": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "omitted_criterion_ids",
          "omitted_criterion_kinds",
          "retained_criterion_ids",
          "omitted_criterion_count",
          "consequence_signature_sha256",
          "grid_results"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "omitted_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_kinds": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "moon_signs",
                "moon_phase_sectors",
                "mercury_motion",
                "ascendant_signs",
                "aspect"
              ]
            }
          },
          "retained_criterion_ids": {
            "type": "array",
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(moon_signs|moon_phase_sectors|mercury_motion|ascendant_signs|aspect_[1-4])$"
            }
          },
          "omitted_criterion_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 8
          },
          "consequence_signature_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "grid_results": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairConsequenceGridResult"
            }
          }
        }
      },
      "ElectionalCriterionRepairDistinction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "left_repair_id",
          "right_repair_id",
          "differing_grid_ids",
          "differing_grid_count",
          "left_exclusive_observation_count",
          "right_exclusive_observation_count",
          "first_discriminating_grid_id",
          "witness_sample_id",
          "witness_utc",
          "admitted_by_left_repair",
          "admitted_by_right_repair"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^distinction_[0-9]{3}_[0-9]{3}$"
          },
          "left_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "right_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "differing_grid_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "differing_grid_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 7
          },
          "left_exclusive_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "right_exclusive_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "first_discriminating_grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "witness_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "witness_utc": {
            "type": "string",
            "format": "date-time"
          },
          "admitted_by_left_repair": {
            "type": "boolean"
          },
          "admitted_by_right_repair": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairDistinctionAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "distinction_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "distinctions",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_distinction_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairDistinctionAuditRequest"
          },
          "distinction_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "insufficient_robust_repairs_for_pairwise_distinction",
              "pairwise_distinct_robust_repair_consequences_observed"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepairGrid"
            }
          },
          "repairs": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairConsequence"
            }
          },
          "distinctions": {
            "type": "array",
            "maxItems": 2415,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairDistinction"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "baseline_infeasible_grid_count",
              "subset_grid_evaluation_count",
              "robust_repair_count",
              "minimum_omitted_criterion_count",
              "returned_repair_grid_result_count",
              "returned_minimality_certificate_count",
              "returned_repair_criterion_impact_count",
              "returned_violation_cardinality_bin_count",
              "total_newly_admitted_observation_count",
              "total_omitted_criterion_violation_incidence_count",
              "returned_repair_consequence_grid_result_count",
              "possible_repair_pair_count",
              "returned_distinction_count",
              "returned_differing_grid_reference_count",
              "all_returned_repair_pairs_distinguished"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "baseline_infeasible_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "subset_grid_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "robust_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_omitted_criterion_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "maximum": 8
              },
              "returned_repair_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "returned_minimality_certificate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 560
              },
              "returned_repair_criterion_impact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "returned_violation_cardinality_bin_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "total_newly_admitted_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 141120
              },
              "total_omitted_criterion_violation_incidence_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1128960
              },
              "returned_repair_consequence_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "possible_repair_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_distinction_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_differing_grid_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 16905
              },
              "all_returned_repair_pairs_distinguished": {
                "type": "boolean"
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_repair_consequence_grid_result_count",
              "maximum_repair_pair_distinction_count",
              "maximum_pair_grid_comparison_count",
              "maximum_total_consequence_sample_projections",
              "consequence_definition",
              "distinction_definition",
              "fingerprint_algorithm",
              "fingerprints_used_to_decide_distinction",
              "exact_sample_id_sets_used_to_decide_distinction",
              "one_witness_per_repair_pair",
              "all_repair_pairs_included",
              "criterion_weights_applied",
              "repairs_ranked",
              "chart_recalculation_for_distinction_analysis",
              "continuous_time_guarantee",
              "causal_distinction_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-distinction-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_repair_consequence_grid_result_count": {
                "const": 490
              },
              "maximum_repair_pair_distinction_count": {
                "const": 2415
              },
              "maximum_pair_grid_comparison_count": {
                "const": 16905
              },
              "maximum_total_consequence_sample_projections": {
                "const": 282240
              },
              "consequence_definition": {
                "const": "ordered_newly_admitted_available_sample_ids_on_each_grid"
              },
              "distinction_definition": {
                "const": "at_least_one_evaluable_grid_has_different_exact_newly_admitted_sample_ids"
              },
              "fingerprint_algorithm": {
                "const": "sha256_of_canonical_json_sample_id_list"
              },
              "fingerprints_used_to_decide_distinction": {
                "const": false
              },
              "exact_sample_id_sets_used_to_decide_distinction": {
                "const": true
              },
              "one_witness_per_repair_pair": {
                "const": true
              },
              "all_repair_pairs_included": {
                "const": true
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_distinction_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_distinction_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairOverlapAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionRepairOverlapFraction": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "numerator",
          "denominator"
        ],
        "properties": {
          "numerator": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "denominator": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          }
        }
      },
      "ElectionalCriterionRepairOverlap": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "left_repair_id",
          "right_repair_id",
          "relation",
          "shared_grid_ids",
          "zero_shared_grid_ids",
          "left_exclusive_grid_ids",
          "right_exclusive_grid_ids",
          "shared_observation_count",
          "left_exclusive_observation_count",
          "right_exclusive_observation_count",
          "union_observation_count",
          "overlap_fraction",
          "first_shared_grid_id",
          "first_shared_sample_id",
          "first_shared_utc",
          "first_left_exclusive_grid_id",
          "first_left_exclusive_sample_id",
          "first_left_exclusive_utc",
          "first_right_exclusive_grid_id",
          "first_right_exclusive_sample_id",
          "first_right_exclusive_utc"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^overlap_[0-9]{3}_[0-9]{3}$"
          },
          "left_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "right_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "relation": {
            "type": "string",
            "enum": [
              "disjoint",
              "left_strictly_contained",
              "right_strictly_contained",
              "overlapping_incomparable"
            ]
          },
          "shared_grid_ids": {
            "type": "array",
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "zero_shared_grid_ids": {
            "type": "array",
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "left_exclusive_grid_ids": {
            "type": "array",
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "right_exclusive_grid_ids": {
            "type": "array",
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "shared_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "left_exclusive_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "right_exclusive_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "union_observation_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "overlap_fraction": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairOverlapFraction"
          },
          "first_shared_grid_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_shared_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_shared_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "first_left_exclusive_grid_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_left_exclusive_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_left_exclusive_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "first_right_exclusive_grid_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_right_exclusive_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_right_exclusive_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "ElectionalCriterionRepairOverlapAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "overlap_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "overlaps",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_overlap_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairOverlapAuditRequest"
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepairGrid"
            }
          },
          "repairs": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairConsequence"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "baseline_infeasible_grid_count",
              "subset_grid_evaluation_count",
              "robust_repair_count",
              "minimum_omitted_criterion_count",
              "returned_repair_grid_result_count",
              "returned_minimality_certificate_count",
              "returned_repair_criterion_impact_count",
              "returned_violation_cardinality_bin_count",
              "total_newly_admitted_observation_count",
              "total_omitted_criterion_violation_incidence_count",
              "returned_repair_consequence_grid_result_count",
              "possible_repair_pair_count",
              "returned_distinction_count",
              "returned_differing_grid_reference_count",
              "all_returned_repair_pairs_distinguished",
              "returned_overlap_count",
              "disjoint_overlap_count",
              "left_strictly_contained_overlap_count",
              "right_strictly_contained_overlap_count",
              "overlapping_incomparable_count",
              "total_shared_observation_count",
              "total_union_observation_count",
              "returned_directional_witness_count",
              "all_returned_repair_pairs_classified"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "baseline_infeasible_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "subset_grid_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "robust_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_omitted_criterion_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "maximum": 8
              },
              "returned_repair_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "returned_minimality_certificate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 560
              },
              "returned_repair_criterion_impact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "returned_violation_cardinality_bin_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "total_newly_admitted_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 141120
              },
              "total_omitted_criterion_violation_incidence_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1128960
              },
              "returned_repair_consequence_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "possible_repair_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_distinction_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_differing_grid_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 16905
              },
              "all_returned_repair_pairs_distinguished": {
                "type": "boolean"
              },
              "returned_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "disjoint_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "left_strictly_contained_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "right_strictly_contained_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "overlapping_incomparable_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "total_shared_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4868640
              },
              "total_union_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4868640
              },
              "returned_directional_witness_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7245
              },
              "all_returned_repair_pairs_classified": {
                "type": "boolean"
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_repair_pair_overlap_count",
              "maximum_total_pair_observation_count",
              "maximum_directional_witness_count",
              "maximum_total_overlap_sample_projections",
              "observation_identity",
              "overlap_fraction_definition",
              "relation_definition",
              "all_repair_pairs_included",
              "exact_sample_id_sets_used",
              "fingerprints_used_to_decide_overlap",
              "criterion_weights_applied",
              "repairs_ranked",
              "chart_recalculation_for_overlap_analysis",
              "continuous_time_guarantee",
              "causal_overlap_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-overlap-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_repair_pair_overlap_count": {
                "const": 2415
              },
              "maximum_total_pair_observation_count": {
                "const": 4868640
              },
              "maximum_directional_witness_count": {
                "const": 7245
              },
              "maximum_total_overlap_sample_projections": {
                "const": 423360
              },
              "observation_identity": {
                "const": "grid_id_plus_sample_id"
              },
              "overlap_fraction_definition": {
                "const": "reduced_exact_shared_observations_over_union_observations"
              },
              "relation_definition": {
                "const": "exact_set_relation_over_all_evaluable_grid_sample_observations"
              },
              "all_repair_pairs_included": {
                "const": true
              },
              "exact_sample_id_sets_used": {
                "const": true
              },
              "fingerprints_used_to_decide_overlap": {
                "const": false
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_overlap_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_overlap_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          },
          "overlap_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "insufficient_robust_repairs_for_pairwise_overlap",
              "exact_repair_consequence_overlaps_observed"
            ]
          },
          "overlaps": {
            "type": "array",
            "maxItems": 2415,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairOverlap"
            }
          }
        }
      },
      "ElectionalCriterionRepairHierarchyAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionRepairHierarchyNode": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "repair_id",
          "consequence_observation_count",
          "strict_subset_repair_ids",
          "strict_superset_repair_ids",
          "immediate_subset_repair_ids",
          "immediate_superset_repair_ids",
          "incomparable_repair_ids",
          "longest_chain_from_minimal_count",
          "longest_chain_to_maximal_count"
        ],
        "properties": {
          "repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "consequence_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "strict_subset_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "strict_superset_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "immediate_subset_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "immediate_superset_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "incomparable_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "longest_chain_from_minimal_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "longest_chain_to_maximal_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          }
        }
      },
      "ElectionalCriterionRepairContainment": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "subset_repair_id",
          "superset_repair_id",
          "shared_grid_ids",
          "additional_grid_ids",
          "subset_observation_count",
          "additional_observation_count",
          "superset_observation_count",
          "overlap_fraction",
          "first_additional_grid_id",
          "first_additional_sample_id",
          "first_additional_utc",
          "is_cover_relation"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^containment_[0-9]{3}_[0-9]{3}$"
          },
          "subset_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "superset_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "shared_grid_ids": {
            "type": "array",
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "additional_grid_ids": {
            "type": "array",
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "subset_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "additional_observation_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "superset_observation_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "overlap_fraction": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairOverlapFraction"
          },
          "first_additional_grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_additional_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_additional_utc": {
            "type": "string",
            "format": "date-time"
          },
          "is_cover_relation": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairHierarchyChain": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "repair_ids"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^chain_[0-9]{3}$"
          },
          "repair_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          }
        }
      },
      "ElectionalCriterionRepairHierarchyAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "hierarchy_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_hierarchy_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditRequest"
          },
          "hierarchy_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "insufficient_robust_repairs_for_hierarchy",
              "no_strict_containment_relations_observed",
              "exact_repair_consequence_hierarchy_observed"
            ]
          },
          "criteria": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/ElectionalResolutionAuditCriterion"
            }
          },
          "samples": {
            "type": "array",
            "minItems": 1,
            "maxItems": 672,
            "items": {
              "$ref": "#/components/schemas/ElectionalFeasibilityAuditSample"
            }
          },
          "grids": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRobustRepairGrid"
            }
          },
          "repairs": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairConsequence"
            }
          },
          "hierarchy_nodes": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyNode"
            }
          },
          "containments": {
            "type": "array",
            "maxItems": 2415,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairContainment"
            }
          },
          "minimal_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "maximal_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "maximum_antichain_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "minimum_chain_cover": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyChain"
            }
          },
          "longest_chain_repair_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "baseline_infeasible_grid_count",
              "subset_grid_evaluation_count",
              "robust_repair_count",
              "minimum_omitted_criterion_count",
              "returned_repair_grid_result_count",
              "returned_minimality_certificate_count",
              "returned_repair_criterion_impact_count",
              "returned_violation_cardinality_bin_count",
              "total_newly_admitted_observation_count",
              "total_omitted_criterion_violation_incidence_count",
              "returned_repair_consequence_grid_result_count",
              "possible_repair_pair_count",
              "returned_distinction_count",
              "returned_differing_grid_reference_count",
              "all_returned_repair_pairs_distinguished",
              "returned_overlap_count",
              "disjoint_overlap_count",
              "left_strictly_contained_overlap_count",
              "right_strictly_contained_overlap_count",
              "overlapping_incomparable_count",
              "total_shared_observation_count",
              "total_union_observation_count",
              "returned_directional_witness_count",
              "all_returned_repair_pairs_classified",
              "returned_hierarchy_node_count",
              "returned_strict_containment_count",
              "returned_cover_relation_count",
              "minimal_hierarchy_node_count",
              "maximal_hierarchy_node_count",
              "maximum_chain_length",
              "maximum_antichain_size",
              "minimum_chain_cover_count",
              "returned_hierarchy_relation_reference_count",
              "cover_relation_transitive_reduction_verified",
              "maximum_antichain_pairwise_incomparable_verified",
              "minimum_chain_cover_partitions_repairs_verified"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "baseline_infeasible_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "subset_grid_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "robust_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_omitted_criterion_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "maximum": 8
              },
              "returned_repair_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "returned_minimality_certificate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 560
              },
              "returned_repair_criterion_impact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "returned_violation_cardinality_bin_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "total_newly_admitted_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 141120
              },
              "total_omitted_criterion_violation_incidence_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1128960
              },
              "returned_repair_consequence_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "possible_repair_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_distinction_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_differing_grid_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 16905
              },
              "all_returned_repair_pairs_distinguished": {
                "type": "boolean"
              },
              "returned_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "disjoint_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "left_strictly_contained_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "right_strictly_contained_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "overlapping_incomparable_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "total_shared_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4868640
              },
              "total_union_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4868640
              },
              "returned_directional_witness_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7245
              },
              "all_returned_repair_pairs_classified": {
                "type": "boolean"
              },
              "returned_hierarchy_node_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_strict_containment_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_cover_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "minimal_hierarchy_node_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximal_hierarchy_node_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximum_chain_length": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximum_antichain_size": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_chain_cover_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_hierarchy_relation_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9660
              },
              "cover_relation_transitive_reduction_verified": {
                "const": true
              },
              "maximum_antichain_pairwise_incomparable_verified": {
                "const": true
              },
              "minimum_chain_cover_partitions_repairs_verified": {
                "const": true
              }
            }
          },
          "fallback": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "performed",
              "selected_system"
            ],
            "properties": {
              "performed": {
                "const": false
              },
              "selected_system": {
                "type": "null"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_repair_pair_count",
              "maximum_strict_containment_count",
              "maximum_cover_relation_count",
              "maximum_hierarchy_relation_reference_count",
              "maximum_hierarchy_comparison_count",
              "maximum_total_overlap_sample_projections",
              "containment_direction",
              "cover_relation_definition",
              "width_definition",
              "matching_algorithm",
              "dilworth_identity_verified",
              "all_repair_pairs_considered",
              "exact_sample_id_sets_used",
              "fingerprints_used_to_decide_containment",
              "criterion_weights_applied",
              "repairs_ranked",
              "chart_recalculation_for_hierarchy_analysis",
              "continuous_time_guarantee",
              "causal_hierarchy_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-hierarchy-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_repair_pair_count": {
                "const": 2415
              },
              "maximum_strict_containment_count": {
                "const": 2415
              },
              "maximum_cover_relation_count": {
                "const": 2415
              },
              "maximum_hierarchy_relation_reference_count": {
                "const": 9660
              },
              "maximum_hierarchy_comparison_count": {
                "const": 343000
              },
              "maximum_total_overlap_sample_projections": {
                "const": 423360
              },
              "containment_direction": {
                "const": "subset_consequence_to_strict_superset_consequence"
              },
              "cover_relation_definition": {
                "const": "strict_containment_with_no_returned_intermediate_repair"
              },
              "width_definition": {
                "const": "maximum_pairwise_incomparable_repair_count"
              },
              "matching_algorithm": {
                "const": "deterministic_maximum_bipartite_matching_on_strict_containment"
              },
              "dilworth_identity_verified": {
                "const": true
              },
              "all_repair_pairs_considered": {
                "const": true
              },
              "exact_sample_id_sets_used": {
                "const": true
              },
              "fingerprints_used_to_decide_containment": {
                "const": false
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_hierarchy_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_hierarchy_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairCoverageAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionRepairCoverageObservation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "grid_id",
          "sample_id",
          "utc"
        ],
        "properties": {
          "grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "utc": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ElectionalCriterionRepairCoverageGroup": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "repair_ids",
          "repair_count",
          "observation_count",
          "grid_ids",
          "observations"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^coverage_group_[0-9]{4}$"
          },
          "repair_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "repair_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "observation_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "grid_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 7,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
            }
          },
          "observations": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2016,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageObservation"
            }
          }
        }
      },
      "ElectionalCriterionRepairCoverage": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "repair_id",
          "consequence_observation_count",
          "exclusively_supported_observation_count",
          "multiply_supported_observation_count",
          "coverage_group_ids",
          "exclusive_coverage_group_ids",
          "first_exclusive_grid_id",
          "first_exclusive_sample_id",
          "first_exclusive_utc",
          "union_observation_loss_if_repair_removed",
          "union_coverage_preserved_if_repair_removed"
        ],
        "properties": {
          "repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "consequence_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "exclusively_supported_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "multiply_supported_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "coverage_group_ids": {
            "type": "array",
            "maxItems": 2016,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^coverage_group_[0-9]{4}$"
            }
          },
          "exclusive_coverage_group_ids": {
            "type": "array",
            "maxItems": 2016,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^coverage_group_[0-9]{4}$"
            }
          },
          "first_exclusive_grid_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_exclusive_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_exclusive_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "union_observation_loss_if_repair_removed": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "union_coverage_preserved_if_repair_removed": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairCoverageMultiplicityBin": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "supporting_repair_count",
          "coverage_group_count",
          "observation_count",
          "first_grid_id",
          "first_sample_id",
          "first_utc"
        ],
        "properties": {
          "supporting_repair_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "coverage_group_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "observation_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "first_grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_utc": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ElectionalCriterionRepairCoverageAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "coverage_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "coverage_groups",
          "repair_coverage",
          "coverage_multiplicity_histogram",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_coverage_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditRequest"
          },
          "coverage_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "no_new_repair_consequences_observed",
              "single_repair_dependent_consequences_observed",
              "all_repair_consequences_redundantly_supported"
            ]
          },
          "criteria": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/criteria"
          },
          "samples": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/samples"
          },
          "grids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/grids"
          },
          "repairs": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/repairs"
          },
          "hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/hierarchy_nodes"
          },
          "containments": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/containments"
          },
          "minimal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/minimal_repair_ids"
          },
          "maximal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/maximal_repair_ids"
          },
          "maximum_antichain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/maximum_antichain_repair_ids"
          },
          "minimum_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/minimum_chain_cover"
          },
          "longest_chain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/longest_chain_repair_ids"
          },
          "coverage_groups": {
            "type": "array",
            "maxItems": 2016,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageGroup"
            }
          },
          "repair_coverage": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairCoverage"
            }
          },
          "coverage_multiplicity_histogram": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageMultiplicityBin"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "finest_sample_count",
              "finest_available_sample_count",
              "finest_unavailable_sample_count",
              "criterion_count",
              "grid_count",
              "evaluable_grid_count",
              "unevaluable_grid_count",
              "unevaluable_grid_ids",
              "baseline_infeasible_grid_count",
              "subset_grid_evaluation_count",
              "robust_repair_count",
              "minimum_omitted_criterion_count",
              "returned_repair_grid_result_count",
              "returned_minimality_certificate_count",
              "returned_repair_criterion_impact_count",
              "returned_violation_cardinality_bin_count",
              "total_newly_admitted_observation_count",
              "total_omitted_criterion_violation_incidence_count",
              "returned_repair_consequence_grid_result_count",
              "possible_repair_pair_count",
              "returned_distinction_count",
              "returned_differing_grid_reference_count",
              "all_returned_repair_pairs_distinguished",
              "returned_overlap_count",
              "disjoint_overlap_count",
              "left_strictly_contained_overlap_count",
              "right_strictly_contained_overlap_count",
              "overlapping_incomparable_count",
              "total_shared_observation_count",
              "total_union_observation_count",
              "returned_directional_witness_count",
              "all_returned_repair_pairs_classified",
              "returned_hierarchy_node_count",
              "returned_strict_containment_count",
              "returned_cover_relation_count",
              "minimal_hierarchy_node_count",
              "maximal_hierarchy_node_count",
              "maximum_chain_length",
              "maximum_antichain_size",
              "minimum_chain_cover_count",
              "returned_hierarchy_relation_reference_count",
              "cover_relation_transitive_reduction_verified",
              "maximum_antichain_pairwise_incomparable_verified",
              "minimum_chain_cover_partitions_repairs_verified",
              "returned_coverage_group_count",
              "returned_coverage_observation_count",
              "returned_coverage_observation_repair_reference_count",
              "returned_coverage_grid_reference_count",
              "returned_repair_coverage_count",
              "returned_coverage_multiplicity_bin_count",
              "singly_supported_observation_count",
              "multiply_supported_observation_count",
              "universally_supported_observation_count",
              "indispensable_repair_count",
              "removable_without_union_loss_repair_count",
              "minimum_supporting_repair_count",
              "maximum_supporting_repair_count",
              "coverage_groups_partition_union_verified",
              "repair_coverage_counts_reconcile",
              "single_repair_loss_exact_verified"
            ],
            "properties": {
              "finest_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 672
              },
              "finest_available_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "finest_unavailable_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 672
              },
              "criterion_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8
              },
              "grid_count": {
                "const": 7
              },
              "evaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "unevaluable_grid_ids": {
                "type": "array",
                "maxItems": 7,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
                }
              },
              "baseline_infeasible_grid_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7
              },
              "subset_grid_evaluation_count": {
                "type": "integer",
                "minimum": 14,
                "maximum": 1792
              },
              "robust_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_omitted_criterion_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "maximum": 8
              },
              "returned_repair_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "returned_minimality_certificate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 560
              },
              "returned_repair_criterion_impact_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "returned_violation_cardinality_bin_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3920
              },
              "total_newly_admitted_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 141120
              },
              "total_omitted_criterion_violation_incidence_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1128960
              },
              "returned_repair_consequence_grid_result_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 490
              },
              "possible_repair_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_distinction_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_differing_grid_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 16905
              },
              "all_returned_repair_pairs_distinguished": {
                "type": "boolean"
              },
              "returned_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "disjoint_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "left_strictly_contained_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "right_strictly_contained_overlap_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "overlapping_incomparable_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "total_shared_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4868640
              },
              "total_union_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4868640
              },
              "returned_directional_witness_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 7245
              },
              "all_returned_repair_pairs_classified": {
                "type": "boolean"
              },
              "returned_hierarchy_node_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_strict_containment_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_cover_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "minimal_hierarchy_node_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximal_hierarchy_node_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximum_chain_length": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximum_antichain_size": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_chain_cover_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_hierarchy_relation_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9660
              },
              "cover_relation_transitive_reduction_verified": {
                "const": true
              },
              "maximum_antichain_pairwise_incomparable_verified": {
                "const": true
              },
              "minimum_chain_cover_partitions_repairs_verified": {
                "const": true
              },
              "returned_coverage_group_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "returned_coverage_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "returned_coverage_observation_repair_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 141120
              },
              "returned_coverage_grid_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 14112
              },
              "returned_repair_coverage_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_coverage_multiplicity_bin_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "singly_supported_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "multiply_supported_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "universally_supported_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "indispensable_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "removable_without_union_loss_repair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_supporting_repair_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 70
              },
              "maximum_supporting_repair_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 70
              },
              "coverage_groups_partition_union_verified": {
                "const": true
              },
              "repair_coverage_counts_reconcile": {
                "const": true
              },
              "single_repair_loss_exact_verified": {
                "const": true
              }
            }
          },
          "fallback": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHierarchyAuditResponse/properties/fallback"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_coverage_group_count",
              "maximum_coverage_observation_count",
              "maximum_coverage_observation_repair_reference_count",
              "maximum_coverage_grid_reference_count",
              "maximum_total_coverage_sample_projections",
              "observation_identity",
              "support_definition",
              "indispensable_repair_definition",
              "coverage_groups_include_exact_observations",
              "all_minimal_robust_repairs_included",
              "exact_sample_id_sets_used",
              "criterion_weights_applied",
              "repairs_ranked",
              "chart_recalculation_for_coverage_analysis",
              "continuous_time_guarantee",
              "causal_coverage_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-coverage-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_coverage_group_count": {
                "const": 2016
              },
              "maximum_coverage_observation_count": {
                "const": 2016
              },
              "maximum_coverage_observation_repair_reference_count": {
                "const": 141120
              },
              "maximum_coverage_grid_reference_count": {
                "const": 14112
              },
              "maximum_total_coverage_sample_projections": {
                "const": 564480
              },
              "observation_identity": {
                "const": "grid_id_plus_sample_id"
              },
              "support_definition": {
                "const": "minimal_repair_newly_admits_exact_grid_sample_observation"
              },
              "indispensable_repair_definition": {
                "const": "removal_loses_at_least_one_union_observation"
              },
              "coverage_groups_include_exact_observations": {
                "const": true
              },
              "all_minimal_robust_repairs_included": {
                "const": true
              },
              "exact_sample_id_sets_used": {
                "const": true
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_coverage_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_coverage_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairResilienceAuditRequest": {
        "$ref": "#/components/schemas/ElectionalResolutionAuditRequest"
      },
      "ElectionalCriterionRepairFailureCoalition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "repair_ids",
          "repair_count",
          "lost_coverage_group_ids",
          "lost_coverage_group_count",
          "lost_observation_count",
          "first_lost_grid_id",
          "first_lost_sample_id",
          "first_lost_utc"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^failure_coalition_[0-9]{4}$"
          },
          "repair_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "repair_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "lost_coverage_group_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2016,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^coverage_group_[0-9]{4}$"
            }
          },
          "lost_coverage_group_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "lost_observation_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2016
          },
          "first_lost_grid_id": {
            "type": "string",
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_lost_sample_id": {
            "type": "string",
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_lost_utc": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ElectionalCriterionRepairResilienceCurvePoint": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "unavailable_repair_count",
          "guaranteed_surviving_observation_count",
          "not_guaranteed_observation_count",
          "newly_not_guaranteed_observation_count",
          "union_coverage_guaranteed_preserved"
        ],
        "properties": {
          "unavailable_repair_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 70
          },
          "guaranteed_surviving_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "not_guaranteed_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "newly_not_guaranteed_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "union_coverage_guaranteed_preserved": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairResilienceAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "resilience_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "coverage_status",
          "coverage_groups",
          "repair_coverage",
          "coverage_multiplicity_histogram",
          "minimal_failure_coalitions",
          "repair_loss_resilience_curve",
          "coverage_summary",
          "coverage_metadata",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_resilience_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditRequest"
          },
          "resilience_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "no_new_repair_consequences_observed",
              "single_repair_failure_can_reduce_union",
              "multiple_simultaneous_repair_failures_required_to_reduce_union"
            ]
          },
          "criteria": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/criteria"
          },
          "samples": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/samples"
          },
          "grids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/grids"
          },
          "repairs": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/repairs"
          },
          "hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/hierarchy_nodes"
          },
          "containments": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/containments"
          },
          "minimal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/minimal_repair_ids"
          },
          "maximal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/maximal_repair_ids"
          },
          "maximum_antichain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/maximum_antichain_repair_ids"
          },
          "minimum_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/minimum_chain_cover"
          },
          "longest_chain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/longest_chain_repair_ids"
          },
          "coverage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/coverage_status"
          },
          "coverage_groups": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/coverage_groups"
          },
          "repair_coverage": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/repair_coverage"
          },
          "coverage_multiplicity_histogram": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/coverage_multiplicity_histogram"
          },
          "minimal_failure_coalitions": {
            "type": "array",
            "maxItems": 2016,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairFailureCoalition"
            }
          },
          "repair_loss_resilience_curve": {
            "type": "array",
            "minItems": 1,
            "maxItems": 71,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceCurvePoint"
            }
          },
          "coverage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/summary"
          },
          "coverage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/metadata"
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "returned_minimal_failure_coalition_count",
              "returned_repair_loss_resilience_curve_point_count",
              "returned_failure_coalition_repair_reference_count",
              "returned_failure_coalition_group_reference_count",
              "minimum_union_reducing_failure_count",
              "maximum_guaranteed_simultaneous_repair_loss_count",
              "minimal_failure_coalitions_inclusion_minimal_verified",
              "resilience_curve_exact_from_support_sets_verified"
            ],
            "properties": {
              "returned_minimal_failure_coalition_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "returned_repair_loss_resilience_curve_point_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 71
              },
              "returned_failure_coalition_repair_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 141120
              },
              "returned_failure_coalition_group_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "minimum_union_reducing_failure_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 70
              },
              "maximum_guaranteed_simultaneous_repair_loss_count": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0,
                "maximum": 69
              },
              "minimal_failure_coalitions_inclusion_minimal_verified": {
                "const": true
              },
              "resilience_curve_exact_from_support_sets_verified": {
                "const": true
              }
            }
          },
          "fallback": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairCoverageAuditResponse/properties/fallback"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_minimal_failure_coalition_count",
              "maximum_repair_loss_resilience_curve_point_count",
              "maximum_failure_coalition_repair_reference_count",
              "maximum_failure_coalition_group_reference_count",
              "maximum_support_subset_comparison_count",
              "maximum_total_resilience_sample_projections",
              "observation_identity",
              "failure_definition",
              "minimal_failure_coalition_definition",
              "guaranteed_survival_definition",
              "all_support_signatures_included",
              "exact_sample_id_sets_used",
              "criterion_weights_applied",
              "repairs_ranked",
              "probabilities_assigned",
              "chart_recalculation_for_resilience_analysis",
              "continuous_time_guarantee",
              "causal_resilience_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-resilience-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_minimal_failure_coalition_count": {
                "const": 2016
              },
              "maximum_repair_loss_resilience_curve_point_count": {
                "const": 71
              },
              "maximum_failure_coalition_repair_reference_count": {
                "const": 141120
              },
              "maximum_failure_coalition_group_reference_count": {
                "const": 2016
              },
              "maximum_support_subset_comparison_count": {
                "const": 2031120
              },
              "maximum_total_resilience_sample_projections": {
                "const": 564480
              },
              "observation_identity": {
                "const": "grid_id_plus_sample_id"
              },
              "failure_definition": {
                "const": "named_minimal_repair_is_unavailable_for_observed_union_coverage"
              },
              "minimal_failure_coalition_definition": {
                "const": "inclusion_minimal_repair_set_whose_joint_unavailability_loses_at_least_one_observation"
              },
              "guaranteed_survival_definition": {
                "const": "observation_has_more_distinct_supporting_repairs_than_the_unavailable_repair_budget"
              },
              "all_support_signatures_included": {
                "const": true
              },
              "exact_sample_id_sets_used": {
                "const": true
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "probabilities_assigned": {
                "const": false
              },
              "chart_recalculation_for_resilience_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_resilience_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairLossFrontierAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditRequest"
      },
      "ElectionalCriterionRepairLossHistogramBin": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "lost_observation_count",
          "failure_set_count"
        ],
        "properties": {
          "lost_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "failure_set_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 54740
          }
        }
      },
      "ElectionalCriterionRepairLossDamageFrontierPoint": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "unavailable_repair_count",
          "evaluated_failure_set_count",
          "maximum_lost_observation_count",
          "minimum_surviving_observation_count",
          "worst_case_failure_set_count",
          "representative_failure_repair_ids",
          "representative_lost_coverage_group_ids",
          "representative_lost_coverage_group_count",
          "repairs_in_every_worst_case_ids",
          "repairs_in_any_worst_case_ids",
          "first_lost_grid_id",
          "first_lost_sample_id",
          "first_lost_utc",
          "loss_histogram",
          "union_coverage_preserved_in_every_failure_set"
        ],
        "properties": {
          "unavailable_repair_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3
          },
          "evaluated_failure_set_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 54740
          },
          "maximum_lost_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "minimum_surviving_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "worst_case_failure_set_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 54740
          },
          "representative_failure_repair_ids": {
            "type": "array",
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "representative_lost_coverage_group_ids": {
            "type": "array",
            "maxItems": 2016,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^coverage_group_[0-9]{4}$"
            }
          },
          "representative_lost_coverage_group_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "repairs_in_every_worst_case_ids": {
            "type": "array",
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "repairs_in_any_worst_case_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "first_lost_grid_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_lost_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_lost_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "loss_histogram": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2017,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairLossHistogramBin"
            }
          },
          "union_coverage_preserved_in_every_failure_set": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairLossFrontierAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "damage_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "coverage_status",
          "coverage_groups",
          "repair_coverage",
          "coverage_multiplicity_histogram",
          "resilience_status",
          "minimal_failure_coalitions",
          "repair_loss_resilience_curve",
          "coverage_summary",
          "coverage_metadata",
          "repair_loss_damage_frontier",
          "resilience_summary",
          "resilience_metadata",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_loss_frontier_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditRequest"
          },
          "damage_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "no_new_repair_consequences_observed",
              "no_union_loss_observed_within_analyzed_budget",
              "union_loss_observed_within_analyzed_budget"
            ]
          },
          "criteria": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/criteria"
          },
          "samples": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/samples"
          },
          "grids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/grids"
          },
          "repairs": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/repairs"
          },
          "hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/hierarchy_nodes"
          },
          "containments": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/containments"
          },
          "minimal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/minimal_repair_ids"
          },
          "maximal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/maximal_repair_ids"
          },
          "maximum_antichain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/maximum_antichain_repair_ids"
          },
          "minimum_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/minimum_chain_cover"
          },
          "longest_chain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/longest_chain_repair_ids"
          },
          "coverage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/coverage_status"
          },
          "coverage_groups": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/coverage_groups"
          },
          "repair_coverage": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/repair_coverage"
          },
          "coverage_multiplicity_histogram": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/coverage_multiplicity_histogram"
          },
          "resilience_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/resilience_status"
          },
          "minimal_failure_coalitions": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/minimal_failure_coalitions"
          },
          "repair_loss_resilience_curve": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/repair_loss_resilience_curve"
          },
          "coverage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/coverage_summary"
          },
          "coverage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/coverage_metadata"
          },
          "repair_loss_damage_frontier": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairLossDamageFrontierPoint"
            }
          },
          "resilience_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/summary"
          },
          "resilience_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/metadata"
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "returned_damage_frontier_point_count",
              "analyzed_maximum_simultaneous_repair_loss_count",
              "evaluated_failure_set_count",
              "returned_loss_histogram_bin_count",
              "first_observed_union_loss_budget",
              "covered_observation_count",
              "failure_sets_exhaustive_through_analyzed_budget",
              "worst_case_ties_counted_exactly",
              "loss_histograms_reconcile_evaluated_failure_sets"
            ],
            "properties": {
              "returned_damage_frontier_point_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4
              },
              "analyzed_maximum_simultaneous_repair_loss_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3
              },
              "evaluated_failure_set_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 57226
              },
              "returned_loss_histogram_bin_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 8068
              },
              "first_observed_union_loss_budget": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 3
              },
              "covered_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "failure_sets_exhaustive_through_analyzed_budget": {
                "const": true
              },
              "worst_case_ties_counted_exactly": {
                "const": true
              },
              "loss_histograms_reconcile_evaluated_failure_sets": {
                "const": true
              }
            }
          },
          "fallback": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairResilienceAuditResponse/properties/fallback"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_exact_repair_loss_budget",
              "maximum_damage_frontier_point_count",
              "maximum_failure_set_evaluation_count",
              "maximum_damage_histogram_bin_count",
              "maximum_coverage_group_count",
              "maximum_total_damage_sample_projections",
              "observation_identity",
              "failure_definition",
              "frontier_definition",
              "histogram_definition",
              "worst_case_representative_order",
              "all_failure_sets_through_budget_enumerated",
              "exact_integer_counts_used",
              "criterion_weights_applied",
              "repairs_ranked",
              "probabilities_assigned",
              "chart_recalculation_for_damage_analysis",
              "continuous_time_guarantee",
              "causal_damage_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-loss-frontier-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_exact_repair_loss_budget": {
                "const": 3
              },
              "maximum_damage_frontier_point_count": {
                "const": 4
              },
              "maximum_failure_set_evaluation_count": {
                "const": 57226
              },
              "maximum_damage_histogram_bin_count": {
                "const": 8068
              },
              "maximum_coverage_group_count": {
                "const": 2016
              },
              "maximum_total_damage_sample_projections": {
                "const": 564480
              },
              "observation_identity": {
                "const": "grid_id_plus_sample_id"
              },
              "failure_definition": {
                "const": "named_minimal_repair_is_unavailable_for_observed_union_coverage"
              },
              "frontier_definition": {
                "const": "maximum_observation_loss_over_every_exact_size_failure_set"
              },
              "histogram_definition": {
                "const": "exact_failure_set_count_partitioned_by_observation_loss"
              },
              "worst_case_representative_order": {
                "const": "lexicographically_first_repair_id_tuple"
              },
              "all_failure_sets_through_budget_enumerated": {
                "const": true
              },
              "exact_integer_counts_used": {
                "const": true
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "probabilities_assigned": {
                "const": false
              },
              "chart_recalculation_for_damage_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_damage_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairHardeningAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditRequest"
      },
      "ElectionalCriterionRepairHardeningFrontierPoint": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "unavailable_repair_count",
          "evaluated_failure_set_count",
          "baseline_maximum_lost_observation_count",
          "hardened_maximum_lost_observation_count",
          "avoided_worst_case_observation_count",
          "hardened_minimum_surviving_observation_count",
          "remaining_worst_case_failure_set_count",
          "representative_failure_repair_ids",
          "representative_lost_coverage_group_ids",
          "representative_lost_coverage_group_count",
          "repairs_in_every_remaining_worst_case_ids",
          "repairs_in_any_remaining_worst_case_ids",
          "first_lost_grid_id",
          "first_lost_sample_id",
          "first_lost_utc",
          "hardened_union_coverage_preserved_in_every_failure_set"
        ],
        "properties": {
          "unavailable_repair_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3
          },
          "evaluated_failure_set_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 52394
          },
          "baseline_maximum_lost_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "hardened_maximum_lost_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "avoided_worst_case_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "hardened_minimum_surviving_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "remaining_worst_case_failure_set_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 52394
          },
          "representative_failure_repair_ids": {
            "type": "array",
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "representative_lost_coverage_group_ids": {
            "type": "array",
            "maxItems": 2016,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^coverage_group_[0-9]{4}$"
            }
          },
          "representative_lost_coverage_group_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "repairs_in_every_remaining_worst_case_ids": {
            "type": "array",
            "maxItems": 3,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "repairs_in_any_remaining_worst_case_ids": {
            "type": "array",
            "maxItems": 69,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "first_lost_grid_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^grid_(15_00|30_(00|15)|60_(00|15|30|45))$"
          },
          "first_lost_sample_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^sample_[0-9]{4}$"
          },
          "first_lost_utc": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "hardened_union_coverage_preserved_in_every_failure_set": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairHardeningCandidate": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "protected_repair_id",
          "hardening_frontier",
          "maximum_avoided_worst_case_observation_count",
          "first_improved_failure_budget",
          "improved_failure_budget_count",
          "reduces_worst_case_within_analyzed_budget"
        ],
        "properties": {
          "protected_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "hardening_frontier": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningFrontierPoint"
            }
          },
          "maximum_avoided_worst_case_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "first_improved_failure_budget": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 3
          },
          "improved_failure_budget_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3
          },
          "reduces_worst_case_within_analyzed_budget": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairHardeningAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "damage_status",
          "hardening_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "coverage_status",
          "coverage_groups",
          "repair_coverage",
          "coverage_multiplicity_histogram",
          "resilience_status",
          "minimal_failure_coalitions",
          "repair_loss_resilience_curve",
          "coverage_summary",
          "coverage_metadata",
          "repair_loss_damage_frontier",
          "resilience_summary",
          "resilience_metadata",
          "repair_hardening_candidates",
          "damage_summary",
          "damage_metadata",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_hardening_audit"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditRequest"
          },
          "damage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/damage_status"
          },
          "hardening_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "no_new_repair_consequences_observed",
              "single_repair_hardening_does_not_reduce_worst_case_within_analyzed_budget",
              "single_repair_hardening_reduces_worst_case_within_analyzed_budget"
            ]
          },
          "criteria": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/criteria"
          },
          "samples": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/samples"
          },
          "grids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/grids"
          },
          "repairs": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/repairs"
          },
          "hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/hierarchy_nodes"
          },
          "containments": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/containments"
          },
          "minimal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/minimal_repair_ids"
          },
          "maximal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/maximal_repair_ids"
          },
          "maximum_antichain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/maximum_antichain_repair_ids"
          },
          "minimum_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/minimum_chain_cover"
          },
          "longest_chain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/longest_chain_repair_ids"
          },
          "coverage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/coverage_status"
          },
          "coverage_groups": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/coverage_groups"
          },
          "repair_coverage": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/repair_coverage"
          },
          "coverage_multiplicity_histogram": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/coverage_multiplicity_histogram"
          },
          "resilience_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/resilience_status"
          },
          "minimal_failure_coalitions": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/minimal_failure_coalitions"
          },
          "repair_loss_resilience_curve": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/repair_loss_resilience_curve"
          },
          "coverage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/coverage_summary"
          },
          "coverage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/coverage_metadata"
          },
          "repair_loss_damage_frontier": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/repair_loss_damage_frontier"
          },
          "resilience_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/resilience_summary"
          },
          "resilience_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/resilience_metadata"
          },
          "repair_hardening_candidates": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningCandidate"
            }
          },
          "damage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/summary"
          },
          "damage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/metadata"
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "returned_hardening_candidate_count",
              "returned_candidate_budget_point_count",
              "evaluated_hardening_failure_set_comparison_count",
              "candidates_reducing_worst_case_count",
              "first_failure_budget_with_any_hardening_improvement",
              "maximum_avoided_worst_case_observation_count",
              "repairs_attaining_maximum_avoidance_ids",
              "all_single_repair_candidates_evaluated",
              "all_remaining_failure_sets_exhausted_per_candidate",
              "hardening_counterfactuals_exact_for_sampled_evidence"
            ],
            "properties": {
              "returned_hardening_candidate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_candidate_budget_point_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 280
              },
              "evaluated_hardening_failure_set_comparison_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3836700
              },
              "candidates_reducing_worst_case_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "first_failure_budget_with_any_hardening_improvement": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 1,
                "maximum": 3
              },
              "maximum_avoided_worst_case_observation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2016
              },
              "repairs_attaining_maximum_avoidance_ids": {
                "type": "array",
                "maxItems": 70,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^repair_[0-9]{3}$"
                }
              },
              "all_single_repair_candidates_evaluated": {
                "const": true
              },
              "all_remaining_failure_sets_exhausted_per_candidate": {
                "const": true
              },
              "hardening_counterfactuals_exact_for_sampled_evidence": {
                "const": true
              }
            }
          },
          "fallback": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairLossFrontierAuditResponse/properties/fallback"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_robust_repair_count",
              "maximum_exact_repair_loss_budget",
              "maximum_hardening_candidate_count",
              "maximum_hardening_candidate_frontier_point_count",
              "maximum_hardening_candidate_budget_point_count",
              "maximum_hardening_failure_set_comparison_count",
              "observation_identity",
              "protection_definition",
              "hardening_effect_definition",
              "remaining_failure_set_definition",
              "candidate_order",
              "worst_case_representative_order",
              "all_single_repair_candidates_evaluated",
              "all_remaining_failure_sets_through_budget_enumerated",
              "exact_integer_counts_used",
              "criterion_weights_applied",
              "repairs_ranked",
              "probabilities_assigned",
              "chart_recalculation_for_hardening_analysis",
              "continuous_time_guarantee",
              "causal_hardening_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-hardening-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_robust_repair_count": {
                "const": 70
              },
              "maximum_exact_repair_loss_budget": {
                "const": 3
              },
              "maximum_hardening_candidate_count": {
                "const": 70
              },
              "maximum_hardening_candidate_frontier_point_count": {
                "const": 4
              },
              "maximum_hardening_candidate_budget_point_count": {
                "const": 280
              },
              "maximum_hardening_failure_set_comparison_count": {
                "const": 3836700
              },
              "observation_identity": {
                "const": "grid_id_plus_sample_id"
              },
              "protection_definition": {
                "const": "one_named_minimal_repair_assumed_always_available"
              },
              "hardening_effect_definition": {
                "const": "baseline_maximum_loss_minus_protected_maximum_loss"
              },
              "remaining_failure_set_definition": {
                "const": "every_exact_size_failure_set_excluding_protected_repair"
              },
              "candidate_order": {
                "const": "lexicographic_repair_id"
              },
              "worst_case_representative_order": {
                "const": "lexicographically_first_repair_id_tuple"
              },
              "all_single_repair_candidates_evaluated": {
                "const": true
              },
              "all_remaining_failure_sets_through_budget_enumerated": {
                "const": true
              },
              "exact_integer_counts_used": {
                "const": true
              },
              "criterion_weights_applied": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "probabilities_assigned": {
                "const": false
              },
              "chart_recalculation_for_hardening_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_hardening_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairHardeningParetoAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditRequest"
      },
      "ElectionalCriterionRepairHardeningParetoBudgetPoint": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "unavailable_repair_count",
          "avoided_worst_case_observation_count"
        ],
        "properties": {
          "unavailable_repair_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3
          },
          "avoided_worst_case_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          }
        }
      },
      "ElectionalCriterionRepairHardeningProfile": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "repair_ids",
          "repair_count",
          "avoidance_by_failure_budget",
          "maximum_avoided_worst_case_observation_count",
          "pareto_undominated",
          "dominated_by_profile_ids"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^hardening_profile_[0-9]{3}$"
          },
          "repair_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "repair_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "avoidance_by_failure_budget": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoBudgetPoint"
            }
          },
          "maximum_avoided_worst_case_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2016
          },
          "pareto_undominated": {
            "type": "boolean"
          },
          "dominated_by_profile_ids": {
            "type": "array",
            "maxItems": 69,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          }
        }
      },
      "ElectionalCriterionRepairHardeningPairRelation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "left_repair_id",
          "right_repair_id",
          "relation",
          "left_strict_improvement_failure_budgets",
          "right_strict_improvement_failure_budgets",
          "equal_avoidance_failure_budgets",
          "first_left_strict_improvement_failure_budget",
          "first_right_strict_improvement_failure_budget"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^hardening_pair_[0-9]{4}$"
          },
          "left_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "right_repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "relation": {
            "type": "string",
            "enum": [
              "equivalent",
              "left_strictly_dominates",
              "right_strictly_dominates",
              "incomparable"
            ]
          },
          "left_strict_improvement_failure_budgets": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 3
            }
          },
          "right_strict_improvement_failure_budgets": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 3
            }
          },
          "equal_avoidance_failure_budgets": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 3
            }
          },
          "first_left_strict_improvement_failure_budget": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 3
          },
          "first_right_strict_improvement_failure_budget": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 3
          }
        }
      },
      "ElectionalCriterionRepairHardeningCandidateRelation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "repair_id",
          "hardening_profile_id",
          "pareto_undominated",
          "strictly_dominates_repair_ids",
          "strictly_dominated_by_repair_ids",
          "equivalent_repair_ids",
          "incomparable_repair_ids"
        ],
        "properties": {
          "repair_id": {
            "type": "string",
            "pattern": "^repair_[0-9]{3}$"
          },
          "hardening_profile_id": {
            "type": "string",
            "pattern": "^hardening_profile_[0-9]{3}$"
          },
          "pareto_undominated": {
            "type": "boolean"
          },
          "strictly_dominates_repair_ids": {
            "type": "array",
            "maxItems": 69,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "strictly_dominated_by_repair_ids": {
            "type": "array",
            "maxItems": 69,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "equivalent_repair_ids": {
            "type": "array",
            "maxItems": 69,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "incomparable_repair_ids": {
            "type": "array",
            "maxItems": 69,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          }
        }
      },
      "ElectionalCriterionRepairHardeningParetoAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "damage_status",
          "hardening_status",
          "pareto_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "coverage_status",
          "coverage_groups",
          "repair_coverage",
          "coverage_multiplicity_histogram",
          "resilience_status",
          "minimal_failure_coalitions",
          "repair_loss_resilience_curve",
          "coverage_summary",
          "coverage_metadata",
          "repair_loss_damage_frontier",
          "resilience_summary",
          "resilience_metadata",
          "repair_hardening_candidates",
          "damage_summary",
          "damage_metadata",
          "hardening_profiles",
          "hardening_pair_relations",
          "hardening_candidate_relations",
          "hardening_summary",
          "hardening_metadata",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_hardening_pareto_audit"
          },
          "status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/status"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditRequest"
          },
          "damage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/damage_status"
          },
          "hardening_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/hardening_status"
          },
          "pareto_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "no_new_repair_consequences_observed",
              "insufficient_hardening_candidates_for_pareto_audit",
              "all_single_repair_hardening_profiles_equivalent",
              "exact_hardening_pareto_tradeoffs_observed",
              "exact_hardening_dominance_order_observed"
            ]
          },
          "criteria": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/criteria"
          },
          "samples": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/samples"
          },
          "grids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/grids"
          },
          "repairs": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/repairs"
          },
          "hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/hierarchy_nodes"
          },
          "containments": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/containments"
          },
          "minimal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/minimal_repair_ids"
          },
          "maximal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/maximal_repair_ids"
          },
          "maximum_antichain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/maximum_antichain_repair_ids"
          },
          "minimum_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/minimum_chain_cover"
          },
          "longest_chain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/longest_chain_repair_ids"
          },
          "coverage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/coverage_status"
          },
          "coverage_groups": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/coverage_groups"
          },
          "repair_coverage": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/repair_coverage"
          },
          "coverage_multiplicity_histogram": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/coverage_multiplicity_histogram"
          },
          "resilience_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/resilience_status"
          },
          "minimal_failure_coalitions": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/minimal_failure_coalitions"
          },
          "repair_loss_resilience_curve": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/repair_loss_resilience_curve"
          },
          "coverage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/coverage_summary"
          },
          "coverage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/coverage_metadata"
          },
          "repair_loss_damage_frontier": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/repair_loss_damage_frontier"
          },
          "resilience_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/resilience_summary"
          },
          "resilience_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/resilience_metadata"
          },
          "repair_hardening_candidates": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/repair_hardening_candidates"
          },
          "damage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/damage_summary"
          },
          "damage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/damage_metadata"
          },
          "hardening_profiles": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningProfile"
            }
          },
          "hardening_pair_relations": {
            "type": "array",
            "maxItems": 2415,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningPairRelation"
            }
          },
          "hardening_candidate_relations": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningCandidateRelation"
            }
          },
          "hardening_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/summary"
          },
          "hardening_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/metadata"
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "returned_hardening_candidate_count",
              "compared_failure_budget_count",
              "returned_hardening_profile_count",
              "returned_hardening_pair_relation_count",
              "evaluated_pair_budget_comparison_count",
              "pareto_undominated_candidate_count",
              "pareto_undominated_repair_ids",
              "pareto_undominated_profile_count",
              "pareto_undominated_profile_ids",
              "strictly_dominated_candidate_count",
              "equivalent_pair_count",
              "strict_dominance_pair_count",
              "incomparable_pair_count",
              "all_hardening_candidate_pairs_classified",
              "pair_relation_partition_reconciled",
              "pareto_frontier_exact_for_sampled_hardening_evidence"
            ],
            "properties": {
              "returned_hardening_candidate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "compared_failure_budget_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4
              },
              "returned_hardening_profile_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_hardening_pair_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "evaluated_pair_budget_comparison_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9660
              },
              "pareto_undominated_candidate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "pareto_undominated_repair_ids": {
                "type": "array",
                "maxItems": 70,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^repair_[0-9]{3}$"
                }
              },
              "pareto_undominated_profile_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "pareto_undominated_profile_ids": {
                "type": "array",
                "maxItems": 70,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^hardening_profile_[0-9]{3}$"
                }
              },
              "strictly_dominated_candidate_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "equivalent_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "strict_dominance_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "incomparable_pair_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "all_hardening_candidate_pairs_classified": {
                "const": true
              },
              "pair_relation_partition_reconciled": {
                "const": true
              },
              "pareto_frontier_exact_for_sampled_hardening_evidence": {
                "const": true
              }
            }
          },
          "fallback": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningAuditResponse/properties/fallback"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_hardening_candidate_count",
              "maximum_failure_budget_count",
              "maximum_hardening_profile_count",
              "maximum_hardening_profile_budget_point_count",
              "maximum_hardening_pair_relation_count",
              "maximum_pair_budget_comparison_count",
              "maximum_candidate_relation_reference_count",
              "dominance_definition",
              "equivalence_definition",
              "incomparability_definition",
              "pareto_semantics",
              "candidate_order",
              "profile_order",
              "all_hardening_candidate_pairs_included",
              "exact_integer_counts_used",
              "weights_applied",
              "floating_point_comparison",
              "repairs_ranked",
              "chart_recalculation_for_pareto_analysis",
              "continuous_time_guarantee",
              "causal_hardening_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-hardening-pareto-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_hardening_candidate_count": {
                "const": 70
              },
              "maximum_failure_budget_count": {
                "const": 4
              },
              "maximum_hardening_profile_count": {
                "const": 70
              },
              "maximum_hardening_profile_budget_point_count": {
                "const": 280
              },
              "maximum_hardening_pair_relation_count": {
                "const": 2415
              },
              "maximum_pair_budget_comparison_count": {
                "const": 9660
              },
              "maximum_candidate_relation_reference_count": {
                "const": 4830
              },
              "dominance_definition": {
                "const": "at_least_as_much_avoided_worst_case_observation_loss_at_every_analyzed_failure_budget_and_strictly_more_at_one"
              },
              "equivalence_definition": {
                "const": "identical_avoided_worst_case_observation_counts_at_every_analyzed_failure_budget"
              },
              "incomparability_definition": {
                "const": "each_candidate_has_strictly_more_avoided_loss_at_one_or_more_analyzed_failure_budgets"
              },
              "pareto_semantics": {
                "const": "candidate_is_not_strictly_dominated_by_any_other_single_repair_hardening_candidate"
              },
              "candidate_order": {
                "const": "lexicographic_repair_id"
              },
              "profile_order": {
                "const": "first_lexicographic_repair_id"
              },
              "all_hardening_candidate_pairs_included": {
                "const": true
              },
              "exact_integer_counts_used": {
                "const": true
              },
              "weights_applied": {
                "const": false
              },
              "floating_point_comparison": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_pareto_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_hardening_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairHardeningParetoHierarchyAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditRequest"
      },
      "ElectionalCriterionRepairHardeningHierarchyNode": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "hardening_profile_id",
          "repair_ids",
          "avoidance_by_failure_budget",
          "pareto_layer",
          "strictly_dominates_profile_ids",
          "strictly_dominated_by_profile_ids",
          "immediately_dominates_profile_ids",
          "immediately_dominated_by_profile_ids",
          "incomparable_profile_ids",
          "longest_chain_from_undominated_count",
          "longest_chain_to_most_dominated_count"
        ],
        "properties": {
          "hardening_profile_id": {
            "type": "string",
            "pattern": "^hardening_profile_[0-9]{3}$"
          },
          "repair_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "avoidance_by_failure_budget": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoBudgetPoint"
            }
          },
          "pareto_layer": {
            "type": "integer",
            "minimum": 0,
            "maximum": 69
          },
          "strictly_dominates_profile_ids": {
            "$ref": "#/components/schemas/HardeningProfileIdSet"
          },
          "strictly_dominated_by_profile_ids": {
            "$ref": "#/components/schemas/HardeningProfileIdSet"
          },
          "immediately_dominates_profile_ids": {
            "$ref": "#/components/schemas/HardeningProfileIdSet"
          },
          "immediately_dominated_by_profile_ids": {
            "$ref": "#/components/schemas/HardeningProfileIdSet"
          },
          "incomparable_profile_ids": {
            "$ref": "#/components/schemas/HardeningProfileIdSet"
          },
          "longest_chain_from_undominated_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          },
          "longest_chain_to_most_dominated_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          }
        }
      },
      "HardeningProfileIdSet": {
        "type": "array",
        "maxItems": 69,
        "uniqueItems": true,
        "items": {
          "type": "string",
          "pattern": "^hardening_profile_[0-9]{3}$"
        }
      },
      "ElectionalCriterionRepairHardeningProfileDominance": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "dominant_hardening_profile_id",
          "dominated_hardening_profile_id",
          "strict_improvement_failure_budgets",
          "equal_avoidance_failure_budgets",
          "first_strict_improvement_failure_budget",
          "is_cover_relation"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^hardening_dominance_[0-9]{4}$"
          },
          "dominant_hardening_profile_id": {
            "type": "string",
            "pattern": "^hardening_profile_[0-9]{3}$"
          },
          "dominated_hardening_profile_id": {
            "type": "string",
            "pattern": "^hardening_profile_[0-9]{3}$"
          },
          "strict_improvement_failure_budgets": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 3
            }
          },
          "equal_avoidance_failure_budgets": {
            "type": "array",
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 3
            }
          },
          "first_strict_improvement_failure_budget": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3
          },
          "is_cover_relation": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairHardeningParetoLayer": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "pareto_layer",
          "hardening_profile_ids",
          "hardening_profile_count"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^pareto_layer_[0-9]{3}$"
          },
          "pareto_layer": {
            "type": "integer",
            "minimum": 0,
            "maximum": 69
          },
          "hardening_profile_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          },
          "hardening_profile_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          }
        }
      },
      "ElectionalCriterionRepairHardeningProfileChain": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "hardening_profile_ids"
        ],
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^hardening_chain_[0-9]{3}$"
          },
          "hardening_profile_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          }
        }
      },
      "ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "damage_status",
          "hardening_status",
          "pareto_status",
          "hierarchy_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "coverage_status",
          "coverage_groups",
          "repair_coverage",
          "coverage_multiplicity_histogram",
          "resilience_status",
          "minimal_failure_coalitions",
          "repair_loss_resilience_curve",
          "coverage_summary",
          "coverage_metadata",
          "repair_loss_damage_frontier",
          "resilience_summary",
          "resilience_metadata",
          "repair_hardening_candidates",
          "damage_summary",
          "damage_metadata",
          "hardening_profiles",
          "hardening_pair_relations",
          "hardening_candidate_relations",
          "hardening_summary",
          "hardening_metadata",
          "hardening_hierarchy_nodes",
          "hardening_profile_dominances",
          "pareto_layers",
          "maximum_antichain_hardening_profile_ids",
          "minimum_hardening_profile_chain_cover",
          "longest_dominance_chain_hardening_profile_ids",
          "pareto_summary",
          "pareto_metadata",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_hardening_pareto_hierarchy_audit"
          },
          "status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/status"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditRequest"
          },
          "damage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/damage_status"
          },
          "hardening_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/hardening_status"
          },
          "pareto_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/pareto_status"
          },
          "hierarchy_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "no_new_repair_consequences_observed",
              "insufficient_hardening_profiles_for_hierarchy",
              "all_hardening_profiles_pairwise_incomparable",
              "exact_hardening_profile_dominance_chain_observed",
              "exact_hardening_profile_dominance_hierarchy_observed"
            ]
          },
          "criteria": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/criteria"
          },
          "samples": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/samples"
          },
          "grids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/grids"
          },
          "repairs": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/repairs"
          },
          "hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/hierarchy_nodes"
          },
          "containments": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/containments"
          },
          "minimal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/minimal_repair_ids"
          },
          "maximal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/maximal_repair_ids"
          },
          "maximum_antichain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/maximum_antichain_repair_ids"
          },
          "minimum_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/minimum_chain_cover"
          },
          "longest_chain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/longest_chain_repair_ids"
          },
          "coverage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/coverage_status"
          },
          "coverage_groups": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/coverage_groups"
          },
          "repair_coverage": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/repair_coverage"
          },
          "coverage_multiplicity_histogram": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/coverage_multiplicity_histogram"
          },
          "resilience_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/resilience_status"
          },
          "minimal_failure_coalitions": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/minimal_failure_coalitions"
          },
          "repair_loss_resilience_curve": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/repair_loss_resilience_curve"
          },
          "coverage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/coverage_summary"
          },
          "coverage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/coverage_metadata"
          },
          "repair_loss_damage_frontier": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/repair_loss_damage_frontier"
          },
          "resilience_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/resilience_summary"
          },
          "resilience_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/resilience_metadata"
          },
          "repair_hardening_candidates": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/repair_hardening_candidates"
          },
          "damage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/damage_summary"
          },
          "damage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/damage_metadata"
          },
          "hardening_profiles": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/hardening_profiles"
          },
          "hardening_pair_relations": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/hardening_pair_relations"
          },
          "hardening_candidate_relations": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/hardening_candidate_relations"
          },
          "hardening_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/hardening_summary"
          },
          "hardening_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/hardening_metadata"
          },
          "hardening_hierarchy_nodes": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningHierarchyNode"
            }
          },
          "hardening_profile_dominances": {
            "type": "array",
            "maxItems": 2415,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningProfileDominance"
            }
          },
          "pareto_layers": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoLayer"
            }
          },
          "maximum_antichain_hardening_profile_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          },
          "minimum_hardening_profile_chain_cover": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningProfileChain"
            }
          },
          "longest_dominance_chain_hardening_profile_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          },
          "pareto_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/summary"
          },
          "pareto_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/metadata"
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "returned_hardening_profile_count",
              "returned_strict_dominance_count",
              "returned_cover_relation_count",
              "returned_pareto_layer_count",
              "pareto_frontier_profile_count",
              "maximum_chain_length",
              "maximum_antichain_size",
              "minimum_chain_cover_count",
              "returned_hierarchy_relation_reference_count",
              "cover_relation_transitive_reduction_verified",
              "pareto_layers_partition_profiles_verified",
              "maximum_antichain_pairwise_incomparable_verified",
              "minimum_chain_cover_partitions_profiles_verified"
            ],
            "properties": {
              "returned_hardening_profile_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_strict_dominance_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_cover_relation_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2415
              },
              "returned_pareto_layer_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "pareto_frontier_profile_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximum_chain_length": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "maximum_antichain_size": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "minimum_chain_cover_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_hierarchy_relation_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 24150
              },
              "cover_relation_transitive_reduction_verified": {
                "const": true
              },
              "pareto_layers_partition_profiles_verified": {
                "const": true
              },
              "maximum_antichain_pairwise_incomparable_verified": {
                "const": true
              },
              "minimum_chain_cover_partitions_profiles_verified": {
                "const": true
              }
            }
          },
          "fallback": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoAuditResponse/properties/fallback"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_hardening_profile_count",
              "maximum_strict_dominance_count",
              "maximum_cover_relation_count",
              "maximum_pareto_layer_count",
              "maximum_hierarchy_relation_reference_count",
              "maximum_hierarchy_comparison_count",
              "dominance_direction",
              "cover_relation_definition",
              "pareto_layer_definition",
              "width_definition",
              "matching_algorithm",
              "dilworth_identity_verified",
              "equivalent_candidates_collapsed_to_profiles",
              "all_hardening_profile_pairs_considered",
              "exact_integer_counts_used",
              "weights_applied",
              "floating_point_comparison",
              "repairs_ranked",
              "chart_recalculation_for_hierarchy_analysis",
              "continuous_time_guarantee",
              "causal_hardening_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-hardening-pareto-hierarchy-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_hardening_profile_count": {
                "const": 70
              },
              "maximum_strict_dominance_count": {
                "const": 2415
              },
              "maximum_cover_relation_count": {
                "const": 2415
              },
              "maximum_pareto_layer_count": {
                "const": 70
              },
              "maximum_hierarchy_relation_reference_count": {
                "const": 24150
              },
              "maximum_hierarchy_comparison_count": {
                "const": 343000
              },
              "dominance_direction": {
                "const": "greater_avoided_loss_profile_to_strictly_dominated_profile"
              },
              "cover_relation_definition": {
                "const": "strict_dominance_with_no_returned_intermediate_profile"
              },
              "pareto_layer_definition": {
                "const": "successive_undominated_frontiers_after_removing_prior_layers"
              },
              "width_definition": {
                "const": "maximum_pairwise_incomparable_hardening_profile_count"
              },
              "matching_algorithm": {
                "const": "deterministic_maximum_bipartite_matching_on_strict_dominance"
              },
              "dilworth_identity_verified": {
                "const": true
              },
              "equivalent_candidates_collapsed_to_profiles": {
                "const": true
              },
              "all_hardening_profile_pairs_considered": {
                "const": true
              },
              "exact_integer_counts_used": {
                "const": true
              },
              "weights_applied": {
                "const": false
              },
              "floating_point_comparison": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_hierarchy_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_hardening_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "ElectionalCriterionRepairHardeningRegretAuditRequest": {
        "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditRequest"
      },
      "ElectionalCriterionRepairHardeningBudgetBenchmark": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "unavailable_repair_count",
          "maximum_avoided_worst_case_observation_count",
          "best_hardening_profile_ids",
          "best_hardening_profile_count"
        ],
        "properties": {
          "unavailable_repair_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3
          },
          "maximum_avoided_worst_case_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "best_hardening_profile_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          },
          "best_hardening_profile_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 70
          }
        }
      },
      "ElectionalCriterionRepairHardeningBudgetRegret": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "unavailable_repair_count",
          "profile_avoided_worst_case_observation_count",
          "budget_best_avoided_worst_case_observation_count",
          "regret_observation_count",
          "benchmark_hardening_profile_ids",
          "first_benchmark_hardening_profile_id"
        ],
        "properties": {
          "unavailable_repair_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 3
          },
          "profile_avoided_worst_case_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "budget_best_avoided_worst_case_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "regret_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "benchmark_hardening_profile_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          },
          "first_benchmark_hardening_profile_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^hardening_profile_[0-9]{3}$"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "ElectionalCriterionRepairHardeningProfileRegret": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "hardening_profile_id",
          "repair_ids",
          "regret_by_failure_budget",
          "maximum_regret_observation_count",
          "maximum_regret_failure_budgets",
          "zero_regret_on_every_analyzed_failure_budget",
          "minimax_regret"
        ],
        "properties": {
          "hardening_profile_id": {
            "type": "string",
            "pattern": "^hardening_profile_[0-9]{3}$"
          },
          "repair_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^repair_[0-9]{3}$"
            }
          },
          "regret_by_failure_budget": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningBudgetRegret"
            }
          },
          "maximum_regret_observation_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 672
          },
          "maximum_regret_failure_budgets": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 3
            }
          },
          "zero_regret_on_every_analyzed_failure_budget": {
            "type": "boolean"
          },
          "minimax_regret": {
            "type": "boolean"
          }
        }
      },
      "ElectionalCriterionRepairHardeningRegretAuditResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "damage_status",
          "hardening_status",
          "pareto_status",
          "hierarchy_status",
          "criteria",
          "samples",
          "grids",
          "repairs",
          "hierarchy_nodes",
          "containments",
          "minimal_repair_ids",
          "maximal_repair_ids",
          "maximum_antichain_repair_ids",
          "minimum_chain_cover",
          "longest_chain_repair_ids",
          "coverage_status",
          "coverage_groups",
          "repair_coverage",
          "coverage_multiplicity_histogram",
          "resilience_status",
          "minimal_failure_coalitions",
          "repair_loss_resilience_curve",
          "coverage_summary",
          "coverage_metadata",
          "repair_loss_damage_frontier",
          "resilience_summary",
          "resilience_metadata",
          "repair_hardening_candidates",
          "damage_summary",
          "damage_metadata",
          "hardening_profiles",
          "hardening_pair_relations",
          "hardening_candidate_relations",
          "hardening_summary",
          "hardening_metadata",
          "hardening_hierarchy_nodes",
          "hardening_profile_dominances",
          "pareto_layers",
          "maximum_antichain_hardening_profile_ids",
          "minimum_hardening_profile_chain_cover",
          "longest_dominance_chain_hardening_profile_ids",
          "pareto_summary",
          "pareto_metadata",
          "regret_status",
          "hardening_budget_benchmarks",
          "hardening_profile_regrets",
          "minimax_regret_hardening_profile_ids",
          "hierarchy_summary",
          "hierarchy_metadata",
          "summary",
          "fallback",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_criterion_repair_hardening_regret_audit"
          },
          "status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/status"
          },
          "input": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningRegretAuditRequest"
          },
          "damage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/damage_status"
          },
          "hardening_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_status"
          },
          "pareto_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/pareto_status"
          },
          "hierarchy_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hierarchy_status"
          },
          "criteria": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/criteria"
          },
          "samples": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/samples"
          },
          "grids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/grids"
          },
          "repairs": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/repairs"
          },
          "hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hierarchy_nodes"
          },
          "containments": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/containments"
          },
          "minimal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/minimal_repair_ids"
          },
          "maximal_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/maximal_repair_ids"
          },
          "maximum_antichain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/maximum_antichain_repair_ids"
          },
          "minimum_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/minimum_chain_cover"
          },
          "longest_chain_repair_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/longest_chain_repair_ids"
          },
          "coverage_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/coverage_status"
          },
          "coverage_groups": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/coverage_groups"
          },
          "repair_coverage": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/repair_coverage"
          },
          "coverage_multiplicity_histogram": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/coverage_multiplicity_histogram"
          },
          "resilience_status": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/resilience_status"
          },
          "minimal_failure_coalitions": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/minimal_failure_coalitions"
          },
          "repair_loss_resilience_curve": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/repair_loss_resilience_curve"
          },
          "coverage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/coverage_summary"
          },
          "coverage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/coverage_metadata"
          },
          "repair_loss_damage_frontier": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/repair_loss_damage_frontier"
          },
          "resilience_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/resilience_summary"
          },
          "resilience_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/resilience_metadata"
          },
          "repair_hardening_candidates": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/repair_hardening_candidates"
          },
          "damage_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/damage_summary"
          },
          "damage_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/damage_metadata"
          },
          "hardening_profiles": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_profiles"
          },
          "hardening_pair_relations": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_pair_relations"
          },
          "hardening_candidate_relations": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_candidate_relations"
          },
          "hardening_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_summary"
          },
          "hardening_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_metadata"
          },
          "hardening_hierarchy_nodes": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_hierarchy_nodes"
          },
          "hardening_profile_dominances": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/hardening_profile_dominances"
          },
          "pareto_layers": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/pareto_layers"
          },
          "maximum_antichain_hardening_profile_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/maximum_antichain_hardening_profile_ids"
          },
          "minimum_hardening_profile_chain_cover": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/minimum_hardening_profile_chain_cover"
          },
          "longest_dominance_chain_hardening_profile_ids": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/longest_dominance_chain_hardening_profile_ids"
          },
          "pareto_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/pareto_summary"
          },
          "pareto_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/pareto_metadata"
          },
          "fallback": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/fallback"
          },
          "regret_status": {
            "type": "string",
            "enum": [
              "indeterminate_no_evaluable_samples",
              "indeterminate_incomplete_grid_evidence",
              "no_relaxation_required",
              "no_new_repair_consequences_observed",
              "no_hardening_profiles_available",
              "zero_maximum_regret_hardening_profile_observed",
              "positive_minimax_regret_hardening_profiles_observed"
            ]
          },
          "hardening_budget_benchmarks": {
            "type": "array",
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningBudgetBenchmark"
            }
          },
          "hardening_profile_regrets": {
            "type": "array",
            "maxItems": 70,
            "items": {
              "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningProfileRegret"
            }
          },
          "minimax_regret_hardening_profile_ids": {
            "type": "array",
            "maxItems": 70,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^hardening_profile_[0-9]{3}$"
            }
          },
          "hierarchy_summary": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/summary"
          },
          "hierarchy_metadata": {
            "$ref": "#/components/schemas/ElectionalCriterionRepairHardeningParetoHierarchyAuditResponse/properties/metadata"
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "returned_hardening_profile_count",
              "returned_failure_budget_benchmark_count",
              "returned_profile_budget_regret_count",
              "returned_benchmark_profile_reference_count",
              "evaluated_profile_budget_comparison_count",
              "minimax_regret_observation_count",
              "minimax_regret_hardening_profile_count",
              "all_minimax_regret_ties_returned",
              "budget_benchmarks_reconcile_profile_maxima",
              "regret_counts_nonnegative_verified"
            ],
            "properties": {
              "returned_hardening_profile_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "returned_failure_budget_benchmark_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4
              },
              "returned_profile_budget_regret_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 280
              },
              "returned_benchmark_profile_reference_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 19600
              },
              "evaluated_profile_budget_comparison_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 280
              },
              "minimax_regret_observation_count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 672
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "minimax_regret_hardening_profile_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 70
              },
              "all_minimax_regret_ties_returned": {
                "const": true
              },
              "budget_benchmarks_reconcile_profile_maxima": {
                "const": true
              },
              "regret_counts_nonnegative_verified": {
                "const": true
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "model",
              "ephemeris",
              "maximum_interval_days",
              "maximum_chart_evaluations",
              "maximum_criterion_count",
              "maximum_hardening_profile_count",
              "maximum_failure_budget_count",
              "maximum_profile_budget_regret_count",
              "maximum_benchmark_profile_reference_count",
              "regret_definition",
              "optimization_objective",
              "failure_budget_uncertainty_model",
              "all_minimax_ties_returned",
              "equivalent_candidates_collapsed_to_profiles",
              "exact_integer_counts_used",
              "weights_applied",
              "probabilities_assigned",
              "floating_point_comparison",
              "repairs_ranked",
              "chart_recalculation_for_regret_analysis",
              "continuous_time_guarantee",
              "causal_hardening_claim",
              "recommendations",
              "interpretations",
              "predictions",
              "statistical_confidence",
              "request_time_network"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-electional-criterion-repair-hardening-regret-audit-v1"
              },
              "ephemeris": {
                "const": "JPL-DE421"
              },
              "maximum_interval_days": {
                "const": 7
              },
              "maximum_chart_evaluations": {
                "const": 672
              },
              "maximum_criterion_count": {
                "const": 8
              },
              "maximum_hardening_profile_count": {
                "const": 70
              },
              "maximum_failure_budget_count": {
                "const": 4
              },
              "maximum_profile_budget_regret_count": {
                "const": 280
              },
              "maximum_benchmark_profile_reference_count": {
                "const": 19600
              },
              "regret_definition": {
                "const": "budget_best_avoided_worst_case_observation_count_minus_profile_avoided_worst_case_observation_count"
              },
              "optimization_objective": {
                "const": "minimize_maximum_exact_regret_observation_count_across_all_analyzed_failure_budgets"
              },
              "failure_budget_uncertainty_model": {
                "const": "no_probability_or_weight_assigned_to_any_analyzed_budget"
              },
              "all_minimax_ties_returned": {
                "const": true
              },
              "equivalent_candidates_collapsed_to_profiles": {
                "const": true
              },
              "exact_integer_counts_used": {
                "const": true
              },
              "weights_applied": {
                "const": false
              },
              "probabilities_assigned": {
                "const": false
              },
              "floating_point_comparison": {
                "const": false
              },
              "repairs_ranked": {
                "const": false
              },
              "chart_recalculation_for_regret_analysis": {
                "const": false
              },
              "continuous_time_guarantee": {
                "const": false
              },
              "causal_hardening_claim": {
                "const": false
              },
              "recommendations": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "statistical_confidence": {
                "const": false
              },
              "request_time_network": {
                "const": false
              }
            }
          },
          "receipt": {
            "$ref": "#/components/schemas/CalculationReceipt"
          }
        }
      },
      "RelationshipSvgResponse": {
        "type": "object",
        "required": [
          "type",
          "status",
          "svg",
          "metadata"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "synastry_svg",
              "transit_svg"
            ]
          },
          "status": {
            "const": "beta"
          },
          "svg": {
            "type": "string",
            "maxLength": 196608
          },
          "metadata": {
            "type": "object"
          },
          "png": {
            "$ref": "#/components/schemas/PngExport",
            "description": "Present only when include_png is true."
          }
        }
      },
      "ReportDownload": {
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.html"
              },
              "media_type": {
                "const": "text/html; charset=utf-8"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 524288
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 699052,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.pdf"
              },
              "media_type": {
                "const": "application/pdf"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.docx"
              },
              "media_type": {
                "const": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.xlsx"
              },
              "media_type": {
                "const": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.ods"
              },
              "media_type": {
                "const": "application/vnd.oasis.opendocument.spreadsheet"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.epub"
              },
              "media_type": {
                "const": "application/epub+zip"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.odt"
              },
              "media_type": {
                "const": "application/vnd.oasis.opendocument.text"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.rtf"
              },
              "media_type": {
                "const": "application/rtf"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.json"
              },
              "media_type": {
                "const": "application/json"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.csv"
              },
              "media_type": {
                "const": "text/csv; charset=utf-8"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.xml"
              },
              "media_type": {
                "const": "application/xml"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.ndjson"
              },
              "media_type": {
                "const": "application/x-ndjson"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.tsv"
              },
              "media_type": {
                "const": "text/tab-separated-values; charset=utf-8"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.md"
              },
              "media_type": {
                "const": "text/markdown; charset=utf-8"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report.txt"
              },
              "media_type": {
                "const": "text/plain; charset=utf-8"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "media_type",
              "encoding",
              "bytes",
              "sha256",
              "base64"
            ],
            "properties": {
              "filename": {
                "const": "cosmicephemeris-natal-report-bundle.zip"
              },
              "media_type": {
                "const": "application/zip"
              },
              "encoding": {
                "const": "base64"
              },
              "bytes": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1048576
              },
              "sha256": {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              "base64": {
                "type": "string",
                "minLength": 4,
                "maxLength": 1398104,
                "pattern": "^[A-Za-z0-9+/]+={0,2}$"
              }
            }
          }
        ],
        "description": "Present only for include_download:true. Strict base64 decodes to the selected deterministic HTML, PDF, DOCX, XLSX, ODS, EPUB, ODT, RTF, JSON, CSV, XML, NDJSON, TSV, Markdown, plain-text, or ZIP artifact; bytes and sha256 verify it. Filenames and media types are fixed. No server-side report is persisted."
      },
      "NatalReportResponse": {
        "type": "object",
        "required": [
          "type",
          "status",
          "format",
          "html",
          "facts",
          "input",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "natal_report"
          },
          "status": {
            "const": "beta"
          },
          "format": {
            "const": "html"
          },
          "html": {
            "type": "string",
            "maxLength": 524288
          },
          "facts": {
            "type": "array",
            "maxItems": 128,
            "items": {
              "type": "object"
            }
          },
          "input": {
            "type": "object"
          },
          "metadata": {
            "type": "object"
          },
          "download": {
            "$ref": "#/components/schemas/ReportDownload"
          }
        }
      },
      "BirthTimeSensitivityWorkflow": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth_time_status",
          "input",
          "interval_source",
          "uncertainty_minutes",
          "derived_interval",
          "exact_birth_chart_available",
          "representative_time_selected",
          "rectification_performed",
          "stable_sign_points",
          "variable_sign_points",
          "stable_house_points",
          "variable_house_points",
          "angles_time_sensitive"
        ],
        "properties": {
          "birth_time_status": {
            "type": "string",
            "enum": [
              "unknown",
              "approximate"
            ]
          },
          "input": {
            "type": "object"
          },
          "interval_source": {
            "type": "string",
            "enum": [
              "complete_local_civil_date",
              "approximate_center_plus_minus_uncertainty"
            ]
          },
          "uncertainty_minutes": {
            "oneOf": [
              {
                "type": "integer",
                "minimum": 5,
                "maximum": 180,
                "multipleOf": 5
              },
              {
                "type": "null"
              }
            ]
          },
          "derived_interval": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "start_utc",
              "end_utc",
              "sample_interval_minutes"
            ],
            "properties": {
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "sample_interval_minutes": {
                "type": "integer",
                "enum": [
                  5,
                  30
                ]
              }
            }
          },
          "exact_birth_chart_available": {
            "const": false
          },
          "representative_time_selected": {
            "const": false
          },
          "rectification_performed": {
            "const": false
          },
          "angles_time_sensitive": {
            "const": true
          },
          "stable_sign_points": {
            "type": "array",
            "maxItems": 12,
            "items": {
              "type": "string"
            }
          },
          "variable_sign_points": {
            "type": "array",
            "maxItems": 12,
            "items": {
              "type": "string"
            }
          },
          "stable_house_points": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "string"
            }
          },
          "variable_house_points": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "BirthTimeSensitivityResponse": {
        "type": "object",
        "required": [
          "type",
          "status",
          "result",
          "metadata",
          "stability_ratios",
          "aspect_stability_scope"
        ],
        "properties": {
          "type": {
            "const": "birth_time_sensitivity"
          },
          "status": {
            "const": "beta"
          },
          "result": {
            "type": "object",
            "required": [
              "aspect_stability",
              "observed_aspect_transitions",
              "start_utc",
              "end_utc",
              "sample_interval_minutes",
              "sample_count",
              "points",
              "observed_transitions",
              "samples"
            ],
            "properties": {
              "start_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "end_utc": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "sample_interval_minutes": {
                "type": "integer",
                "enum": [
                  5,
                  30
                ]
              },
              "sample_count": {
                "type": "integer",
                "minimum": 2,
                "maximum": 73
              },
              "points": {
                "type": "array",
                "maxItems": 12,
                "items": {
                  "type": "object"
                }
              },
              "observed_transitions": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "samples": {
                "type": "array",
                "minItems": 2,
                "maxItems": 73,
                "items": {
                  "type": "object"
                }
              },
              "workflow": {
                "$ref": "#/components/schemas/BirthTimeSensitivityWorkflow"
              },
              "aspect_stability": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "observed_aspect_transitions": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              }
            }
          },
          "metadata": {
            "type": "object"
          },
          "stability_ratios": {
            "const": "sample_observation_ratios_not_statistical_confidence"
          },
          "aspect_stability_scope": {
            "const": "aspects_observed_at_least_once_under_existing_natal_orbs"
          }
        }
      },
      "FixedStarsResponse": {
        "type": "object",
        "required": [
          "type",
          "status",
          "input",
          "utc",
          "zodiac",
          "ayanamsa",
          "objects",
          "catalog",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "fixed_stars"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object"
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Ayanamsa"
              },
              {
                "type": "null"
              }
            ]
          },
          "objects": {
            "type": "array",
            "maxItems": 6,
            "items": {
              "type": "object"
            }
          },
          "catalog": {
            "type": "object"
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "GeographicLocation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "lat",
          "lon"
        ],
        "description": "Geographic coordinates in decimal degrees. The server rejects exactly -90 and +90 latitude because angles and houses are undefined at the poles.",
        "properties": {
          "lat": {
            "$ref": "#/components/schemas/Latitude"
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          }
        }
      },
      "RelocationChartRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth",
          "location"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "location": {
            "$ref": "#/components/schemas/GeographicLocation"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign",
              "placidus"
            ],
            "default": "equal"
          }
        }
      },
      "AstrocartographyBody": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mercury",
          "venus",
          "mars",
          "jupiter",
          "saturn",
          "uranus",
          "neptune",
          "pluto"
        ]
      },
      "AstrocartographyRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "at",
          "bodies"
        ],
        "properties": {
          "at": {
            "$ref": "#/components/schemas/CivilTimeInput"
          },
          "bodies": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/AstrocartographyBody"
            }
          },
          "include_svg": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns a deterministic 1200x800 Cosmic Ephemeris-owned coordinate-grid SVG map. Omission or false preserves the predecessor geometry response exactly."
          },
          "basemap": {
            "type": "string",
            "enum": [
              "coordinate-grid-only",
              "natural-earth-110m"
            ],
            "default": "coordinate-grid-only",
            "description": "Requires include_svg true. Natural Earth adds a bundled public-domain 1:110m coastline with pinned provenance; no tiles, network calls, navigation accuracy, boundaries, geocoding or change to angular geometry. Omission preserves the predecessor output."
          },
          "include_png": {
            "type": "boolean",
            "default": false,
            "description": "When true, also returns a deterministic PNG derived from the returned SVG. Requires include_svg true."
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ],
            "default": "dark",
            "description": "Map theme. Requires include_svg true."
          },
          "include_geojson": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns a deterministic RFC 7946 FeatureCollection with four ordered features per body. Independent of SVG/PNG export."
          },
          "include_geojson_seq": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns a deterministic RFC 8142 GeoJSON Text Sequence with four ordered Feature records per body. Independent of every other export."
          },
          "include_ndjson": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns deterministic newline-delimited compact RFC 7946 Feature records in body/angle order. Independent of every other export."
          },
          "include_topojson": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns deterministic unquantized TopoJSON with one named GeometryCollection, a central arc inventory, and exact authoritative coordinates. Independent of every other export."
          },
          "include_kml": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns a deterministic OGC KML 2.2 artifact with four ordered placemarks per body, fixed integrity metadata, and exact authoritative coordinates. Independent of GeoJSON and SVG/PNG export."
          },
          "include_gpx": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns a deterministic GPX 1.1 artifact with four ordered tracks per body, preserved date-line track segments, fixed integrity metadata, and exact authoritative coordinates. Independent of GeoJSON, KML, and SVG/PNG export."
          },
          "include_csv": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns a deterministic RFC 4180 CSV artifact with one fixed-column row per authoritative geometry point in body, MC, IC, ascendant, descendant, segment, and point order. Independent of every other export."
          },
          "include_wkt": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns one deterministic WKT GEOMETRYCOLLECTION with four ordered geometries per body and preserved date-line segments. Independent of every other export."
          },
          "include_wkb": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns one deterministic OGC WKB 1.x little-endian GEOMETRYCOLLECTION with four ordered geometries per body and preserved date-line segments. Independent of every other export."
          },
          "include_gml": {
            "type": "boolean",
            "default": false,
            "description": "When true, returns one deterministic GML 3.2 MultiGeometry in CRS84 with four ordered geometries per body and preserved date-line segments. Independent of every other export."
          }
        },
        "allOf": [
          {
            "if": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "basemap": {}
                  },
                  "required": [
                    "basemap"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "include_png": {}
                  },
                  "required": [
                    "include_png"
                  ]
                },
                {
                  "type": "object",
                  "properties": {
                    "theme": {}
                  },
                  "required": [
                    "theme"
                  ]
                }
              ]
            },
            "then": {
              "type": "object",
              "required": [
                "include_svg"
              ],
              "properties": {
                "include_svg": {
                  "type": "boolean",
                  "const": true
                }
              }
            }
          }
        ]
      },
      "AstrocartographyPoint": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "latitude",
          "longitude"
        ],
        "properties": {
          "latitude": {
            "type": "number",
            "minimum": -88,
            "maximum": 88,
            "multipleOf": 2
          },
          "longitude": {
            "type": "number",
            "minimum": -180,
            "exclusiveMaximum": 180
          }
        }
      },
      "AstrocartographyLine": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "body",
          "equatorial",
          "mc",
          "ic",
          "ascendant",
          "descendant"
        ],
        "properties": {
          "body": {
            "$ref": "#/components/schemas/AstrocartographyBody"
          },
          "equatorial": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "right_ascension_degrees",
              "declination_degrees"
            ],
            "properties": {
              "right_ascension_degrees": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "declination_degrees": {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              }
            }
          },
          "mc": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "longitude"
            ],
            "properties": {
              "longitude": {
                "type": "number",
                "minimum": -180,
                "exclusiveMaximum": 180
              }
            }
          },
          "ic": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "longitude"
            ],
            "properties": {
              "longitude": {
                "type": "number",
                "minimum": -180,
                "exclusiveMaximum": 180
              }
            }
          },
          "ascendant": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "segments"
            ],
            "properties": {
              "segments": {
                "type": "array",
                "maxItems": 4,
                "items": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 89,
                  "items": {
                    "$ref": "#/components/schemas/AstrocartographyPoint"
                  }
                }
              }
            }
          },
          "descendant": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "segments"
            ],
            "properties": {
              "segments": {
                "type": "array",
                "maxItems": 4,
                "items": {
                  "type": "array",
                  "minItems": 1,
                  "maxItems": 89,
                  "items": {
                    "$ref": "#/components/schemas/AstrocartographyPoint"
                  }
                }
              }
            }
          }
        }
      },
      "GeoJsonPosition": {
        "type": "array",
        "minItems": 2,
        "maxItems": 2,
        "items": {
          "type": "number"
        },
        "description": "RFC 7946 coordinate pair in longitude, latitude order; longitude is [-180,180) and latitude is [-90,90]."
      },
      "AstrocartographyGeoJsonFeature": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "id",
          "properties",
          "geometry"
        ],
        "properties": {
          "type": {
            "const": "Feature"
          },
          "id": {
            "type": "string",
            "pattern": "^(sun|moon|mercury|venus|mars|jupiter|saturn|uranus|neptune|pluto):(mc|ic|ascendant|descendant)$"
          },
          "properties": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "body",
              "angle"
            ],
            "properties": {
              "body": {
                "$ref": "#/components/schemas/AstrocartographyBody"
              },
              "angle": {
                "type": "string",
                "enum": [
                  "mc",
                  "ic",
                  "ascendant",
                  "descendant"
                ]
              }
            }
          },
          "geometry": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "type",
                  "coordinates"
                ],
                "properties": {
                  "type": {
                    "const": "LineString"
                  },
                  "coordinates": {
                    "type": "array",
                    "minItems": 2,
                    "maxItems": 2,
                    "items": {
                      "$ref": "#/components/schemas/GeoJsonPosition"
                    }
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "type",
                  "coordinates"
                ],
                "properties": {
                  "type": {
                    "const": "MultiLineString"
                  },
                  "coordinates": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 4,
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 89,
                      "items": {
                        "$ref": "#/components/schemas/GeoJsonPosition"
                      }
                    }
                  }
                }
              }
            ]
          }
        }
      },
      "AstrocartographyGeoJson": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "features"
        ],
        "properties": {
          "type": {
            "const": "FeatureCollection"
          },
          "features": {
            "type": "array",
            "minItems": 4,
            "maxItems": 40,
            "items": {
              "$ref": "#/components/schemas/AstrocartographyGeoJsonFeature"
            }
          }
        },
        "description": "Present only when include_geojson is true. Features preserve request body order and repeat MC, IC, ascendant, descendant order for every body."
      },
      "AstrocartographyGeoJsonSequenceExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.geojson-seq"
          },
          "media_type": {
            "const": "application/geo+json-seq"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_geojson_seq is true. Base64 decodes to deterministic RFC 8142 GeoJSON Text Sequences: one RS-prefixed compact RFC 7946 Feature and LF terminator per record, in requested body then MC, IC, ascendant, descendant order. No artifact is persisted."
      },
      "AstrocartographyNdjsonExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.ndjson"
          },
          "media_type": {
            "const": "application/x-ndjson"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_ndjson is true. Base64 decodes to one compact RFC 7946 Feature per LF-terminated line, in requested body then MC, IC, ascendant, descendant order. No artifact is persisted."
      },
      "AstrocartographyTopoJsonExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.topojson"
          },
          "media_type": {
            "const": "application/json"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_topojson is true. Base64 decodes to deterministic unquantized TopoJSON with a named astrocartography GeometryCollection and exact coordinates. application/json is used because application/topo+json is not an IANA-registered media type. No artifact is persisted."
      },
      "AstrocartographyKmlExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.kml"
          },
          "media_type": {
            "const": "application/vnd.google-earth.kml+xml"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_kml is true. Base64 decodes to deterministic OGC KML 2.2 with four ordered placemarks per body and exact authoritative angular-line coordinates. No artifact is persisted."
      },
      "AstrocartographyGpxExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.gpx"
          },
          "media_type": {
            "const": "application/gpx+xml"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_gpx is true. Base64 decodes to deterministic GPX 1.1 with four ordered tracks per body, date-line segment preservation, and exact authoritative angular-line coordinates. No artifact is persisted."
      },
      "AstrocartographyCsvExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.csv"
          },
          "media_type": {
            "const": "text/csv; charset=utf-8"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_csv is true. Base64 decodes to deterministic UTF-8 RFC 4180 CSV with CRLF records, one fixed header, and one row per authoritative geometry point. Segment and point indexes are one-based. No artifact is persisted."
      },
      "AstrocartographyWktExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.wkt"
          },
          "media_type": {
            "const": "text/plain; charset=utf-8"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_wkt is true. Base64 decodes to one deterministic UTF-8 WKT GEOMETRYCOLLECTION in requested body then MC, IC, ascendant, descendant order. MC/IC are LINESTRING; rising/setting are MULTILINESTRING so date-line segments remain distinct. No artifact is persisted."
      },
      "AstrocartographyWkbExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.wkb"
          },
          "media_type": {
            "const": "application/octet-stream"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_wkb is true. Base64 decodes to one deterministic OGC WKB 1.x little-endian two-dimensional GEOMETRYCOLLECTION in requested body then MC, IC, ascendant, descendant order. MC/IC are LINESTRING; rising/setting are MULTILINESTRING so date-line segments remain distinct. It has no SRID, EWKB flags, Z/M coordinates, properties, or labels. No artifact is persisted."
      },
      "AstrocartographyGmlExport": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "filename",
          "media_type",
          "encoding",
          "bytes",
          "sha256",
          "base64"
        ],
        "properties": {
          "filename": {
            "const": "cosmicephemeris-astrocartography.gml"
          },
          "media_type": {
            "const": "application/gml+xml; version=3.2"
          },
          "encoding": {
            "const": "base64"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 262144
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "base64": {
            "type": "string",
            "minLength": 4,
            "maxLength": 349528,
            "pattern": "^[A-Za-z0-9+/]+={0,2}$"
          }
        },
        "description": "Present only when include_gml is true. Base64 decodes to deterministic UTF-8 GML 3.2 using one CRS84 MultiGeometry in requested body then MC, IC, ascendant, descendant order. MC/IC are LineString; rising/setting are MultiCurve so date-line segments remain distinct. IDs and coordinates derive only from authoritative output. No artifact is persisted."
      },
      "RelocationHouseSystem": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "name",
          "houses"
        ],
        "properties": {
          "name": {
            "type": "string",
            "enum": [
              "Equal",
              "Whole sign",
              "Placidus"
            ]
          },
          "houses": {
            "$ref": "#/components/schemas/Cusps"
          }
        }
      },
      "RelocationHouseSystems": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "equal": {
            "$ref": "#/components/schemas/RelocationHouseSystem"
          },
          "whole_sign": {
            "$ref": "#/components/schemas/RelocationHouseSystem"
          },
          "placidus": {
            "$ref": "#/components/schemas/RelocationHouseSystem"
          }
        }
      },
      "RelocationHouses": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "ascendant",
          "mc",
          "systems",
          "metadata"
        ],
        "properties": {
          "ascendant": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "mc": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "systems": {
            "$ref": "#/components/schemas/RelocationHouseSystems"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "zodiac",
              "ayanamsa"
            ],
            "properties": {
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              }
            }
          }
        }
      },
      "RelocationChart": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "status",
          "zodiac",
          "ayanamsa",
          "planets",
          "houses",
          "aspects",
          "nodes",
          "metadata"
        ],
        "properties": {
          "status": {
            "const": "ok"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "planets": {
            "$ref": "#/components/schemas/Planets"
          },
          "houses": {
            "$ref": "#/components/schemas/RelocationHouses"
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NatalAspect"
            }
          },
          "nodes": {
            "$ref": "#/components/schemas/Nodes"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "note"
            ],
            "properties": {
              "note": {
                "type": "string"
              }
            }
          }
        }
      },
      "RelocationChartResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "method",
          "input",
          "birth_utc",
          "natal_reference",
          "relocated_chart",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "relocation_chart"
          },
          "status": {
            "const": "beta"
          },
          "method": {
            "const": "same_utc_geocentric_positions_relocated_angles"
          },
          "input": {
            "type": "object"
          },
          "birth_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "natal_reference": {
            "type": "object"
          },
          "relocated_chart": {
            "$ref": "#/components/schemas/RelocationChart"
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "AstrocartographyResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "method",
          "input",
          "utc",
          "lines",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "astrocartography"
          },
          "status": {
            "const": "beta"
          },
          "method": {
            "const": "apparent_geocentric_equatorial_angular_lines"
          },
          "input": {
            "type": "object"
          },
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "lines": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/AstrocartographyLine"
            }
          },
          "metadata": {
            "type": "object"
          },
          "svg": {
            "type": "string",
            "minLength": 100,
            "maxLength": 196608,
            "description": "Present only when include_svg is true. Standalone coordinate-grid SVG or opt-in bundled Natural Earth coastline, without runtime external resources. Coastline metadata includes provider, version, source/artifact SHA-256, public-domain terms and attribution."
          },
          "theme": {
            "type": "string",
            "enum": [
              "light",
              "dark",
              "monochrome"
            ],
            "description": "Present only with svg."
          },
          "png": {
            "$ref": "#/components/schemas/PngExport",
            "description": "Present only when include_png is true. Astrocartography exports are 1200x800."
          },
          "geojson": {
            "$ref": "#/components/schemas/AstrocartographyGeoJson",
            "description": "Present only when include_geojson is true; capped at 262144 compact UTF-8 JSON bytes."
          },
          "geojson_seq": {
            "$ref": "#/components/schemas/AstrocartographyGeoJsonSequenceExport",
            "description": "Present only when include_geojson_seq is true; decoded RFC 8142 sequence is capped at 262144 bytes."
          },
          "ndjson": {
            "$ref": "#/components/schemas/AstrocartographyNdjsonExport",
            "description": "Present only when include_ndjson is true; decoded NDJSON is capped at 262144 UTF-8 bytes."
          },
          "topojson": {
            "$ref": "#/components/schemas/AstrocartographyTopoJsonExport",
            "description": "Present only when include_topojson is true; decoded TopoJSON is capped at 262144 UTF-8 bytes."
          },
          "kml": {
            "$ref": "#/components/schemas/AstrocartographyKmlExport",
            "description": "Present only when include_kml is true; decoded KML is capped at 262144 UTF-8 bytes."
          },
          "gpx": {
            "$ref": "#/components/schemas/AstrocartographyGpxExport",
            "description": "Present only when include_gpx is true; decoded GPX is capped at 262144 UTF-8 bytes."
          },
          "csv": {
            "$ref": "#/components/schemas/AstrocartographyCsvExport",
            "description": "Present only when include_csv is true; decoded CSV is capped at 262144 UTF-8 bytes."
          },
          "wkt": {
            "$ref": "#/components/schemas/AstrocartographyWktExport",
            "description": "Present only when include_wkt is true; decoded WKT is capped at 262144 UTF-8 bytes."
          },
          "wkb": {
            "$ref": "#/components/schemas/AstrocartographyWkbExport",
            "description": "Present only when include_wkb is true; decoded WKB is capped at 262144 bytes."
          },
          "gml": {
            "$ref": "#/components/schemas/AstrocartographyGmlExport",
            "description": "Present only when include_gml is true; decoded GML is capped at 262144 UTF-8 bytes."
          }
        }
      },
      "EclipseType": {
        "type": "string",
        "enum": [
          "solar",
          "lunar"
        ]
      },
      "EclipseKind": {
        "type": "string",
        "enum": [
          "partial",
          "total",
          "annular",
          "hybrid",
          "penumbral"
        ]
      },
      "EclipseGeometryRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "eclipse_types"
        ],
        "properties": {
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "eclipse_types": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/EclipseType"
            }
          },
          "observer": {
            "$ref": "#/components/schemas/GeographicLocation",
            "description": "Optional WGS84 latitude/longitude for a fixed sea-level, no-refraction topocentric snapshot at each rounded global-maximum instant. This is not a local-maximum or contact-time solution."
          }
        }
      },
      "EclipseObserverSnapshot": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "reference_instant",
          "eclipsed_body",
          "eclipsed_body_center_altitude_degrees",
          "eclipsed_body_center_azimuth_degrees",
          "eclipsed_body_angular_radius_degrees",
          "eclipsed_body_upper_limb_altitude_degrees",
          "above_geometric_horizon_at_snapshot",
          "solar_moon_center_altitude_degrees",
          "solar_moon_center_azimuth_degrees",
          "solar_moon_angular_radius_degrees",
          "solar_sun_moon_separation_degrees",
          "solar_disks_overlap_at_snapshot",
          "eclipse_geometry_visible_at_snapshot"
        ],
        "properties": {
          "reference_instant": {
            "const": "rounded_global_maximum"
          },
          "eclipsed_body": {
            "type": "string",
            "enum": [
              "sun",
              "moon"
            ]
          },
          "eclipsed_body_center_altitude_degrees": {
            "type": "number",
            "minimum": -90,
            "maximum": 90
          },
          "eclipsed_body_center_azimuth_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 360
          },
          "eclipsed_body_angular_radius_degrees": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1
          },
          "eclipsed_body_upper_limb_altitude_degrees": {
            "type": "number",
            "minimum": -90,
            "maximum": 91
          },
          "above_geometric_horizon_at_snapshot": {
            "type": "boolean"
          },
          "solar_moon_center_altitude_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              },
              {
                "type": "null"
              }
            ]
          },
          "solar_moon_center_azimuth_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 360
              },
              {
                "type": "null"
              }
            ]
          },
          "solar_moon_angular_radius_degrees": {
            "oneOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "solar_sun_moon_separation_degrees": {
            "oneOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 180
              },
              {
                "type": "null"
              }
            ]
          },
          "solar_disks_overlap_at_snapshot": {
            "oneOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "eclipse_geometry_visible_at_snapshot": {
            "type": "boolean",
            "description": "For solar events, geometric disk overlap and the Sun's upper limb above the geometric horizon at this snapshot; for lunar events, the Moon's upper limb above the geometric horizon. It is not a claim about visibility at any other instant, weather, terrain, refraction, or safe viewing."
          }
        }
      },
      "EclipseEvent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "eclipse_type",
          "kind",
          "maximum_utc",
          "geometry"
        ],
        "properties": {
          "eclipse_type": {
            "$ref": "#/components/schemas/EclipseType"
          },
          "kind": {
            "$ref": "#/components/schemas/EclipseKind"
          },
          "maximum_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "geometry": {
            "type": "object",
            "description": "Solar shadow-cone distances/radii or lunar angular shadow radii/magnitudes, according to eclipse_type."
          },
          "observer_snapshot": {
            "$ref": "#/components/schemas/EclipseObserverSnapshot",
            "description": "Present only when observer was requested."
          }
        }
      },
      "EclipseGeometryResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "events",
          "event_count",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "eclipse_geometry"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object"
          },
          "events": {
            "type": "array",
            "maxItems": 12,
            "items": {
              "$ref": "#/components/schemas/EclipseEvent"
            }
          },
          "event_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 12
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "MoonPhaseSector": {
        "type": "string",
        "enum": [
          "new_moon",
          "waxing_crescent",
          "first_quarter",
          "waxing_gibbous",
          "full_moon",
          "waning_gibbous",
          "last_quarter",
          "waning_crescent"
        ]
      },
      "ElectionalSignName": {
        "type": "string",
        "enum": [
          "Aries",
          "Taurus",
          "Gemini",
          "Cancer",
          "Leo",
          "Virgo",
          "Libra",
          "Scorpio",
          "Sagittarius",
          "Capricorn",
          "Aquarius",
          "Pisces"
        ]
      },
      "ElectionalAspectFilter": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "body_a",
          "body_b",
          "aspect",
          "max_orb_degrees"
        ],
        "properties": {
          "body_a": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "body_b": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "aspect": {
            "$ref": "#/components/schemas/PlanetaryEventAspect"
          },
          "max_orb_degrees": {
            "type": "number",
            "minimum": 0.5,
            "maximum": 10,
            "multipleOf": 0.1
          }
        }
      },
      "ElectionalFilters": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "properties": {
          "moon_signs": {
            "type": "array",
            "minItems": 1,
            "maxItems": 12,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/ElectionalSignName"
            }
          },
          "moon_phase_sectors": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/MoonPhaseSector"
            }
          },
          "mercury_motion": {
            "type": "string",
            "enum": [
              "direct",
              "retrograde"
            ]
          },
          "ascendant_signs": {
            "type": "array",
            "minItems": 1,
            "maxItems": 12,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/ElectionalSignName"
            }
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 4,
            "items": {
              "$ref": "#/components/schemas/ElectionalAspectFilter"
            }
          }
        }
      },
      "ElectionalSearchRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "start_utc",
          "end_utc",
          "location",
          "filters"
        ],
        "properties": {
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "location": {
            "$ref": "#/components/schemas/GeographicLocation"
          },
          "filters": {
            "$ref": "#/components/schemas/ElectionalFilters"
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        }
      },
      "ElectionalMatchingSample": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "utc",
          "facts"
        ],
        "properties": {
          "utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "facts": {
            "type": "object"
          }
        }
      },
      "ElectionalCandidateWindow": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "first_matching_sample_utc",
          "last_matching_sample_utc",
          "sample_bin_end_utc",
          "matching_sample_count"
        ],
        "properties": {
          "first_matching_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "last_matching_sample_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "sample_bin_end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "matching_sample_count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 168
          }
        }
      },
      "ElectionalSearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "status",
          "input",
          "matching_samples",
          "sampled_candidate_windows",
          "summary",
          "metadata"
        ],
        "properties": {
          "type": {
            "const": "electional_search"
          },
          "status": {
            "const": "beta"
          },
          "input": {
            "type": "object"
          },
          "matching_samples": {
            "type": "array",
            "maxItems": 168,
            "items": {
              "$ref": "#/components/schemas/ElectionalMatchingSample"
            }
          },
          "sampled_candidate_windows": {
            "type": "array",
            "maxItems": 84,
            "items": {
              "$ref": "#/components/schemas/ElectionalCandidateWindow"
            }
          },
          "summary": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "evaluated_sample_count",
              "matching_sample_count",
              "candidate_window_count"
            ],
            "properties": {
              "evaluated_sample_count": {
                "type": "integer",
                "minimum": 1,
                "maximum": 168
              },
              "matching_sample_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 168
              },
              "candidate_window_count": {
                "type": "integer",
                "minimum": 0,
                "maximum": 84
              }
            }
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "AdditionalChartPoint": {
        "type": "string",
        "enum": [
          "vertex",
          "antivertex",
          "equatorial_ascendant",
          "equatorial_descendant",
          "lot_of_fortune",
          "lot_of_spirit"
        ]
      },
      "AdditionalChartPointSelection": {
        "type": "array",
        "minItems": 1,
        "maxItems": 6,
        "uniqueItems": true,
        "items": {
          "$ref": "#/components/schemas/AdditionalChartPoint"
        }
      },
      "AdditionalChartPointPosition": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "label",
          "category",
          "longitude_degrees",
          "sign",
          "degree_in_sign"
        ],
        "properties": {
          "label": {
            "type": "string",
            "enum": [
              "Vertex",
              "Antivertex",
              "Equatorial Ascendant",
              "Equatorial Descendant",
              "Lot of Fortune",
              "Lot of Spirit"
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "angle",
              "lot"
            ]
          },
          "longitude_degrees": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "degree_in_sign": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 30
          }
        }
      },
      "AdditionalChartPointMap": {
        "type": "object",
        "minProperties": 1,
        "maxProperties": 6,
        "additionalProperties": false,
        "properties": {
          "vertex": {
            "$ref": "#/components/schemas/AdditionalChartPointPosition"
          },
          "antivertex": {
            "$ref": "#/components/schemas/AdditionalChartPointPosition"
          },
          "equatorial_ascendant": {
            "$ref": "#/components/schemas/AdditionalChartPointPosition"
          },
          "equatorial_descendant": {
            "$ref": "#/components/schemas/AdditionalChartPointPosition"
          },
          "lot_of_fortune": {
            "$ref": "#/components/schemas/AdditionalChartPointPosition"
          },
          "lot_of_spirit": {
            "$ref": "#/components/schemas/AdditionalChartPointPosition"
          }
        }
      },
      "AdditionalPointsResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "points",
          "metadata"
        ],
        "properties": {
          "points": {
            "$ref": "#/components/schemas/AdditionalChartPointMap"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "model",
              "status",
              "frame",
              "zodiac",
              "ayanamsa",
              "chart_sect",
              "sect_boundary",
              "vertex_definition",
              "equatorial_ascendant_definition",
              "lot_formula",
              "interpretations"
            ],
            "properties": {
              "model": {
                "const": "cosmicephemeris-natal-points-v1"
              },
              "status": {
                "const": "beta"
              },
              "frame": {
                "const": "apparent_ecliptic_of_date"
              },
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              },
              "chart_sect": {
                "type": "string",
                "enum": [
                  "day",
                  "night"
                ]
              },
              "sect_boundary": {
                "const": "apparent_topocentric_sun_center_strictly_above_geometric_horizon"
              },
              "vertex_definition": {
                "const": "western_intersection_of_prime_vertical_and_ecliptic"
              },
              "equatorial_ascendant_definition": {
                "const": "ascendant_at_geographic_latitude_zero"
              },
              "lot_formula": {
                "type": "string"
              },
              "interpretations": {
                "const": false
              }
            }
          }
        }
      },
      "AspectProfile": {
        "type": "string",
        "enum": [
          "major",
          "standard",
          "extended"
        ],
        "description": "Neutral preset name. major uses five Ptolemaic aspects; standard preserves the existing six-aspect natal-analysis default; extended admits all eleven documented geometric aspects."
      },
      "AspectConfiguration": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "source",
          "aspects"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "profile",
              "custom"
            ]
          },
          "profile": {
            "$ref": "#/components/schemas/AspectProfile"
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 11,
            "items": {
              "$ref": "#/components/schemas/NatalAnalysisAspectOption"
            }
          }
        }
      },
      "NatalAnalysisAspectName": {
        "type": "string",
        "enum": [
          "conjunction",
          "semisextile",
          "semisquare",
          "sextile",
          "quintile",
          "square",
          "trine",
          "sesquiquadrate",
          "biquintile",
          "quincunx",
          "opposition"
        ]
      },
      "NatalAnalysisAspectOption": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "aspect",
          "max_orb_degrees"
        ],
        "properties": {
          "aspect": {
            "$ref": "#/components/schemas/NatalAnalysisAspectName"
          },
          "max_orb_degrees": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 10,
            "multipleOf": 0.1
          }
        }
      },
      "NatalAnalysisRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birth"
        ],
        "properties": {
          "birth": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "points": {
            "type": "array",
            "minItems": 3,
            "maxItems": 10,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventBody"
            }
          },
          "additional_points": {
            "$ref": "#/components/schemas/AdditionalChartPointSelection"
          },
          "aspect_profile": {
            "$ref": "#/components/schemas/AspectProfile",
            "description": "Mutually exclusive with aspects. Omission preserves the existing standard default."
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 11,
            "items": {
              "$ref": "#/components/schemas/NatalAnalysisAspectOption"
            }
          },
          "include_midpoints": {
            "type": "boolean",
            "default": true
          },
          "include_patterns": {
            "type": "boolean",
            "default": true
          },
          "include_graha_drishti": {
            "type": "boolean",
            "default": false,
            "description": "Opt in to the named Parashari whole-sign full-aspect ruleset. true requires an explicit sidereal zodiac."
          },
          "include_shadbala_foundation": {
            "type": "boolean",
            "default": false,
            "description": "Opt in to an explicitly partial BPHS chapter 27 strength foundation. It does not return a Shadbala total and true requires an explicit sidereal zodiac."
          },
          "zodiac": {
            "$ref": "#/components/schemas/ZodiacInput"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaInput"
          }
        },
        "allOf": [
          {
            "if": {
              "type": "object",
              "properties": {
                "include_graha_drishti": {
                  "const": true
                }
              },
              "required": [
                "include_graha_drishti"
              ]
            },
            "then": {
              "type": "object",
              "properties": {
                "zodiac": {
                  "const": "sidereal"
                }
              },
              "required": [
                "zodiac"
              ]
            }
          },
          {
            "if": {
              "type": "object",
              "properties": {
                "include_shadbala_foundation": {
                  "const": true
                }
              },
              "required": [
                "include_shadbala_foundation"
              ]
            },
            "then": {
              "type": "object",
              "properties": {
                "zodiac": {
                  "const": "sidereal"
                }
              },
              "required": [
                "zodiac"
              ]
            }
          }
        ],
        "description": "aspect_profile and aspects are mutually exclusive. Omit both to preserve the existing standard calculation. Graha drishti is separately opt-in and never changes the existing geometric aspects."
      },
      "NatalAnalysisAspect": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "body_a",
          "body_b",
          "aspect",
          "exact_angle_degrees",
          "separation_degrees",
          "orb_degrees",
          "max_orb_degrees"
        ],
        "properties": {
          "body_a": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "body_b": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "aspect": {
            "$ref": "#/components/schemas/NatalAnalysisAspectName"
          },
          "exact_angle_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "separation_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 180
          },
          "orb_degrees": {
            "type": "number",
            "minimum": 0,
            "maximum": 10
          },
          "max_orb_degrees": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 10
          }
        }
      },
      "NatalMidpointAxis": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "body_a",
          "body_b",
          "axis_longitudes_degrees",
          "opposition_ambiguous"
        ],
        "properties": {
          "body_a": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "body_b": {
            "$ref": "#/components/schemas/PlanetaryEventBody"
          },
          "axis_longitudes_degrees": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "type": "number",
              "minimum": 0,
              "exclusiveMaximum": 360
            }
          },
          "opposition_ambiguous": {
            "type": "boolean"
          }
        }
      },
      "NatalAspectPattern": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "type",
          "bodies",
          "supporting_aspects"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "grand_trine",
              "t_square",
              "grand_cross",
              "yod"
            ]
          },
          "bodies": {
            "type": "array",
            "minItems": 3,
            "maxItems": 4,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/PlanetaryEventBody"
            }
          },
          "supporting_aspects": {
            "type": "array",
            "minItems": 3,
            "maxItems": 6,
            "items": {
              "type": "object"
            }
          }
        }
      },
      "GrahaDrishtiGraha": {
        "type": "string",
        "enum": [
          "sun",
          "moon",
          "mars",
          "mercury",
          "jupiter",
          "venus",
          "saturn"
        ]
      },
      "GrahaDrishtiAspect": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "relative_house",
          "target_sign_index",
          "target_sign",
          "aspected_grahas"
        ],
        "properties": {
          "relative_house": {
            "type": "integer",
            "enum": [
              3,
              4,
              5,
              7,
              8,
              9,
              10
            ]
          },
          "target_sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "target_sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "aspected_grahas": {
            "type": "array",
            "maxItems": 6,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/GrahaDrishtiGraha"
            }
          }
        }
      },
      "GrahaDrishtiRow": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "graha",
          "sidereal_longitude_degrees",
          "source_sign_index",
          "source_sign",
          "aspects"
        ],
        "properties": {
          "graha": {
            "$ref": "#/components/schemas/GrahaDrishtiGraha"
          },
          "sidereal_longitude_degrees": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "source_sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "source_sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "aspects": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "items": {
              "$ref": "#/components/schemas/GrahaDrishtiAspect"
            }
          }
        }
      },
      "GrahaDrishtiResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ruleset",
          "grahas",
          "metadata"
        ],
        "properties": {
          "ruleset": {
            "const": "parashari_whole_sign_full_aspects_v1"
          },
          "grahas": {
            "type": "array",
            "minItems": 7,
            "maxItems": 7,
            "items": {
              "$ref": "#/components/schemas/GrahaDrishtiRow"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "aspect_model",
              "counting",
              "boundaries",
              "nodes",
              "partial_aspect_strengths",
              "interpretations",
              "frame",
              "ayanamsa",
              "practitioner_review"
            ],
            "properties": {
              "aspect_model": {
                "const": "whole_sign_full_aspects"
              },
              "counting": {
                "const": "inclusive_from_source_sign"
              },
              "boundaries": {
                "const": "half_open_lower_inclusive"
              },
              "nodes": {
                "const": "excluded_as_sources_and_targets"
              },
              "partial_aspect_strengths": {
                "const": false
              },
              "interpretations": {
                "const": false
              },
              "frame": {
                "const": "apparent_geocentric_sidereal_retained_nutation"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaInput"
              },
              "practitioner_review": {
                "const": "not_completed"
              }
            }
          }
        }
      },
      "ShadbalaFoundationPlanet": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "sidereal_longitude_degrees",
          "source_sign_index",
          "source_sign",
          "whole_sign_house",
          "navamsa_sign_index",
          "navamsa_sign",
          "decan",
          "sthana_bala_foundation",
          "naisargika_bala",
          "included_component_sum"
        ],
        "properties": {
          "sidereal_longitude_degrees": {
            "type": "number",
            "minimum": 0,
            "exclusiveMaximum": 360
          },
          "source_sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "source_sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "whole_sign_house": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "navamsa_sign_index": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "navamsa_sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "decan": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3
          },
          "sthana_bala_foundation": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "uccha",
              "ojhayugma_rashi",
              "ojhayugma_navamsa",
              "kendradi",
              "drekkana",
              "subtotal"
            ],
            "properties": {
              "uccha": {
                "type": "number",
                "minimum": 0,
                "maximum": 60
              },
              "ojhayugma_rashi": {
                "type": "number",
                "enum": [
                  0,
                  15
                ]
              },
              "ojhayugma_navamsa": {
                "type": "number",
                "enum": [
                  0,
                  15
                ]
              },
              "kendradi": {
                "type": "number",
                "enum": [
                  15,
                  30,
                  60
                ]
              },
              "drekkana": {
                "type": "number",
                "enum": [
                  0,
                  15
                ]
              },
              "subtotal": {
                "type": "number",
                "minimum": 15,
                "maximum": 165
              }
            }
          },
          "naisargika_bala": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 60
          },
          "included_component_sum": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 225
          }
        }
      },
      "ShadbalaFoundationResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ruleset",
          "status",
          "unit",
          "ascendant",
          "planets",
          "metadata"
        ],
        "properties": {
          "ruleset": {
            "const": "parashara_bphs_chapter_27_strength_foundation_v1"
          },
          "status": {
            "const": "partial_beta"
          },
          "unit": {
            "const": "virupa"
          },
          "ascendant": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sidereal_longitude_degrees",
              "sign_index",
              "sign"
            ],
            "properties": {
              "sidereal_longitude_degrees": {
                "type": "number",
                "minimum": 0,
                "exclusiveMaximum": 360
              },
              "sign_index": {
                "type": "integer",
                "minimum": 1,
                "maximum": 12
              },
              "sign": {
                "$ref": "#/components/schemas/Sign"
              }
            }
          },
          "planets": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sun",
              "moon",
              "mars",
              "mercury",
              "jupiter",
              "venus",
              "saturn"
            ],
            "properties": {
              "sun": {
                "$ref": "#/components/schemas/ShadbalaFoundationPlanet"
              },
              "moon": {
                "$ref": "#/components/schemas/ShadbalaFoundationPlanet"
              },
              "mars": {
                "$ref": "#/components/schemas/ShadbalaFoundationPlanet"
              },
              "mercury": {
                "$ref": "#/components/schemas/ShadbalaFoundationPlanet"
              },
              "jupiter": {
                "$ref": "#/components/schemas/ShadbalaFoundationPlanet"
              },
              "venus": {
                "$ref": "#/components/schemas/ShadbalaFoundationPlanet"
              },
              "saturn": {
                "$ref": "#/components/schemas/ShadbalaFoundationPlanet"
              }
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "included_components",
              "excluded_components",
              "kendradi_house_model",
              "boundaries",
              "nodes",
              "interpretations",
              "predictions",
              "practitioner_review",
              "frame",
              "ayanamsa"
            ],
            "properties": {
              "included_components": {
                "type": "array",
                "minItems": 6,
                "maxItems": 6,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "enum": [
                    "uccha_bala",
                    "ojhayugma_rashi_bala",
                    "ojhayugma_navamsa_bala",
                    "whole_sign_kendradi_bala",
                    "drekkana_bala",
                    "naisargika_bala"
                  ]
                }
              },
              "excluded_components": {
                "type": "array",
                "minItems": 9,
                "maxItems": 9,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "enum": [
                    "saptavargaja_bala",
                    "dig_bala",
                    "kala_bala",
                    "ayana_bala",
                    "cheshta_bala",
                    "drik_bala",
                    "yuddha_bala",
                    "shadbala_total",
                    "required_strength_ratio"
                  ]
                }
              },
              "kendradi_house_model": {
                "const": "whole_sign_from_sidereal_ascendant_sign"
              },
              "boundaries": {
                "const": "half_open_lower_inclusive"
              },
              "nodes": {
                "const": "excluded"
              },
              "interpretations": {
                "const": false
              },
              "predictions": {
                "const": false
              },
              "practitioner_review": {
                "const": "not_completed"
              },
              "frame": {
                "const": "apparent_geocentric_sidereal_retained_nutation"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaInput"
              }
            }
          }
        }
      },
      "NatalAnalysisResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "type",
          "input",
          "points",
          "aspects",
          "midpoint_axes",
          "patterns",
          "metadata"
        ],
        "properties": {
          "status": {
            "const": "beta"
          },
          "type": {
            "const": "natal_analysis"
          },
          "input": {
            "type": "object"
          },
          "points": {
            "type": "object"
          },
          "aspects": {
            "type": "array",
            "maxItems": 495,
            "items": {
              "$ref": "#/components/schemas/NatalAnalysisAspect"
            }
          },
          "midpoint_axes": {
            "type": "array",
            "maxItems": 45,
            "items": {
              "$ref": "#/components/schemas/NatalMidpointAxis"
            }
          },
          "patterns": {
            "type": "array",
            "maxItems": 1200,
            "items": {
              "$ref": "#/components/schemas/NatalAspectPattern"
            }
          },
          "additional_points": {
            "$ref": "#/components/schemas/AdditionalPointsResult"
          },
          "graha_drishti": {
            "$ref": "#/components/schemas/GrahaDrishtiResult"
          },
          "shadbala_foundation": {
            "$ref": "#/components/schemas/ShadbalaFoundationResult"
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "PlanetaryHourRuler": {
        "type": "string",
        "enum": [
          "saturn",
          "jupiter",
          "mars",
          "sun",
          "venus",
          "mercury",
          "moon"
        ]
      },
      "PlanetaryHoursRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "date",
          "timezone",
          "lat",
          "lon"
        ],
        "properties": {
          "date": {
            "$ref": "#/components/schemas/Date"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone"
          },
          "lat": {
            "type": "number",
            "minimum": -88,
            "maximum": 88
          },
          "lon": {
            "$ref": "#/components/schemas/Longitude"
          }
        }
      },
      "PlanetaryHour": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "sequence",
          "period",
          "period_hour",
          "ruler",
          "start_utc",
          "end_utc",
          "start_local",
          "end_local",
          "duration_seconds"
        ],
        "properties": {
          "sequence": {
            "type": "integer",
            "minimum": 1,
            "maximum": 24
          },
          "period": {
            "type": "string",
            "enum": [
              "day",
              "night"
            ]
          },
          "period_hour": {
            "type": "integer",
            "minimum": 1,
            "maximum": 12
          },
          "ruler": {
            "$ref": "#/components/schemas/PlanetaryHourRuler"
          },
          "start_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "end_utc": {
            "$ref": "#/components/schemas/UtcTimestamp"
          },
          "start_local": {
            "$ref": "#/components/schemas/OffsetTimestamp"
          },
          "end_local": {
            "$ref": "#/components/schemas/OffsetTimestamp"
          },
          "duration_seconds": {
            "type": "number",
            "exclusiveMinimum": 0
          }
        }
      },
      "PlanetaryHoursResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "type",
          "input",
          "day_ruler",
          "solar_events",
          "hours",
          "metadata"
        ],
        "properties": {
          "status": {
            "const": "beta"
          },
          "type": {
            "const": "planetary_hours"
          },
          "input": {
            "type": "object"
          },
          "day_ruler": {
            "$ref": "#/components/schemas/PlanetaryHourRuler"
          },
          "solar_events": {
            "type": "object"
          },
          "hours": {
            "type": "array",
            "minItems": 24,
            "maxItems": 24,
            "items": {
              "$ref": "#/components/schemas/PlanetaryHour"
            }
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "DavisonRequest": {
        "type": "object",
        "properties": {
          "personA": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "personB": {
            "$ref": "#/components/schemas/BetaBirthInput"
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac",
            "default": "tropical"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/Ayanamsa",
            "default": "lahiri"
          },
          "house_system": {
            "type": "string",
            "enum": [
              "equal",
              "whole_sign"
            ],
            "default": "equal"
          }
        },
        "required": [
          "personA",
          "personB"
        ],
        "additionalProperties": false,
        "description": "Uncorrected Davison with a uniform-TT time mean and arithmetic latitude/longitude after +180 is canonicalized to -180. Not a shortest-arc/spherical midpoint or corrected-MC chart. No nodes, relocation, Placidus or interpretations. Unknown fields and ambiguous/nonexistent civil times reject. See DAVISON_CONVENTIONS.md."
      },
      "DavisonMetadata": {
        "type": "object",
        "properties": {
          "physical_chart": {
            "type": "boolean",
            "const": true
          },
          "ephemeris": {
            "type": "string",
            "const": "JPL-DE421"
          },
          "source_frame": {
            "type": "string",
            "const": "apparent-geocentric-ecliptic-of-midpoint-date"
          },
          "position_precision": {
            "type": "string",
            "const": "unrounded-binary64"
          },
          "time_policy": {
            "type": "string",
            "const": "uniform-TT-midpoint-no-MC-correction"
          },
          "timescale_data": {
            "type": "string",
            "const": "bundled-skyfield"
          },
          "location_policy": {
            "type": "string",
            "const": "arithmetic-latitude-and-canonical-longitude"
          },
          "longitude_policy": {
            "type": "string",
            "const": "canonical-minus180-inclusive-plus180-exclusive-not-shortest-arc"
          },
          "chart_time_policy": {
            "type": "string",
            "const": "midpoint-Time-object-without-civil-roundtrip"
          },
          "tt_jd_policy": {
            "type": "string",
            "const": "display-only-single-float-not-used-for-chart"
          },
          "utc_output": {
            "type": "string",
            "const": "leap-second-aware-ISO-8601"
          },
          "aspect_policy": {
            "type": "string",
            "const": "existing-natal-longitude-orbs"
          },
          "nodes": {
            "type": "string",
            "const": "not-included"
          },
          "interpretations": {
            "type": "boolean",
            "const": false
          },
          "practitioner_review": {
            "type": "string",
            "const": "not-completed"
          },
          "house_policy": {
            "type": "string",
            "enum": [
              "physical-equal-at-midpoint",
              "physical-whole-sign-at-midpoint"
            ]
          },
          "sidereal_policy": {
            "type": "string",
            "enum": [
              "midpoint-date-ayanamsa",
              "not-applicable"
            ]
          }
        },
        "required": [
          "physical_chart",
          "ephemeris",
          "source_frame",
          "position_precision",
          "time_policy",
          "timescale_data",
          "location_policy",
          "longitude_policy",
          "chart_time_policy",
          "tt_jd_policy",
          "utc_output",
          "aspect_policy",
          "nodes",
          "interpretations",
          "practitioner_review",
          "house_policy",
          "sidereal_policy"
        ],
        "additionalProperties": false
      },
      "DavisonResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "const": "davison"
          },
          "status": {
            "type": "string",
            "const": "beta"
          },
          "method": {
            "type": "string",
            "const": "uncorrected_tt_arithmetic"
          },
          "input": {
            "type": "object",
            "properties": {
              "personA": {
                "$ref": "#/components/schemas/BetaMomentResult"
              },
              "personB": {
                "$ref": "#/components/schemas/BetaMomentResult"
              },
              "zodiac": {
                "$ref": "#/components/schemas/Zodiac"
              },
              "ayanamsa": {
                "$ref": "#/components/schemas/AyanamsaResult"
              },
              "house_system": {
                "type": "string",
                "enum": [
                  "equal",
                  "whole_sign"
                ]
              }
            },
            "required": [
              "personA",
              "personB",
              "zodiac",
              "ayanamsa",
              "house_system"
            ],
            "additionalProperties": false
          },
          "source_utc": {
            "type": "object",
            "properties": {
              "personA": {
                "$ref": "#/components/schemas/UtcTimestamp"
              },
              "personB": {
                "$ref": "#/components/schemas/UtcTimestamp"
              }
            },
            "required": [
              "personA",
              "personB"
            ],
            "additionalProperties": false
          },
          "zodiac": {
            "$ref": "#/components/schemas/Zodiac"
          },
          "ayanamsa": {
            "$ref": "#/components/schemas/AyanamsaResult"
          },
          "planets": {
            "$ref": "#/components/schemas/WesternPlanets"
          },
          "angles": {
            "$ref": "#/components/schemas/WesternAngles"
          },
          "houses": {
            "$ref": "#/components/schemas/WesternHouses"
          },
          "aspects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NatalAspect"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/DavisonMetadata"
          },
          "midpoint": {
            "type": "object",
            "properties": {
              "utc": {
                "$ref": "#/components/schemas/ProgressedUtcTimestamp"
              },
              "tt_jd": {
                "type": "number",
                "description": "Display-only TT Julian date; never rounded back into chart computation."
              },
              "location": {
                "type": "object",
                "properties": {
                  "lat": {
                    "type": "number",
                    "exclusiveMinimum": -90,
                    "exclusiveMaximum": 90
                  },
                  "lon": {
                    "type": "number",
                    "minimum": -180,
                    "exclusiveMaximum": 180
                  }
                },
                "required": [
                  "lat",
                  "lon"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "utc",
              "tt_jd",
              "location"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "type",
          "status",
          "method",
          "input",
          "source_utc",
          "zodiac",
          "ayanamsa",
          "planets",
          "angles",
          "houses",
          "aspects",
          "metadata",
          "midpoint"
        ],
        "additionalProperties": false
      }
    },
    "responses": {
      "InvalidInput": {
        "description": "Invalid request, malformed JSON, out-of-range date/location, unknown model, invalid timezone or ambiguous/nonexistent clock-change time. Invalid attempts reaching quota reservation consume one unit.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Invalid request"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Missing, invalid, revoked API key or unavailable activated key owner. Dashboard cookies do not authenticate calculation routes.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Missing API key"
                }
              }
            }
          }
        }
      },
      "ProRequired": {
        "description": "Timeline requires effective Pro entitlement; admission is refused before quota reservation.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Pro plan required"
                }
              }
            }
          }
        }
      },
      "Forbidden": {
        "description": "Origin not allowed by production CORS policy. Server-to-server requests can omit Origin.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Origin not allowed"
                }
              }
            }
          }
        }
      },
      "NotFound": {
        "description": "Wrong/case-variant/noncanonical or trailing-slash route; public paths have no version prefix.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Not found"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        }
      },
      "TooLarge": {
        "description": "Request exceeds the body limit; gateway JSON is capped at 128 KiB. Edge failures may be HTML.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Request body too large"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        }
      },
      "Limited": {
        "description": "Monthly quota exhausted, per-user two-request concurrency reached, or nginx rate/connection admission refused. Retry-After: 2 is sent for application per-user concurrency only, not a promise that monthly quota resets in two seconds.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "API quota exceeded"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        },
        "headers": {
          "Retry-After": {
            "description": "Present for application concurrency rejection as 2 seconds. Other rejection sources may omit it or use a different delay. Do not automatically retry charged calculation attempts.",
            "schema": {
              "type": "string"
            }
          }
        }
      },
      "InternalFailure": {
        "description": "Bounded gateway/database/internal failure. An admitted attempt can still consume quota.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Server error"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        }
      },
      "EngineUnavailable": {
        "description": "Engine unavailable, unsuccessful internal server response or invalid upstream JSON. No engine internals are exposed.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Birth chart calculation failed"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        }
      },
      "Busy": {
        "description": "Four-request global calculation pool full (Retry-After: 2), maintenance or upstream service unavailable.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Astrology service is busy; retry shortly"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        },
        "headers": {
          "Retry-After": {
            "description": "Present for application concurrency rejection as 2 seconds. Other rejection sources may omit it or use a different delay. Do not automatically retry charged calculation attempts.",
            "schema": {
              "type": "string"
            }
          }
        }
      },
      "EngineTimeout": {
        "description": "Application engine timeout: 15 seconds normal, 60 seconds timeline. Timer includes response-body parsing; an admitted timeout consumes quota.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "examples": {
              "typical": {
                "value": {
                  "error": "Birth chart calculation failed"
                }
              }
            }
          },
          "text/html": {
            "schema": {
              "type": "string",
              "description": "A reverse proxy may return an HTML error page."
            }
          }
        }
      }
    }
  },
  "x-plan-limits": {
    "period": "UTC calendar month",
    "standard": {
      "free": 500,
      "basic": 10000,
      "pro": 100000
    },
    "nakshatra": {
      "pro": 1000
    }
  },
  "x-verification-boundary": "Seventy-eight deployed calculation contracts are described. The twenty-six R206-R231 electional reliability audits are bounded sampled evidence without hidden weights, rankings, interpretation, prediction, or recommendation. Ashtakavarga is an unreduced calculation-only beta with fresh practitioner review pending. House ingresses use fixed Equal/Whole Sign reference cusps and exclude Placidus/Porphyry. Natal pattern and planetary-hour classifications are bounded calculation-only betas. Fixed-star activation requires the immutable admitted six-row CC0 catalog; no minor-body contract or runtime is included."
}
