- Root cause: rel_to_any() used associated(p,o) with bidirectional aspects (aspect(p,o) OR aspect(o,p)), but PyJHora only checks one-way (trik lord -> L1, malefic -> L1, maraka -> target)
- Fixed v144/v147/v148/v149/v152 to use one-way aspect() checks matching PyJHora source
- v144: L7 aspects L1/L12 (one-way)
- v147/v148: maraka aspects L1 (one-way)
- v149: trik lord aspects L1, malefic aspects L1 (one-way, both were already correct for second part)
- v152: maraka aspects malefic in lagna (one-way)
- v145/v150/v151 were already correct (used aspect() directly)
- Corrected test expectation for chart that genuinely has dharidhra via v149
- Added proper False-no-variant-triggers test case (Cancer asc)
- Hardcoded tests: 10/10 passed
- yoga_test_suite.json: 60 rules x True/False test cases generated
from the 60-chart benchmark (40 rules have both True+False)
- run_yoga_test_suite.py: test runner, 97/100 passed, 3 known FN
residuals (bahu_puthra, dehasthoulya, grihanasa)
- Inspired by PyJHora's hardcoded _from_planet_positions methodology
9 tests total, 8/9 passing. 1 failure is a test design issue
(dharidhra False case triggers v149 due to Saturn aspecting Sun).
Inspired by PyJHora's _from_planet_positions test methodology.