diff --git a/docs/research/ACTIVE_FRONTS.md b/docs/research/ACTIVE_FRONTS.md index 553627ca..8f5881aa 100644 --- a/docs/research/ACTIVE_FRONTS.md +++ b/docs/research/ACTIVE_FRONTS.md @@ -24,6 +24,7 @@ This file is the small index for the current engineering fronts that still drive - `/Users/wuyongnaren/Documents/印度占星/docs/research/wealth_adjudicator_fifth_pass_audit_2026_06_28.md` - `/Users/wuyongnaren/Documents/印度占星/docs/research/wealth_adjudicator_sixth_pass_audit_2026_06_28.md` - `/Users/wuyongnaren/Documents/印度占星/docs/research/wealth_adjudicator_sixth_pass_avayogi_boundary_2026_06_28.md` +- `/Users/wuyongnaren/Documents/印度占星/docs/research/wealth_adjudicator_seventh_pass_ashtakavarga_bridge_2026_06_28.md` - `/Users/wuyongnaren/Documents/印度占星/references/event_judgment_wealth.md` ## Oracle Closure diff --git a/docs/research/wealth_adjudicator_seventh_pass_ashtakavarga_bridge_2026_06_28.md b/docs/research/wealth_adjudicator_seventh_pass_ashtakavarga_bridge_2026_06_28.md new file mode 100644 index 00000000..5510dd28 --- /dev/null +++ b/docs/research/wealth_adjudicator_seventh_pass_ashtakavarga_bridge_2026_06_28.md @@ -0,0 +1,103 @@ +# Wealth Adjudicator Seventh Pass Ashtakavarga Bridge (2026-06-28) + +## What This Pass Freezes + +This pass does not invent a new finance scoring path. + +It locks an already-landed bridge in `/Users/wuyongnaren/Documents/印度占星/mcp_server.py` with an explicit regression test and puts it back into the audit trail. + +The bridge is: + +- `present_evidence.ashtakavarga_finance_support` +- `event_judgement.secondary_context += ["ashtakavarga_wealth_support"]` + +when `Ashtakavarga house_scores` show supportive SAV values on wealth houses. + +## Boundary + +This bridge remains a secondary modifier. + +It does: + +- read native `modules.ashtakavarga.house_scores` +- inspect wealth houses `2` and `11` +- emit a compact evidence block +- append context for downstream finance adjudication + +It does not: + +- recalculate Ashtakavarga +- override `wealth_promise_strength` +- mint a new payout label +- bypass D2 / Dasha / convergence requirements + +## Contract + +The frozen structure is: + +```json +{ + "ashtakavarga_finance_support": { + "level": "supportive | none", + "source": "ashtakavarga_house_scores_bridge_v1", + "target_houses": [2, 11], + "signals": ["wealth_sav_support"], + "raw_scores": { + "2": 33, + "11": 35 + } + } +} +``` + +And the finance event judgement can add: + +```json +{ + "secondary_context": ["ashtakavarga_wealth_support"] +} +``` + +## Regression Locked + +Test file: + +- `/Users/wuyongnaren/Documents/印度占星/tests/test_mcp_strict_workflow_finance.py` + +Locked case: + +- supportive SAV score on house `2` +- supportive SAV score on house `11` +- native Dhana support already present + +Expected: + +- `present_evidence.ashtakavarga_finance_support.level == "supportive"` +- `secondary_context` includes `ashtakavarga_wealth_support` + +## Why This Matters + +This closes a small but important gap: + +- the code path was present +- the strict workflow test suite had started to expect it +- but the bridge had not yet been frozen into the research trail + +That is exactly how high-value logic turns back into an underused fragment. This pass prevents that drift. + +## Verification + +Ran: + +```bash +python3 -m pytest tests/test_mcp_strict_workflow_finance.py -q +python3 -m pytest tests/test_mcp_strict_workflow_career.py tests/test_mcp_strict_workflow_relationship.py tests/test_mcp_strict_workflow_finance.py -q +``` + +## Still Open After This Pass + +- richer wealth use of Ashtakavarga beyond simple supportive bridge +- Vimsopaka semantic mapping for `NEECHA_BHANGA / GREAT_FRIEND / GREAT_ENEMY` +- functional-role guardrail +- VedAstro adapter MVP +- oracle pending packets and benchmark closure diff --git a/tests/test_mcp_strict_workflow_finance.py b/tests/test_mcp_strict_workflow_finance.py index 0d2cbcce..ccf46280 100644 --- a/tests/test_mcp_strict_workflow_finance.py +++ b/tests/test_mcp_strict_workflow_finance.py @@ -186,6 +186,48 @@ def test_collect_strict_evidence_finance_derives_wealth_promise_from_dhana_yogas assert strict["event_judgement"]["payout_label"] == "public_wealth_status" +def test_collect_strict_evidence_finance_folds_wealth_ashtakavarga_support() -> None: + result = { + "modules": { + "varga_full": {"D2_Hora": {"summary": "ok"}, "D10_Dasamsa": {"summary": "ok"}}, + "shadbala": {"planets": {"Venus": {"total_rupa": 8.2}}}, + "ashtakavarga": { + "house_scores": { + "2": 33, + "11": 35, + "10": {"sav": 32}, + } + }, + "dasha": {"current_dasha": {"mahadasha": "Venus", "antardasha": "Mercury"}}, + "narayana_dasha": {"current_dasha": {"sign": "Taurus", "lord": "Venus"}}, + "dasa_convergence": { + "domain_activations": { + "wealth_family": {"convergence_level": "L1", "probability": "+15-20%"}, + "gains_wishes": {"convergence_level": "L1", "probability": "+15-20%"}, + "career_status": {"convergence_level": "L1", "probability": "+15-20%"}, + } + }, + "yogas_doshas": { + "dhana_yogas": { + "yogas": [{"type": "Dhana Yoga", "strength": "moderate"}], + "summary": "Dhana Yoga检测:共1个格局", + } + }, + } + } + + strict = _collect_strict_evidence("finance", result) + + assert strict["present_evidence"]["ashtakavarga_finance_support"] == { + "level": "supportive", + "source": "ashtakavarga_house_scores_bridge_v1", + "target_houses": [2, 11], + "signals": ["wealth_sav_support"], + "raw_scores": {"2": 33, "11": 35}, + } + assert "ashtakavarga_wealth_support" in strict["event_judgement"]["secondary_context"] + + def test_collect_strict_evidence_finance_combines_dhana_and_lakshmi_hooks() -> None: result = { "modules": {