diff --git a/docs/research/sanjay_rath_narayana_book_ledger_2026_08_28.md b/docs/research/sanjay_rath_narayana_book_ledger_2026_08_28.md new file mode 100644 index 00000000..8d18c232 --- /dev/null +++ b/docs/research/sanjay_rath_narayana_book_ledger_2026_08_28.md @@ -0,0 +1,33 @@ +# Sanjay Rath Narayana Dasa Rule Ledger + +- Source: Sanjay Rath, *Narayana Dasa* +- Source receipt: `sanjay_rath_narayana_dasa` / available=`False` +- Source SHA256: `None` +- Status: `md_ad_pd_order_rules_replayed_dated_duration_replay_pending` +- Replay: 50 match / 0 mismatch / 48 order rows +- PD: `replayed_by_inherited_ad_rule_no_separate_pd_table_found` + +## Rules +- `rath_md_start_stronger_lagna_seventh` p.48: MD starts from the stronger of Lagna and seventh. Status: `documented`. +- `rath_md_general_order_table10` p.49,52: Movable, fixed and dual signs follow the source Table 10 order. Status: `replayed`. +- `rath_saturn_start_exception` p.51,53: Saturn in the starting/dasa sign makes the order zodiacal/regular. Status: `replayed_as_table11_zodiacal`. +- `rath_ketu_reversal_exception` p.51,54,55: Ketu reverses the ordinary direction; Table 14 gives the AD-only order. Status: `replayed`. +- `rath_ad_equal_twelfths` p.50,179: AD/PD/Sookshma periods divide the parent period into twelve equal portions. Status: `documented`. +- `rath_ad_order_table13` p.50,54: AD sequence follows odd/even sign direction, not ninth-house direction. Status: `replayed`. +- `upadesa_1125_1126_odd_even_count` p.271,272: Odd signs count zodiacally and even signs count reverse, using completed signs. Status: `documented`. +- `upadesa_1127_fixed_sign_exception` p.273,275: Fixed signs can reverse ordinary odd/even behavior; Taurus/Scorpio count direct, Leo/Aquarius reverse. Status: `covered_by_existing_duration_profile`. +- `upadesa_bphs_exalt_debil_adjustment` p.275,276: Exalted lord adds one year, debilitated lord subtracts one, capped at the twelve-year sign maximum. Status: `covered_by_existing_duration_profile`. +- `upadesa_dual_lord_strength_chain` p.276,277,278,279,280,285: Scorpio/Aquarius dual lords use source strength comparisons rather than a fixed single lord. Status: `partial_runtime_existing_profile`. +- `upadesa_second_cycle_twelve_minus` p.281: Second cycle can be reckoned as twelve minus first-cycle years. Status: `covered_by_existing_cycle_count`. +- `upadesa_ad_equal_and_rolling` p.283,284: Each rasi dasha has twelve equal antardashas flowing zodiacally or reverse from adjoining signs. Status: `replayed`. +- `rath_pd_rule_inherits_ad_method` p.179,284: PD uses twelve equal divisions and inherits the AD rolling/initiation method unless a special rule applies. Status: `replayed_as_inherited_ad_order`. + +## Golden Rows +- `rath_narayana_aurobindo_1872_md` Table 15 p.57: 12 MD rows, start `Cancer`. +- `rath_narayana_standard_nativity_1963_md` Table 17 p.64: 12 MD rows, start `Pisces`. +- `rath_narayana_indira_1917_saturn_start_md` Table 18 p.67: 12 MD rows, start `Cancer`. + +## Boundaries +- This ledger records source rules, page refs, machine tables, and replay status only. +- It does not copy long book text into the project. +- Dated MD tables are extracted as golden rows; full duration replay remains pending until chart longitude fixtures are keyed from the same source. diff --git a/references/oracle/chara_narayana_book_golden_cases_2026_08_28.json b/references/oracle/chara_narayana_book_golden_cases_2026_08_28.json new file mode 100644 index 00000000..552c4044 --- /dev/null +++ b/references/oracle/chara_narayana_book_golden_cases_2026_08_28.json @@ -0,0 +1,951 @@ +{ + "claim_boundary": [ + "This ledger is a golden-case row contract, not a claim that all runtime profiles already match the book rows.", + "Rows marked OCR unclear or inferred must be manually rechecked before formula promotion.", + "No interpretive conclusions should be changed from this artifact alone." + ], + "generated_at": "2026-08-28T16:41:20.466323+00:00", + "golden_cases": [ + { + "birth_data": { + "chart_longitudes_available_on_page": true, + "date": "1949-10-05", + "place": "not_extracted_from_table_page", + "time": "not_extracted_from_table_page" + }, + "case_id": "rao_chara_male_1949_scorpio_ad", + "case_name": "K.N. Rao Chara example, male born 1949-10-05", + "period_rows": [ + { + "duration_years": 12, + "end_year": 1961, + "level": "MD", + "sign": "Virgo", + "start_year": 1949 + }, + { + "duration_years": 1, + "end_year": 1962, + "level": "MD", + "sign": "Libra", + "start_year": 1961 + }, + { + "duration_years": 10, + "end_year": 1972, + "level": "MD", + "sign": "Scorpio", + "start_year": 1962 + }, + { + "duration_months": 10, + "end": "1963-08", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Libra", + "start": "1962-10" + }, + { + "duration_months": 10, + "end": "1964-06", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Virgo", + "start": "1963-08" + }, + { + "duration_months": 10, + "end": "1965-04", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Leo", + "start": "1964-06" + }, + { + "duration_months": 10, + "end": "1966-02", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Cancer", + "start": "1965-04" + }, + { + "duration_months": 10, + "end": "1966-12", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Gemini", + "start": "1966-02" + }, + { + "duration_months": 10, + "end": "1967-10", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Taurus", + "start": "1966-12" + }, + { + "duration_months": 10, + "end": "1968-08", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Aries", + "start": "1967-10" + }, + { + "duration_months": 10, + "end": "1969-06", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Pisces", + "start": "1968-08" + }, + { + "duration_months": 10, + "end": "1970-04", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Aquarius", + "start": "1969-06" + }, + { + "duration_months": 10, + "end": "1971-02", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Capricorn", + "start": "1970-04" + }, + { + "duration_months": 10, + "end": "1971-12", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Sagittarius", + "start": "1971-02" + }, + { + "duration_months": 10, + "end": "1972-10", + "level": "AD", + "parent_sign": "Scorpio", + "sign": "Scorpio", + "start": "1971-12" + } + ], + "profile": "kn_rao", + "profile_assertions": { + "subperiod_order": [ + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio" + ], + "subperiod_parent_sign_last": true + }, + "runtime_replay_status": "blocked_birth_time_place_not_fully_extracted", + "source_ref": { + "pdf_pages": [ + 49, + 50 + ], + "source_id": "kn_rao_predicting_through_jaimini_chara_dasha" + }, + "technique": "Chara Dasha" + }, + { + "birth_data": { + "date": "1958-01-19", + "place": "Hanoi", + "time": "14:45" + }, + "case_id": "rao_chara_vietnamese_lady_1958_capricorn_ad", + "case_name": "K.N. Rao Chara example, Vietnamese lady born 1958-01-19", + "period_rows": [ + { + "duration_years": 8, + "end_year": 1966, + "level": "MD", + "sign": "Taurus", + "start_year": 1958 + }, + { + "duration_years": 7, + "end_year": 1973, + "level": "MD", + "sign": "Aries", + "start_year": 1966 + }, + { + "duration_years": 5, + "end_year": 1978, + "level": "MD", + "sign": "Pisces", + "start_year": 1973 + }, + { + "duration_years": 3, + "end_year": 1981, + "level": "MD", + "sign": "Aquarius", + "start_year": 1978 + }, + { + "duration_years": 2, + "end_year": 1983, + "level": "MD", + "sign": "Capricorn", + "start_year": 1981 + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Capricorn", + "sign": "Sagittarius", + "start": "1981-01" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Capricorn", + "sign": "Leo", + "start": "1981-09" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Capricorn", + "sign": "Pisces", + "start": "1982-07" + } + ], + "profile": "kn_rao", + "profile_assertions": { + "subperiod_months_equal_parent_years": true + }, + "runtime_replay_status": "pending_ephemeris_replay_against_chart_longitudes", + "source_ref": { + "pdf_pages": [ + 51, + 52 + ], + "source_id": "kn_rao_predicting_through_jaimini_chara_dasha" + }, + "technique": "Chara Dasha" + }, + { + "birth_data": { + "chart_longitudes_available_on_page": true, + "date": "1916-04-17", + "lagna": "Leo", + "place": "Colombo", + "time": "15:35:30" + }, + "case_id": "goel_chara_leo_lagna_1916_aries_ad", + "case_name": "V.P. Goel Method 2 Chara example, Srimavo Bandaranaike", + "period_rows": [ + { + "duration_years": 5, + "level": "MD", + "sign": "Leo", + "start": "1916-04-17" + }, + { + "duration_years": 5, + "level": "MD", + "sign": "Virgo", + "start": "1921-04-17" + }, + { + "duration_years": 7, + "level": "MD", + "sign": "Libra", + "start": "1926-04-17" + }, + { + "duration_years": 8, + "level": "MD", + "sign": "Scorpio", + "start": "1933-04-17" + }, + { + "duration_years": 3, + "level": "MD", + "sign": "Sagittarius", + "start": "1941-04-17" + }, + { + "duration_years": 7, + "level": "MD", + "sign": "Capricorn", + "start": "1944-04-17" + }, + { + "duration_years": 8, + "level": "MD", + "sign": "Aquarius", + "start": "1951-04-17" + }, + { + "duration_years": 12, + "level": "MD", + "sign": "Pisces", + "start": "1959-04-17" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Aries", + "start": "1971-04-17" + }, + { + "duration_years": 12, + "level": "MD", + "sign": "Taurus", + "start": "1973-04-17" + }, + { + "duration_years": 10, + "level": "MD", + "sign": "Gemini", + "start": "1985-04-17" + }, + { + "duration_years": 6, + "level": "MD", + "sign": "Cancer", + "start": "1995-04-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Aries", + "start": "1971-04-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Taurus", + "start": "1971-06-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Gemini", + "start": "1971-08-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Cancer", + "start": "1971-10-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Leo", + "start": "1971-12-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Virgo", + "start": "1972-02-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Libra", + "start": "1972-04-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Scorpio", + "start": "1972-06-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Sagittarius", + "start": "1972-08-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Capricorn", + "start": "1972-10-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Aquarius", + "start": "1972-12-17" + }, + { + "duration_months": 2, + "level": "AD", + "parent_sign": "Aries", + "sign": "Pisces", + "start": "1973-02-17" + } + ], + "profile": "goel_shastri_method2", + "profile_assertions": { + "dignity_adjustment_used": true, + "method": "Goel Method 2 / P.S. Shastri", + "ocr_boundary": "A few printed start dates are faint; sign order and two-month Aries AD duration are retained as the replay target.", + "subperiod_first_given_to_mahadasha": true + }, + "runtime_replay_status": "pending_runtime_compare", + "source_ref": { + "pdf_pages": [ + 54, + 55, + 56 + ], + "source_id": "vp_goel_predicting_through_jaimini_astrology" + }, + "technique": "Chara Dasha" + }, + { + "birth_data": { + "date": "1917-11-19", + "gender": "female", + "lagna": "Cancer", + "place": "Allahabad", + "time": "23:11" + }, + "case_id": "goel_gendered_chara_indira_1917", + "case_name": "V.P. Goel gendered Chara example, Indira Gandhi", + "period_rows": [ + { + "duration_years": 8, + "level": "MD", + "sign": "Aries", + "start": "1917-11-19" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Pisces", + "start": "1925-11-19" + }, + { + "duration_years": 7, + "level": "MD", + "sign": "Aquarius", + "start": "1927-11-19" + }, + { + "duration_years": 10, + "level": "MD", + "sign": "Capricorn", + "start": "1934-11-19" + }, + { + "duration_years": 7, + "level": "MD", + "sign": "Sagittarius", + "start": "1944-11-19" + }, + { + "duration_years": 9, + "level": "MD", + "sign": "Scorpio", + "start": "1951-11-19" + }, + { + "duration_years": 10, + "level": "MD", + "sign": "Libra", + "start": "1960-11-19" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Virgo", + "start": "1970-11-19" + }, + { + "duration_years": 9, + "level": "MD", + "sign": "Leo", + "start": "1972-11-19" + }, + { + "duration_years": 10, + "level": "MD", + "sign": "Cancer", + "start": "1981-11-19" + } + ], + "profile": "goel_gendered", + "profile_assertions": { + "female_start_sign": "Aries", + "lagna": "Cancer" + }, + "runtime_replay_status": "pending_runtime_compare", + "source_ref": { + "pdf_pages": [ + 65 + ], + "source_id": "vp_goel_predicting_through_jaimini_astrology" + }, + "technique": "Chara Dasha" + }, + { + "birth_data": { + "date": "1917-11-19", + "lagna": "Cancer", + "place": "Allahabad", + "time": "23:11" + }, + "case_id": "goel_narayana_indira_1917", + "case_name": "V.P. Goel Narayana example, Indira Gandhi", + "period_rows": [ + { + "duration_years": 6, + "level": "MD", + "sign": "Capricorn", + "start": "1917-11-19" + }, + { + "duration_years": 5, + "level": "MD", + "sign": "Sagittarius", + "start": "1923-11-19" + }, + { + "duration_years": 9, + "level": "MD", + "sign": "Scorpio", + "start": "1928-11-19" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Libra", + "start": "1937-11-19" + }, + { + "duration_years": 10, + "level": "MD", + "sign": "Virgo", + "start": "1939-11-19" + }, + { + "duration_years": 9, + "level": "MD", + "sign": "Leo", + "start": "1949-11-19" + }, + { + "duration_years": 6, + "level": "MD", + "sign": "Cancer", + "start": "1958-11-19" + }, + { + "duration_years": 5, + "level": "MD", + "sign": "Gemini", + "start": "1964-11-19" + }, + { + "duration_years": 7, + "level": "MD", + "sign": "Taurus", + "start": "1969-11-19" + }, + { + "duration_years": 4, + "level": "MD", + "sign": "Aries", + "start": "1976-11-19" + }, + { + "duration_years": 10, + "level": "MD", + "sign": "Pisces", + "start": "1980-11-19" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Aquarius", + "start": "1990-11-19" + } + ], + "profile": "goel_gendered", + "profile_assertions": { + "direction": "indirect", + "start_sign": "Capricorn" + }, + "runtime_replay_status": "pending_runtime_compare", + "source_ref": { + "pdf_pages": [ + 133 + ], + "source_id": "vp_goel_predicting_through_jaimini_astrology" + }, + "technique": "Narayana Dasha" + }, + { + "birth_data": { + "date": "1952-10-07", + "lagna": "Scorpio", + "place": "St. Petersburg", + "time": "10:00:59" + }, + "case_id": "goel_narayana_putin_1952", + "case_name": "V.P. Goel Narayana example, Vladimir Putin", + "period_rows": [ + { + "duration_years": 5, + "level": "MD", + "sign": "Taurus", + "start": "1952-10-07" + }, + { + "duration_years": 4, + "level": "MD", + "sign": "Sagittarius", + "start": "1957-10-07" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Cancer", + "start": "1961-10-07" + }, + { + "duration_years": 5, + "level": "MD", + "sign": "Aquarius", + "start": "1963-10-07" + }, + { + "duration_years": 11, + "level": "MD", + "sign": "Virgo", + "start": "1968-10-07" + }, + { + "duration_years": 8, + "level": "MD", + "sign": "Aries", + "start": "1979-10-07" + }, + { + "duration_years": 8, + "level": "MD", + "ocr_status": "duration_inferred_from_next_start", + "sign": "Scorpio", + "start": "1987-10-07" + }, + { + "duration_years": 4, + "level": "MD", + "sign": "Gemini", + "start": "1995-10-07" + }, + { + "duration_years": 4, + "level": "MD", + "sign": "Capricorn", + "start": "1999-10-07" + }, + { + "duration_years": 11, + "level": "MD", + "sign": "Leo", + "start": "2003-10-07" + }, + { + "duration_years": 11, + "level": "MD", + "sign": "Pisces", + "start": "2014-10-07" + }, + { + "duration_years": 12, + "level": "MD", + "sign": "Libra", + "start": "2025-10-07" + } + ], + "profile": "goel_lagna_start", + "profile_assertions": { + "direction": "indirect", + "start_sign": "Taurus" + }, + "runtime_replay_status": "pending_runtime_compare", + "source_ref": { + "pdf_pages": [ + 135 + ], + "source_id": "vp_goel_predicting_through_jaimini_astrology" + }, + "technique": "Narayana Dasha" + }, + { + "birth_data": { + "date": "1928-02-26", + "lagna": "Pisces", + "place": "Kfer Malal", + "time": "07:49:23" + }, + "case_id": "goel_narayana_ariel_sharon_1928", + "case_name": "V.P. Goel Narayana example, Ariel Sharon", + "period_rows": [ + { + "duration_years": 12, + "level": "MD", + "sign": "Pisces", + "start": "1928-02-26" + }, + { + "duration_years": 3, + "level": "MD", + "sign": "Cancer", + "start": "1940-02-26" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Scorpio", + "start": "1943-02-26" + }, + { + "duration_years": 9, + "level": "MD", + "sign": "Aries", + "start": "1945-02-26" + }, + { + "duration_years": 6, + "level": "MD", + "sign": "Leo", + "start": "1954-02-26" + }, + { + "duration_years": 3, + "level": "MD", + "sign": "Sagittarius", + "start": "1960-02-26" + }, + { + "duration_years": 8, + "level": "MD", + "sign": "Taurus", + "start": "1963-02-26" + }, + { + "duration_years": 7, + "level": "MD", + "sign": "Virgo", + "start": "1971-02-26" + }, + { + "duration_years": 2, + "level": "MD", + "sign": "Capricorn", + "start": "1978-02-26" + }, + { + "duration_years": 8, + "level": "MD", + "sign": "Gemini", + "start": "1980-02-26" + }, + { + "duration_years": 3, + "level": "MD", + "sign": "Libra", + "start": "1988-02-26" + }, + { + "duration_years": 3, + "level": "MD", + "sign": "Aquarius", + "start": "1991-02-26" + } + ], + "profile": "goel_lagna_start", + "profile_assertions": { + "sequence": "dual_sign_trinal_jump", + "start_sign": "Pisces" + }, + "runtime_replay_status": "pending_runtime_compare", + "source_ref": { + "pdf_pages": [ + 137 + ], + "source_id": "vp_goel_predicting_through_jaimini_astrology" + }, + "technique": "Narayana Dasha" + } + ], + "machine_assertions": [ + { + "assertion_id": "all_profiles_are_accounted_for", + "required_profiles": [ + "goel_gendered", + "goel_lagna_start", + "goel_shastri_method2", + "kn_rao", + "pyjhora_blackbox" + ] + }, + { + "assertion_id": "period_rows_are_page_anchored", + "required_fields": [ + "case_id", + "profile", + "source_ref.pdf_pages", + "period_rows.level", + "period_rows.sign" + ] + }, + { + "assertion_id": "blocked_pd_is_explicit", + "required_status": "rule_replayed_no_dated_case_pd_table" + } + ], + "pd_blockers": [ + { + "applies_to_profiles": [ + "kn_rao", + "goel_lagna_start", + "goel_gendered", + "goel_shastri_method2" + ], + "level": "PD", + "reason": "Sanjay Rath source rules replay PD order and equal division, but the current admitted source set has no separate dated case-level PD row table for book-page golden parity.", + "status": "rule_replayed_no_dated_case_pd_table" + }, + { + "applies_to_profiles": [ + "pyjhora_blackbox" + ], + "level": "MD/AD/PD", + "reason": "PyJHora black-box can produce runtime rows, but this ledger only certifies rows anchored to book pages.", + "status": "runtime_only_not_book_golden" + } + ], + "profile_coverage": { + "goel_gendered": { + "blocked_levels": { + "AD": "source page has MD table only", + "PD": "rule-replayed by Rath profile; no dated case-level PD table found" + }, + "canonical_source_ids": [ + "vp_goel_predicting_through_jaimini_astrology" + ], + "expected_levels": [ + "MD" + ], + "status": "book_rows_present" + }, + "goel_lagna_start": { + "blocked_levels": { + "PD": "rule-replayed by Rath profile; no dated case-level PD table found in current source set" + }, + "canonical_source_ids": [ + "vp_goel_predicting_through_jaimini_astrology" + ], + "expected_levels": [ + "MD", + "AD" + ], + "status": "book_rows_present" + }, + "goel_shastri_method2": { + "blocked_levels": { + "PD": "rule-replayed by Rath profile; no dated case-level PD table found" + }, + "canonical_source_ids": [ + "vp_goel_predicting_through_jaimini_astrology" + ], + "expected_levels": [ + "MD", + "AD" + ], + "status": "book_rows_present" + }, + "kn_rao": { + "blocked_levels": { + "PD": "rule-replayed by Rath profile; no dated case-level PD table found in current source set" + }, + "canonical_source_ids": [ + "kn_rao_predicting_through_jaimini_chara_dasha" + ], + "expected_levels": [ + "MD", + "AD" + ], + "status": "book_rows_present" + }, + "pyjhora_blackbox": { + "blocked_levels": { + "book_page_table": "PyJHora is a black-box runtime comparator, not a book-page source profile" + }, + "canonical_source_ids": [], + "expected_levels": [ + "runtime_MD_AD_PD" + ], + "status": "external_runtime_profile" + } + }, + "schema": "jyotish.chara_narayana_book_golden_cases.v1", + "scope": "book-page MD/AD/PD row alignment for Chara/Narayana variant profiles", + "sources": { + "kn_rao_predicting_through_jaimini_chara_dasha": { + "author": "K. N. Rao", + "path": "local-source-untracked/文件仓库/中外🔮占星/国外占星/印度占星书/Predicting through Jaiminis Chara Dasha An Original Research Hindu Astrology Series (K. N. Rao) (Z-Library).pdf", + "title": "Predicting through Jaimini's Chara Dasha" + }, + "vp_goel_predicting_through_jaimini_astrology": { + "author": "V. P. Goel", + "path": "local-source-untracked/文件仓库/中外🔮占星/国外占星/印度占星书/Predicting through Jaimini Astrology (V. P. Goel) (Z-Library).pdf", + "title": "Predicting through Jaimini Astrology" + } + }, + "status": "partial_verified", + "summary": { + "case_count": 7, + "level_counts": { + "AD": 27, + "MD": 66 + }, + "pd_status": "rule_replayed_no_dated_case_pd_table", + "period_row_count": 93, + "profile_counts": { + "goel_gendered": 2, + "goel_lagna_start": 2, + "goel_shastri_method2": 1, + "kn_rao": 2 + } + } +} \ No newline at end of file diff --git a/references/oracle/sanjay_rath_narayana_book_ledger_2026_08_28.json b/references/oracle/sanjay_rath_narayana_book_ledger_2026_08_28.json new file mode 100644 index 00000000..a52f181c --- /dev/null +++ b/references/oracle/sanjay_rath_narayana_book_ledger_2026_08_28.json @@ -0,0 +1,2794 @@ +{ + "schema": "jyotish.sanjay_rath_narayana_book_ledger.v1", + "generated_at": "2026-09-28T04:36:26.721359+00:00", + "status": "md_ad_pd_order_rules_replayed_dated_duration_replay_pending", + "source": { + "title": "Narayana Dasa", + "author": "Sanjay Rath", + "source_id": "sanjay_rath_narayana_dasa", + "local_copy_available": false, + "sha256": null, + "pages_used": [], + "copyright_handling": "rule summaries, page references, and machine tables only; no long prose copied" + }, + "supporting_sources": [ + { + "title": "A course on Jaimini Maharshi's Upadesa Sutra", + "author": "Sanjay Rath", + "source_id": "sanjay_rath_upadesa_sutra", + "local_copy_available": false, + "sha256": null, + "pages_used": [ + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 283, + 284, + 285 + ] + }, + { + "title": "Crux of Vedic Astrology - Timing of Events", + "author": "Sanjay Rath", + "source_id": "sanjay_rath_crux_timing_events", + "local_copy_available": false, + "sha256": null, + "pages_used": [ + 74, + 75, + 91, + 98, + 150, + 158, + 159 + ] + } + ], + "rules": [ + { + "rule_id": "rath_md_start_stronger_lagna_seventh", + "pages": [ + 48 + ], + "summary": "MD starts from the stronger of Lagna and seventh.", + "runtime_status": "documented" + }, + { + "rule_id": "rath_md_general_order_table10", + "pages": [ + 49, + 52 + ], + "summary": "Movable, fixed and dual signs follow the source Table 10 order.", + "runtime_status": "replayed" + }, + { + "rule_id": "rath_saturn_start_exception", + "pages": [ + 51, + 53 + ], + "summary": "Saturn in the starting/dasa sign makes the order zodiacal/regular.", + "runtime_status": "replayed_as_table11_zodiacal" + }, + { + "rule_id": "rath_ketu_reversal_exception", + "pages": [ + 51, + 54, + 55 + ], + "summary": "Ketu reverses the ordinary direction; Table 14 gives the AD-only order.", + "runtime_status": "replayed" + }, + { + "rule_id": "rath_ad_equal_twelfths", + "pages": [ + 50, + 179 + ], + "summary": "AD/PD/Sookshma periods divide the parent period into twelve equal portions.", + "runtime_status": "documented" + }, + { + "rule_id": "rath_ad_order_table13", + "pages": [ + 50, + 54 + ], + "summary": "AD sequence follows odd/even sign direction, not ninth-house direction.", + "runtime_status": "replayed" + }, + { + "rule_id": "upadesa_1125_1126_odd_even_count", + "pages": [ + 271, + 272 + ], + "summary": "Odd signs count zodiacally and even signs count reverse, using completed signs.", + "runtime_status": "documented" + }, + { + "rule_id": "upadesa_1127_fixed_sign_exception", + "pages": [ + 273, + 275 + ], + "summary": "Fixed signs can reverse ordinary odd/even behavior; Taurus/Scorpio count direct, Leo/Aquarius reverse.", + "runtime_status": "covered_by_existing_duration_profile" + }, + { + "rule_id": "upadesa_bphs_exalt_debil_adjustment", + "pages": [ + 275, + 276 + ], + "summary": "Exalted lord adds one year, debilitated lord subtracts one, capped at the twelve-year sign maximum.", + "runtime_status": "covered_by_existing_duration_profile" + }, + { + "rule_id": "upadesa_dual_lord_strength_chain", + "pages": [ + 276, + 277, + 278, + 279, + 280, + 285 + ], + "summary": "Scorpio/Aquarius dual lords use source strength comparisons rather than a fixed single lord.", + "runtime_status": "partial_runtime_existing_profile" + }, + { + "rule_id": "upadesa_second_cycle_twelve_minus", + "pages": [ + 281 + ], + "summary": "Second cycle can be reckoned as twelve minus first-cycle years.", + "runtime_status": "covered_by_existing_cycle_count" + }, + { + "rule_id": "upadesa_ad_equal_and_rolling", + "pages": [ + 283, + 284 + ], + "summary": "Each rasi dasha has twelve equal antardashas flowing zodiacally or reverse from adjoining signs.", + "runtime_status": "replayed" + }, + { + "rule_id": "rath_pd_rule_inherits_ad_method", + "pages": [ + 179, + 284 + ], + "summary": "PD uses twelve equal divisions and inherits the AD rolling/initiation method unless a special rule applies.", + "runtime_status": "replayed_as_inherited_ad_order" + } + ], + "order_tables": { + "table10_md_general": { + "Aries": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "Taurus": [ + "Taurus", + "Sagittarius", + "Cancer", + "Aquarius", + "Virgo", + "Aries", + "Scorpio", + "Gemini", + "Capricorn", + "Leo", + "Pisces", + "Libra" + ], + "Gemini": [ + "Gemini", + "Aquarius", + "Libra", + "Virgo", + "Taurus", + "Capricorn", + "Sagittarius", + "Leo", + "Aries", + "Pisces", + "Scorpio", + "Cancer" + ], + "Cancer": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "Leo": [ + "Leo", + "Capricorn", + "Gemini", + "Scorpio", + "Aries", + "Virgo", + "Aquarius", + "Cancer", + "Sagittarius", + "Taurus", + "Libra", + "Pisces" + ], + "Virgo": [ + "Virgo", + "Capricorn", + "Taurus", + "Gemini", + "Libra", + "Aquarius", + "Pisces", + "Cancer", + "Scorpio", + "Sagittarius", + "Aries", + "Leo" + ], + "Libra": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "Scorpio": [ + "Scorpio", + "Gemini", + "Capricorn", + "Leo", + "Pisces", + "Libra", + "Taurus", + "Sagittarius", + "Cancer", + "Aquarius", + "Virgo", + "Aries" + ], + "Sagittarius": [ + "Sagittarius", + "Leo", + "Aries", + "Pisces", + "Scorpio", + "Cancer", + "Gemini", + "Aquarius", + "Libra", + "Virgo", + "Taurus", + "Capricorn" + ], + "Capricorn": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "Aquarius": [ + "Aquarius", + "Cancer", + "Sagittarius", + "Taurus", + "Libra", + "Pisces", + "Leo", + "Capricorn", + "Gemini", + "Scorpio", + "Aries", + "Virgo" + ], + "Pisces": [ + "Pisces", + "Cancer", + "Scorpio", + "Sagittarius", + "Aries", + "Leo", + "Virgo", + "Capricorn", + "Taurus", + "Gemini", + "Libra", + "Aquarius" + ] + }, + "table11_saturn_start": { + "Aries": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "Taurus": [ + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries" + ], + "Gemini": [ + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus" + ], + "Cancer": [ + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini" + ], + "Leo": [ + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer" + ], + "Virgo": [ + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo" + ], + "Libra": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "Scorpio": [ + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra" + ], + "Sagittarius": [ + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio" + ], + "Capricorn": [ + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius" + ], + "Aquarius": [ + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn" + ], + "Pisces": [ + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius" + ] + }, + "table13_ad": { + "Aries": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "Taurus": [ + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini" + ], + "Gemini": [ + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus" + ], + "Cancer": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "Leo": [ + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer" + ], + "Virgo": [ + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra" + ], + "Libra": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "Scorpio": [ + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius" + ], + "Sagittarius": [ + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio" + ], + "Capricorn": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "Aquarius": [ + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn" + ], + "Pisces": [ + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries" + ] + }, + "table14_ketu_ad": { + "Aries": [ + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus" + ], + "Taurus": [ + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries" + ], + "Gemini": [ + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer" + ], + "Cancer": [ + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini" + ], + "Leo": [ + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo" + ], + "Virgo": [ + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo" + ], + "Libra": [ + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio" + ], + "Scorpio": [ + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra" + ], + "Sagittarius": [ + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn" + ], + "Capricorn": [ + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius" + ], + "Aquarius": [ + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces" + ], + "Pisces": [ + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius" + ] + } + }, + "source_anomalies": [ + { + "page": 55, + "table": "Table 14", + "row": "Scorpio", + "issue": "OCR/print line seen as duplicated tail in text extraction; runtime uses the normalized Ketu reversal sequence.", + "status": "kept_visible" + } + ], + "golden_cases": [ + { + "case_id": "rath_narayana_aurobindo_1872_md", + "source_page": 57, + "source_table": "Table 15", + "start_sign": "Cancer", + "rows": [ + [ + "Cancer", + 7, + "1872-08-15", + "1879-08-15" + ], + [ + "Gemini", + 2, + "1879-08-15", + "1881-08-15" + ], + [ + "Taurus", + 3, + "1881-08-15", + "1884-08-15" + ], + [ + "Aries", + 2, + "1884-08-15", + "1886-08-15" + ], + [ + "Pisces", + 9, + "1886-08-15", + "1895-08-15" + ], + [ + "Aquarius", + 2, + "1895-08-15", + "1897-08-15" + ], + [ + "Capricorn", + 1, + "1897-08-15", + "1898-08-15" + ], + [ + "Sagittarius", + 8, + "1898-08-15", + "1906-08-16" + ], + [ + "Scorpio", + 7, + "1906-08-16", + "1913-08-16" + ], + [ + "Libra", + 10, + "1913-08-16", + "1923-08-16" + ], + [ + "Virgo", + 1, + "1923-08-16", + "1924-08-15" + ], + [ + "Leo", + 12, + "1924-08-15", + "1936-08-15" + ] + ] + }, + { + "case_id": "rath_narayana_standard_nativity_1963_md", + "source_page": 64, + "source_table": "Table 17", + "start_sign": "Pisces", + "rows": [ + [ + "Pisces", + 12, + "1963", + "1975" + ], + [ + "Cancer", + 5, + "1975", + "1980" + ], + [ + "Scorpio", + 10, + "1980", + "1990" + ], + [ + "Sagittarius", + 3, + "1990", + "1993" + ], + [ + "Aries", + 5, + "1993", + "1998" + ], + [ + "Leo", + 1, + "1998", + "1999" + ], + [ + "Virgo", + 1, + "1999", + "2000" + ], + [ + "Capricorn", + 12, + "2000", + "2012" + ], + [ + "Taurus", + 2, + "2012", + "2014" + ], + [ + "Gemini", + 2, + "2014", + "2016" + ], + [ + "Libra", + 9, + "2016", + "2025" + ], + [ + "Aquarius", + 8, + "2025", + "2033" + ] + ] + }, + { + "case_id": "rath_narayana_indira_1917_saturn_start_md", + "source_page": 67, + "source_table": "Table 18", + "start_sign": "Cancer", + "rows": [ + [ + "Cancer", + 6, + "1917-11-19", + "1923-11-20" + ], + [ + "Leo", + 9, + "1923-11-20", + "1932-11-19" + ], + [ + "Virgo", + 10, + "1932-11-19", + "1942-11-20" + ], + [ + "Libra", + 2, + "1942-11-20", + "1944-11-19" + ], + [ + "Scorpio", + 9, + "1944-11-19", + "1953-11-19" + ], + [ + "Sagittarius", + 5, + "1953-11-19", + "1958-11-19" + ], + [ + "Capricorn", + 6, + "1958-11-19", + "1964-11-19" + ], + [ + "Aquarius", + 2, + "1964-11-19", + "1966-11-19" + ], + [ + "Pisces", + 10, + "1966-11-19", + "1976-11-19" + ], + [ + "Aries", + 4, + "1976-11-19", + "1980-11-19" + ], + [ + "Taurus", + 7, + "1980-11-19", + "1987-11-19" + ], + [ + "Gemini", + 5, + "1987-11-19", + "1992-11-19" + ] + ] + } + ], + "runtime_replay": { + "summary": { + "total_rows": 48, + "total_replay_rows": 50, + "equal_duration_rows": 2, + "match": 50, + "pd_rows": 0, + "pd_order_rows": 12, + "pd_status": "replayed_by_inherited_ad_rule_no_separate_pd_table_found", + "dated_md_case_status": "golden_rows_extracted_full_duration_replay_pending_chart_longitude_fixture" + }, + "rows": [ + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Aries", + "expected": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "actual": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Taurus", + "expected": [ + "Taurus", + "Sagittarius", + "Cancer", + "Aquarius", + "Virgo", + "Aries", + "Scorpio", + "Gemini", + "Capricorn", + "Leo", + "Pisces", + "Libra" + ], + "actual": [ + "Taurus", + "Sagittarius", + "Cancer", + "Aquarius", + "Virgo", + "Aries", + "Scorpio", + "Gemini", + "Capricorn", + "Leo", + "Pisces", + "Libra" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Gemini", + "expected": [ + "Gemini", + "Aquarius", + "Libra", + "Virgo", + "Taurus", + "Capricorn", + "Sagittarius", + "Leo", + "Aries", + "Pisces", + "Scorpio", + "Cancer" + ], + "actual": [ + "Gemini", + "Aquarius", + "Libra", + "Virgo", + "Taurus", + "Capricorn", + "Sagittarius", + "Leo", + "Aries", + "Pisces", + "Scorpio", + "Cancer" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Cancer", + "expected": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "actual": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Leo", + "expected": [ + "Leo", + "Capricorn", + "Gemini", + "Scorpio", + "Aries", + "Virgo", + "Aquarius", + "Cancer", + "Sagittarius", + "Taurus", + "Libra", + "Pisces" + ], + "actual": [ + "Leo", + "Capricorn", + "Gemini", + "Scorpio", + "Aries", + "Virgo", + "Aquarius", + "Cancer", + "Sagittarius", + "Taurus", + "Libra", + "Pisces" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Virgo", + "expected": [ + "Virgo", + "Capricorn", + "Taurus", + "Gemini", + "Libra", + "Aquarius", + "Pisces", + "Cancer", + "Scorpio", + "Sagittarius", + "Aries", + "Leo" + ], + "actual": [ + "Virgo", + "Capricorn", + "Taurus", + "Gemini", + "Libra", + "Aquarius", + "Pisces", + "Cancer", + "Scorpio", + "Sagittarius", + "Aries", + "Leo" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Libra", + "expected": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "actual": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Scorpio", + "expected": [ + "Scorpio", + "Gemini", + "Capricorn", + "Leo", + "Pisces", + "Libra", + "Taurus", + "Sagittarius", + "Cancer", + "Aquarius", + "Virgo", + "Aries" + ], + "actual": [ + "Scorpio", + "Gemini", + "Capricorn", + "Leo", + "Pisces", + "Libra", + "Taurus", + "Sagittarius", + "Cancer", + "Aquarius", + "Virgo", + "Aries" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Sagittarius", + "expected": [ + "Sagittarius", + "Leo", + "Aries", + "Pisces", + "Scorpio", + "Cancer", + "Gemini", + "Aquarius", + "Libra", + "Virgo", + "Taurus", + "Capricorn" + ], + "actual": [ + "Sagittarius", + "Leo", + "Aries", + "Pisces", + "Scorpio", + "Cancer", + "Gemini", + "Aquarius", + "Libra", + "Virgo", + "Taurus", + "Capricorn" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Capricorn", + "expected": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "actual": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Aquarius", + "expected": [ + "Aquarius", + "Cancer", + "Sagittarius", + "Taurus", + "Libra", + "Pisces", + "Leo", + "Capricorn", + "Gemini", + "Scorpio", + "Aries", + "Virgo" + ], + "actual": [ + "Aquarius", + "Cancer", + "Sagittarius", + "Taurus", + "Libra", + "Pisces", + "Leo", + "Capricorn", + "Gemini", + "Scorpio", + "Aries", + "Virgo" + ], + "status": "match" + }, + { + "kind": "md", + "profile": "rath_general_table10_v1", + "start_sign": "Pisces", + "expected": [ + "Pisces", + "Cancer", + "Scorpio", + "Sagittarius", + "Aries", + "Leo", + "Virgo", + "Capricorn", + "Taurus", + "Gemini", + "Libra", + "Aquarius" + ], + "actual": [ + "Pisces", + "Cancer", + "Scorpio", + "Sagittarius", + "Aries", + "Leo", + "Virgo", + "Capricorn", + "Taurus", + "Gemini", + "Libra", + "Aquarius" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Aries", + "expected": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "actual": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Taurus", + "expected": [ + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini" + ], + "actual": [ + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Gemini", + "expected": [ + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus" + ], + "actual": [ + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Cancer", + "expected": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "actual": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Leo", + "expected": [ + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer" + ], + "actual": [ + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Virgo", + "expected": [ + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra" + ], + "actual": [ + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Libra", + "expected": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "actual": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Scorpio", + "expected": [ + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius" + ], + "actual": [ + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Sagittarius", + "expected": [ + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio" + ], + "actual": [ + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Capricorn", + "expected": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "actual": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Aquarius", + "expected": [ + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn" + ], + "actual": [ + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_table13_v1", + "start_sign": "Pisces", + "expected": [ + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries" + ], + "actual": [ + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Aries", + "expected": [ + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus" + ], + "actual": [ + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Taurus", + "expected": [ + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries" + ], + "actual": [ + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Gemini", + "expected": [ + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer" + ], + "actual": [ + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Cancer", + "expected": [ + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini" + ], + "actual": [ + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Leo", + "expected": [ + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo" + ], + "actual": [ + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Virgo", + "expected": [ + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo" + ], + "actual": [ + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Libra", + "expected": [ + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio" + ], + "actual": [ + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Scorpio", + "expected": [ + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra" + ], + "actual": [ + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Sagittarius", + "expected": [ + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn" + ], + "actual": [ + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Capricorn", + "expected": [ + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius" + ], + "actual": [ + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Aquarius", + "expected": [ + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces" + ], + "actual": [ + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces" + ], + "status": "match" + }, + { + "kind": "ad", + "profile": "rath_ketu_table14_v1", + "start_sign": "Pisces", + "expected": [ + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius" + ], + "actual": [ + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Aries", + "expected": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "actual": [ + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Taurus", + "expected": [ + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini" + ], + "actual": [ + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Gemini", + "expected": [ + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus" + ], + "actual": [ + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Cancer", + "expected": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "actual": [ + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Leo", + "expected": [ + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer" + ], + "actual": [ + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Virgo", + "expected": [ + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra" + ], + "actual": [ + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Libra", + "expected": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "actual": [ + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Scorpio", + "expected": [ + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius" + ], + "actual": [ + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Sagittarius", + "expected": [ + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio" + ], + "actual": [ + "Sagittarius", + "Capricorn", + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Capricorn", + "expected": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "actual": [ + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries", + "Pisces", + "Aquarius" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Aquarius", + "expected": [ + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn" + ], + "actual": [ + "Aquarius", + "Pisces", + "Aries", + "Taurus", + "Gemini", + "Cancer", + "Leo", + "Virgo", + "Libra", + "Scorpio", + "Sagittarius", + "Capricorn" + ], + "status": "match" + }, + { + "kind": "pd", + "profile": "rath_inherit_ad_table13_v1", + "start_sign": "Pisces", + "expected": [ + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries" + ], + "actual": [ + "Pisces", + "Aquarius", + "Capricorn", + "Sagittarius", + "Scorpio", + "Libra", + "Virgo", + "Leo", + "Cancer", + "Gemini", + "Taurus", + "Aries" + ], + "status": "match" + } + ], + "equal_duration_rows": [ + { + "rule_id": "upadesa_virgo_8_year_ad_example", + "source": "Upadesa Sutra p.284", + "level": "AD", + "parent": { + "sign": "Virgo", + "sign_idx": 5, + "years": 8, + "start_age": 0, + "end_age": 8 + }, + "start_sign": "Virgo", + "order_profile": "rath_table13_v1", + "expected_child_years": 0.6666666666666666, + "actual_child_count": 12, + "actual_first_child_years": 0.666667, + "status": "match" + }, + { + "rule_id": "rath_pd_inherits_ad_equal_rule", + "source": "Narayana Dasa p.179 and Upadesa Sutra p.284", + "level": "PD", + "parent": { + "sign": "Capricorn", + "sign_idx": 9, + "years": 0.6666666666666666, + "start_age": 21, + "end_age": 21.666666666666668 + }, + "start_sign": "Capricorn", + "order_profile": "rath_inherit_ad_table13_v1", + "expected_child_years": 0.05555555555555555, + "actual_child_count": 12, + "actual_first_child_years": 0.055556, + "status": "match" + } + ] + } +} diff --git a/scripts/narayana_rath.py b/scripts/narayana_rath.py new file mode 100644 index 00000000..520dfff0 --- /dev/null +++ b/scripts/narayana_rath.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python3 +"""Narayana Dasha, Sanjay Rath profile (`sanjay_rath`) — research only (BUG-1215). + +Astrologer round-4 ruling 2026-10-03, Q4: the second time axis should be Sanjay +Rath's Narayana Dasha (start from the stronger of Lagna and 7th, order by the +start sign, dual lords by the traditional profile). The current product axis +(`narayana_dasha.calc_narayana_mahadasha`) always starts from the Lagna and runs +zodiacally; it is labelled `legacy_reference_only` on user-visible surfaces. + +This module builds the Rath sequence from the rule ledger ported from upstream +yinduzhanxing c7117f92 (`references/oracle/sanjay_rath_narayana_book_ledger_2026_08_28.json`, +`docs/research/sanjay_rath_narayana_book_ledger_2026_08_28.md`): + +- start sign: stronger of Lagna / 7th (`rath_md_start_stronger_lagna_seventh`), + decided by the existing `narayana_dasha.select_narayana_seed_sign`; a tie + (`later_narayana_sign_strength_rules_required`) gives + `status: parameter_sensitive` and both sequences; +- MD order: Table 10 by the start sign (`rath_md_general_order_table10`); Saturn + in the start sign -> Table 11, zodiacal (`rath_saturn_start_exception`); Ketu + in the start sign (no Saturn) -> Table 10 direction reversed (the reversal + rule, `rath_ketu_reversal_exception`; the ledger tables only the AD form); +- years: `jaimini_odd_footed_dignity_v2` (Upadesa 1.1.25-27 odd/even-footed + count with the fixed-sign exception, exalted +1 / debilitated -1, ledger + `upadesa_1125_1126_odd_even_count`, `upadesa_1127_fixed_sign_exception`, + `upadesa_bphs_exalt_debil_adjustment`); Scorpio / Aquarius lords by + `jaimini_dual_lord_source_v1` (`upadesa_dual_lord_strength_chain`, partial); +- AD: twelve equal parts from the MD sign, Table 13 order; Saturn in the MD sign + -> Table 11, Ketu -> Table 14 (`rath_ad_equal_twelfths`, `rath_ad_order_table13`). + +Not wired into scoring, consultation or reports: the three book tables +(Table 15 / 17 / 18) are not all reproduced (see +`docs/tasks/PROGRESS-astrologer-rulings-batch2-20261003.md`, task red line 2). +""" + +from __future__ import annotations + +from typing import Any, Dict, List, Optional + +try: # scripts/ on sys.path + import narayana_dasha as nd +except ImportError: # pragma: no cover - package import + from scripts import narayana_dasha as nd + +PROFILE = "sanjay_rath" +DURATION_PROFILE = "jaimini_odd_footed_dignity_v2" +DUAL_LORD_PROFILE = "jaimini_dual_lord_source_v1" +SOURCE = ("Sanjay Rath, Narayana Dasa — rule ledger and Tables 10/11/13/14 " + "(ported from upstream yinduzhanxing c7117f92)") +SIGNS = nd.SIGNS + + +def md_order(seed_sign_idx: int, planet_lons: Dict[str, float]) -> Dict[str, Any]: + """MD sign order for one start sign, with the rule that decided it.""" + saturn = nd._get_planet_sign("Saturn", planet_lons) == seed_sign_idx + ketu = nd._get_planet_sign("Ketu", planet_lons) == seed_sign_idx + if saturn: + order = nd.build_narayana_sign_sequence(seed_sign_idx, profile="rath_saturn_table11_v1") + direction = "table11_saturn_zodiacal" + elif ketu: + table10 = nd.build_narayana_sign_sequence(seed_sign_idx, profile="rath_general_table10_v1") + order = [(2 * seed_sign_idx - sign) % 12 for sign in table10] + direction = "table10_reversed_ketu" + else: + order = nd.build_narayana_sign_sequence(seed_sign_idx, profile="rath_general_table10_v1") + direction = "table10_general" + return {"order": order, "direction": direction, "saturn_in_seed": saturn, "ketu_in_seed": ketu} + + +def _ad_order_profile(md_sign_idx: int, planet_lons: Dict[str, float]) -> str: + if nd._get_planet_sign("Saturn", planet_lons) == md_sign_idx: + return "rath_saturn_table11_v1" + if nd._get_planet_sign("Ketu", planet_lons) == md_sign_idx: + return "rath_ketu_table14_v1" + return "rath_table13_v1" + + +def mahadasha_sequence(seed_sign_idx: int, planet_lons: Dict[str, float], + *, start_age: float = 0.0, cycle_count: int = 2) -> Dict[str, Any]: + """Rath MD rows from one start sign (cycle 2 = twelve minus cycle 1).""" + order = md_order(seed_sign_idx, planet_lons) + rows: List[Dict[str, Any]] = [] + cursor = float(start_age) + for position, sign_idx in enumerate(order["order"], start=1): + lord = nd._resolve_narayana_lord(sign_idx, planet_lons, dual_lord_profile=DUAL_LORD_PROFILE) + lord_sign_idx = nd._get_planet_sign(lord, planet_lons) + if lord_sign_idx is None: + lord_sign_idx = sign_idx + years, adjustment = nd.calculate_narayana_period_years(sign_idx, lord, lord_sign_idx, profile=DURATION_PROFILE) + rows.append({ + "sign": SIGNS[sign_idx], "sign_idx": sign_idx, "lord": lord, + "lord_in_sign": SIGNS[lord_sign_idx], "lord_sign_idx": lord_sign_idx, + "years": years, "dignity_adjustment": adjustment, "cycle_index": 1, + "period_key": f"narayana_rath:1:{position:02d}:{SIGNS[sign_idx]}", + "start_age": round(cursor, 4), "end_age": round(cursor + years, 4), + }) + cursor += years + if cycle_count == 2: + for position, first in enumerate(list(rows), start=1): + years = 12 - first["years"] + rows.append({**first, "years": years, "dignity_adjustment": None, "cycle_index": 2, + "period_key": f"narayana_rath:2:{position:02d}:{first['sign']}", + "start_age": round(cursor, 4), "end_age": round(cursor + years, 4)}) + cursor += years + return {**order, "seed_sign": SIGNS[seed_sign_idx], "seed_sign_idx": seed_sign_idx, "mahadasha": rows} + + +def antardasha(md_row: Dict[str, Any], planet_lons: Dict[str, float]) -> List[Dict[str, Any]]: + """Twelve equal ADs from the MD sign (Table 13 / 11 / 14).""" + profile = _ad_order_profile(md_row["sign_idx"], planet_lons) + rows = nd.subdivide_narayana_equal_order( + md_row, start_sign_idx=md_row["sign_idx"], order_profile=profile, level="AD", + parent_key="parent_md", parent_name=md_row["sign"], + ) + return rows + + +def calc_narayana_rath(lagna_sign_idx: int, planet_lons: Dict[str, float], + *, seed_sign_idx: Optional[int] = None, cycle_count: int = 2) -> Dict[str, Any]: + """Rath Narayana Dasha for one chart. + + `seed_sign_idx` overrides the start sign (book-table replay only). + """ + if seed_sign_idx is not None: + selection = {"status": "explicit", "selected_sign_idx": seed_sign_idx} + else: + selection = nd.select_narayana_seed_sign(lagna_sign_idx, planet_lons) + base = { + "profile": PROFILE, + "duration_profile": DURATION_PROFILE, + "dual_lord_rule": DUAL_LORD_PROFILE, + "source": SOURCE, + "lagna_sign": SIGNS[lagna_sign_idx], + "seed_selection": selection, + } + if selection["status"] in ("selected", "explicit"): + seq = mahadasha_sequence(selection["selected_sign_idx"], planet_lons, cycle_count=cycle_count) + return {**base, "status": "partial_verified" if selection["status"] == "selected" else "explicit_seed", + "seed_sign": seq["seed_sign"], + "seed_basis": ("explicit_seed" if selection["status"] == "explicit" + else "stronger_of_lagna_seventh:" + "+".join(selection.get("selection_levels", []))), + "direction": seq["direction"], "mahadasha": seq["mahadasha"]} + alternatives = { + SIGNS[idx]: mahadasha_sequence(idx, planet_lons, cycle_count=cycle_count) + for idx in (lagna_sign_idx, (lagna_sign_idx + 6) % 12) + } + lagna_seq = alternatives[SIGNS[lagna_sign_idx]] + return {**base, "status": "parameter_sensitive", "reason": selection.get("reason"), + "seed_sign": None, "seed_basis": "tie_lagna_seventh_both_listed", + "direction": None, "mahadasha": None, + "alternatives": {sign: {"seed_sign": seq["seed_sign"], "direction": seq["direction"], + "mahadasha": seq["mahadasha"]} for sign, seq in alternatives.items()}, + "lagna_start_mahadasha": lagna_seq["mahadasha"]} diff --git a/tests/test_narayana_rath_book_tables.py b/tests/test_narayana_rath_book_tables.py new file mode 100644 index 00000000..be02bb9e --- /dev/null +++ b/tests/test_narayana_rath_book_tables.py @@ -0,0 +1,107 @@ +"""Sanjay Rath Narayana Dasha profile vs the book tables (BUG-1215, round-4 Q4). + +The rule ledger and the book rows are ported verbatim from upstream +yinduzhanxing c7117f92 (`references/oracle/sanjay_rath_narayana_book_ledger_2026_08_28.json`, +Tables 15 / 17 / 18). Birth data are the published charts the book tables are +computed for (public figures / the book's own example chart): + +- Table 15: Sri Aurobindo, 1872-08-15 05:00 LMT, Calcutta 22N34 88E22; +- Table 17: the book's "standard nativity", 1963-08-07 21:15 IST, Sambalpur 21N28 84E01; +- Table 18: Indira Gandhi, 1917-11-19 23:11 IST, Allahabad 25N27 81E51. + +Lahiri ayanamsa. With the book's start sign, all 36 MD signs and years match. +The start sign itself is not reproduced by the existing strength rule for +Tables 17 and 18 — pinned below as the current state (task red line 2: the +profile stays out of every user-visible surface and out of scoring). +""" + +from __future__ import annotations + +import hashlib +import json +import re +from pathlib import Path + +import pytest + +from scripts.jyotish_engine import compute_chart_data +from scripts.narayana_rath import SIGNS, antardasha, calc_narayana_rath, md_order + +ROOT = Path(__file__).resolve().parents[1] +LEDGER = ROOT / "references/oracle/sanjay_rath_narayana_book_ledger_2026_08_28.json" +UPSTREAM_BLOBS = { # c7117f92 + "references/oracle/sanjay_rath_narayana_book_ledger_2026_08_28.json": "a52f181c22ba1b1e6a330b73711eb0e791785e56", + "references/oracle/chara_narayana_book_golden_cases_2026_08_28.json": "552c40448502c15a47035da064914dd76a4d919b", + "docs/research/sanjay_rath_narayana_book_ledger_2026_08_28.md": "8d18c2320d32dcd364784351ac52dc8bcb4ef053", +} +CHARTS = { + "Table 15": (1872, 8, 15, 5, 0, 22.5667, 88.3667, 88.3667 / 15), + "Table 17": (1963, 8, 7, 21, 15, 21.4667, 84.0167, 5.5), + "Table 18": (1917, 11, 19, 23, 11, 25.45, 81.85, 5.5), +} + + +def _book(table: str) -> dict: + return next(case for case in json.loads(LEDGER.read_text(encoding="utf-8"))["golden_cases"] if case["source_table"] == table) + + +def _chart(table: str): + chart, asc, *_ = compute_chart_data(*CHARTS[table], ayanamsa_name="lahiri") + return asc, {name: row["degree"] for name, row in chart["planets"].items()} + + +@pytest.mark.parametrize("path,blob", sorted(UPSTREAM_BLOBS.items())) +def test_ported_files_are_the_upstream_blobs(path: str, blob: str) -> None: + data = (ROOT / path).read_bytes() + assert hashlib.sha1(b"blob %d\0" % len(data) + data).hexdigest() == blob + + +@pytest.mark.parametrize("table", sorted(CHARTS)) +def test_book_start_sign_reproduces_order_and_years(table: str) -> None: + book = _book(table) + asc, lons = _chart(table) + result = calc_narayana_rath(asc, lons, seed_sign_idx=SIGNS.index(book["start_sign"]), cycle_count=1) + assert [row["sign"] for row in result["mahadasha"]] == [row[0] for row in book["rows"]] + assert [row["years"] for row in result["mahadasha"]] == [row[1] for row in book["rows"]] + + +def test_saturn_in_the_start_sign_gives_the_zodiacal_order() -> None: + asc, lons = _chart("Table 18") # Saturn in Cancer + assert md_order(SIGNS.index("Cancer"), lons)["direction"] == "table11_saturn_zodiacal" + asc, lons = _chart("Table 15") + assert md_order(SIGNS.index("Cancer"), lons)["direction"] == "table10_general" + + +def test_start_sign_selection_current_state() -> None: + """Existing strength rule (occupants, then aspect by Jupiter / Mercury / + lord): Table 15 right; Table 17 picks Virgo (book Pisces: Pisces holds its + own lord Jupiter, which the aspect-only rule does not count); Table 18 ties + (book Cancer). Update this test together with the rule once the astrologer + answers; until then the profile is not wired anywhere.""" + asc, lons = _chart("Table 15") + assert (calc_narayana_rath(asc, lons)["status"], calc_narayana_rath(asc, lons)["seed_sign"]) == ("partial_verified", "Cancer") + asc, lons = _chart("Table 17") + assert calc_narayana_rath(asc, lons)["seed_sign"] == "Virgo" + asc, lons = _chart("Table 18") + result = calc_narayana_rath(asc, lons) + assert result["status"] == "parameter_sensitive" and result["reason"] == "later_narayana_sign_strength_rules_required" + assert set(result["alternatives"]) == {"Cancer", "Capricorn"} + assert [row["sign"] for row in result["alternatives"]["Cancer"]["mahadasha"][:12]] == [row[0] for row in _book("Table 18")["rows"]] + + +def test_antardasha_is_twelve_equal_parts_from_the_md_sign() -> None: + asc, lons = _chart("Table 15") + md = calc_narayana_rath(asc, lons, cycle_count=1)["mahadasha"][0] # Cancer, 7 years; Mars and Jupiter there + rows = antardasha(md, lons) + assert [row["sign"] for row in rows][:3] == ["Cancer", "Gemini", "Taurus"] # Table 13, even sign reverse + assert all(abs(row["years"] - 7 / 12) < 1e-6 for row in rows) + asc, lons = _chart("Table 18") + md = calc_narayana_rath(asc, lons, seed_sign_idx=SIGNS.index("Cancer"), cycle_count=1)["mahadasha"][0] + assert [row["sign"] for row in antardasha(md, lons)][:3] == ["Cancer", "Leo", "Virgo"] # Saturn in Cancer: Table 11 + + +def test_rath_profile_is_not_wired_into_any_product_path() -> None: + pattern = re.compile(r"\bnarayana_rath\b") + users = sorted(path.name for path in (ROOT / "scripts").rglob("*.py") + if path.name != "narayana_rath.py" and pattern.search(path.read_text(encoding="utf-8"))) + assert users == []