fix(functional): yogakaraka needs a kendra among 4/7/10 and a trikona among 5/9; grouping unchanged (BUG-1158 partial)
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:
co-authored by
Claude Opus 5.5
parent
81f6e5130a
commit
ffafa28b79
@@ -0,0 +1,33 @@
|
||||
"""BUG-1158 partial (product decision 2026-10-02): yogakaraka needs a kendra among
|
||||
4/7/10 AND a trikona among 5/9; the benefic / malefic / neutral grouping is unchanged."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from scripts.functional_benefics import SIGNS, derive_functional_benefic_malefic
|
||||
|
||||
YOGAKARAKAS = {
|
||||
"Aries": [], "Taurus": ["Saturn"], "Gemini": [], "Cancer": ["Mars"], "Leo": ["Mars"], "Virgo": [],
|
||||
"Libra": ["Saturn"], "Scorpio": [], "Sagittarius": [], "Capricorn": ["Venus"], "Aquarius": ["Venus"], "Pisces": [],
|
||||
}
|
||||
# v1 grouping, unchanged by the narrow fix (lagna lords stay benefic).
|
||||
LAGNA_LORD_BENEFIC = {
|
||||
"Aries": "Mars", "Taurus": "Venus", "Gemini": "Mercury", "Virgo": "Mercury", "Libra": "Venus",
|
||||
"Scorpio": "Mars", "Sagittarius": "Jupiter", "Capricorn": "Saturn", "Aquarius": "Saturn", "Pisces": "Jupiter",
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize("sign", SIGNS)
|
||||
def test_yogakaraka_needs_kendra_4_7_10_and_trikona_5_9(sign: str) -> None:
|
||||
result = derive_functional_benefic_malefic(sign)
|
||||
assert result["yogakarakas"] == YOGAKARAKAS[sign]
|
||||
for planet in result["yogakarakas"]:
|
||||
houses = set(result["owned_houses"][planet])
|
||||
assert houses & {4, 7, 10} and houses & {5, 9}
|
||||
assert planet in result["functional_benefics"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("sign", sorted(LAGNA_LORD_BENEFIC))
|
||||
def test_lagna_lord_stays_benefic(sign: str) -> None:
|
||||
assert LAGNA_LORD_BENEFIC[sign] in derive_functional_benefic_malefic(sign)["functional_benefics"]
|
||||
@@ -63,7 +63,10 @@ def test_functional_benefic_module_calculates_lagna_roles_without_planets() -> N
|
||||
assert functional["owned_houses"]["Venus"] == [3, 10]
|
||||
assert "Sun" in functional["functional_benefics"]
|
||||
assert "Venus" in functional["functional_malefics"]
|
||||
assert functional["source"] == "strict_functional_benefic_malefic_v1"
|
||||
# 原值: source == "strict_functional_benefic_malefic_v1"
|
||||
# 新值: "strict_functional_benefic_malefic_v2"
|
||||
# 原因: 产品 2026-10-02 决定 yogakaraka 只认同时主 4/7/10 之一与 5/9 之一(BUG-1158 部分修复),吉凶分组不变
|
||||
assert functional["source"] == "strict_functional_benefic_malefic_v2"
|
||||
|
||||
|
||||
def test_relationship_functional_layer_uses_ascendant_even_when_planets_missing() -> None:
|
||||
@@ -101,4 +104,7 @@ def test_oracle_functional_benefics_cli_exposes_json_contract() -> None:
|
||||
assert "Sun" in report["functional_benefics"]
|
||||
assert "Venus" in report["functional_malefics"]
|
||||
assert "Mars" in report["yogakarakas"]
|
||||
assert report["source"] == "strict_functional_benefic_malefic_v1"
|
||||
# 原值: source == "strict_functional_benefic_malefic_v1"
|
||||
# 新值: "strict_functional_benefic_malefic_v2"
|
||||
# 原因: 产品 2026-10-02 决定 yogakaraka 只认同时主 4/7/10 之一与 5/9 之一(BUG-1158 部分修复),吉凶分组不变
|
||||
assert report["source"] == "strict_functional_benefic_malefic_v2"
|
||||
|
||||
Reference in New Issue
Block a user