Précision, c’est ce dont l’utilisateur vérifie silencieusement votre exactitude sur Astrodienst. Si la carte actuelle se déchire sur une minute de quadrant, la plainte arrivera vite. Et le pire dans tout cela, c’est que la précision peut être facilement brisée sans le faire : un refactoring dans le code des éphémérides, et la moitié des points d’entrée s’en vont en secondes d’arc.
Voici comment nous empêchons cela de se produire.
Un noyau pour deux environnements
Section intitulée « Un noyau pour deux environnements »Les positions planétaires sont comptées par Swiss Ephemeris, compilé en WASM. Clé : c’est le même noyau dans le navigateur de notre application et sur le serveur API. Une seule base de code core/, tirée dans le backend via alias de cross-repo et intégrée dans le bundle sur le bâtiment. Aucune « version navigateur » et « version serveur » qui peuvent diverger - diverger de rien.
Pour les dates en dehors du domaine principal des éphémérides, il y a un fallback analytique (Moshier), un peu plus grossier, mais sans rupture aux limites. Honnêteté avouée : nous ne déclarons pas publiquement la version réelle de la roue, car la vraie version du noyau est inférieure à la dernière version upstream, et écrire un grand nombre aurait été une fausseté.
Les snapshots gelés
Section intitulée « Les snapshots gelés »Chaque point d’entrée de calcul a un ensemble de snapshots gelés - 873 JSON-fichiers au moment de ce bâtiment. Le runner lance l’entrée sur les cartes de référence et vérifie avec la fiches. Toute divergence de longitude planétaire supérieure à 5e-5° (0.18”) fait échouer le test.
Les cartes de référence sont choisies pour frapper aux bords, et non seulement au « centre agréable » :
- Monroe, Diana, Einstein, Bowie - les cartes historiques avec des données de naissance connues
- la latitude - où les systèmes de maison se déforment
- l’équatorial - où ils se comportent différemment
- la latitude sud - vérification de la symétrie
Les cas limites attrapent exactement les regressions qui ne sont pas visibles sur la carte de l’habitant conditionnel.
La triangulation contre les sources externes
Section intitulée « La triangulation contre les sources externes »Les snapshots attrapent les regressions par rapport à elles-mêmes. Pour vérifier l’exactitude absolue, chaque version est vérifiée avec des sources indépendantes :
| Contre quoi | Ce qui vérifie | Divergence |
|---|---|---|
| swetest CGI (Astrodienst) | longitudes planétaires, cusps de maison | 0.000" |
| Kerykeion (Python, pyswisseph) | implémentation indépendante de SwEph | < 0.2" |
| Prokerala (sidereal Lahiri) | positions sidérales | 8-17", différence systématique de la formule Ayanamsha, pas de roue |
| NASA 5-Millennium Eclipse Catalog | temps et type de l’éclipse | < 1 min |
La divergence avec Prokerala - ce n’est pas une erreur : c’est différentes implémentations de la formule Lahiri, et nous documentons cela explicitement, et non pas caché. Avec swetest, qui est l’étalon de l’industrie, la dérive est nulle.
Les lignes aérométriques sont vérifiées géométriquement - la précision est meilleure que 1,5 km sur l’équateur.
Ce qui est lancé sur chaque PR
Section intitulée « Ce qui est lancé sur chaque PR »La précision - c’est le CI-gate, et non la vérification unique :
api-accuracy.yml- sur chaque PR dans le code backend, lance tout le jeu de snapshots + triangulation. Le test rouge bloque la fusion.check-eclipse-accuracy.yml- une fois par an vérifie les éclipses avec le catalogue NASA ; les divergences supérieures au seuil engendrent automatiquement un problème.check-sweph-updates.yml- chaque semaine surveille la mise à jour de Swiss Ephemeris et du paquet WASM ; une nouvelle version - problème sur la revue, sans auto-merge (mise à jour de la roue des éphémérides - trop sensible pour l’auto-mise à jour).
Ce que cela donne à l’intégrateur
Section intitulée « Ce que cela donne à l’intégrateur »Garantie simple : les positions planétaires dans les limites de < 0.1 secondes d’arc de l’étalon Swiss Ephemeris, et cette limite est protégée automatiquement, et non par une promesse dans README. Si jamais une regression apparaît, elle tombera dans notre CI, et non dans la plainte de votre utilisateur.
La version publique de ces chiffres, avec la table des divergences sur des cartes spécifiques, vit sur la page Précision.
Le même Swiss Ephemeris que Solar Fire - en 4 lignes de code.
Clé gratuite sans carte. 5 000 appels par mois avant le premier paiement.