Status

What is measured.

Numbers, not labels. Every figure on this page traces to the source tree or a package registry.

Version, residuals, test count, code posture, distribution evidence. Clone the repo and run cargo test --workspace to reproduce any figure below.

Chapter I, build + version

Engine version and CI.

Release

Current version.

Engine versionv9.3.0
Released2026-09-15
LicenseBUSL-1.1 → Apache 2.0 (per-version, 4y from 2026-09-15, so 2030-09-15)
ToolchainRust Edition 2024 · MSRV 1.89
Site buildf9036cddef · built 2026-09-02

Two different facts. The engine version is the Vedaksha release these pages describe; the site build is the deployment serving them, and they move independently. Both are machine-readable at /version.

CI

Build status.

CI workflowPassing on main (d260bf8, 2026-09-15)

CI status is fetched live from the GitHub Actions API and refreshes hourly (ISR). If the API is unreachable this page says so rather than showing a remembered result.

Chapter II, distribution + accuracy

Where it ships and what it measures.

Distribution

Where it ships.

crates.iovedaksha9.3.0First published 2026-04-24
PyPIvedaksha9.3.0Rust engine via WebAssembly (wasmtime) · py3-none-any · Python ≥ 3.9
GitHub Container Registryghcr.io/arthiqlabs/vedaksha-mcp9.3.0MCP server, stdio + HTTP (bearer-token auth) · linux/amd64 + linux/arm64
WASMvedaksha-wasm9.3.0Browser / edge / Cloudflare Workers

Accuracy

Measured against external references.

Figures trace to the engine's JPL validation tests, a committed 24,350-row Horizons DE441 oracle fixture in tests/oracle_jpl/ plus a live-fetched Horizons grid for the lunar theory. Each residual is recomputable from a fresh checkout.

Oracle reference rows24,350 (10 bodies × 2,435 dates, 1900–2100) · JPL Horizons DE441 · tests/oracle_jpl/reference_positions.json
SpkReader, all bodies, DE440s kernel (vs JPL Horizons DE441, 1900–2025)0.103″ avg · 1.187″ max (Uranus, 1948) · 99.993% sub-arcsecond (15,349 of 15,350)
SpkReader, all bodies (vs JPL Horizons DE441, full 1900–2100)0.878″ avg · 44.912″ max (Moon, 2099), post-2025 growth is ΔT prediction divergence, not ephemeris error
Moon longitude, ELP/MPP02 (vs live-fetched JPL Horizons DE441)0.015″ at J2000 (tolerance 0.06″) · 0.020–0.053″ over 1500–2500 CE · 85.5″ in deep antiquity (−3000 CE)
Moon longitude, AnalyticalProvider (vs JPL Horizons DE441, 1900–2025)0.169″ avg · 0.607″ max
All bodies, AnalyticalProvider (vs JPL Horizons DE441, 1900–2025)0.239″ avg overall · worst case Neptune at 0.503″ avg / 1.896″ max (2007), which is the theory, not the observer
Sun longitude, AnalyticalProvider (vs JPL Horizons DE441, 1900–2025)0.180″ avg · 0.324″ max
Ayanamsha, anchor reproduction (sidereal.rs, all 11 systems)each reproduces its own primary's anchor to 1e-9°, and its own zero year where the primary documents one
Ayanamsha, engine vs an independent Python derivation (ayanamsha_fixture.rs)agreement inside a 1e-9° tolerance across every system. Establishes that no constant was typed into one side, not full independence: both read the same recorded primaries
Ayanamsha, comparison against other implementationsnone, deliberately. Agreement with another engine is not evidence of derivation, so it is not tested for and not claimed

Code posture

What the source enforces.

Workspace crates7, 8 library crates plus the vedaksha-py-engine wasm shim behind the PyPI package
unsafe keyword usage0 in all 8 library crates: the vedaksha-py-engine wasm shim alone uses unsafe, for its C-ABI exports at the wasm boundary
Crates with explicit #![deny(unsafe_code)]6 of 9: vedaksha-wasm, the vedaksha umbrella crate, and the vedaksha-py-engine wasm shim are the exceptions
EditionRust Edition 2024 across the workspace
GitHub Actions workflowsci · full-validation · audit · benchmarks · release

Verify

Reproduce every number.

Clone, build, run the suite. Every figure above is recomputable on your machine.

git clone https://github.com/arthiqlabs/vedaksha.git
cd vedaksha

# Unit test suite (runs on every CI push)
cargo test --workspace

# Full suite incl. the 24,350-row Horizons DE441 oracle
# comparison and live-fetch validation (requires network)
cargo test --workspace -- --include-ignored

# Regenerate the oracle fixture from JPL Horizons yourself
python3 scripts/generate_horizons_oracle.py

# Lint gates that CI enforces
cargo fmt --all -- --check
cargo clippy --workspace -- -D warnings

# unsafe-code count (expect: 0)
grep -rE '\bunsafe\b' --include='*.rs' crates/ \
  | grep -vE 'deny.unsafe_code|//.+unsafe' \
  | wc -l

Source: github.com/arthiqlabs/vedaksha