Genauigkeit ist das, was Nutzer stillschweigend prüfen, indem sie dich mit Astrodienst vergleichen. Weicht ein Geburtshoroskop um eine Bogenminute ab, kommt die Beschwerde schnell. Und das Schlimmste daran: Genauigkeit lässt sich leicht unbemerkt kaputtmachen. Ein Refactoring im Ephemeriden-Code, und die Hälfte der Endpoints verrutscht still um Bogensekunden.
So verhindern wir das.
Ein Kern für zwei Umgebungen
Abschnitt betitelt „Ein Kern für zwei Umgebungen“Die Planetenpositionen berechnet Swiss Ephemeris. Der entscheidende Punkt: Unsere App und die API teilen sich einen Rechenkern, eine Codebasis. Es gibt keine zwei Implementierungen, die auseinanderlaufen könnten, also läuft nichts auseinander.
Für Daten außerhalb des Hauptbereichs der Ephemeriden gibt es einen analytischen Fallback (Moshier), etwas gröber, aber ohne Sprünge an den Grenzen. Bewusste Ehrlichkeit: Eine konkrete Engine-Version nennen wir öffentlich nicht, weil die tatsächliche Version des Kerns älter ist als der neueste Upstream und eine große Zahl hinzuschreiben eine Lüge wäre.
Eingefrorene Snapshots
Abschnitt betitelt „Eingefrorene Snapshots“Jeder Rechen-Endpoint hat einen Satz eingefrorener Snapshots: 873 JSON-Fixtures zum Zeitpunkt dieses Builds. Der Runner lässt den Endpoint über Referenzhoroskope laufen und vergleicht Byte für Byte (innerhalb einer Toleranz) mit der Fixture. Jede Abweichung der Planetenlänge über 5e-5° (0.18″) lässt den Test fehlschlagen.
Die Referenzhoroskope sind so gewählt, dass sie die Ränder treffen und nicht nur die “bequeme” Mitte:
- Monroe, Diana, Einstein, Bowie: historische Horoskope mit bekannten Geburtsdaten
- polare Breite: wo Häusersysteme entarten
- äquatoriale: wo sie sich anders verhalten
- südliche Hemisphäre: Prüfung der Spiegelung
Gerade die Grenzfälle fangen die Regressionen, die im Horoskop eines durchschnittlichen Kyjiwers nicht auffallen.
Triangulation gegen externe Quellen
Abschnitt betitelt „Triangulation gegen externe Quellen“Snapshots fangen Regressionen relativ zu sich selbst. Um die absolute Wahrheit zu prüfen, wird jedes Release mit unabhängigen Quellen abgeglichen:
| Wogegen | Was geprüft wird | Abweichung |
|---|---|---|
| swetest CGI (Astrodienst) | Planetenlängen, Häuserspitzen | 0.000″ |
| Kerykeion (Python, pyswisseph) | unabhängige Implementierung von SwEph | < 0.2″ |
| Prokerala (sidereal Lahiri) | siderische Positionen | 8-17″, systematischer Unterschied in der Ayanamsa-Formel, nicht in der Engine |
| NASA 5-Millennium Eclipse Catalog | Zeitpunkt und Typ von Finsternissen | < 1 Min. |
Die Abweichung zu Prokerala ist kein Fehler: Es sind unterschiedliche Implementierungen der Lahiri-Formel, und wir dokumentieren das ausdrücklich, statt es zu verstecken. Gegenüber swetest, dem Branchenstandard, ist die Drift null.
Astrokartografie-Linien werden separat geometrisch geprüft: Die Genauigkeit am Äquator liegt unter 1.5 km.
Was bei jedem PR läuft
Abschnitt betitelt „Was bei jedem PR läuft“Genauigkeit ist ein CI-Gate, keine einmalige Prüfung:
api-accuracy.yml: führt bei jedem PR auf den Backend-Code den gesamten Snapshot-Satz + die Triangulation aus. Ein roter Test blockiert den Merge.check-eclipse-accuracy.yml: gleicht einmal im Jahr die Finsternisse mit dem NASA-Katalog ab; eine Abweichung über dem Schwellenwert legt automatisch ein Issue an.check-sweph-updates.yml: beobachtet wöchentlich den Upstream von Swiss Ephemeris; eine neue Version erzeugt ein Issue zum Review, ohne Auto-Merge (ein Update der Ephemeriden-Engine ist zu heikel für automatische Updates).
Was das dem Integrator bringt
Abschnitt betitelt „Was das dem Integrator bringt“Die Garantie ist einfach: Planetenpositionen innerhalb von < 0.1 Bogensekunden gegenüber der Referenz Swiss Ephemeris, und diese Grenze ist durch Automatisierung abgesichert, nicht durch ein Versprechen im README. Taucht irgendwann eine Regression auf, schlägt sie in unserer CI fehl und nicht in der Beschwerde deines Nutzers.
Die öffentliche Version dieser Zahlen, mit einer Abweichungstabelle für konkrete Horoskope, steht auf der Seite Genauigkeit.
Derselbe Swiss Ephemeris wie in Solar Fire - in 4 Zeilen Code.
Kostenloser Schlüssel ohne Kreditkarte. 5.000 Aufrufe pro Monat vor der ersten Zahlung.