← Blog

Release · Upgrade notes

Vedaksha v7.2.0: what changes for you

One tool returns different numbers. One body becomes reachable that was not. Two arguments that were accepted and ignored are now checked, so a call that used to pass can now fail. Everything else is additive.

August 23, 2026·5 min read·ArthIQ Labs

Who needs to do something

If you call compute_shadbala, your numbers change and stored results will not match a recomputation. If you match on the Body enum in Rust, you need three new arms. If you call emit_graph, check that your observer and instant are real.

Planetary positions are unchanged to within 1e-8 arcsec. Charts, panchanga, dashas, vargas and drishti are untouched.

1. Sthana Bala was one-fifth of itself

BPHS Ch.27 builds Sthana Bala, the positional strength, out of five sub-components. Vedaksha computed one of them, Uchcha Bala, and reported it under the name of the whole. The tool description said “full six-fold Shadbala”. The response carried sthana_bala and uccha_bala as separate fields holding the same number, in every response this engine has ever served.

It also required a sign argument from every caller and then discarded it. Two planets at the same degree, one in its own sign and one debilitated by sign, scored identically.

Sub-componentVirupasIn 7.2.0Rule
Uchcha Bala0-60YesDistance from the exaltation degree
Ojhayugma Bala0-30YesOdd/even rasi and navamsa
Kendradi Bala15-60YesKendra 60, panapara 30, apoklima 15
Drekkana Bala0 or 15YesMale, neuter and female grahas by third of sign
Saptavargaja Bala-NoDignity across seven vargas - see below

All four are now reported as separate fields alongside the composite, so you can see what a number is made of instead of taking it whole.

2. Saptavargaja Bala is still missing, and says so

The fifth sub-component is the planet's dignity across seven divisional charts, graded by the five-fold friendship. It needs a Moolatrikona degree table and a panchadha maitri derivation that we do not hold from a primary source, and this project does not take values from a modern edition's worked table.

So it is absent, and the absence is now stated in the module docs, the README and the tool description rather than contradicted by them. A Sthana Bala from Vedaksha is the true value less its Saptavargaja term, bounded by 165 virupas. Kala Bala is partial on the same grounds: Nathonnatha and Paksha only.

If you need the full classical figure, this tool does not give it to you yet. That is a better answer than a number that looks complete.

3. Ketu is a body now

There was no south-node variant of Body, so Ketu never went through the position pipeline. The only Ketu on offer was nodes::south_node_*, which sits a layer below and carries no nutation. Pairing that with a Body-routed Rahu left the two up to 17.2″ off being opposite.

Body::MeanSouthNode, Body::TrueSouthNode and Body::TrueSouthNodeOsculating now resolve exactly as their north counterparts do. Rahu and Ketu share one reference frame and one nutation term, and are exactly opposite.

This adds variants to a public enum, so an exhaustive match on Body needs three new arms or a wildcard. That is the one thing in this release that can stop a Rust build.

4. Two calls that used to pass now fail

Both were arguments the engine demanded and then ignored, which meant a caller could contradict itself and never find out.

compute_shadbala

A sign that disagrees with longitude. Nothing read sign before, so a caller could contradict itself and never learn. Both are consumed now, so send floor(longitude / 30) or stop sending it.

emit_graph

A latitude or longitude outside the globe, and a chart_json with no finite julian_day. Both used to pass straight into the emitted Chart node - latitude 9999 stayed 9999, and a missing instant became "julian_day": null.

5. Which provider for the outer planets

An external parity harness measured Jupiter and Saturn carrying more error than the inner planets and asked why. They were right, on one of the two providers, and the README now publishes the whole table rather than the single mean that hid it. Analytical provider, measured-delta-T era, mean arcsec against the committed JPL oracle:

Sun0.180Jupiter0.239″
Moon0.169Saturn0.251″
Mercury0.180Uranus0.267″
Venus0.180Neptune0.503″
Mars0.178

The inner bodies sit in a tight band near 0.18″ and the error grows outward. That is the truncation: the VSOP87A series is cut at a uniform absolute amplitude of 1e-7 AU for every planet, and a uniform absolute cut leaves a residual that scales with the orbit. Saturn is not cut harder than Mercury; it keeps the most terms of any planet.

If you need the outer planets below 0.1″, use SpkReader, where they are the best bodies rather than the worst: Jupiter 0.066″ and Saturn 0.064″ against the same oracle. The analytical provider exists to run in WASM and at the edge with no data files, and its coefficient size is what buys that.

6. Deprecations, and what still compiles

A vedaksha-vedic = "7" dependent keeps building. sthana_bala(planet, sign, longitude) keeps its signature and its old behaviour, Uchcha Bala with the sign discarded, and is deprecated in favour of uccha_bala. The composite is sthana_bala_full(planet, longitude, bhava). compute_shadbala(positions, lagna_sign) is kept and deprecated; it still totals only the three components reachable from a bare position, and the struct no longer claims that is six.

On the JSON surfaces the Shadbala response gains four fields and loses none. compute_gochara stops emitting ashtakavarga_score: null on every entry: it was structurally unfillable, since the bindu tables come from the natal chart the tool is never given.

Getting it

cargo add vedaksha, pip install vedaksha, npm install vedaksha-wasm, or ghcr.io/arthiqlabs/vedaksha-mcp:v7.2.0. Current release is v7.2.0, published 2026-08-23, under BUSL-1.1 converting to Apache 2.0 on 2030-08-23.

Full validation at this release: 1,093 tests and a 24,350-row JPL Horizons oracle comparison. The status page carries the accuracy figures and the distribution channels.