feat(narayana-rath): follow book p.43 for dual lords and node years (BUG-1227~1229)
Independent Staging Quality Gate / validate (push) Failing after 16m17s
Independent Staging Quality Gate / publish (push) Skipped

Round-7 option A is text-first, so Scorpio and Aquarius lords, the Ketu-only degree reversal, and node exaltation years now live in the Rath display layer. Scoring files stay unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-10-04 18:37:34 +08:00
co-authored by Cursor
parent 64c652eea2
commit baf4ae8b34
15 changed files with 604 additions and 84 deletions
@@ -592,7 +592,7 @@ function baseNatal(natal: Record<string, unknown>, gaps: string[]) {
* report. Product 2026-10-03: card budget 12,500, with the method checklist
* 18,500 (was 12,000 / 18,000, BUG-1160/1161).
*/
const RATH_MD_CARD_KEYS = ["sign", "start_age", "end_age"] as const;
const RATH_MD_CARD_KEYS = ["sign", "start_age", "end_age", "dual_lord_basis", "dual_lord_basis_en"] as const;
function baseTiming(timing: Record<string, unknown>, gaps: string[]) {
const sub = record(timing.dasha_sub_periods);
+2 -1
View File
@@ -350,7 +350,8 @@ const timingKeys = new Set([
"algorithmlabel",
// BUG-1218: the Sanjay Rath Narayana beside it (display only): label, start
// sign, deciding level and the running MD.
"rath", "seedsign", "strengthleveldecided",
// BUG-1227: Scorpio / Aquarius MDs also carry the one dual-lord sentence.
"rath", "seedsign", "strengthleveldecided", "duallordbasis", "duallordbasisen",
]);
const validationKeys = new Set([