Precisazione - è quello per cui il tuo utente ti verifica in silenzio su Astrodienst. Se la carta attuale si è dispersa in una minuta di angolo, la segnalazione arriverà presto. E il peggio è che la precisione può essere facilmente rotta in modo trascurabile: un refactoring nel codice ephemeride, e metà dei punti di fine sono andati a secondi di dritta.
Ecco come evitiamo questo.
Un solo nucleo per due ambienti
Sezione intitolata “Un solo nucleo per due ambienti”Le posizioni planetarie sono calcolate Swiss Ephemeris, compilato in WASM. Chiave: è lo stesso nucleo sia nel browser del nostro applicativo che sul server API. Una sola base di codice core/, integrata nel backend attraverso un alias di repo cross e incorporata nel bundle di build. Nessuna “implementazione del browser” e “server” che possono divergere - divergono in nulla.
Per le date al di fuori del diapason principale ephemeride sono utilizzati un fallback analitico (Moshier), un po’ più ruvido, ma senza interruzioni ai limiti. Sincerità consapevole: non dichiariamo pubblicamente la versione reale del raggio, perché la versione reale del nucleo è inferiore alla più recente upstream, e scrivere un numero pubblico sarebbe una menzogna.
Sfere congelate
Sezione intitolata “Sfere congelate”Ogni punto di fine calcolato ha un set di sfer congelate - 873 JSON fixtures al momento di questo build. Il rilascio esegue il punto di fine sulle carte di riferimento e verifico con la fixture. Qualsiasi deviazione della longitudine planetaria superiore a 5e-5° (0,18”) fallisce il test.
Le carte di riferimento sono selezionate per colpire i bordi, non solo il “centro comodo”:
- Monroe, Diana, Einstein, Bowie - carte storiche con dati di nascita noti
- polar latitudine - dove le case si generano
- equatoriale - dove si comportano diversamente
- southern hemisphere - verifica la simmetria
I casi limite catturano proprio le regressioni che non sono visibili sulla mappa del condizionale.
Triangolazione contro fonti esterne
Sezione intitolata “Triangolazione contro fonti esterne”Le sfere congelate catturano le regressioni rispetto a se stesse. Per verificare la verità assoluta, ogni rilascio è verificato con fonti indipendenti:
| Contro di che | Che verifica | Deviazione |
|---|---|---|
| swetest CGI (Astrodienst) | longitudine planetaria, cuspidi case | 0.000" |
| Kerykeion (Python, pyswisseph) | implementazione indipendente SwEph | < 0.2" |
| Prokerala (sidereal Lahiri) | posizioni siddereal | `8-17”, differenza di sistema di formula Ayanamsha, non raggio |
La deviazione da Prokerala - non è un errore: è diverse implementazioni della formula Lahiri, e lo documentiamo apertamente, non nascosto. Con swetest, che è l’etalon dell’industria, il drift è zero.
Le linee astronomiche sono verificate geometricamente separatamente - la precisione è migliore di 1,5 km sull’equatore.
Cosa corre su ogni PR
Sezione intitolata “Cosa corre su ogni PR”La precisione è un CI-gate, non una verifica singola:
api-accuracy.yml- su ogni PR nel codice backend esegue l’intero set di sfere congelate + triangolazione. Il test rosso blocca il merge.check-eclipse-accuracy.yml- una volta all’anno verifica gli eclissi con il catalogo NASA; la deviazione superiore al limite fallisce automaticamente l’issue.check-sweph-updates.yml- ogni mese controlla l’aggiornamento di Swiss Ephemeris e il pacchetto WASM; una nuova versione - issue per revisione, senza auto-merge (aggiornamento del raggio ephemeride - troppo sensibile per l’auto-upgrade).
Cosa offre l’integratore
Sezione intitolata “Cosa offre l’integratore”Garanzia semplice: le posizioni planetarie sono all’interno di < 0.1 secondi di angolo da Swiss Ephemeris di riferimento, e questa soglia è protetta automaticamente, non da una promessa nel README. Se mai si verificasse una regressione, cadrebbe nel nostro CI, non nella segnalazione del tuo utente.
La versione pubblica di questi numeri, con la tabella delle deviazioni per carte specifiche, vive sulla pagina Precisione.
Lo stesso Swiss Ephemeris di Solar Fire - in 4 righe di codice.
Chiave API gratuita senza carta. 5 000 chiamate al mese fino al primo pagamento.