fix(ci): pin Lahiri on CLI smoke fixtures after Raman default

Raman is the product default; these dignity and Dasha assertions were measured under Lahiri and must pass the ayanamsa explicitly.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-08-20 22:05:13 +08:00
parent 8010245981
commit 4b02f63a57
2 changed files with 25 additions and 2 deletions
+16
View File
@@ -4971,6 +4971,22 @@
- 复发自:BUG-328(当时为了露出聊天改成下半屏分栏,叠层低于输入框) - 复发自:BUG-328(当时为了露出聊天改成下半屏分栏,叠层低于输入框)
- 修复版本:9670b661 - 修复版本:9670b661
## BUG-331 | Raman 默认岁差后,Lahiri 校准的 CLI smoke 仍按旧盘面断言
- 状态:resolved
- 首次发现:2026-08-20
- 最近更新:2026-08-20
- 影响面:Gitea `backend-quality-gate` Python quick quality gate、`tests/test_cli_smoke.py``tests/golden/golden_cases.json` 只被 JSON 校验通过后进入同一套 pytest
- 用户现象:质量门禁打印 `json ok tests/golden/golden_cases.json` 后继续跑 `audit_*` / `validate_bphs_invariants` / `pytest tests/test_cli_smoke.py ...`。JSON 本身有效;失败发生在 CLI smokeDasha 起始时刻、D9 Jupiter 尊严、Darakaraka 行星与 Navamsa 敌友标签对不上。
- 触发条件:产品默认岁差改为 Raman 后,未给 Lahiri 校准样本显式传 `--ayanamsa lahiri`,再跑 quick quality gate。
- 根因:这些断言锁的是旧 Lahiri 盘面(例如 `1952-03-19T20:24:47``NEECHA_BHANGA`、DK=`Sun`)。默认 Raman 后月亮分宿与分盘换升改变,断言失败。`golden_cases.json` 的 SAV=337 等不变量与岁差无关,JSON 校验和 golden runner 仍通过。
- 修复:Lahiri 校准的 dignity / Dasha / DK 样本显式传 `--ayanamsa lahiri`。产品默认仍是 Raman;Raman 元数据测试继续显式传 `raman`
- 验证:`tests/test_cli_smoke.py` 中上述失败项;`tests/test_cli_smoke.py::test_full_reading_golden_cases_cover_user_ready_output`
- 防复发:对照样本必须显式写岁差名,不得依赖引擎默认;改 `DEFAULT_AYANAMSA_NAME` 后必须跑 `tests/test_cli_smoke.py` 与 quick quality gate 的 CORE pytest 列表。
- 相关记录:无
- 复发自:无
- 修复版本:待发布
## BUG-329 | 生时纠正 Agent 回答在结算后一次性出现,推理中无法停止 ## BUG-329 | 生时纠正 Agent 回答在结算后一次性出现,推理中无法停止
- 状态:resolved - 状态:resolved
+9 -2
View File
@@ -24,6 +24,9 @@ BASE_BIRTH_ARGS = [
"--lon", "116.4", "--lon", "116.4",
"--tz", "8", "--tz", "8",
] ]
# Lahiri-calibrated comparison fixtures. Product default is Raman; these
# assertions lock Dasha/D9/DK labels that were measured under Lahiri.
LAHIRI_ARGS = ["--ayanamsa", "lahiri"]
def run_engine(*args: str) -> dict: def run_engine(*args: str) -> dict:
@@ -138,6 +141,7 @@ def test_chart_reports_richer_d1_dignity_labels_for_user_case() -> None:
"--lat", "37.7749", "--lat", "37.7749",
"--lon", "-122.4194", "--lon", "-122.4194",
"--tz", "8", "--tz", "8",
*LAHIRI_ARGS,
) )
assert result["planets"]["Jupiter"]["sign"] == "Gemini" assert result["planets"]["Jupiter"]["sign"] == "Gemini"
@@ -227,6 +231,7 @@ def test_full_reading_accepts_second_and_preserves_birth_time_precision() -> Non
"--lat", "37.7749", "--lat", "37.7749",
"--lon", "-122.4194", "--lon", "-122.4194",
"--tz", "8", "--tz", "8",
*LAHIRI_ARGS,
"--today", "2026-06-24", "--today", "2026-06-24",
"--transit-date", "2026-06-24", "--transit-date", "2026-06-24",
) )
@@ -699,7 +704,7 @@ def test_full_reading_exposes_sensitive_point_modules() -> None:
def test_full_reading_uses_d9_context_for_navamsa_dignity() -> None: def test_full_reading_uses_d9_context_for_navamsa_dignity() -> None:
result = run_engine("full-reading", *BASE_BIRTH_ARGS) result = run_engine("full-reading", *BASE_BIRTH_ARGS, *LAHIRI_ARGS)
d9_jupiter = result["modules"]["d9_navamsa_expanded"]["Jupiter"] d9_jupiter = result["modules"]["d9_navamsa_expanded"]["Jupiter"]
assert d9_jupiter["sign"] == "Capricorn" assert d9_jupiter["sign"] == "Capricorn"
@@ -717,6 +722,7 @@ def test_full_reading_uses_d9_context_for_darakaraka_dignity() -> None:
"--lat", "35.6895", "--lat", "35.6895",
"--lon", "139.6917", "--lon", "139.6917",
"--tz", "9", "--tz", "9",
*LAHIRI_ARGS,
) )
darakaraka = result["modules"]["jaimini"]["darakaraka"] darakaraka = result["modules"]["jaimini"]["darakaraka"]
@@ -736,6 +742,7 @@ def test_full_reading_uses_d9_context_for_vimsopaka_navamsa_dignity() -> None:
"--lat", "35.6895", "--lat", "35.6895",
"--lon", "139.6917", "--lon", "139.6917",
"--tz", "9", "--tz", "9",
*LAHIRI_ARGS,
) )
navamsa = result["modules"]["vimsopaka"]["Sun"]["varga_scores"]["Navamsa"] navamsa = result["modules"]["vimsopaka"]["Sun"]["varga_scores"]["Navamsa"]
@@ -743,7 +750,7 @@ def test_full_reading_uses_d9_context_for_vimsopaka_navamsa_dignity() -> None:
def test_full_reading_maps_advanced_dignity_labels_into_vimsopaka_scores() -> None: def test_full_reading_maps_advanced_dignity_labels_into_vimsopaka_scores() -> None:
result = run_engine("full-reading", *BASE_BIRTH_ARGS) result = run_engine("full-reading", *BASE_BIRTH_ARGS, *LAHIRI_ARGS)
jupiter_d9 = result["modules"]["d9_navamsa_expanded"]["Jupiter"] jupiter_d9 = result["modules"]["d9_navamsa_expanded"]["Jupiter"]
assert jupiter_d9["dignity"] == "NEECHA_BHANGA" assert jupiter_d9["dignity"] == "NEECHA_BHANGA"