# yksa-orbital Propagation for YKSA Django services. See [yksa_orbital/README.md](yksa_orbital/README.md) for the API, the backends and the sidecar contract — that document moved here with the code and is the reference. ``` yksa-orbital @ git+https://git.intra.yksa.space/web/yksa-orbital.git@v0.1.0 ``` ```python INSTALLED_APPS = [..., "yksa_orbital", ...] ORBITAL_PROPAGATOR_BACKEND = "sgp4" # or "orekit" OREKIT_SERVICE_URL = "http://orekit:5000" ``` ## Status Extracted from the `tle` repo, where it was already the right shape: a backend registry, a wire format and a config reader, with no Django models. It is used by `odms` today. `ops` and `tdas` still have their own propagation code (`ops/yksa_ops/orbits/propagate.py`, `tdas/yksa_tdas/location/propagate.py`) and should move onto this package next. Two things are missing before they can: - **`ops`** needs a `passes(station, satellite, window)` entry point. Its pass prediction currently uses Skyfield, which this package does not wrap. - **`tdas`** needs the sub-satellite point and ECI/ECEF state vectors it computes itself. Those the `sgp4` backend already provides, so that port is the smaller of the two. Until both are done the estate still describes the same satellite through three code paths, which is the reason this package exists. The Orekit sidecar itself stays in `tle/services/orekit` — it is a container, not a Python package, and moving it is a deployment change rather than an extraction.