Technical validation
Calculation Validation
GetBirthChart validates deterministic calculation behavior. It does not claim that astrology itself has been scientifically validated.
Editorial standards overseen by Luis PhamMethodology
What is being validated
The validation target is the software behavior that turns supported birth inputs into structured chart output: time normalization, coordinates, planetary positions, houses, angles, aspects, relationship geometry and schema stability.
A passing calculation test means that the implementation produced the expected deterministic output or explicit error for a defined case. It is not evidence that an astrological interpretation or prediction is scientifically true.
Test strategy
The engine repository contains unit, integration, regression, boundary and differential test tracks. The public golden-test document identifies the small release-facing set copied from trusted fixtures; the complete repository test suite contains additional implementation coverage.
- Golden fixtures for known-time natal and relationship results.
- Contract tests for unknown-time omission and explicit warnings.
- Boundary tests for dates, timezones, zodiac wrapping, house cusps and aspect orbs.
- Differential geometry/parity tests where an independent reference track is available.
- Schema and API tests for stable structured output and error envelopes.
Public golden and regression cases
The public golden-test documentation (opens in a new tab) lists known-time natal values, relationship output, timezone normalization, unknown-time behavior and hostile boundary coverage. The release evidence for the current local tag also covers house systems, node conventions, standard/extended/custom aspect profiles, concurrency/isolation and OpenAPI determinism.
- Known-time Hanoi natal chart: Sun, Moon, Chiron, Ascendant, Midheaven, first house cusp, Big Three labels and major-aspect count.
- Relationship regression: composite positions, derived angles, overlays and aspect counts.
- DST gaps and overlaps, historical timezone rules, date-line cases and leap days.
- Zodiac wrapping, house cusps, high-latitude house limits and retrograde stations.
1.13.0 release evidence
The accepted core release record is tag v1.13.0 at commit 03ab052. The default Hanoi fixture (1992-11-03 14:35, Asia/Ho_Chi_Minh, Placidus) records Sun longitude 221.14154838535987 and 14 standard aspects. These values are a reproducible fixture, not a universal accuracy claim.
The release evidence covers all three public house systems, True/Mean Node behavior, Standard/Extended/custom aspect profiles, unknown-time stable/uncertain/incomplete assessments, synastry node consistency, concurrent request isolation, JPL/DE440S comparison tracks where configured, clean package/API smoke paths, and deterministic OpenAPI generation. The core health/readiness path reports the actual Swiss provider version and provisioned data files.
Web-05 measured one live natal request for both known-time and normal unknown-time flows; unknown-time assessment was present in 9/9 samples and the unknown-time p95 was 145 ms against a 15 s timeout. These measurements belong to the local release audit and do not imply the engine or web deployment is public.
| Evidence | Meaning |
|---|---|
| Known-time golden | Default Hanoi Sun longitude and 14 standard aspects remain pinned |
| House systems | Placidus, Whole Sign and Equal are tested; polar Placidus fails closed |
| Unknown time | Engine assessment is authoritative; incomplete/capped results do not promote facts |
| Identity | Python helper uses v2:<64 lowercase hex>; HTTP natal omits calculationHash |
| OpenAPI | Generated contract is pinned to the local v1.13.0 tag and should regenerate with zero diff |
Numerical precision and tolerances
Tolerances are track-specific rather than one universal accuracy number. The public house-reference methodology reports a measured agreement of about 1.9e-06 degrees and sets that geometry gate at 1e-05 degrees. That value applies to the documented geometry track; it should not be quoted as a tolerance for every engine field.
Other golden cases pin expected values or structural behavior according to the test that owns them. A change to a frozen value requires a deliberate engine or methodology change, not a silent fixture refresh.
Reproducibility
The reproducibility identity is the current v1.13.0 contract, package/runtime 1.13.0, engine 1.13.0, natal schema 1.9.0, Swiss Ephemeris 2.10.03, the declared calculation profile and the configured ephemeris files. The package source is public on GitHub (opens in a new tab); the Zenodo concept record (opens in a new tab) remains the stable project citation, while the published version 1.13.0 record (opens in a new tab) is the release-specific archive.
A developer can install the package, provision the required `.se1` files, set `GBC_SWISS_EPHE_PATH`, and run the public golden-test command in the repository documentation. The web app also vendors the API contract for the pinned engine release.
Known limitations
Unknown birth time removes Ascendant, Midheaven, house cusps and house assignments. The engine's `unknownTimeAssessment` is authoritative for the allowed local-day interval; stable signs may be shown without exact degree, while uncertain or incomplete facts are withheld or labeled and capped assessments fail closed.
Place search and geocoding are website concerns; the calculation package accepts coordinates and an IANA timezone. Historical results depend on the timezone data available to the runtime. Swiss Ephemeris files are provisioned separately and are not bundled in the PyPI distribution.