feat(narayana): show the Sanjay Rath version beside the legacy one (T4, BUG-1218)

Display only; scoring and timing conclusions keep the legacy algorithm.
narayana_legacy_label attaches a Rath view (seed, deciding level, direction,
24 MDs, running MD/AD) under modules.narayana_dasha.rath for the consultation
modules, full reading Step 4.13 and the CLI. Reference report: one summary
line under the legacy line plus Rath MD / running-MD AD tables (English terms
added). Evidence card: narayana_rath (label, seed sign, level, running MD) on
timing / annual cards only — other cards sit at 11,979 of 12,000 characters.
Goldens re-captured from the real engine.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-10-03 21:09:40 +08:00
co-authored by Claude Opus 5.5
parent 3264831a23
commit bf8d704708
13 changed files with 387 additions and 16 deletions
+30
View File
@@ -150,6 +150,31 @@ _PHRASES: dict[str, str] = {
# BUG-1215: narayana_legacy_label.LEGACY_NOTE_ZH
"旧算法(从上升起、一律顺行),待替换为 Sanjay Rath 版": "Legacy algorithm (starts from the Lagna, always zodiacal); to be replaced by Sanjay Rath's version",
"- 算法:": "- Algorithm: ",
# BUG-1218: narayana_legacy_label rath_report_lines_zh
"Sanjay Rath 版(并列参考,未进打分与时间轴结论):": "Sanjay Rath version (shown alongside for reference; not used in scoring or timing conclusions): ",
"Sanjay Rath 版(并列参考,未进打分与时间轴结论)": "Sanjay Rath version (shown alongside for reference; not used in scoring or timing conclusions)",
",宫主 ": ", lord ",
"起运宫未定,": "start sign undecided, ",
"- 并列:": "- Alongside: ",
"- 顺序:": "- Order: ",
"起运宫 ": "start sign ",
";当前大运 ": "; running MD ",
"- 当前大运 ": "- Running MD ",
"按 Table 10": "Table 10 order",
"土星在起运宫:顺行(Table 11)": "Saturn in the start sign: zodiacal (Table 11)",
"计都在起运宫:反向(Table 12)": "Ketu in the start sign: reversed (Table 12)",
"PyJHora 兼容:计都优先": "PyJHora-compatible: Ketu takes precedence",
"占据星数": "occupants",
"木星 / 水星 / 宫主三角色": "Jupiter / Mercury / lord roles",
"占据星尊贵": "occupant dignity",
"星座性质": "modality",
"宫主星座内度数": "lord's degree in sign",
"宫主落奇偶相反星座": "lord in a sign of opposite parity",
"大运年数": "dasha years",
"| Rath MD | 星座 | 宫主 | 起始年龄 | 结束年龄 | 年数 |": "| Rath MD | Sign | Lord | Start age | End age | Years |",
"| Rath AD | 星座 | 起始年龄 | 结束年龄 |": "| Rath AD | Sign | Start age | End age |",
" 的子运:比较 ": " sub-periods: compare ",
",12 等分": ", twelve equal parts",
# BUG-1214: tajika_year_lord.selection_basis_text (zh) → its en twin.
"年盘不全,暂用 Muntha 主星": "Annual chart incomplete; Muntha sign lord used for now",
"(Panchavargiya 为本地近似计算)": " (Panchavargiya is a local approximation)",
@@ -240,6 +265,11 @@ REGEX_EN: list[tuple[re.Pattern[str], str]] = [
f"the strongest by Panchavargiya, {m.group(2)}, is the year lord")),
(re.compile(r"五类候选都不照年盘上升,取全体 Panchavargiya 最强的([A-Za-z]+)"),
r"None of the five candidates aspects the annual Lagna; the strongest of all by Panchavargiya, \1, is the year lord"),
# BUG-1218 Rath Narayana report lines
(re.compile(r"(第 (\d) 级:([^)]+))"), r" (level \1: \2)"),
(re.compile(r"(第 (\d) 级)"), r" (level \1)"),
(re.compile(r" 与 ([^,]+),较强 ([^(]+)"), r" and \1; stronger \2"),
(re.compile(r",从宫主 (\S+) 所在 (\S+) 起"), r", from the sign of its lord \1, \2"),
# scripts/pl9_reader_export.py: f"第{house}宫主:{lord}"
(re.compile(r"第(\d+)宫主:"), r"Lord of house \1: "),
# scripts/aspects.py / jyotish_engine.py: f"{n}宫相位"