docs: astrologer rulings batch 1 records (BUG-1204..1212, CHANGELOG, PROGRESS, BLOCKED)
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
9392f0601b
commit
57c56dbb8e
@@ -1,5 +1,11 @@
|
||||
# BLOCKED
|
||||
|
||||
## TASK-astrologer-rulings-batch1:名人生平回测、`next build` / 首屏 gzip、真机待验(2026-10-03)
|
||||
|
||||
- **名人生平回测**:卡片字段有变化(`traditional_yogas` 文字带「成立条件 / 部分减弱」、`shadbala` 每星改为 `rupas / minimum_check / level`、`sav_by_house` 加 `sav_sodhita`、年盘 `varshesha_basis`)。执行环境没有任何模型凭据,按 `docs/testing/consult-affliction-backtest-20261001.md` 的命令重跑一轮,核对严重冲突数不高于第七轮。替代证据:两份 golden 用真实引擎重采且二次重采逐字节相同;前端全量测试失败清单与开工基线逐条一致。
|
||||
- **`next build` / 首屏 gzip**:`frontend/node_modules` 为工作树外软链,Turbopack 拒绝;本单不改页面与路由(只改 `src/lib` 与 `src/mastra` 的数据整形),未测。
|
||||
- **真机**:报告新表(Shadbala 两列、Bhava Bala 三分量、SAV 净化/原始、年主选法行)与卡片读法需登录态浏览器查看。
|
||||
|
||||
## TASK-consult-affliction-reading:年运 / 时运单领域轮卡在 12,000 字符口径(BUG-1160/1161,2026-10-01,2026-10-02 解除)
|
||||
|
||||
- ~~状态:blocked。年运、时运单领域轮加通用读法(733 字符)与年运清单(334)后最高 12,979 / 12,257,超过 `consult-condensed-checklist-20260927`「size」与 `consult-evidence-card-20260927`「model-visible size」的 12,000;`CONSULT_READING_BUDGET_BLOCKED = {annual, timing}` 让这两类轮次保持旧方法段。~~
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# 印度占星 Skill 更新日志
|
||||
|
||||
## 2026-10-03 — 占星师口径第一批:五大人格、孤月、落陷取消、行星力量、宫位力量、八分法、罗计本宫、年主标注
|
||||
|
||||
- 五大人格(Ruchaka、Bhadra、Hamsa、Malavya、Sasa)只按占星师定的一套判:只看上升起的角宫;逆行不再算破格;燃烧、与凶星同宫或被凶星照只写「部分减弱」并列原因,不再直接判失效。木星在 1/5/9 宫的「三方宫汉萨」这类非经典写法不再出现在卡片和报告上(BUG-1207)。
|
||||
- 孤月格(Kemadruma)只按一套判:月亮前后一宫没有火水木金土就成立,角宫有星或角宫只有罗睺计都都不解除;同一张盘不再同时出现「孤月」和「月亮旁边有星」(BUG-1206)。
|
||||
- 落陷取消不再叫「王者格(Neecha Bhanga Raja Yoga)」,只写「落陷取消」并列出成立的条件,报告里也不再归到「王权/事业」类(BUG-1205)。
|
||||
- 行星六力(Shadbala)先写是否达到 BPHS 最低要求,再写本站分档,分档后标「(网站分档)」(BUG-1208)。
|
||||
- 报告的「Bhava Bala 十二宫力量」改为正式三分量(宫主力 + 方向力 + 相位力),不再用「吉星 +2、凶星 −1.5」这种自定加减分(BUG-1210)。
|
||||
- 八分法(Ashtakavarga):报告和数据卡的主值改为三方净化 + 单宫主净化之后的数,原始数并列,两列都写明;以前标「BPHS标准」的那种扣分法已删除。过运评分仍用原始点数(BUG-1209)。
|
||||
- 罗睺、计都不再显示「入庙/本宫」;格局检测里天蝎宫主一律火星、水瓶宫主一律土星(BUG-1211)。
|
||||
- 8 星制 Chara Karaka 按 BPHS 改正排位(第 5 位父亲星、第 8 位配偶星);报告的 8 星制表会变(BUG-1204)。
|
||||
- 年运的年主旁注明「暂用 Muntha 主星;占星师口径为 Panchavargiya,待接入」(BUG-1212)。
|
||||
- 生时校正:v5 77 例评测与改前逐项相同,分数不变、算法版本不变;研究记录按规程重新冻结。名人生平回测因本机无模型凭据未跑(见 BLOCKED)。Skill 版本不变;不改数据库结构。新生成的报告和数据卡才有这些变化,旧报告内容不变。
|
||||
|
||||
## 2026-10-03 — 报告和星盘页不再出现「一整列横杠」;八分法宫位表的 SAV 数字改正
|
||||
|
||||
- 个人报告「赤纬与速度」表删掉一直为空的 Kranti 列(本站没有它的独立算法,赤纬列已是真实值)(BUG-1199)。
|
||||
|
||||
@@ -16206,3 +16206,138 @@
|
||||
- 相关记录:BUG-607 / 616(报告图盘渲染)。
|
||||
- 复发自:无
|
||||
- 修复版本:`ae18952e`(staging)
|
||||
|
||||
## BUG-1204 | 8 星制 Chara Karaka 排位把子女星、配偶星、父亲星放错位置
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 的配套核对(对照原典的笔误,不需裁决);任务书 `TASK-astrologer-rulings-batch1-20261003` T6。
|
||||
- 影响面:`scripts/jaimini.py` `KARAKA_8`;下游报告 Jaimini Karaka 表(`pl9_reader_export`、`jyotish_engine` 参考版)。生时校正不读 Karaka(打分路径 grep 无引用)。
|
||||
- 现象:报告 8 星制表第 5 行写「子女星 PK」、第 7 行「配偶星 DK」、第 8 行(度数最低)「父亲星 PiK」。
|
||||
- 根因:`KARAKA_8` 第 5/7/8 位写成 PK/DK/PiK。BPHS 第 32 章 8 星制次序为 AK、AmK、BK、MK、PiK、PK、GK、DK。上游 yinduzhanxing 同样写错。
|
||||
- 修复:`0cf2249e` 按 BPHS 改表;7 星制不变;BUG-1194 的罗睺 30° 反转保留。
|
||||
- 验证:`tests/test_chara_karaka_8_bphs_order.py`(表次序;公开 AA 盘 Steve Jobs Raman/平均交点下 PiK=罗睺、PK=月亮、DK=火星;报告 8 星制行按 BPHS 次序)。
|
||||
- 防复发:同上测试锁表与真盘;已在 `docs/research/` 上游通知中记录上游同错。
|
||||
- 相关记录:BUG-1194、BUG-489。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1205 | 落陷取消自动叫「王者格」(Neecha Bhanga Raja Yoga),条件不列
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 乙14;任务书 T8。
|
||||
- 影响面:`references/yoga_rules.json` 四条 `neechabhanga_*`;`consultation_native_layers.TRADITIONAL_YOGAS`;`frontend/src/lib/personal-report-generation.ts` 类别映射;报告瑜伽总表。
|
||||
- 现象:卡片 `traditional_yogas` 写「Neecha Bhanga Raja Yoga」;报告把落陷取消列在「王权/事业」类,组合条件只写「落陷取消格局」,看不出哪条成立。
|
||||
- 根因:数据驱动规则与咨询闭列表都把落陷取消命名为 Raja Yoga;唯一带条件清单的 `yogas_doshas.calc_nicha_bhanga_raj_yoga`(条件 A–F)没有接到用户可见面。
|
||||
- 修复:`df21e591`。新 `scripts/main_yoga_detectors.py` 以 `calc_nicha_bhanga_raj_yoga` 为唯一条件来源(新增结构化 `cancellation_conditions`),生成「落陷取消」行(中英),由 `YogaEngine.detect` 追加;四条 `neechabhanga_*` 标 `reference_only`(保留、改名、不再求值);卡片闭列表改为「落陷取消(Neecha Bhanga)」并附「成立条件:…」;报告类别「落陷取消」、归混合组;个人报告类别映射 `neecha_bhanga → special`。
|
||||
- 验证:`tests/test_neecha_bhanga_conditions.py`(规则 reference_only 且名称无 Raja;公开 AA 盘 Obama 条件与来源一致;卡片标签;报告混合组、全文无 Neecha Bhanga Raja;前端 `src/` grep 无)。
|
||||
- 防复发:同上测试对 `frontend/src` 与 `yoga_rules.json` 做 Raja 文案 grep。
|
||||
- 相关记录:BUG-1175、BUG-1159。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1206 | Kemadruma 四套实现;算法版月亮邻宫仍计罗计,同盘同时出 Kemadruma 与 Anapha
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 甲7;任务书 T2。
|
||||
- 影响面:`references/yoga_rules.json` `kemadruma_yoga`(角宫解除 ky2)、`kemadruma_variant`(邻宫计罗计);`scripts/yoga_engine.py` `_detect_solar_lunar_yogas`;`scripts/divisional_yoga.py`;卡片 `chart.yogas` 与报告瑜伽总表。
|
||||
- 现象:同一张盘卡片有 Kemadruma,报告却因角宫有星判解除;泰勒盘报告写「月后瑜伽(计都在月亮第 12 宫)」同时卡上有 Kemadruma;齐达内卡上同时出现 Kemadruma 与「Kemadruma (Empty Houses)」。
|
||||
- 根因:Kemadruma 由四处各写一套。BUG-1187 只把 JSON 规则改成「只数五星」,**遗漏**了 `yoga_engine._detect_solar_lunar_yogas` 这段算法版(它把太阳、罗计计入月亮/太阳邻宫),所以复发;BUG-1187 的测试只覆盖规则 ID(`bvr_*`、`kemadruma_yoga`),不覆盖算法版产出的 `Anapha Yoga` / `Sunapha Yoga` / `Durudhura Yoga` 名字,因此没拦住。分盘版按分盘里不存在的 `house` 字段比相邻,永远判「无邻星」,且把太阳算邻星。
|
||||
- 修复:`6916bbae`。主检测器为 `yoga_expansion.detect_kemadruma`(只数火水木金土、不启用角宫解除、角宫只有罗计也不解除),经 `main_yoga_detectors` 进规则引擎;两条 JSON 规则 `reference_only`;算法版太阳/月亮邻宫格局只数五星;分盘版改为按星座相邻、同一口径。
|
||||
- 验证:`tests/test_kemadruma_main_detector.py`(角宫只有罗计不解除;角宫有星不解除;计都单独在邻宫不出 Anapha;九位公开名人盘 Kemadruma 与 Sunapha/Anapha/Durudhura 不同盘共存;分盘同口径)。九盘报告与卡片一致(见进度记录)。
|
||||
- 防复发:同上测试按产出名字(不是规则 ID)断言。
|
||||
- 相关记录:BUG-1187(遗漏,关联原号)。
|
||||
- 复发自:BUG-1187(遗漏面:算法版邻宫格局)
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1207 | 五大人格四套实现:燃烧从不检查、逆行判失效、被主检测器判掉的格局经规则引擎回到卡上
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 甲5;任务书 T1。
|
||||
- 影响面:`scripts/pancha_mahapurusha.py`、`jyotish_api_server._detect_yogas`、`references/yoga_rules.json`(`mahapurusha_*`、`*_own`、`moolatrikona_*`、`hamsa_trikona`、`bvr_maalavya_yoga`)、`yogas_doshas.calc_pancha_mahapurusha_yoga`、`jyotish_engine.cmd_yoga`(行星行)、卡片 `traditional_yogas`、报告瑜伽总表。
|
||||
- 现象:泰勒盘木星在 9 宫巨蟹(三方宫,不在角宫)卡片仍写「Hamsa Yoga」(来自非经典的 `hamsa_trikona`);逆行就判失效;凶星同宫直接消灭格局;燃烧从不检查。
|
||||
- 根因:`_detect_yogas` 调主检测器时不传太阳度数,燃烧检查不执行;主检测器把逆行、同宫判 invalid;规则引擎与 `yogas_doshas` 的同名规则不做任何破格判断,按名字合并后谁先到算谁。
|
||||
- 修复:`de793901`。主检测器按定稿:只从命宫角宫算;逆行不破格;燃烧(共用燃烧表)、凶星同宫、凶星照(太阳 7、火星 4/7/8、土星 3/10/7;罗计不照)只记 `reduced`(部分减弱)并列原因;D9 落陷判不成立保留现状(只在调用方给 `navamsa_sign` 时检查,产品路径不给;定稿未提,列入下轮问题)。`_detect_yogas` 改用主检测器并取太阳经度;同名 JSON 规则与 `yogas_doshas` 旧聚合改 `reference_only`;规则引擎追加主检测器行;`cmd_yoga` 行星行补经度与逆行,使报告与卡片的燃烧判断一致;卡片标签附「部分减弱:…」。
|
||||
- 验证:`tests/test_pancha_mahapurusha_main_detector.py`(逆行不破格、燃烧 reduced、凶星照 reduced、罗计不照、被判掉的格局不经其他路径回来、九位公开名人引擎/卡片路径与主检测器一致、报告路径与 API 路径燃烧一致);`tests/test_pancha_mahapurusha_self_conjunction.py`、`tests/run_all.py` 断言按三栏更新。
|
||||
- 防复发:同上;`tests/test_combustion_orb_tables_agree.py` 继续锁燃烧表。
|
||||
- 相关记录:BUG-1180、BUG-1175、BUG-1195。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1208 | Shadbala 网站自定分档冒充强弱结论
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 甲13;任务书 T3。
|
||||
- 影响面:`chart.shadbala`(卡片)、报告 Shadbala 表、证据快照排名、健康叙述。
|
||||
- 现象:卡片与报告只写「极强 / 强 / 充足 / 略弱 / 弱 / 极弱」,看不出这是本站按最低要求百分比(150/125/100/75/50)自定的档,也不先说是否达到 BPHS 最低要求。
|
||||
- 根因:`shadbala.calc_shadbala` 的 `strength_level` 原样进各面,没有来源标注。
|
||||
- 修复:`5fdf2f74`。`shadbala.py` 不动(冻结身份),新 `scripts/shadbala_display.py` 在展示层生成 `min_required`、`meets_minimum`、`minimum_check`(达到/未达到 BPHS 最低要求)、`level_source: site_band`、`level`「…(网站分档)」;报告表加「BPHS minimum」「Site band」两列(中英);卡片每星只留 `rupas` / `minimum_check` / `level`(`0d6af77c`,控制卡片体积)。
|
||||
- 验证:`tests/test_shadbala_minimum_first.py`;`frontend/tests/consult-evidence-card-v2-20260927.test.ts` 新增卡片断言。
|
||||
- 防复发:同上测试。
|
||||
- 相关记录:BUG-1189。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1209 | 八分法净化没接上,报告用的「Sodhita」其实是扣掉日火土贡献,还标「BPHS标准」
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 乙8;任务书 T7。
|
||||
- 影响面:`scripts/ashtakavarga.py`(删 `calc_sodhita_av`)、新 `scripts/ashtakavarga_shodhana.py`、`/api/ashtakavarga`、全量解读、报告 SAV/BAV/宫位表、卡片 `sav_by_house` / `ashtakavarga`、个人报告 `savScores`、事实表。
|
||||
- 现象:报告、卡片、宫位表只有原始 SAV/BAV;报告参考版的「Sodhita」是从每行 BAV 扣掉太阳、火星、土星的贡献,却标「BPHS标准」。
|
||||
- 根因:标准的三方净化、单宫主净化函数(`calc_trikona_shodhana` / `calc_ekadhipatya_shodhana`)只有测试在调用;展示面一直读原始值。
|
||||
- 修复:`ea78804b`。逐行 BAV 三方净化 → 单宫主净化 → 净化后 SAV(七行之和),占星宫只数七星;删去旧函数;报告/卡片/个人报告/事实表主值用净化后、原始值并列且两列都有标签。过运打分仍用原始点数(决策记录)。
|
||||
- 验证:`tests/test_ashtakavarga_sodhita_chain.py`(PVR 书例 Chart 7 BAV 的三方净化逐行对照规则并与 PyJHora 4.8.7 一致;单宫主净化六条规则;真盘链路与宫位字段);`tests/test_report_chart_blank_columns.py` 三栏更新;`frontend/tests/report-fact-tables.test.ts`、`report-interpretive-facts.test.ts`。
|
||||
- 防复发:同上。`report-density-fictional-engine.json` 只重采该叶(`scripts/research/refresh_density_fixture_ashtakavarga.py`),其余叶逐字节不变。
|
||||
- 相关记录:BUG-1200、ERR-115。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1210 | 报告「Bhava Bala」表是自定加减分(吉星 +2、凶星 −1.5),正式三分量没接到用户面
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 甲13;任务书 T4。
|
||||
- 影响面:`scripts/shadbala.py`(改名 `calc_local_bhava_score`,移出 `calc_shadbala` 结果)、`scripts/bhava_bala.py`(新 `bhava_bala_from_chart`)、全量解读 `modules.bhava_bala`、报告 p32 表、参考版表与财富/摘要行。
|
||||
- 现象:报告 Bhava Bala 表的分数来自无出处的本地加减分,列「关键因素」写「Jupiter in H5 (Benefic): +2」。
|
||||
- 根因:同名两套:`shadbala.calc_bhava_bala`(本地评分)驱动报告;正式三分量 `bhava_bala.calc_bhava_bala` 只接在 `/api/bhava_bala`。
|
||||
- 修复:`6feb1a4a`。报告改用正式三分量(Bhavadhipati = 宫主 Shadbala Virupa、Bhava Dig、Bhava Drishti;等宫),列 Total(Virupa / Rupa);本地评分改名、不再出现在任何结果里。其他使用者:无(补救、健康叙述只读 Shadbala Rupa)。
|
||||
- 验证:`tests/test_bhava_bala_formal.py`;`tests/test_report_longform_gaps2.py`、`tests/test_shadbala_complete.py` 按三栏更新。
|
||||
- 防复发:同上测试对报告全文 grep「(Benefic): +2」。
|
||||
- 相关记录:BUG-1208。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1211 | 罗睺本宫三处说法;瑜伽检测里天蝎/水瓶宫主取「较强者」
|
||||
|
||||
- 状态:resolved(分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 甲12;任务书 T5。
|
||||
- 影响面:`jyotish_engine._get_dignity_level`(D1 状态列、Vimsopaka、`varga_dignity`)、`yoga_engine.YogaContext`(宫主、入庙判断)。
|
||||
- 现象:罗睺在处女显示「入庙(Own Sign)」;规则引擎里天蝎宫主有时是计都、水瓶宫主有时是罗睺,而宫主链、功能吉凶、前端固定取火星、土星。
|
||||
- 根因:引擎写罗睺处女/计都双鱼为本宫,瑜伽引擎沿用 PyJHora 动态共主,`narayana_dasha` 另写水瓶/天蝎。
|
||||
- 修复:`b0329ef0`(单独提交,便于回退)。删去罗计「本宫」判定(不新增罗计庙旺);瑜伽主路径默认固定传统主星,`_stronger_co_lord` 只在 `dynamic_co_lords=True`(Jaimini 变体)时用;`narayana_dasha` 不动。
|
||||
- 验证:`tests/test_node_own_sign_and_fixed_lords.py`。生时校正:v5 77 例与 reported-offset / sealed holdout 重放见进度记录。
|
||||
- 防复发:同上测试。
|
||||
- 相关记录:BUG-1158。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
## BUG-1212 | 年运年主没说明是暂用 Muntha 主星(占星师口径为 Panchavargiya)
|
||||
|
||||
- 状态:resolved(只加标注;分支 `codex/astrologer-rulings-batch1-20261003`,未推送;待验收)
|
||||
- 首次发现 / 最近更新:2026-10-03 / 2026-10-03
|
||||
- 来源:占星师定稿 2026-10-03 甲11;任务书 T9。
|
||||
- 影响面:咨询年运层 `annual_tajika`、卡片年运段、报告两处年运表。
|
||||
- 现象:卡片与报告只写年主(Varshesha),不说明选法;报告选法行写「Muntha 所在星座的守护星(当前本地口径)」。
|
||||
- 根因:Panchavargiya 选法的原生生产者仍 blocked,现行年主取 Muntha 主星,未在显示处标注。
|
||||
- 修复:`eb00b0f7`。年运层加 `varshesha_basis`「暂用 Muntha 主星;占星师口径为 Panchavargiya,待接入」,卡片与投影白名单带上;报告两处年运表都有「Selection basis」行(中英)。Muntha 维持「本命上升 + 已满年数」,`muntha.calc_muntha_from_sun_sign` 不在任何主路径。
|
||||
- 验证:`tests/test_year_lord_basis_label.py`。
|
||||
- 防复发:同上;Panchavargiya 接入另开单。
|
||||
- 相关记录:BUG-1028。
|
||||
- 复发自:无
|
||||
- 修复版本:待发布
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
# PROGRESS:占星师口径第一批落地(低风险批)— 2026-10-03
|
||||
|
||||
- 任务书:`docs/tasks/TASK-astrologer-rulings-batch1-20261003.md`;依据:`docs/research/astrologer_rulings_2026_10_03.md`。
|
||||
- 执行方:Claude 子代理(产品负责人要求直接执行)。分支 `codex/astrologer-rulings-batch1-20261003`,工作树 `.worktrees/astrologer-rulings-batch1-20261003`,基线 `origin/staging` = `60d065a8`。**未推送**。
|
||||
- BUG 编号:开工时最大号 BUG-1203;本单 BUG-1204~1212。
|
||||
|
||||
## 环境
|
||||
|
||||
| 项 | 实际 |
|
||||
| --- | --- |
|
||||
| Python | 本机无 `.venv`,全部用系统 `python3`(3.13.5);PyJHora 4.8.7 已装(只在一个对照测试里 `importorskip`) |
|
||||
| Node | `/exec-daemon/node` v22.14.0(软链到 scratchpad 的 PATH 目录);`frontend/node_modules` 软链到同 lockfile 的 `.worktrees/consult-career-yoga-functional-20261002/frontend/node_modules`,未重装依赖 |
|
||||
| 磁盘 | 开工 45G 可用,跑评测前 44–45G |
|
||||
| 预检 | `pre_work_check.py` exit 0(remote verified,focused 5 目标全过) |
|
||||
| 模型 key | 无(环境变量里没有任何模型凭据)→ 名人生平回测未跑,见「环境缺口」 |
|
||||
| `next build` | 未跑:node_modules 是工作树外软链,Turbopack 拒绝(记忆中的已知限制);本单不改页面/路由,首屏 gzip 未测 → 环境缺口 |
|
||||
|
||||
## 提交与任务对应
|
||||
|
||||
| 任务 | 提交 | BUG |
|
||||
| --- | --- | --- |
|
||||
| T6 8 星制 Karaka 排位 | `0cf2249e` | BUG-1204 |
|
||||
| T8 落陷取消改条件清单 | `df21e591` | BUG-1205 |
|
||||
| T2 Kemadruma 主检测器 | `6916bbae` | BUG-1206(关联 BUG-1187 遗漏) |
|
||||
| T1 五大人格主检测器 | `de793901`、`b1185c63`(全量解读传逆行标记) | BUG-1207 |
|
||||
| T3 Shadbala 达标在前 | `5fdf2f74`(卡片行精简在 `0d6af77c`) | BUG-1208 |
|
||||
| T7 八分法净化接入展示 | `ea78804b` | BUG-1209 |
|
||||
| T4 Bhava Bala 正式三分量 | `6feb1a4a` | BUG-1210 |
|
||||
| T5 罗计不设本宫、固定主星(单独提交) | `b0329ef0` | BUG-1211 |
|
||||
| T9 年主标注 | `eb00b0f7` | BUG-1212 |
|
||||
| golden 重采(证据卡、名人回测) | `0d6af77c` | — |
|
||||
| 研究记录重新冻结(ERR-110) | `9392f060` | — |
|
||||
| T10 记录(BUG 历史、CHANGELOG、本文件、任务索引、BLOCKED) | 最后一个提交(docs) | — |
|
||||
|
||||
## 关键实现说明(与任务书的出入)
|
||||
|
||||
1. **主检测器的接法**:新建 `scripts/main_yoga_detectors.py`,把五大人格(`pancha_mahapurusha.py`)、Kemadruma(`yoga_expansion.detect_kemadruma`)、落陷取消(`yogas_doshas.calc_nicha_bhanga_raj_yoga`)转成规则引擎同形的行(中英双份),由 `YogaEngine.detect` 追加。`yoga_rules.json` 的同名规则加 `reference_only: true` + `reference_only_reason`(保留来源与逻辑,不求值),共 23 条:`mahapurusha_*`×10、`moolatrikona_*`×5、`hamsa_trikona`、`bvr_maalavya_yoga`(任务书未列,同名 BVR 重复规则,同样不做破格)、`kemadruma_yoga`、`kemadruma_variant`、`neechabhanga_*`×4。这样报告(`modules.yoga`)、卡片(`chart.yogas` + 规则引擎 → 筛选 → `traditional_yogas`)读到的是同一个结论。
|
||||
2. **T1 D9 落陷**:定稿未提,保留「D9 落陷判不成立」。代码事实:主检测器只在调用方传 `navamsa_sign` 时检查,**产品路径(`_detect_yogas`、规则引擎、报告)都不传**,所以这一条现在实际上不生效;本单未启用(启用即改变结论,等占星师答复)。
|
||||
3. **T1 凶星照**:用仓内 Parashari 整宫 drishti(`aspects.calc_house_aspects` 同规则):太阳 7、火星 4/7/8、土星 3/7/10;罗计不照(与 `consultation_native_layers.DRISHTI_RULE` 一致)。
|
||||
4. **T1 报告与卡片燃烧口径**:九盘核对时发现嘉兰的报告写「燃烧 14° 以内」、卡片写 12°——报告路径 `cmd_yoga` 的行星串不带逆行标记。`de793901` 让 `cmd_yoga` 生日路径带经度与逆行,`b1185c63` 让全量解读的 varga 重跑在行星串第 5 段带 `R`。
|
||||
5. **T2 BUG-1187 遗漏**:`yoga_rules.json` 两套 Kemadruma 里 `kemadruma_variant` 确实仍计罗计;另外 `yoga_engine._detect_solar_lunar_yogas`(算法版月前/月后/月双夹、日前/日后/日双夹)仍把太阳、月亮、罗计算作邻星——泰勒盘「计都在月亮第 12 宫」出 Anapha 与 Kemadruma 同盘即来自这里。已改为只数五星,BUG 历史按「复发自 BUG-1187(遗漏面)」记录。`divisional_yoga` 分盘版按不存在的 `house` 字段比相邻(永远判孤月),改为按星座相邻。
|
||||
6. **T3**:`shadbala.py` 在冻结身份里,展示字段放在新 `scripts/shadbala_display.py`(ERR-115 的做法)。卡片每星只留 `rupas` / `minimum_check` / `level`:引擎另三个字段语义重复,全部带上会让乔布斯 general / career 卡超过 12,000 字预算(12,166 / 12,250),精简后回到预算内。
|
||||
7. **T4**:`shadbala.calc_bhava_bala` 改名 `calc_local_bhava_score` 并移出 `calc_shadbala` 返回值(原 `bhava_bala` 键就是报告表的来源);全量解读改用 `bhava_bala.bhava_bala_from_chart`(宫主 Shadbala Virupa + Bhava Dig + Bhava Drishti,等宫,同 `/api/bhava_bala`)。本地评分的其他使用者:**无**(`remedies`、健康叙述只读 Shadbala Rupa)。`bhava_bala.py` 自带的 60/50/40… 分档不是经典口径,报告不显示。
|
||||
8. **T7**:`ashtakavarga.py` 删去 `calc_sodhita_av`(无人再用)。新链路 `scripts/ashtakavarga_shodhana.py` 用仓内既有两函数;占星宫只数七星(PyJHora 把罗计和上升标记也算占星,且只在每颗星自己的两宫上做单宫主净化——两点列入下轮问题)。经典例题:PVR 书 Exercise 22 / Chart 7 的 BAV(PyJHora 自带)做三方净化逐行对照,并与 PyJHora `_trikona_sodhana` 一致;单宫主净化逐条规则测。报告 SAV 表、宫位表、BAV 表,卡片 `sav_by_house`(`sav_sodhita` 在前、`sav_score` 原始,另带 `sav_columns` 说明),个人报告 `savScores`(`score` 净化后、`rawScore` 原始,schema 新增可选字段),事实表都已两列并列。过运(慢星过运 `sav`、双重过运、gochara)仍是原始点数,相关测试未改。
|
||||
9. **T5**:只删罗计「本宫」判定;`jyotish_engine` 本来就没有罗计庙旺表,未新增。`yoga_engine` 默认固定主星,`_stronger_co_lord` 只在 `dynamic_co_lords=True` 时用(目前无调用方);`narayana_dasha` 不动。
|
||||
10. **T9**:Muntha 主路径是 `solar_return._muntha_from_natal_ascendant(本命上升, 已满年数)`,测试锁定;`muntha.py`(含 `calc_muntha_from_sun_sign`)没有任何脚本导入。
|
||||
11. **density 夹具**:`report-density-fictional-engine.json` 是 09-23 冻结快照、无采集脚本。只把 `worksheets.strengths_and_scores.ashtakavarga` 这一叶用真实引擎按夹具自带输入重采(`scripts/research/refresh_density_fixture_ashtakavarga.py`);`bav`、`sav` 与旧值相同,其余叶逐字节不变(脚本核对)。
|
||||
|
||||
## 改动的既有断言(原值 / 新值 / 原因)
|
||||
|
||||
| 文件 / 测试 | 原值 | 新值 | 原因 |
|
||||
| --- | --- | --- | --- |
|
||||
| `tests/test_consultation_yoga_detection_merge.py::test_traditional_yogas_closed_list_only_and_fixed_label` | 闭列表名 `Neecha Bhanga Raja Yoga` | `落陷取消(Neecha Bhanga)` | 乙14(BUG-1205) |
|
||||
| `tests/test_pancha_mahapurusha_self_conjunction.py::test_another_malefic_in_the_same_sign_still_cancels_and_is_named` | `is_valid False`,原因在 `cancellations` | `is_valid True`、`strength reduced`,原因在 `reductions` | 甲5:凶星同宫只减弱(BUG-1207) |
|
||||
| 同文件 `test_benefic_yoga_planet_unchanged` | Hamsa `is_valid False` | `is_valid True`、`reduced` | 同上 |
|
||||
| `tests/run_all.py` t31 | 燃烧 → `is_valid False` | 燃烧 → `is_valid True`、`reduced`(输入改为真实摩羯座经度 280/283) | 甲5;原输入 degree=50 不在摩羯座 |
|
||||
| `tests/run_all.py` t32 | 逆行 → `is_valid False` | 逆行 → `is_valid True`、`full` | 甲5:逆行不破格 |
|
||||
| `tests/run_all.py` t54 | 求值规则 ≥ 400 | 求值 + reference_only ≥ 400(378 + 23) | 23 条规则改 reference_only |
|
||||
| `tests/run_all.py` t1 / t57 | 导入 `calc_sodhita_av`;每格 ≤ 8 | 导入 `ashtakavarga_shodhana.sodhita_chain`;每格 ≤ 原始 BAV | BUG-1209 删除旧函数 |
|
||||
| `tests/test_report_chart_blank_columns.py` 两条(BUG-1200) | 表头 `House/Sign/SAV/Lagna BAV/SAV + Lagna`,原始值在第 2–4 列 | 表头加 `Sodhita SAV`、原始列标 `Raw`,原始值在第 3–5 列,合计行多一格 | 乙8:净化值为主值 |
|
||||
| `tests/test_shadbala_complete.py::TestBhavaBala` 五条 | 调用 `calc_bhava_bala` | 调用 `calc_local_bhava_score`(断言不变) | 甲13 改名(BUG-1210) |
|
||||
| `tests/test_report_longform_gaps2.py` | 夹具行为本地评分形状;标题「Bhava Bala(本地三分量评分)」 | 夹具行为正式三分量;标题「Bhava Bala(三分量)」并断言整行 | 甲13 |
|
||||
| `frontend/tests/report-fact-tables.test.ts`(density golden) | SAV 表 `cells[1]` = 原始;`subtables[0]` = 原始 BAV | `cells[1]` = 净化后、`cells[2]` = 原始;`subtables[0]` = 净化后 BAV、`[1]` = 原始 BAV;列名断言 | 乙8 |
|
||||
| `frontend/tests/consult-evidence-card-v2-20260927.test.ts` career | 10H 行键 `sign/sav_score/level` | `sign/sav_sodhita/sav_score/level`,加 `sav_columns` 断言 | 乙8 |
|
||||
| 同文件 annual | 年盘键列表无 `varshesha_basis` | 加 `varshesha_basis` | 甲11(BUG-1212) |
|
||||
| `frontend/tests/consult-career-yoga-functional-20261002.test.ts` | Obama 名单含精确字符串 `Sasa Yoga`、`Neecha Bhanga Raja Yoga` | `Sasa Yoga…` 前缀、`落陷取消(Neecha Bhanga)(…成立条件:…)`,且全部不含 raja | 乙14 / 甲5 |
|
||||
|
||||
## 测试
|
||||
|
||||
| 项 | 结果 |
|
||||
| --- | --- |
|
||||
| 新增 Python 测试 | `test_chara_karaka_8_bphs_order.py`、`test_neecha_bhanga_conditions.py`、`test_kemadruma_main_detector.py`、`test_pancha_mahapurusha_main_detector.py`、`test_shadbala_minimum_first.py`、`test_ashtakavarga_sodhita_chain.py`、`test_bhava_bala_formal.py`、`test_node_own_sign_and_fixed_lords.py`、`test_year_lord_basis_label.py`,全部通过 |
|
||||
| 定向回归(格局、报告读者版中英、density、CLI、API 安全、过运/双重过运、八分法、Shadbala、Jaimini、长报告) | 全部通过;`tests/run_all.py` 102/102 |
|
||||
| `run_quality_gate.py --profile quick --skip-frontend-runtime`(系统 python3) | `Quality gate passed`,exit 0:1047 passed、1 skipped(在重新冻结提交 `9392f060` 上跑;前端另跑) |
|
||||
| 隐私 `tests/test_repo_privacy_markers.py` | 通过(含记录提交后复跑) |
|
||||
| `tsc --noEmit` | 0 错 |
|
||||
| `npm run lint` | 0 error(126 warnings,与开工同数) |
|
||||
| `npm test`(Node 22.14) | 开工基线 4927 项 / fail 24 / cancelled 0;收尾 4929 项 / fail 24 / cancelled 0。**失败清单与基线逐条相同**(24 条全部是 DB / Docker / 部署类:admin code、billing、migration runner、Better Auth、staging env/backup、live staging sync 等)。中途一次(goldens 刚重采、卡片未改前)多出 5 条,已在 `0d6af77c` 修复:3 条三栏改断言、2 条卡片体积超 12,000(卡片 Shadbala 行精简后回到预算内) |
|
||||
| golden 二次重采 | 证据卡、名人回测 golden 用 capture 脚本再跑一次,逐字节相同 |
|
||||
| `validate_logic_v2.py`(optional,信息) | 见「其他观察」 |
|
||||
|
||||
## 生时校正评测(v5 77 例)
|
||||
|
||||
- 命令:`python3 scripts/research/holdout_v5_baseline.py --dataset v5 --out-dir <dir>`,`PYTHONHASHSEED=0`、`JYOTISH_API_CHART_CACHE_TTL_SECONDS=0`,改前在 `origin/staging` `60d065a8` 一次性工作树,改后在 `b0329ef0`(T1–T8 与 T5 全部引擎改动之后)一次性工作树。
|
||||
- 结果:sweep / cluster_width / futile_collect 三段与合并文件,去掉耗时与路径后**逐项相同**。
|
||||
|
||||
| 指标(v5 77 例) | ±10 | ±30 | ±60 |
|
||||
| --- | --- | --- | --- |
|
||||
| 先验头名 前 / 后 | 0.182 / 0.182 | 0.091 / 0.091 | 0.078 / 0.078 |
|
||||
| 六题回放头名 前 / 后 | 0.6364 / 0.6364 | 0.4935 / 0.4935 | 0.3117 / 0.3117 |
|
||||
| 线上区间回放头名 前 / 后 | 0.6623 / 0.6623 | 0.5584 / 0.5584 | 0.4026 / 0.4026 |
|
||||
| 覆盖 前 / 后 | 0.987 / 0.987 | 0.987 / 0.987 | 0.987 / 0.987 |
|
||||
| 中位宽度(线上回放)前 / 后 | 13 / 13 | 33 / 33 | 65 / 65 |
|
||||
|
||||
红线(任一档降 > 1pt)未触发。
|
||||
- reported offset 900 例:0 例变化;sealed holdout 20 例逐条相同、metrics 相同(重新冻结提交 `9392f060`)。
|
||||
- **结论:校正分数不变,不升打分版本**(`ALGORITHM_VERSION` 仍为 `rectification-v5-matrix-scoring-10`),无需做 BUG-621 历史 Case 打开验证。冻结身份里的 `jaimini.py`、`ashtakavarga.py`、`shadbala.py` 字节变了,按 ERR-110 以标签 `astrologer_rulings_batch1_2026_10_03` 重新冻结;upstream_sync5 记录转为 previous、逐字节保留。
|
||||
- 校正打分路径不读 Karaka、格局、罗计尊严与宫主共主(grep 打分文件与冻结清单确认),与「分数不变」一致。
|
||||
|
||||
## 九位名人:卡片与报告一致性(甲5 / 甲7 验收)
|
||||
|
||||
`scripts/research/capture_consult_biography_backtest_golden.py` 同一批 9 位公开 AA 名人,career 路由的卡片(`chart.yogas` + 筛选 + `traditional_yogas`)对照同盘报告瑜伽总表(scratchpad 工具,未入库):
|
||||
|
||||
| 名人 | 改前(卡片 / 报告) | 改后(卡片 = 报告) |
|
||||
| --- | --- | --- |
|
||||
| 乔布斯 | 卡 Sunaphaa + Durudhura;报告「月双夹」(太阳算邻星) | Sunapha 系,无 Durudhura |
|
||||
| 奥巴马 | 卡 Sasa、Neecha Bhanga Raja;报告两条「落陷取消格局」无条件 | Sasa(部分减弱:受凶星照:太阳);落陷取消(木星,三条成立条件);两边一致 |
|
||||
| 泰勒 | 卡 Hamsa(来自 1/5/9 的非经典规则)+ Kemadruma;报告「汉萨三方宫格局」+「月后瑜伽(计都)」——孤月与月后同盘 | 无 Hamsa;只有 Kemadruma,无 Anapha |
|
||||
| 嘉兰 | 卡 Bhadra;报告无 | Bhadra(部分减弱:水星燃烧 12° 以内,受火、土照);报告同(`b1185c63` 之后) |
|
||||
| 齐达内 | 卡 Kemadruma + Kemadruma (Empty Houses);报告「空劫格局(空宫版)」 | Kemadruma 一条 + 落陷取消(火星);两边一致 |
|
||||
| 梦露、皮雅芙、卡罗、小布什 | 卡与报告 Sunapha/Anapha 一致 | 不变 |
|
||||
|
||||
## 名人生平回测
|
||||
|
||||
卡片字段有变化(`traditional_yogas` 文字、`shadbala` 行、`sav_by_house`、年盘 `varshesha_basis`)。本机无模型 key,**未跑**,写入 `BLOCKED.md`。基线取 `docs/testing/consult-affliction-backtest-20261001.md` 第七轮。需要有 key 的环境按 `docs/testing/consult-affliction-backtest-20261001.md` 的命令重跑一轮,核对「严重冲突数不增加」。
|
||||
|
||||
## 其他观察(不在本单范围,未改)
|
||||
|
||||
- `validate_logic_v2.py`(与 PyJHora 的格局对照基准,门禁里是 optional,本单不入库其输出):precision 0.951 → 0.928、recall 0.741 → 0.733。原因是本单按定稿**有意**与 PyJHora 分开(PyJHora 的 Kemadruma / 月亮邻宫计罗计、天蝎水瓶取较强共主),与 BUG-1187 决策 3 同向。
|
||||
- 报告 Shadbala 表 `Total` 列是 Virupa、`Required` 列是 Rupa(单位不同),本单未动。
|
||||
- `ashtakavarga.calc_ashtakavarga` 的 Shodhya / Yoga Pinda 用的仍是原始 BAV(BPHS 的 Shodhya Pinda 应在净化之后算),记为下一批。
|
||||
- `bhava_bala.py` 的 Bhava Dig Bala 表数值在 10–30 Virupa(BPHS 通常 0–60),来自 jyotishganit 移植,未核原典。
|
||||
- `v5` 改后评测所在的一次性工作树在评测进行中被切到 `0d6af77c`(本会话误操作);与 `b0329ef0` 的差异只在 `consultation_native_layers.py`、`pl9_reader_export.py`、`pl9_reader_english_terms.py`,不在打分路径。
|
||||
|
||||
## 下轮问占星师
|
||||
|
||||
1. **D9 落陷是否破格**(五大人格):现状是传了 D9 星座就判不成立,但产品路径都不传,所以现在等于不检查。按定稿精神「只降低强度」,还是「不成立」,还是「不看 D9」?
|
||||
2. **过运是否改用净化值**:本单只改展示,过运打分(gochara、慢星过运 SAV)仍用原始点数。经典里过运看未净化点数,是否维持?
|
||||
3. **Tajika 年主 Panchavargiya 的来源**:五个职位(Muntha 主、出生/年盘上升主、Tri-Rashi 主、日/夜主星等)以哪本书、哪个版本为准?力量用 Harsha / Pancha-Vargiya Bala 的哪套算法?
|
||||
4. **单宫主净化细则**:(a) 占星宫是否把罗睺、计都算作「有星」(我们只数七星;PyJHora 把罗计甚至上升标记都算);(b) 一宫有星、一宫空且两宫点数相等时,空宫清零还是保留(我们清零;PyJHora 保留为相同值);(c) 每行 BAV 都对五对星座做,还是只对该行星自己的两宫做(PyJHora 是后者)。
|
||||
5. **五大人格「被凶星照」**:照的凶星是否包括太阳?罗睺、计都的照是否计入?
|
||||
6. **Shodhya Pinda**:是否改为在净化后的 BAV 上计算?
|
||||
@@ -413,4 +413,4 @@
|
||||
| `TASK-upstream-sync4-20261002.md` | `PROGRESS-upstream-sync4-20261002.md` | 上游同步第四轮(对照 yinduzhanxing `0a6696c5`):婚姻计数删关系次数断语、双重过运相位错一宫、Shadbala 四处计算错、格局列表截断与空回退、月亮/太阳类格局只计五星(吸收月亮单)、Arudha 只留 jaimini 一个来源、定位星循环与未标定概率;BUG 从 1183 起 | **待验收**(子代理直接执行完毕,未推送;追加 F3 太阳最低要求;BUG-1183~1191) | 分支 `codex/upstream-sync4-20261002` |
|
||||
| `TASK-upstream-sync5-20261002.md` | `PROGRESS-upstream-sync5-20261002.md` | 上游同步第五轮:Narayana 默认 K.N. Rao、Chara Karaka 罗睺、燃烧统一、八分法净化、Yogini、诅咒格措辞、Budha-Aditya、Badhaka;生时校正至少 4 件事 3 个领域 | **待验收**(PM 移植 U2–U8 + 子代理 U8 后续 / R1 / 冻结 / 评测 / 回测第七轮,未推送;U1 延后;分数不变不升 scoring-11,policy v3 → v4;BUG-1192~1198) | 分支 `codex/upstream-sync5-20261002` |
|
||||
| `TASK-report-chart-blank-columns-20261003.md` | `PROGRESS-report-chart-blank-columns-20261003.md` | 报告/星盘页空列:Kranti 删列、八分法宫位表 SAV 标错(实为含上升 386)补三列、上升补星宿、分盘庙旺接引擎十档(有限推翻 BUG-1076/1099 三档)、报告末尾重复分盘去重(BUG-1199~1203);Claude 直接执行,已部署 staging `ae18952e`,真机待产品 |
|
||||
| `TASK-astrologer-rulings-batch1-20261003.md` | `PROGRESS-astrologer-rulings-batch1-20261003.md` | 占星师定稿 2026-10-03 第一批(低风险批):五大人格、Kemadruma 各只留一个主检测器;Shadbala 达标在前、分档标「网站分档」;Bhava Bala 改正式三分量;罗计不设本宫、宫主链固定传统主星;8 星制 Karaka 排位按 BPHS 修正;八分法净化值进报告/卡片(过运不动);落陷取消改条件清单;Tajika 年主如实标注。乙3 Narayana、甲1、甲8/9 不在本单(BUG 从 1204 起) | 待领取 | 分支 `codex/astrologer-rulings-batch1-20261003` |
|
||||
| `TASK-astrologer-rulings-batch1-20261003.md` | `PROGRESS-astrologer-rulings-batch1-20261003.md` | 占星师定稿 2026-10-03 第一批(低风险批):五大人格、Kemadruma 各只留一个主检测器;Shadbala 达标在前、分档标「网站分档」;Bhava Bala 改正式三分量;罗计不设本宫、宫主链固定传统主星;8 星制 Karaka 排位按 BPHS 修正;八分法净化值进报告/卡片(过运不动);落陷取消改条件清单;Tajika 年主如实标注。乙3 Narayana、甲1、甲8/9 不在本单(BUG 从 1204 起) | 已实现待验收 | 分支 `codex/astrologer-rulings-batch1-20261003`(未推送;BUG-1204~1212;校正分数不变、未升版本) |
|
||||
|
||||
Reference in New Issue
Block a user