Strengthen finance adjudication promise scoring
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
# Wealth Adjudicator Second-Pass Audit (2026-06-27)
|
||||
|
||||
> 目标:在第一轮 `public_wealth_status` 护栏落地后,继续修复财富裁决器的两个核心问题:
|
||||
> 1. `wealth promise strength` 没有入分
|
||||
> 2. `income_growth` 与 `public_wealth_status` 仍会互相吞并
|
||||
|
||||
---
|
||||
|
||||
## 1. 本轮修复点
|
||||
|
||||
本轮没有继续扩新标签,而是只做两件事:
|
||||
|
||||
1. **把 `wealth_promise_strength` 接入 finance adjudicator 显式计分**
|
||||
- `strong` -> `+20`
|
||||
- `moderate` -> `+10`
|
||||
2. **增加 `income_growth` 优先分流**
|
||||
- 当 `gains_convergence` 很强
|
||||
- 且 `wealth/career` 公众财富信号不够强
|
||||
- 则优先落 `income_growth`
|
||||
|
||||
这意味着财富裁决器不再只看:
|
||||
|
||||
- `wealth_convergence`
|
||||
- `gains_convergence`
|
||||
- `career_convergence`
|
||||
- `dual dasha`
|
||||
|
||||
而开始把“本命财富 promise”当成正式入分项。
|
||||
|
||||
---
|
||||
|
||||
## 2. 新增回归边界
|
||||
|
||||
本轮新增并跑通两条主仓回归测试:
|
||||
|
||||
1. `Britney-like`
|
||||
目标:当收益爆发明显高于公众财富身份信号时,应更偏 `income_growth`
|
||||
2. `Rihanna-like`
|
||||
目标:当 `wealth promise strength = strong` 时,允许从第一轮的 under-lift 状态被抬升到更合理的 `public_wealth_status`
|
||||
|
||||
---
|
||||
|
||||
## 3. Before / After
|
||||
|
||||
| case | first-pass outcome | second-pass outcome | change |
|
||||
|---|---|---|---|
|
||||
| Britney-like breakout income growth | `moderate_probability_window` + `public_wealth_status` | `moderate_probability_window` + `income_growth` | 修复了标签误吸收,收益爆发不再被误说成公众财富身份 |
|
||||
| Rihanna-like commercial empire visibility | `weak_window_needs_confirmation` 或依赖外层 workaround | `moderate_probability_window` + `public_wealth_status` | 通过 `wealth_promise_strength` 显式入分,终于能把强财富 promise 兑现到标签层 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 关键结论
|
||||
|
||||
### 4.1 `wealth promise strength` 已经从“解释层概念”进入“裁决层分数”
|
||||
|
||||
这是本轮最值钱的变化。
|
||||
|
||||
之前:
|
||||
|
||||
- `Lakshmi / Dhana / Yogi` 模板更多停留在解释和研究文档里
|
||||
- finance adjudicator 不真的把它们当分数
|
||||
|
||||
现在:
|
||||
|
||||
- `wealth_promise_strength` 已成为显式计分输入
|
||||
|
||||
虽然它还不是最终形态,但财富裁决器已经开始真正吸收本仓现成的财富 promise 资产。
|
||||
|
||||
### 4.2 `income_growth` 和 `public_wealth_status` 第一次开始分家
|
||||
|
||||
第一轮护栏虽然堵住了“弱窗口乱贴公众财富标签”,但 `Britney-like` 仍会被误贴成 `public_wealth_status`。
|
||||
|
||||
第二轮后:
|
||||
|
||||
- `Britney-like` -> `income_growth`
|
||||
- `Rihanna-like` -> `public_wealth_status`
|
||||
|
||||
这说明财富 adjudicator 不再把所有“财富变好”都说成同一种事。
|
||||
|
||||
### 4.3 `Rihanna-like` 终于从“强样本漏判”进入“可校准命中”
|
||||
|
||||
第一轮里最刺眼的问题是:
|
||||
|
||||
- `Rihanna` 这种 textbook 级商业财富样本
|
||||
- 竟然还抬不起来
|
||||
|
||||
现在这条样本第一次被 `wealth promise strength` 正式救活。
|
||||
这说明问题的确不是“标签词库不够”,而是 promise 分没进来。
|
||||
|
||||
---
|
||||
|
||||
## 5. 当前仍未完成的部分
|
||||
|
||||
本轮虽然把骨架往前推了一截,但还没有结束:
|
||||
|
||||
1. `wealth_promise_strength` 现在还是一个抽象输入,尚未从完整 `full-reading.modules.yogas_doshas + template hooks` 自动汇总
|
||||
2. `Lakshmi / Dhana / Yogi` 还没有全部自动折叠成统一 promise 指标
|
||||
3. `liquidity_cashout` 依然没有建立独立 uplift 逻辑
|
||||
4. `public_wealth_status` 与 `asset_accumulation` 还没有完全分开
|
||||
|
||||
---
|
||||
|
||||
## 6. 下一轮最值钱的动作
|
||||
|
||||
下一轮不该再泛泛讨论“财富准不准”,而应直接做这三件事:
|
||||
|
||||
1. 从 `full-reading.modules.yogas_doshas.dhana_yogas` 自动提取 `wealth_promise_strength`
|
||||
2. 把 `lakshmi_dhana_activation_chain` / `yogi_asc_tight_orb_wealth` 接成真实 promise hook,而不是手工传入
|
||||
3. 增加 `asset_accumulation` vs `public_wealth_status` 的回归样本
|
||||
|
||||
---
|
||||
|
||||
## 7. 本轮状态判断
|
||||
|
||||
本轮可以诚实宣称:
|
||||
|
||||
- 财务裁决器已经不再只是 convergence + dasha 的薄聚合器
|
||||
- 本命财富 promise 已开始进入显式计分
|
||||
- `income_growth` 与 `public_wealth_status` 已出现第一层真实分流
|
||||
|
||||
但还不能宣称:
|
||||
|
||||
- 财富 adjudicator 已经完整封顶
|
||||
- Lakshmi / Dhana / Yogi 已经全部自动闭环进裁决器
|
||||
|
||||
更准确的说法是:
|
||||
|
||||
> 财富 adjudicator 已经从“行为护栏阶段”进入“财富 promise 真正入分阶段”,
|
||||
> 并开始具备区分收益爆发与公众财富身份的裁决能力。
|
||||
+9
-1
@@ -149,12 +149,15 @@ def _derive_event_judgement(route: str, present: Dict[str, Any], missing: List[s
|
||||
|
||||
if route == "finance":
|
||||
score = 0
|
||||
wealth_promise = present.get("wealth_promise_strength")
|
||||
wealth_promise_level = wealth_promise.get("level") if isinstance(wealth_promise, dict) else None
|
||||
score += 15 if present.get("d2_hora") else 0
|
||||
score += 10 if present.get("d10_dasamsa") else 0
|
||||
score += 10 if present.get("shadbala") else 0
|
||||
score += 10 if present.get("ashtakavarga_house_scores") else 0
|
||||
score += 10 if present.get("vimshottari_current") else 0
|
||||
score += 10 if present.get("narayana_current") else 0
|
||||
score += 20 if wealth_promise_level == "strong" else 10 if wealth_promise_level == "moderate" else 0
|
||||
score += max(
|
||||
_convergence_score(present.get("wealth_convergence")),
|
||||
_convergence_score(present.get("gains_convergence")),
|
||||
@@ -186,7 +189,12 @@ def _derive_event_judgement(route: str, present: Dict[str, Any], missing: List[s
|
||||
else:
|
||||
verdict = "insufficient_evidence"
|
||||
payout_label = None
|
||||
if public_wealth_lift and score >= 60:
|
||||
gains_score = _convergence_score(present.get("gains_convergence"))
|
||||
wealth_score = _convergence_score(present.get("wealth_convergence"))
|
||||
career_score = _convergence_score(present.get("career_convergence"))
|
||||
if gains_score >= 60 and wealth_score < 40 and career_score < 40:
|
||||
payout_label = "income_growth"
|
||||
elif public_wealth_lift and score >= 60:
|
||||
payout_label = "public_wealth_status"
|
||||
return {
|
||||
"event_family": "finance",
|
||||
|
||||
@@ -42,3 +42,41 @@ def test_finance_public_wealth_label_can_lift_visible_wealth_cases() -> None:
|
||||
assert judgement["score"] == 60
|
||||
assert judgement["verdict"] == "moderate_probability_window"
|
||||
assert judgement["payout_label"] == "public_wealth_status"
|
||||
|
||||
|
||||
def test_finance_prefers_income_growth_when_gains_outrun_public_status_signals() -> None:
|
||||
judgement = _derive_event_judgement(
|
||||
"finance",
|
||||
{
|
||||
"wealth_convergence": {"convergence_level": "L1", "probability": "+15-20%"},
|
||||
"gains_convergence": {"convergence_level": "L3", "probability": "50-65%"},
|
||||
"vimshottari_current": {"mahadasha": "Venus", "antardasha": "Moon"},
|
||||
"narayana_current": {"sign": "Gemini", "lord": "Mercury"},
|
||||
},
|
||||
[],
|
||||
)
|
||||
|
||||
assert judgement["event_family"] == "finance"
|
||||
assert judgement["score"] == 80
|
||||
assert judgement["verdict"] == "moderate_probability_window"
|
||||
assert judgement["payout_label"] == "income_growth"
|
||||
|
||||
|
||||
def test_finance_strong_wealth_promise_can_unlock_public_wealth_status() -> None:
|
||||
judgement = _derive_event_judgement(
|
||||
"finance",
|
||||
{
|
||||
"wealth_convergence": {"convergence_level": "L1", "probability": "+15-20%"},
|
||||
"gains_convergence": {"convergence_level": "L1", "probability": "+15-20%"},
|
||||
"career_convergence": {"convergence_level": "L1", "probability": "+15-20%"},
|
||||
"vimshottari_current": {"mahadasha": "Venus", "antardasha": "Mercury"},
|
||||
"narayana_current": {"sign": "Taurus", "lord": "Venus"},
|
||||
"wealth_promise_strength": {"level": "strong", "source": "dhana_yogas"},
|
||||
},
|
||||
[],
|
||||
)
|
||||
|
||||
assert judgement["event_family"] == "finance"
|
||||
assert judgement["score"] == 60
|
||||
assert judgement["verdict"] == "moderate_probability_window"
|
||||
assert judgement["payout_label"] == "public_wealth_status"
|
||||
|
||||
Reference in New Issue
Block a user