Gochara is the most-used Vedic technique for reading day-to-day transits. For each of the seven non-nodal grahas, the classical source assigns favourable houses from a natal reference point — usually the natal Moon's sign — and pairs each favourable house with a corresponding vedha (obstruction) house. When a transiting graha sits in a favourable house but another graha simultaneously sits in the paired vedha house, the favourable transit is obstructed.
That is the geometry. The hard design question is: how much of the surrounding interpretation should live inside Vedākṣha?
The decision: ship the geometry, leave the school
Different classical sources record slightly different vedha pair tables. Different schools — Parashari, KP, others — apply different exemption rules on top: the Sun and Moon do not vedha each other in the Parashari convention, Jupiter and Mercury do not vedha each other, and so on. Every commercial astrology product that touches Gochara picks a school and bakes the exemptions into the engine.
Vedākṣha takes the opposite line. The library returns the raw geometric picture — the favourable / unfavourable verdict per BPHS Ch.29, the house from natal, and the full unfiltered vedha candidate list. Exemption rules ship as a separate helper and a SchoolProfile enum, applied per entry by the caller.
That separation is what lets a caller use the same Vedākṣha output to render a Parashari reading on one screen and a strictly-geometric KP reading on the next, without re-computing anything.
Four design choices worth naming
What ships in v2.2.0
The new vedaksha_vedic::gochara module exposes:
Rahu and Ketu are deliberately not iterated as Gochara grahas. BPHS Ch.29 is silent on the nodes; rather than invent a default, we leave them out and let callers extend the model if they wish.
Calling it
use vedaksha_vedic::gochara::{
apply_vedha_exemptions, compute_gochara,
SchoolProfile, TransitPositions, VedhaTable,
};
let transits = TransitPositions {
sun: 0, moon: 4, mars: 2, mercury: 6,
jupiter: 8, venus: 10, saturn: 6,
};
let mut entries = compute_gochara(
&transits,
/* natal_reference_sign */ 0, // 0 = Aries
VedhaTable::Bphs29,
);
for entry in entries.iter_mut() {
apply_vedha_exemptions(entry, SchoolProfile::Parashari);
}The MCP equivalent takes the same eight sign indices plus optional vedha_table and school strings, and returns the same { entries: [...] } shape over JSON-RPC.
Surface-area changes
Upgrade: cargo update -p vedaksha · Tool catalog: /docs/mcp · Vedic features: docs.rs/vedaksha-vedic