Astrologer ruling 2026-11-04 on #166, product decisions the same day (Q9
display only, later; Q12 record, do not switch).
- Q4 (BUG-1590): Gemini Saturn (8, 9) and Virgo Saturn (5, 6) are mixed
(neutral), not pure benefics by trine priority; the astrologer's table for
the eight ambiguous cells rides along as ambiguous_cell_notes. Other
lordships are kept.
- Q10 (BUG-1591): Chara Dasha with both Scorpio / Aquarius lords in the sign
is fixed at 12 years (Ketu exalted in Scorpio gave 13).
- Q11 (BUG-1592): legacy Narayana counts only the nine grahas as occupants.
- Q8 (BUG-1593): Narayana period reports the adjustment that took effect
(Mercury in Virgo: 12, +0, not "12 + 1" capped silently).
- Q15 (BUG-1594): upagrahas carry both raw Saturn-part points and name the
mapping (PyJHora-compatible Gulika = start, Maandi = midpoint; PVR 4.3 is the
reverse and is listed, never claimed).
- Q12 / Q13 (BUG-1595): every day/night window, Shadbala and the birth
Panchanga record their sunrise convention and hora method. No value changes.
- Q5 (BUG-1596): "Gajakesari Yoga" is PVR's strict definition (benefic
association, not debilitated, combust or in a natural enemy's sign); the
strong-Jupiter variant and the bare Moon-Jupiter kendra relation are
separate rules outside the card's closed list. New sandbox helpers combust()
and in_natural_enemy_sign().
- Q6 (BUG-1597): Matrunasa split into Raman 198 (named Parashari aspects,
nodes for conjunction / hemming only) and Raman 199 (same parents-card row
via canonical_mapping); each hit names its trigger; "high confidence" and
mother's-health effects removed. Custom rules may set `triggers`.
- Q31 (BUG-1598): calc_varga names the D3 / D24 / D30 / D60 method; D3 / D24 /
D60 of varga.py and divisional_charts_extended agree on every 0.1 deg.
- Q29: the 7-karaka note says PiK does not apply in that scheme.
tests/test_astrologer_rulings_166_batch2.py (25 tests). Rectification
identity and re-freeze follow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Astrologer ruling 2026-11-04 on #166; product decision the same day (Moon
option C, rulings implemented as given). The default is a named BPHS version;
the pre-#166 precise Sthana / Drik is kept byte-for-byte as variant
"raman_gbb" (Raman, Graha and Bhava Balas Ex. 13 / 55 still pass on it).
- Q3 (BUG-1581): the Moon's own Paksha is P on both sides (Sanskrit 27.11 lists
indu), Chesta = Paksha, total 2P. Drik still classifies a waning Moon as a
malefic (Q26), classify_drik_planets unchanged for the Moon.
- Q2 (BUG-1582): the Sun's Ayana is not doubled; Chesta = base Ayana; A + A.
On the VP Jain fixture Kala + Chesta = 46.73 + 35.07 = published 81.80 + 0.
- Q18 (BUG-1583, BUG-1575): Moolatrikona Moon Taurus from 3 deg, Mercury Virgo
from 15 deg, in shadbala.py and jyotish_engine.MOOLATRIKONA.
- Q16 / Q20 (BUG-1584): Saptavargaja 45/30/20/15/10/4/2, compound relation from D1.
- Q25 (BUG-1585): Mercury is a natural malefic with any natural malefic in its
sign (nodes not counted, recorded as an implementation choice).
- Q24 (BUG-1586): BPHS 26.9-12 piecewise special aspects replace the general
segment for Saturn, Mars and Jupiter; a single aspect stays within 0-60.
- Q21 (BUG-1587): Kendradi Bala by whole sign from the Lagna sign.
- Q27 (BUG-1588): jaimini.calc_arudha_pada_for_house takes the 10th from the
first-count pada (pada in the 7th -> 4th from the house), as special_lagnas did.
- Q30 (BUG-1589): D30 degree inside the sign is proportional within the
unequal span in varga.py; divisional_charts_extended uses exact 30/7.
- method_variants names every convention. Q22 edges and the Q24 60 cap are
locked in tests/test_astrologer_rulings_166.py (42 tests).
Raman / PyJHora comparison tests now run on "raman_gbb"; the VP Jain report
labels the new convention rows; chart-insight-golden.json's planets-only
Shadbala section regenerated from /api/shadbala. Rectification identity,
golden and re-freeze follow in separate commits.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyn7Hj3LCW3BUs5bZ8
Data audit wave 2 (H) against PyJHora 4.8.6 and Swiss Ephemeris, 19 charts,
Raman and Lahiri passed explicitly to both sides.
- BUG-1566 (jaimini.py): the K.N. Rao Chara Scorpio / Aquarius lord read both
co-lords' dignity in the dasha sign itself, so Scorpio was always Ketu and
Aquarius always Saturn. Now one lord in the sign gives way to the other
(K.N. Rao; Rath p.43 (c); PyJHora); otherwise compared where each stands
(companions, Jupiter / Mercury / dispositor, dignity, modality, degrees).
MD years vs PyJHora 212/228 -> 225/228 (Raman), 226/228 (Lahiri).
- BUG-1567 (jaimini.py): K.N. Rao antardashas now run each MD's own
direction with the MD sign last (pp.35-36); book order 19/228 -> 228/228.
- BUG-1565 (gulika.py): Wednesday-Saturday night share table started one lord
early; Maandi and the four other time-segment points 79/114 -> 114/114
against an independent Swiss computation. Gulika unchanged (19/19).
- BUG-1568 (jyotish_engine.py): natal Panchanga vara / hora used the civil
date; a birth before sunrise belongs to the previous weekday (15/19 -> 19/19
vs PyJHora drik.vaara).
Narayana (legacy and Rath), transits, sunrise and day/night: no defect; the
second-cycle rule matches PyJHora's. Variants are listed in BUG_HISTORY.
jaimini.py is in the frozen identity: per ERR-110, new records frozen and
replayed as audit_h_2026_11_04; contract, freshness test and frontend gate
test rotated. Versus moon_paksha_2026_11_04: sealed 20/20 and reported offset
900/900 identical, metrics and summary unchanged. Chara sections of two
frontend fixtures and the rashi-dasha PyJHora fixture's native rows updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoyeZrYn6ryNcSe5Y2Y
The English personal report was discarded whenever a Chinese fragment survived the trailing glossary. English sections now render the English fields that were already calculated.
Co-Authored-By: Grok (agent loop)
Co-authored-by: Cursor <cursoragent@cursor.com>
KARAKA_8 put Putrakaraka 5th, Darakaraka 7th and Pitrukaraka 8th. BPHS ch. 32
order with Rahu counted is AK, AmK, BK, MK, PiK, PK, GK, DK. Test pins the
table and a public AA chart (Steve Jobs, Raman, mean nodes) plus the reader
report's live 8-karaka rows. jaimini.py is in the frozen rectification identity;
re-freeze follows in a separate commit (rectification does not read karakas).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
Three-way-merge calculation modules and pl9-export into the product fork while keeping commercial API routes, Raman ayanamsa, and the consultation contract as a keypath superset.
Co-authored-by: Cursor <cursoragent@cursor.com>