diff --git a/CHANGELOG.md b/CHANGELOG.md index f6a86b0c..ea578f52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # 印度占星 Skill 更新日志 +## 2026-10-02 — 上游同步第四轮:婚姻计数不再断言几段婚姻;双重过运相位、Shadbala、月亮类格局、Arudha 改正 + +- 婚姻计数法只给「关系几何指数」,明说它不代表婚姻或关系的次数;不再出现「一次终身关系」「可能再婚」「第一段关系质量较好」这类断语,婚恋证据里这一条不再记为利好(BUG-1183)。某些盘上这一项原来整段算不出来,已修(BUG-1184)。 +- 双重过运(木星土星同时照到某一宫)的相位以前整体错一宫(土星 7 宫相位算到了第 8 宫),已改正;报告和数据卡的过运结论会变(BUG-1185)。 +- Shadbala(行星六力):时力、动力四处计算改正;太阳的最低要求按《BPHS》改为 6.5 Rupa,太阳的强弱档普遍降一档;行星强弱排名可能有一两位互换(BUG-1188 / 1189)。 +- 月亮前后有星、太阳前后有星这几类格局只算火水木金土五颗,罗睺计都不算;同一张盘不再同时出现「月亮孤立」和「月亮旁边有星」(BUG-1187)。格局列表不再只显示前 10 条(BUG-1186)。 +- 形象上升(AL)与婚姻上升(UL)在报告、原始数据、数据卡、过运参考点里统一成一个算法,同一张盘不再出现不同星座(BUG-1190)。定位星互相循环时如实写「循环」,报告不再出现没有依据的概率百分比(BUG-1191)。 +- 生时校正:分数不变(77 例评测逐字节相同),算法版本不变;研究记录按规程重新冻结。名人回测第六轮:父母题、请求数、禁句持平;事业题「不靠曝光」类读偏 5 → 9 / 18,未达通过线(与本轮改动无可证明的关联)。 +- Skill 版本不变;不改数据库结构。 + ## 2026-10-02 — 功能吉凶改按《BPHS》第 34 章总则加逐上升例外;生时校正算法升到第 10 版;父母题不再把受冲的母亲写成「在管、在安排」 - 「哪些星对你这个上升算吉、算凶」改用《BPHS》第 34 章的总则加逐上升的明文例外(例:天蝎上升的太阳改为吉、火星改为中性;只管 12 宫的星不再一律算凶)。报告、数据卡、普通对话、合盘、生时校正里的功能吉 / 凶星一栏随之变化;每颗星注明依据(总则或该上升的例外)(BUG-1158)。 diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 9dcf8488..a3a428a9 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -15922,3 +15922,123 @@ - 相关记录:BUG-1164、BUG-1165、BUG-1177、BUG-1176。 - 复发自:BUG-1165(示例读法被照抄)。BUG-1165 的合同测试只白名单了「逆行」一词,没有检查示例括号里「宫位 → 行为」的读法,所以未拦住。 - 修复版本:`codex/consult-upstream-functional-v2-20261002`(未推送)。 + +## BUG-1183 | 婚姻计数法输出「一次终身关系,忠诚度较高」「两段重要关系,可能再婚」等确定性关系断语,婚恋证据按次数记 positive + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/marriage_counting.py` `_interpret_marriage_count`、`_marriage_recommendations`、`note`;`scripts/jyotish_api_server.py` `_derived_marriage_evidence`(`Marriage-counting` 条目)与婚恋裁决「对象筛选」轴;全读 `modules.marriage_counting`(PL9 导出包原样带出)。 +- 现象:全读与 `/api/thematic_report` 婚恋主题里,婚姻计数条目写「婚姻/认真关系数量:N」「解读:一次终身关系,忠诚度较高」「第一段关系由吉星主导,质量较好」等;计数 ≤ 1 时 sentiment 记 `positive`,details 带 `marriage_count` 与 D9 质量评级(「婚姻稳定」「强烈建议婚前咨询」),后者还被拼进裁决文字。 +- 触发条件:任一张能算出 D1 第 7 宫主与其 D9 落点的盘。 +- 根因:方法把「从 A 数到 B 的星座距离」直接当成关系次数,并按次数给出先后、质量、忠诚度断语;消费方再按次数给情绪分。上游 yinduzhanxing `0afa2780` 已改为只描述几何指数。 +- 修复(TASK-upstream-sync4-20261002 T1,决策 2,文案为我方中文,不搬上游原文):解读改为「关系几何指数 N:……是这个方法里的星座距离,不代表婚姻或关系的次数」,同星座 / 对冲只说位置关系;建议改为对所有指数相同的三句中性说明;`note` 改为几何口径;结果新增 `geometric_index`(`marriage_count` 兼容保留、同值)。`Marriage-counting` 证据一律 `neutral`,details 只有 `geometric_index`;裁决「对象筛选」轴不再读 D9 质量评级。 +- 验证:`tests/test_marriage_counting_geometry_only.py`(12 个指数逐一检查禁句与同一套建议);`tests/test_api_server_security.py::test_marriage_counting_evidence_is_neutral_geometry_index_only`(虚构盘 1990-06-15 10:30 北京,neutral、只有几何指数、婚恋主题全文无禁句)。`rg "再婚|段关系|第一段|终身关系|忠诚度" scripts/marriage_counting.py` 无命中。模型视图实测:普通对话 `/api/consultation_workflow` 婚恋路由的主题证据来自 `reused_chart_modules`(`full_reading_used: false`),本条目根本不出现,`toModelOutput` 后的模型视图里也没有(见进度记录 T1)。 +- 防复发:上述两条测试锁禁句与 sentiment。遗留:`_assess_d9_marriage_quality` 的评级文字(「婚姻稳定」等)仍在全读原始模块里,未进证据条目,进度记录列为待产品决定。 +- 相关记录:BUG-1184。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1184 | 婚姻计数遇到「7 宫主与定位星同星座」时抛 UnboundLocalError,模块整段缺失;Parivartana 判定实际判的是合相 + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/marriage_counting.py` `marriage_counting_method`、`_check_parivartana`;全读 `modules.marriage_counting`(异常被 `cmd_full_reading` 吞进 `errors`,模块缺失)。 +- 现象:虚构输入「金星为 7 宫主、金星与火星同在白羊」时,旧代码在写 Parivartana 警告时引用尚未赋值的 `distance`,抛 `UnboundLocalError`。 +- 触发条件:7 宫主落在他人星座,且该星座主星与它同星座(合相),且传入了宫位数据(全读总会传)。 +- 根因:两处。一,距离在 Parivartana 段之后才计算,警告里先用了它;交换后的重算结果随后又被覆盖。二,`_check_parivartana` 比较的是「定位星与 7 宫主是否同星座」,这是合相,不是互换。 +- 修复:距离在 Parivartana 段之前算出,交换重算结果生效;互换判定改为「定位星落在 7 宫主掌管的星座」。 +- 验证:`tests/test_marriage_counting_geometry_only.py::test_real_parivartana_does_not_crash_and_conjunction_is_not_exchange`(真互换不崩、指数按交换后星座;合相不再判互换);旧代码在同一输入上复现 `UnboundLocalError`。 +- 防复发:同上测试。 +- 相关记录:BUG-1183。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1185 | 双重过运相位按 0 起数比 1 起数的相位号,整体错一宫;修正后结果顺序随 PYTHONHASHSEED 变化 + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/jyotish_engine.py` `_check_pac`、`cmd_double_transit_pac`;全读 / 报告的 `double_transit_pac`,普通对话数据卡的双重过运结论(`scripts/consultation_native_layers.py`)。 +- 现象:土星 7 宫相位判到第 8 宫,木星 5/9 判成 6/10,火星 4/8 判成 5/9。三张公开 AA 盘 × 12 宫的 D1 / 月亮上升层:578 个叶子条目里 413 个变化,36 行统计全部变化,同层双重过运从 0 处变为 D1 15 处、CL 6 处。 +- 触发条件:任何一次双重过运计算。 +- 根因:`((t_house - p_house + 12) % 12) == offset` 的宫距从 0 起,而相位号从 1 起。BUG-1060 / 1061 审计同一命令时只核对了目标取值与跨层配对,没有核对相位判定本身,所以没拦住;当时的 golden 是在错误相位下采的,等于把错一宫锁成了标准答案。上游 yinduzhanxing `2dd6062a`(09-24)已修。第二处:修正后同层重叠第一次出现,而重叠与跨层配对的循环遍历 Python 集合,结果列表顺序随 `PYTHONHASHSEED` 变(seed 1、2 下 golden 测试失败)。 +- 修复:`42d1582f`(Claude 移植上游一行 `+ 1`);`db5a0509` 五处循环改为按名字排序遍历。罗计仍投 5/7/9(占星师清单第 7 题,未改)。 +- 验证:`tests/test_double_transit_pac_aspect_count.py`(土 3/7/10、木 5/7/9、火 4/7/8 正反例);`tests/fixtures/double_transit_d1_cl_golden.json` 用测试自带 `--capture`(`PYTHONHASHSEED=0`、缓存 TTL 0)重采,seed 0/1/2/5 下都通过;`tests/test_double_transit_cross_layer_pairing.py` 三处断言按三栏更新(乔布斯 7 宫摘要改为 D1 层优先、第 9 宫反例换成乔布斯 9 宫、同宫命中集合重算)。 +- 防复发:相位计数测试;golden 不再依赖哈希顺序。 +- 相关记录:BUG-1060、BUG-1061、ERR-111。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1186 | API 格局列表截到前 10 条;已评估为空的格局模块被旧排盘预览「复活」 + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/jyotish_api_server.py` `_detect_yogas`、`_chart_from_full_reading`。 +- 现象:超过 10 条的格局被丢;`modules.yoga.yogas = []`(已评估、确实无格局)时取到 `chart.yogas` 的旧预览。 +- 根因:`return yogas[:10]`;`chart.get('yogas') or yoga_module.get('yogas') or …` 按真值而不是「字段存在」取第一份列表,且预览排在完整模块前面。上游 yinduzhanxing `e9beae6b` 已修。 +- 修复:`96767418`(Claude 移植):不截断;按「是 list」依次取 `yoga_module.yogas` → `yoga_module.detected_yogas` → `chart.yogas`。同文件另三处取格局的 `or` 写法(`_compute_thematic_report` 的 `full_modules.get('yoga') or collect(...)`、`enriched['yogas']` 两处拼接)是拼接或补算,不是「预览顶替已评估结果」,未改,列进进度记录。 +- 验证:`tests/test_api_yoga_list_presence.py`(12 条全返回;空列表不回退;顺序)。两个方法都不读 handler 状态,测试以 unbound 方式调用,未新增 `JyotishAPIHandler.__new__`;growth contract 通过。 +- 防复发:同上。 +- 相关记录:BUG-1174、BUG-1175。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1187 | 月亮类 / 太阳类格局把罗睺计都算作「有星」,同一张盘同时出现「月亮孤立」与「月亮有星」 + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`references/yoga_rules.json` `bvr_002/003/004`(Sunaphaa / Anaphaa / Duradhara)、`bvr_016/017/018`(Vesi / Vosi / Ubhayachara)、`kemadruma_yoga`;`scripts/yoga_engine.py` `RETIRED_RULE_IDS`;`scripts/yoga_expansion.py` `detect_kemadruma`(本来就只计五星)。 +- 现象:泰勒、齐达内盘排盘预览有 Kemadruma,规则引擎同时判 Anaphaa 等;太阳第 2 宫只有计都也判 Vesi。 +- 根因:规则只排除日或月,未排除罗计;`kemadruma_yoga` 计罗计而 `detect_kemadruma` 不计。经典定义只计火水木金土:BPHS 第 37 章第 7–10 颂(Sunapha / Anapha / Duradhara:「a Grah other than Sūrya」)、第 11–13 颂(Kemadruma)、第 38 章第 1 颂(Vesi / Vosi / Ubhayachari:「Barring Candr, if a Grah among Mangal etc.」),B.V. Raman《Three Hundred Important Combinations》第 2–5 条。PyJHora 4.8.7 `yoga.py` 的同名函数用 `SUN_TO_KETU`,计入罗计,且 Sunaphaa / Anaphaa 在太阳同宫时整格不成立——与经典不符,按决策 3 不跟。 +- 修复:`f3ed9509`(Claude 移植上游 `2dd6062a` 六条规则 + 我方 Kemadruma 也不计罗计 + 六条同名重复规则退役);`0a4e6d0a` 补回移植时丢掉的六条规则 `combo_template_en`(英文版报告这几格没有组合说明),Kemadruma 组合文字改为「月亮1/2/12宫无火水木金土(太阳与罗计不计),且Lagna角宫仅月亮」。角宫解除条件未动。 +- 验证:`tests/test_lunar_solar_yogas_count_five_planets.py`、`tests/test_lunar_solar_yoga_templates_kemadruma_nodes.py`(计都单独在月亮后一宫不成 Sunaphaa 且不解除 Kemadruma,规则版与 `detect_kemadruma` 一致;土星在同位则相反;英文组合文字齐全)。名人回测 golden 重生成后:泰勒、齐达内卡上的格局命中只有 Vosi / Ubhayachara,Anaphaa 不再命中,Kemadruma 不在任何一张卡上,卡面不再矛盾。 +- 遗留:`chart.yogas` 预览(`_detect_yogas` → `yoga_expansion.detect_kemadruma`,无角宫解除)对泰勒、齐达内仍给 Kemadruma,且同名出现两条;规则版带角宫解除、对这两张盘不成立。两套 Kemadruma 定义的差别(角宫解除)是占星师清单待答项,未改。 +- 相关记录:BUG-1174、BUG-1175。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1188 | Shadbala 四处计算错:Ayana 南北用未取模经度、时主在儒略日正午换日、平运动按周对齐且截断、Chesta 中点跨 0° 出错 + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/shadbala.py` `_ayana_bala`、`_calendar_lords`、`_surya_mean_longitude`、`calc_chesta_bala_precise`;全读 / 报告 / 星盘页 / 数据卡的 Shadbala 时力、动力分量与排名。生时校正打分只用 Sthana / Drik / Naisargika 三个分量,不受影响(见下)。 +- 现象:两张虚构盘改前改后:盘 A 金星 9.37 → 8.37 Rupa、火星 5.37 → 6.56,排名第 3、4 位互换;盘 B 金星 7.19 → 7.61,排名第 2、3 位互换(逐星表在进度记录)。V.P. Jain 公布值对照:容差内 34 → 36 项。 +- 根因:见标题四条。上游 yinduzhanxing `0afa2780` 已修。 +- 修复:`08376cf0`(Claude 移植算法修正与四条上游测试;存档 PyJHora Kala 对照测试按上游改法写三栏)。 +- 验证:`tests/test_shadbala_ayana_wrap.py`、`test_shadbala_hora_civil_weekday.py`、`test_shadbala_mean_motion_continuity.py`、`test_chesta_circular_midpoint.py`;`tests/test_vp_jain_shadbala_benchmark.py` 三栏更新(火星 / 木星 / 土星 Chesta 进容差,金星 27.23 → 30.03 出容差)。生时校正:记忆化 golden v2 分数不变,v5 77 例评测与 `a18f8d4e` 逐字节相同,reported offset 900 例 0 例变化,故不升算法版本;因 `scripts/shadbala.py` 在冻结打分身份里,研究记录按 ERR-110 重新冻结(标签 `upstream_sync4_2026_10_02`)。 +- 防复发:四条移植测试。 +- 相关记录:BUG-1189、ERR-110、ERR-111。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1189 | Shadbala 太阳最低要求写成 5.0 Rupa,BPHS 是 6.5(390 Virupa) + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/shadbala.py` `MIN_REQUIRED`(我方代码里唯一一张最低要求表;`.get(pname, 5.0)` 的 5.0 是未知天体的默认值,vendored jyotishganit / dashaflow 的表已是 6.5);太阳的 `ishta_bala_pct` 与强弱档(数据卡 `shadbala.Sun.level`、报告 Shadbala 表)。 +- 现象:太阳的「达标百分比」虚高约 30%,强弱档高一档。名人回测 9 位全部降一档(例:充足 → 略弱、强 → 充足、略弱 → 弱)。 +- 根因:表抄错。BPHS 第 27 章(Evaluation of Strengths)第 32–33 颂:「390, 360, 300, 420, 390, 330 and 300 Virupas are the Shad Bal Pindas, needed for Sūrya etc. to be considered strong」。上游 yinduzhanxing `0a6696c5` 仍是 5.0,需告知上游。 +- 修复:`09c0efc2`,代码注释引原颂。产品 2026-10-02 追加授权(原任务书写「不在本单」,已由产品改为本分支修)。 +- 验证:`tests/test_shadbala_sun_minimum_bphs.py`(整表等于原颂 Virupa / 60;太阳 ishta 百分比按 6.5 计)。生时校正打分不读最低要求,分数不变。 +- 防复发:同上测试。 +- 相关记录:BUG-1188。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1190 | Arudha Lagna / Upapada 有三个并行算法,同一张盘给出不同星座 + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/yogas_doshas.py`(全读 `modules.yogas_doshas`,接口响应与 PL9 导出包原样带出);`scripts/special_lagnas.py` 与全读 `modules.special_lagnas` 的 `Arudha_Lagna` / `Upapada_Lagna`(报告特殊上升点表、PL9 文字、`orchestrator_bridge`);`scripts/jyotish_engine.py` `_calc_transit_multi_reference` 的 AL 参考点。数据卡与生时校正本来就用 `jaimini.calc_arudha_padas`。 +- 现象:虚构盘 1990-06-15 10:30 北京:jaimini AL 白羊、UL 处女;`yogas_doshas` 给 AL 狮子、UL 摩羯;过运多参考点表给 AL 双子。1990-06-15 00:30 北京(命主在第 4 位):jaimini AL 射手,`special_lagnas` 给双子。 +- 根因:`yogas_doshas` 把「第几宫」当白羊起算的星座序号且无 1/7 例外;`special_lagnas` 的 1/7 例外「从落点数第 10」(上游口径),jaimini「从源宫数第 10」,命主在源宫第 4 / 10 位时两者不同;过运参考点把「上升度数 + 12 宫主度数」当 AL。 +- 修复(决策 4:三处都可见,改为取 jaimini 的值;jaimini 现行口径不改,上游「从落点数」不移植):删除 `yogas_doshas.calc_arudha_lagna / calc_upapada_lagna` 与 `special_lagnas.calculate_arudha_lagna / calculate_upapada_lagna`(及其 CLI 参数);`yogas_doshas` 的两个字段、全读 `special_lagnas.Arudha_Lagna / Upapada_Lagna`、过运参考点的 AL 都从 `jaimini.calc_arudha_padas` 取。 +- 验证:`tests/test_arudha_single_source.py`(10:30、00:30、02:30 三张虚构盘上四处 AL / UL 全等于 jaimini;并行函数已不存在)。 +- 遗留:`special_lagnas` 的 A10(Karma Pada)仍用「从落点数」的例外,与 jaimini A10 在同类盘上不同;不在决策 4 范围,进度记录列为待产品决定。 +- 相关记录:无。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 + +## BUG-1191 | 定位星链多星互换时硬选一颗「最终定位星」;Dasa 收敛写死无标定的概率 + +- 状态:resolved(分支验证;未部署) +- 首次发现 / 最近更新:2026-10-02 / 2026-10-02 +- 影响面:`scripts/jyotish_engine.py` 全读 `final_dispositors`(PL9 定位星表)、`_calc_dasa_convergence`。 +- 现象:火星金星互换时,表上只写其中一颗为最终定位星;报告出现「85-92%」「75-85%」等概率。 +- 根因:取「最后一个不重复元素」当终点;概率是写死的经验值,没有标定依据。上游 yinduzhanxing `e9beae6b` 已修。 +- 修复:`bc9b9f89`(Claude 移植 `final_dispositor_from_chain`:只有自循环才有终点,多星循环写 `Cycle: A -> B -> A`;`probability = None` 并加 `probability_basis`)。 +- 验证:`tests/test_dispositor_cycle_resolution.py`。 +- 防复发:同上。 +- 相关记录:无。 +- 修复版本:`codex/upstream-sync4-20261002`(未推送)。 diff --git a/docs/tasks/PROGRESS-upstream-sync4-20261002.md b/docs/tasks/PROGRESS-upstream-sync4-20261002.md new file mode 100644 index 00000000..9eacc5aa --- /dev/null +++ b/docs/tasks/PROGRESS-upstream-sync4-20261002.md @@ -0,0 +1,180 @@ +# PROGRESS · 上游同步第四轮(2026-10-02) + +- 任务书:`docs/tasks/TASK-upstream-sync4-20261002.md`(`origin/staging` `a18f8d4e`);吸收 `TASK-yoga-lunar-node-consistency-20261002.md`(T5)。 +- 执行方式:产品负责人要求子代理直接执行。Claude(PM)已按产品授权先移植 5 项上游代码(各一提交),子代理完成其余各项、测试、评测、回测与记录。只 commit,未 push。 +- 分支 / worktree:`codex/upstream-sync4-20261002` / `.worktrees/upstream-sync4-20261002`,基线 `a18f8d4e`。 +- 上游参照:`/workspace/yinduzhanxing` `origin/main` `0a6696c5`(只读,未复制上游文案)。 +- BUG 编号:开工核对 `origin/staging` 最大号 BUG-1182;本单 BUG-1183~1191。 + +## 追加决策(产品 2026-10-02,任务书之后) + +- **F3 本分支一起修**:太阳 Shadbala 最低要求 5.0 → 6.5 Rupa(BPHS 第 27 章第 32–33 颂,390 Virupa)。原任务书 §3 决策 5 与 §7 写「不在本单」,以本条为准。 + +## 提交 + +| 提交 | 内容 | BUG | +| --- | --- | --- | +| `42d1582f`(PM) | T2 双重过运相位 1 起数 + 新测试 | 1185 | +| `f3ed9509`(PM) | T5 月亮 / 太阳类格局只计五星、Kemadruma 不计罗计、6 条重复规则退役 + 测试 | 1187 | +| `96767418`(PM) | T4 格局列表不截断、按「是 list」取 | 1186 | +| `08376cf0`(PM) | T3 Shadbala 四处修正 + 4 条上游测试;存档 Kala 测试三栏 | 1188 | +| `bc9b9f89`(PM) | T7 定位星循环、概率改 None | 1191 | +| `ba97fd59` | T1 婚姻计数只留几何指数;Parivartana 崩溃与误判 | 1183、1184 | +| `3522e85d` | T4 回归测试 | 1186 | +| `db55aef1` | T6 AL / UL 只留 jaimini 一个来源 | 1190 | +| `09c0efc2` | F3 太阳最低要求 6.5 | 1189 | +| `0a4e6d0a` | T5 补回丢掉的英文组合文字;Kemadruma 文字;节点测试 | 1187 | +| `0176cb30` | V.P. Jain 基准与双重过运 golden 三栏更新 | 1185、1188 | +| `db5a0509` | 双重过运结果按名字排序(哈希顺序);跨层测试三栏 | 1185 | +| `5731b0af` | 研究记录按 ERR-110 重新冻结(不升算法版本) | 1188、1189 | +| `79efaf83` | 普通对话两份 golden 重生成 | — | +| `8ae4cef7` | 婚姻卡去掉第 7 宫「(对宫主)」重复行,守 12,000 字符预算 | 1185 | +| `26d4c204` | 确认门测试读新冻结记录 | — | +| `b53f56b6` | 新测试 ruff 修整 | — | +| (本提交) | 记录:BUG 历史、CHANGELOG、本文件、任务索引、回测第六轮 | — | + +## T1 婚姻计数(BUG-1183 / 1184) + +- 改动:`_interpret_marriage_count` 只写「关系几何指数 N:……不代表婚姻或关系的次数」与同星座 / 对冲两句位置描述;`_marriage_recommendations` 对所有指数给同一套三句中性说明;`note` 改几何口径;新增 `geometric_index`(`marriage_count` 兼容保留)。`_derived_marriage_evidence` 一律 `neutral`,details 只有 `geometric_index`。裁决「对象筛选」轴原来读 `details.d9_marriage_quality.quality_rating`,details 不再带它,这一行读法一并删除(多余入口删除)。 +- 顺带修复(BUG-1184):距离在 Parivartana 段之前算出(旧代码有交换时 `UnboundLocalError`,模块缺失);互换判定改为「定位星落在 7 宫主掌管的星座」(旧判定实际是合相)。合相与定位星在一般盘里不罕见,旧代码在这类盘上整个模块丢失。 +- 验收:`rg "再婚|段关系|第一段|终身关系|忠诚度" scripts/marriage_counting.py` 无命中。个人报告:`scripts/pl9_reader_export.py` 不渲染婚姻计数;全读的 PL9 导出包原样带 `modules.marriage_counting`,文字已是中性。 +- **模型视图实测**:虚构盘 1990-06-15 10:30 北京,`/api/consultation_workflow` 婚恋路由(研究 runner 同一 handler,VedAstro 拦截)→ 婚恋主题证据 5 条(D1-7th-house、Spouse-status-yoga、DK-UL-Dasha timing、Romantic-activation、Relationship-formation),来源 `reused_chart_modules`、`full_reading_used: false`,**婚姻计数条目不出现**;经 `scripts/research/project_consult_model_context.ts`(`toModelOutput`)投影后的模型视图里也没有「Marriage-counting」「关系几何指数」。条目只在 `/api/thematic_report`(走全读)出现,已由新测试锁 `neutral` 与几何口径。 +- 遗留(待产品):`_assess_d9_marriage_quality` 的评级文字(「婚姻稳定」「强烈建议婚前咨询」等)仍在全读原始模块与 PL9 导出包里,不进证据条目;是否同样只留结构事实,任务书未授权,未改。 + +## T2 双重过运(BUG-1185) + +- 移植一行 `+ 1` 后,D1 / 月亮上升 golden(三张公开 AA 盘 × 12 宫)用测试自带 `--capture` 重采:578 个叶子条目里 413 个变化,36 行统计全部变化,同层双重过运 D1 0 → 15 处、CL 0 → 6 处。 +- 重采后发现:同层重叠第一次出现,而 `cmd_double_transit_pac` 的重叠与跨层循环遍历集合,结果顺序随 `PYTHONHASHSEED` 变(seed 1、2 下 golden 测试失败,seed 3 通过)。五处循环改为排序遍历后重采,seed 0/1/2/5 都通过。 +- `tests/test_double_transit_cross_layer_pairing.py` 三栏: + +| 断言 | 原值 | 新值 | 原因 | +| --- | --- | --- | --- | +| 乔布斯 7 宫摘要 | 「⚠️ 跨层间接」开头 | 「⚠️ D1 层 Double Transit 激活」开头 | 木星 9 宫相位落到 D1 7 宫,D1 层自身成立,摘要 D1 优先;跨层条目仍在 | +| 第 9 宫不与无关 D9 目标配对 | 泰勒 9 宫(木星在 D1 9宫、土星在 Mars_D9) | 乔布斯 9 宫(土星在 D1 9宫、木星在 Mercury_D9) | 相位修正后泰勒那组命中不同时出现;换同结构公开盘,断言不变 | +| 同宫命中集合 | 泰勒 6、12;乔布斯 2、6、7 | 奥巴马 12;泰勒 3、5、7、9、11;乔布斯 1、3、5、7 | 相位从 1 数,命中宫整体平移 | + +- BUG-1060 / 1061 为何没拦住:那两次只核对目标取值与跨层配对,D1 / CL golden 是在错误相位下采的,把错一宫锁成了标准答案。 +- 数据卡:婚姻卡第 7 宫行因修正而增多,泰勒婚姻轮模型视图 11,984 → 12,040,超出 12,000 字符预算(`consult-condensed-checklist-20260927` size)。第 7 宫的事件宫主与对宫主是同一颗星,每个命中都重复两行;卡改为保留「(宫主)」行、去掉其「(对宫主)」重复行(卡上只放引擎原值,「nothing rewritten」合同仍成立),预算断言未改(BUG-1155 先例)。`consult-evidence-card-v2-20260927` 的 house_7 断言三栏写在测试注释。乔布斯婚姻轮 11,980,距预算 20 字,下次往卡上加字段需先看这一格。 + +## T3 Shadbala(BUG-1188)与 F3(BUG-1189) + +- 可达路径:全读 `modules.shadbala`(报告、星盘页、数据卡 `shadbala.<星>.level`)都经 `scripts/shadbala.py` `calc_shadbala`;生时校正打分只用 `shadbala_sthana_drik_naisargika_*` 规则(`scripts/rectification/scoring_service.py`),T3 改的是 Kala / Chesta,F3 改的是最低要求,都不进打分。 +- F3 位置:`scripts/shadbala.py` `MIN_REQUIRED` 是我方代码里**唯一**一张最低要求表;同文件 `MIN_REQUIRED.get(pname, 5.0)` 的 5.0 是未知天体默认值,不是 BPHS 表;`references/open_source_sources/jyotishganit/.../constants.py` `MIN_REQUIRED_SHADBALA` 与 `references/open_source_sources/dashaflow/shadbala.py` `REQUIRED_SHADBALA` 是 vendored 参照,已是 6.5,未动。代码注释引原颂。**上游 `0a6696c5` 仍是 5.0,需告知上游。** +- 两张虚构盘改前(`a18f8d4e`)/ 改后(T3 + F3),Rupa、排名、Kala、Chesta、达标百分比 / 档: + +盘 A(1990-06-15 10:30 北京,lahiri):排名 日 水 金 木 土 火 月 → 日 水 木 金 土 火 月 + +| 星 | Rupa 前 → 后 | 排名 | Kala | Chesta | 达标 / 档 | +| --- | --- | --- | --- | --- | --- | +| 太阳 | 10.99 → 10.99 | 1 → 1 | 205.42 → 205.42 | 119.58 → 119.58 | 219.7% 极强 → 169.0% 极强 | +| 月亮 | 5.25 → 5.25 | 7 → 7 | 12.74 → 12.74 | −50.9 → −50.9 | 87.5% 略弱 → 不变 | +| 火星 | 5.37 → 6.56 | 6 → 6 | 7.83 → 78.69 | 31.39 → 31.61 | 107.5% 充足 → 131.1% 强 | +| 水星 | 9.40 → 9.38 | 2 → 2 | 不变 | 16.23 → 15.12 | 134.2% → 134.0% 强 | +| 木星 | 8.97 → 8.97 | 4 → 3 | 不变 | 8.29 → 7.99 | 138.0% → 137.9% 强 | +| 金星 | 9.37 → 8.37 | 3 → 4 | 293.83 → 233.83 | 21.08 → 20.74 | 170.4% → 152.1% 极强 | +| 土星 | 6.70 → 6.70 | 5 → 5 | 不变 | 50.63 → 50.93 | 134.0% → 134.1% 强 | + +盘 B(1985-03-10 04:00 上海,lahiri):排名 火 日 金 土 木 水 月 → 火 金 日 土 木 水 月 + +| 星 | Rupa 前 → 后 | 排名 | Kala | Chesta | 达标 / 档 | +| --- | --- | --- | --- | --- | --- | +| 太阳 | 7.56 → 7.56 | 2 → 3 | 不变 | 不变 | 151.1% 极强 → 116.3% 充足(F3) | +| 月亮 | 5.38 → 5.38 | 7 → 7 | 不变 | 不变 | 89.7% 略弱 → 不变 | +| 火星 | 9.71 → 9.67 | 1 → 1 | 不变 | 16.70 → 14.85 | 194.1% → 193.5% 极强 | +| 水星 | 6.28 → 6.44 | 6 → 6 | 不变 | 18.07 → 27.28 | 89.8% → 92.0% 略弱 | +| 木星 | 6.69 → 6.73 | 5 → 5 | 不变 | 10.86 → 13.27 | 102.9% → 103.5% 充足 | +| 金星 | 7.19 → 7.61 | 3 → 2 | 85.87 → 107.75 | 49.61 → 52.45 | 130.8% → 138.3% 强 | +| 土星 | 7.14 → 7.18 | 4 → 4 | 不变 | 36.62 → 39.10 | 142.8% → 143.6% 强 | + +(排名按达标百分比排,所以盘 B 太阳 Rupa 不变、F3 后排名下降。月亮 Chesta 为负是既有行为,不在本单。) + +- `tests/test_vp_jain_shadbala_benchmark.py` 三栏:容差内 34 → 36、变体 8 → 6;Chesta 火星 19.25 → 21.08、木星 11.23 → 8.86、土星 6.78 → 4.34 进入 ±1 Virupa,金星 27.23 → 30.03 离开(公布 28.18),水星 18.08 → 27.14 仍差 1.62。 +- 名人回测 9 位的太阳档全部降一档(例:乔布斯、奥巴马、泰勒、嘉兰 充足 → 略弱;梦露、卡罗、布什、齐达内 强 → 充足;琵雅芙 略弱 → 弱)。 + +## T4 格局列表(BUG-1186) + +- 新测试 `tests/test_api_yoga_list_presence.py`:12 条全返回;`yoga_module.yogas = []` 不回退到 `chart.yogas`;`detected_yogas` 第二、`chart.yogas` 最后。两个方法不读 handler 状态,以 unbound 方式调用,未新增 `JyotishAPIHandler.__new__`;growth contract 通过。 +- 同文件其余取格局列表的 `or` 写法(未改,理由:都是补算或拼接,不是「旧预览顶替已评估结果」):`_compute_thematic_report` `yogas = full_modules.get('yoga') or collect('yogas', …)`(模块为空才补算);`enriched['yogas'] = chart.get('yogas') or []` 后再拼 `extended_yogas` / `yogas.yogas`(两段相加)。 +- 数据卡:格局变多没有触发 BUG-1175 的上限;卡长变化见 T2。 + +## T5 月亮 / 太阳类格局(BUG-1187) + +- 出处核对:BPHS 第 37 章第 7–10 颂(Sunaph / Anaph / Duradhar:「a Grah other than Sūrya」)、第 11–13 颂(Kema Drum:「Excluding Sūrya, should there be no Grah with Candr, or in the 2nd and/or 12th from Candr, or in a Kendr from Lagn」)、第 38 章第 1 颂(Vesi / Vosi / Ubhayachari:「Barring Candr, if a Grah among Mangal etc.」——明说「火星等」,即五星);B.V. Raman《Three Hundred Important Combinations》第 2–5 条。与决策 3 一致,未停。 +- PyJHora 4.8.7(本机 `jhora/horoscope/chart/yoga.py`):`sunaphaa_yoga` / `anaphaa_yoga` 统计包括罗计在内的所有星,且太阳在该宫时整格不成立;`kemadruma_yoga` 用 `SUN_TO_KETU`(计罗计);`vesi_yoga` / `vosi_yoga` 同样计罗计。与经典口径不同,按决策 3 不跟。 +- 退役规则(`scripts/yoga_engine.py` `RETIRED_RULE_IDS`,规则留在文件里、不参与检测):`voshi_yoga`、`veshi_yoga`、`ubhayachari_yoga`、`anapha_yoga`、`sunapha_yoga`、`durudhura_yoga`(与 `bvr_002/003/004/016/017/018` 同名重复)。上游另外 4 条退役不在本单范围,未取。 +- 移植遗漏补修:PM 移植时六条 BVR 规则的 `combo_template_en` 丢了(英文版这几格没有组合说明),已补回;Kemadruma 中文 / 英文组合文字改为写明「太阳与罗计不计」。 +- **与上游 Kemadruma 的差异(告知上游)**:一,上游 `kemadruma_yoga` 规则仍计罗计(`ky1` 只允许日月),我方只计五星;二,我方 `yoga_expansion.detect_kemadruma` 只看月亮 2 / 12 宫、无角宫解除,规则版看 1 / 2 / 12 宫且有「角宫只有月亮」条件,两处定义不同(角宫解除条件是占星师清单题,本单未动)。 +- 卡面核对(名人回测 golden):泰勒、齐达内的格局命中只剩 Vosi / Ubhayachara,Anaphaa 不再命中,Kemadruma 不在任何一张卡上——**卡面不再同时出现 Kemadruma 与 Anaphaa**。残留:`chart.yogas` 预览(`_detect_yogas` → `detect_kemadruma`,无角宫解除)对这两张盘仍给 Kemadruma,而且同名两条(`extended` 一条、无类别一条);预览不进卡。卡罗的 Sunaphaa 由不成立变为成立(旧规则「太阳在月亮第 2 宫则整格不成立」,新规则太阳不计、有五星即成立,符合 BPHS 原文)。 + +## T6 Arudha 单一来源(BUG-1190) + +- 可见面排查:`yogas_doshas` 的 AL / UL 在全读 `modules.yogas_doshas`(接口响应、PL9 导出包 `advanced_systems.yogas_doshas`)里原样可见;另查出两个并行来源也可见:`special_lagnas` 的 `Arudha_Lagna` / `Upapada_Lagna`(报告特殊上升点表、PL9 文字多处、`orchestrator_bridge`),过运多参考点表的 AL。数据卡(`arudha_padas.padas`)与生时校正本来就用 jaimini。 +- 处理(决策 4):三处都改为取 `jaimini.calc_arudha_padas`;`yogas_doshas.calc_arudha_lagna / calc_upapada_lagna`、`special_lagnas.calculate_arudha_lagna / calculate_upapada_lagna`(及 CLI 参数)删除。jaimini 的「从源宫数」不变,上游「从落点数」未移植。 +- 两张虚构盘(1990-06-15 10:30 北京;1985-03-10 04:00 上海):jaimini AL 白羊 / 处女、UL 处女 / 宝瓶;改前 `yogas_doshas` AL 狮子 / 双鱼、UL 摩羯 / 狮子,过运参考点 AL 双子 / 天秤;改后四处全等。另用 1990-06-15 00:30、02:30(命主 / 12 宫主在源宫第 4 位,旧 `special_lagnas` 例外数法会给双子而 jaimini 给射手)锁住 `special_lagnas`。 +- 遗留(待产品):`special_lagnas` 的 A10(Karma Pada)仍用「从落点数」的例外,与 jaimini A10 在同类盘上不同;不在决策 4(只说 AL / UL)范围。 + +## T7(BUG-1191) + +- PM 已移植;`rg "85-92%|75-85%|50-65%|\+15-20%" scripts` 无命中。报告 golden 无需重生成(报告模板不渲染这两处字段的变化,相关测试全过)。 + +## T8 生时校正影响 + +- **分数没有变,不升算法版本**(决策 6 只在分数变化时升): + - `tests/test_rectification_engine_memoization.py` 全文件通过;与 v2 golden 逐字段比:候选分数、决策回执全同,只有 `feature_hash` 与三个候选的 `fingerprints.shadbala` / `static` 变(Shadbala 数值变了,指纹随之变;打分只读 Sthana / Drik / Naisargika)。 + - v5 77 例评测(`python3 scripts/research/holdout_v5_baseline.py --dataset v5`,`PYTHONHASHSEED=0`、缓存 TTL 0,各在一次性 worktree):`a18f8d4e`、PM 移植后 `bc9b9f89`、本分支全部引擎改动后 `0176cb30` 三次的 sweep / cluster_width / futile_collect 结果逐字节相同(合并文件只差耗时)。`0176cb30` 之后的引擎改动只有双重过运排序(`db5a0509`),不进打分。 + - reported offset 900 例:0 例变化;sealed holdout 20 例:逐条相同。 +- **研究记录按 ERR-110 重新冻结**:`scripts/shadbala.py` 在 dataset `frozen_scoring.files` 里,字节一变完整性门禁 13 条失败(快速门里的 `test_rectification_validation_integrity_gate.py` 等)。按先例新标签 `upstream_sync4_2026_10_02`:先 `--freeze` 再重放,`functional_v2` 记录移到 `previous_*`、逐字节保留;`references/rectification_sealed_holdout.v1.json` 更新当前身份;前端 `rectification-confirmation-gate.test.ts` 读新路径(三栏写在测试里)。 +- 历史 Case 能否打开(BUG-621):本单未升算法版本、未改 Skill 版本,历史结果的身份与读取路径不变,不需要只读回退;未做浏览器级验证(无登录态),列入真机清单可选项。 +- 生时校正测试:Python 全量里所有 `rectification` 相关测试与基线同名(见门禁);前端 `rectification-*` 测试全过。 + +| 指标(v5 77 例) | ±10 | ±30 | ±60 | +| --- | --- | --- | --- | +| 先验头名 前 / 后 | 0.1818 / 0.1818 | 0.0909 / 0.0909 | 0.0779 / 0.0779 | +| 六题回放头名 前 / 后 | 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 | + +红线 5(任一格下降 > 1 pp)未触发,不需要逐项回退复测。 + +## 普通对话 golden 与回测 + +- `frontend/tests/fixtures/consult-evidence-card-golden.json`、`consult-biography-backtest-golden.json` 用 capture 脚本各跑两次,逐字节相同。与 `a18f8d4e` 的差异只在:格局命中与名字(T5)、双重过运结论 / 活跃宫 / 第 7 宫摘要(T2 与排序)、太阳 Shadbala 最低要求 / 百分比 / 档(F3)。 +- 名人回测第六轮:`docs/testing/consult-affliction-backtest-20261001.md`「改动后(第六轮,上游同步四)」。回测跑的是排序修正之前那一版 golden(只差双重过运结论的先后顺序)与去重之前的婚姻卡(第 7 宫多一行重复),内容事实相同。 + +## 门禁 + +| 项 | 结果 | +| --- | --- | +| ruff(门禁清单 5 个文件)、`py_compile scripts/*.py jyotish_vedic/*.py mcp_server.py`、隐私扫描 | 通过 | +| `run_quality_gate.py --profile quick --skip-yoga-logic --skip-frontend-runtime` | failures [],exit 0 | +| Python 全量(`pytest tests -n 4`) | 62 条失败,全部在开工前基线 67 条名单内;基线里 5 条 prashna 产物测试本次通过(测试自己重写 `references/oracle/prashna_*` 产物所致,产物已还原、未提交) | +| `tsc --noEmit` | 0 | +| `npm run lint` | 0 error(126 warning) | +| `npm test` | tests 4,921(基线 4,911)、fail 24、cancelled 0;失败名单与基线 24 条逐条相同 | +| `next build` | 通过,`/` 为 `○ Static`;本单改的前端代码只有服务端数据卡(`consultation-evidence-card.ts`),未量首屏 gzip | + +## 上游 `0a6696c5` 之后的提交(未取,原因) + +| 提交 | 内容 | 未取原因 | +| --- | --- | --- | +| `3bc2908a`、`6f638ea2`、`4d2630ae` | 上游 API 新增「共享引擎运行合同」端点与省略输入报告 | 上游自身的 API 合同,我方产品不调用;且会给 `jyotish_api_server.py` 加处理分支(增长冻结) | +| `b1d721ca` | 解读缓存失效测试 | 上游缓存机制,我方没有对应结构 | +| `190c256a` | 上游阻塞优化审计文档 | 纯上游文档 | +| `b40c7fde`、`28f41912` | 诅咒格局(curse yoga)健康措辞收边 + 测试 | 任务书 §7 已归「引擎硬 bug」任务书(`curse_yoga_detector` 的「过早死亡风险」措辞),不在本单 | +| `acdc3551` | Narayana 默认改为「有出处约束」的 profile | 占星师清单第 2 题(Narayana 起法),任务书硬红线 3 不改 | +| `197672e3` | 8 星制 Chara Karaka 罗睺度数反算 | 任务书 §7 已归「引擎硬 bug」任务书(8 星制 PiK 排位与罗睺反算) | + +## 告知上游 + +1. 太阳 Shadbala 最低要求仍是 5.0(`scripts/shadbala.py` `MIN_REQUIRED`),BPHS 第 27 章第 32–33 颂为 390 Virupa = 6.5 Rupa。 +2. `kemadruma_yoga` 规则仍计罗计;经典(BPHS 第 37 章第 11–13 颂、Raman 第 5 条)只计五星。 +3. 我方 `special_lagnas` 曾与上游同为「从落点数」的 1/7 例外,已统一到 jaimini「从源宫数」(AL / UL);A10 未改。 + +## 开放问题(交产品) + +1. 事业「不靠曝光」类读偏:第六轮 9 / 18,第五轮 5 / 18(见回测文档);与本单改动无可证明的关联,但太阳档 9 位全降一档,建议产品下一单从卡上「落 6 / 8 / 12」字段着手(第五轮读出来的第 2 条)。 +2. D9 婚姻质量评级文字是否也只留结构事实(T1 遗留)。 +3. `special_lagnas` A10 的例外数法(T6 遗留)。 +4. 两套 Kemadruma 定义(预览无角宫解除、规则有)与预览里同名两条(T5 遗留)。 +5. 乔布斯婚姻轮模型视图 11,980 / 12,000(T2)。 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 069bd3e2..77ae2d17 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -409,5 +409,5 @@ | `TASK-consult-no-presupposition-and-backtest-20261001.md` | `PROGRESS-consult-no-presupposition-backtest-20261001.md` | 三单之三:写作形状去掉「对象在场」预设、受冲时请用户确认、删被照抄的「逆行」示例、用户纠正时不辩护;建立名人生平回测作为普通对话提示词改动的固定验收(预留 BUG-1167~1172) | **已实现待验收**(Claude 子代理直接执行,BUG-1164~1168;未推送);基于第二单分支 + staging;名人回测已跑改动后:严重冲突 39→19、禁句 7→0、纠正追问 8/8,对照组误报 1→15;产品 10-02 改「迹象 + 范围」口径(`066558a6`)后第二轮:严重 15/72、误报 6(轻)、排查 5 份 8/10、新增名人严重 6/32、事业 12/18,修订通过线仍只有禁句达到;含产品 10-02 年运 / 时运字数口径(第二单 blocker 解除) | 分支 `codex/consult-no-presupposition-backtest-20261001` | | `TASK-consult-career-yoga-functional-20261002.md` | `PROGRESS-consult-career-yoga-functional-20261002.md` | 三单回测遗留三项:事业题按星的本性看行业、按名声信号看公众/幕后;开场守「只说迹象」;功能吉凶改 BPHS 第 34 章对照表(推翻 v1 公式,命主不再一律 yogakaraka);瑜伽检测不跳过;大格局以「传统格局,本站未验证」上卡(产品授权放宽 §8.4 仅限此栏)(BUG-1174 起) | **已实现待验收**(Claude 子代理直接执行,BUG-1174~1177;未推送);产品 10-02 二次决定后:yogakaraka 窄修已合入(生时校正评测逐项不变),BPHS 全表留 T1 分支待顾问;事业改「不猜行业,问用户」;第四轮回测请问一句 18/18 达到、行业 / 类型冲突 9/18 与严重 12/72 未达;上游 e9beae6b 移植因权限未做 | 分支 `codex/consult-career-yoga-functional-20261002` | | —(产品要求子代理直接执行,无任务书;决策见进度记录) | `PROGRESS-consult-upstream-functional-v2-20261002.md` | 上游功能吉凶 profile v2(`57782aea`)收尾:生时校正算法身份升 scoring-10、「日期窗合同」改按代数判断(新迁移只改函数体)、记忆化 golden 新增 v2、校正研究记录重新冻结并把 `functional_benefics.py` 补进冻结身份;普通对话 golden 重生成;第四轮残留(事业落宫翻成幕后、受冲母亲写成在管、逆行写成拖、两处请求);第五轮名人回测(BUG-1180~1182,BUG-1158 → resolved) | **已实现待验收**(Claude 子代理直接执行;未推送):门禁 tsc 0 / lint 0 error / npm test 失败名单与基线同名 / test:db 与基线同名 / build `/` Static;第五轮:父母严重冲突 3 → 0、禁句 0、每份一问,事业类型冲突 5/18 与对照组轻度误报 4 未达线,交产品 | 见进度记录「提交」 | -| `TASK-yoga-lunar-node-consistency-20261002.md` | `PROGRESS-yoga-lunar-node-consistency-20261002.md` | 月亮前后有星格(Sunaphaa/Anaphaa/Duradhara)计入罗睺计都、孤立格(Kemadruma)不计,泰勒/齐达内卡上同时出现互相矛盾的格局;统一为只计五颗真行星 | **已并入** `TASK-upstream-sync4-20261002.md` T5 | 分支 `codex/yoga-lunar-node-consistency-20261002` | -| `TASK-upstream-sync4-20261002.md` | `PROGRESS-upstream-sync4-20261002.md` | 上游同步第四轮(对照 yinduzhanxing `0a6696c5`):婚姻计数删关系次数断语、双重过运相位错一宫、Shadbala 四处计算错、格局列表截断与空回退、月亮/太阳类格局只计五星(吸收月亮单)、Arudha 只留 jaimini 一个来源、定位星循环与未标定概率;BUG 从 1183 起 | **待领取** | 分支 `codex/upstream-sync4-20261002` | +| `TASK-yoga-lunar-node-consistency-20261002.md` | `PROGRESS-yoga-lunar-node-consistency-20261002.md` | 月亮前后有星格(Sunaphaa/Anaphaa/Duradhara)计入罗睺计都、孤立格(Kemadruma)不计,泰勒/齐达内卡上同时出现互相矛盾的格局;统一为只计五颗真行星 | **已并入** `TASK-upstream-sync4-20261002.md` T5(交付见 `PROGRESS-upstream-sync4-20261002.md`,`f3ed9509` + `0a4e6d0a`,BUG-1187) | 原分支未使用;在 `codex/upstream-sync4-20261002` 交付 | +| `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` | diff --git a/docs/testing/consult-affliction-backtest-20261001.md b/docs/testing/consult-affliction-backtest-20261001.md index 1b79d67f..056a12f6 100644 --- a/docs/testing/consult-affliction-backtest-20261001.md +++ b/docs/testing/consult-affliction-backtest-20261001.md @@ -439,6 +439,74 @@ Bill Clinton 不在仓库案例库里,没有加;「父亲缺席」由 Obama 4. **功能吉凶 v2 上卡后没有出现新的读法问题**:答案里引用功能吉凶的句子按新分组写(例:天蝎上升「太阳是功能吉星」),没有拿功能吉星抵消受冲。 5. 成本:72 份墙钟 3,965 s(含 4 份网络超时各约 2,600 s,并发 4),补跑 4 份 102 s;成功份单份中位 65 s、最长 127 s;输入 3,886,002 + 259,413 token(缓存约 86%),输出 1,022,726 + 54,358(推理 933,005 + 48,785);查卡 9 次。 +## 改动后(第六轮,上游同步四,2026-10-02) + +- 进度:`docs/tasks/PROGRESS-upstream-sync4-20261002.md`(任务书 `TASK-upstream-sync4-20261002.md`)。本轮没有改提示词或清单,改的是引擎与数据卡:月亮 / 太阳类格局只计五星(BUG-1187)、双重过运相位从 1 数(BUG-1185)、Shadbala 四处修正与太阳最低要求 6.5(BUG-1188 / 1189)、婚姻计数只留几何指数(BUG-1183,普通对话卡上本来没有这一条)。 +- golden:两份都用 capture 脚本重新生成,两次逐字节相同。卡上可见的变化:格局命中(例:泰勒、齐达内 Anaphaa 不再命中,卡罗 Sunaphaa 成立)、双重过运结论与活跃宫、9 位太阳 Shadbala 档全部降一档。回测用的是双重过运排序修正之前、婚姻卡第 7 宫去重之前的那一版(只差结论先后与一行重复,事实相同)。 +- 命令同第五轮(`--repeats 2 --concurrency 4 --correction-domain parents,career --correction … --correction-texts …`);72 份 + 8 份父母纠正 + 6 份事业追问,失败 0,无补跑。 +- 评分:Claude 逐份阅读全部 86 份,口径同第五轮。 + +| 名人 | 父母 r1 / r2 | 婚姻 r1 / r2 | 健康 r1 / r2 | 事业 r1 / r2 | +| --- | --- | --- | --- | --- | +| Steve Jobs | 通过 / 通过 | 通过 / 通过 | 通过 / 通过(弱) | 严重冲突 / 严重冲突 | +| Barack Obama | 通过(弱) / 通过 | 通过 / 通过 | 通过 / 误报(轻) | 严重冲突 / 通过(弱) | +| Elizabeth Taylor | 通过 / 通过 | 通过 / 通过(弱) | 读反(轻) / 通过(弱) | 严重冲突 / 通过(弱) | +| Marilyn Monroe | 通过 / 通过 | 通过(弱) / 通过(弱) | 通过 / 通过 | 严重冲突 / 严重冲突 | +| Judy Garland | 通过 / 通过 | 通过 / 通过 | 通过(弱) / 通过 | 严重冲突 / 通过 | +| Édith Piaf | 通过(弱) / 通过(弱) | 通过 / 通过 | 通过 / 通过(弱) | 通过(弱) / 通过 | +| Frida Kahlo | 通过 / 通过 | 通过 / 通过 | 通过 / 读反(轻) | 通过(弱) / 通过(弱) | +| George W. Bush(对照) | 通过 / 误报(轻) | 误报(轻) / 通过 | 通过 / 误报(轻) | 严重冲突 / 通过(弱) | +| Zinedine Zidane(对照) | 误报(轻) / 通过 | 通过(弱) / 通过 | 误报(轻) / 误报(轻) | 通过(弱) / 严重冲突 | + +事业逐份(行业 / 类型冲突原句): + +| 名人 | r1 | r2 | +| --- | --- | --- | +| Steve Jobs | 「高度不由曝光决定」「公开落地、被外人看见:这一层最贵…来得晚」;有问 | 「名分和认可这一环…来得偏晚」「上限卡在名分和认可上」;有问 | +| Barack Obama | 「重心在自己产出的东西上…不是别人给的头衔」(按 5 宫猜成创作 / 教学类);有问 | 无(「替别人收尾」作为一种可能、「比同行走得晚」记弱;AL 落 10 宫读成被看见有落点);只问「是哪一种」+「按你的实际工作再看」,没有直接问做哪一行 | +| Elizabeth Taylor | 「落地:签下来、被看见这一类要往后等」;有问 | 无(「自己把一件事做深,再靠合作放大」记弱);有问 | +| Marilyn Monroe | 「事业主线是经手具体的事、跟别人手上的资源打交道」「分量…一件一件经手攒出来的」;有问 | 「是靠接住别人不愿碰的事换来的」「高度不体现在名声先到」;有问 | +| Judy Garland | 「把难缠的事接过来…不是靠一次机会跳上去」「从别人不愿碰的事你做完里长出来」;有问 | 无;有问 | +| Édith Piaf | 无(「名头是慢慢加上去的」记弱;行动「给对方方案、报价」预设职业形态);有问 | 无(「撑力的重心在位置和名声上」);有问 | +| Frida Kahlo | 无(「推力来自持续经营,不来自一次跃升」记弱);有问 | 无(「客户、渠道、作品…不是一次性的认可」记弱);有问 | +| George W. Bush | 「名分比实干来得晚」「不是靠一次亮相」「被看见:最慢的一层」;有问 | 无(「落点在进账和议价上」记弱;「被看见这一块不会缺」);有问 | +| Zinedine Zidane | 无(「别人认你…不是从场合上来;也可能只是你不太往外说」作范围,记弱);有问 | 「吃饭的本事落在说得清、写得清、算得清、教得会这一路」「名头、位置、被看见…最慢」;有问 | + +格子说明: +- 父母:18 份没有一份把受冲的一方写成「在管、在安排、近」;奥巴马 r1 结尾「父亲这条线的支撑信号比母亲那条更集中一些」偏向错的一边,记弱;琵雅芙两份的行动「写下他们原话一句」「挑一件你正在替父母兜着的事」预设父母在场,记弱(第五轮同类残留)。布什 r2「妈妈这条的信号是近处的摩擦多…一个偏向靠近了容易磨」、齐达内 r1「哪一块是真断的、哪一块只是表达不顺」,记误报(轻)。 +- 婚姻:布什 r1「靠近不难,后来推进的节奏往往比事情本身慢」(相识三个月成婚),记误报(轻);梦露两份「心动来得晚、能接触的人不多」「婚姻这条线也偏慢」作开场结论,记弱。 +- 健康:泰勒 r1「压力不在会不会出大事」「体力的储备在深层是够的」「要的不是担心,是管理」,卡罗 r2「论力气这两颗不弱」「偏攒出来的…而不是突然一下」(车祸、小儿麻痹),记读反(轻);奥巴马 r2「信号出来得晚…等你感觉到的时候已经持续一段时间」、布什 r2「睡够、有留白的时候,你的状态差别很大」、齐达内 r1「累过之后不容易马上缓过来」、齐达内 r2「节奏偏慢、恢复要靠时间的底色」直陈现实,记误报(轻)(奥巴马健康是对照项,不计入 Bush / Zidane 对照组)。 +- 请求数:72 份每份恰好一处请用户说一句;事业 18 份里 17 份直接问做哪一行(奥巴马 r2 只问「是哪一种」)。 + +### 纠正追问与事业追问(第六轮) + +- 父母纠正 8 / 8:先认下、点名上一轮读偏的那句(多是把「人在、只是话少」与「不在身边」并列得一样重,或把宫主有力当成支撑)、只列对得上的几条、写明盘分不出「人不在」还是「人在但不管」。残留偏重同第五轮:奥巴马 r2「这条线在位置上就不接上」,嘉兰两份「盘上并没有给你留出余地」「这条线本来就偏在缺席这一边」,琵雅芙 r1「计都…断开、不介入、各过各的最直接的信号」。 +- 事业追问 6 / 6 按真实职业读助力、阻力、时间,没有「盘早就显示」。齐达内 r1 仍写「别人认你认的是你做出来的东西,不是在场合上认识你」(运动员语境下偏),r2「行业的评价比你的实力慢」,记录不扣分。 + +### 合计:第五轮 → 第六轮 + +| 项 | 第五轮 | 第六轮 | 通过线 | 达到 | +| --- | --- | --- | --- | --- | +| 事业行业 / 类型与生平冲突 | 5 / 18 | **9 / 18** | ≤ 1 / 18 | **否** | +| 事业段末问一句 | 17 / 18 | **17 / 18** | ≥ 16 / 18 | 是 | +| 严重冲突总数 | 5 / 72 | **9 / 72**(全在事业) | ≤ 5 / 72 | **否** | +| 父母严重冲突 | 0 | **0** | — | — | +| 对照组严重误报(事业以外) | 0 | **0** | 0 | 是 | +| 对照组轻度误报(Bush、Zidane) | 4 | **6**(Bush 父母、婚姻、健康各 1;Zidane 父母 1、健康 2) | ≤ 2 | **否** | +| 读反 | 3(轻) | **2(轻,都在健康)** | — | — | +| 禁句 | 0 | **0** | 0 | 是 | +| 全篇两处请求 | 0 | **0** | 每份一处 | 是 | +| 父母纠正追问 | 8 / 8 | **8 / 8** | — | — | +| 事业追问按真实职业读 | 6 / 6 | **6 / 6** | — | — | + +### 读出来的东西(第六轮) + +1. **事业类型冲突 5 → 9 / 18,回到第四轮水平**:推法与第五轮第 2 条相同——10 宫主或 A10 落 6 / 8 / 12 →「经手、绕路、来得晚」→「名分 / 被看见最慢」「不靠曝光」,同义词又换了一批(「高度不由曝光决定」「名分比实干来得晚」「接住别人不愿碰的事」)。本轮没有改提示词与清单;卡上与事业相关的变化只有格局命中、双重过运结论和太阳 Shadbala 档(9 位全降一档)。核对 18 份事业答案:明说「太阳偏弱」的 8 份里只有 3 份是严重冲突,严重冲突的 9 份里只有 3 份提到太阳偏弱,看不出太阳降档是主因;两次重复的样本量下 5 ↔ 9 落在同一推法的波动范围内,不能归因到本单。结论同第五轮:要压到 ≤ 1,需要从卡上「落 6 / 8 / 12」对公众性的暗示着手,或由产品定事业首段固定为「力量 / 阻力 / 时间」三个小标题。 +2. **对照组轻度误报 4 → 6**:都是把「迹象」写成一句现实结论(恢复慢、推进慢、哪一块真断),与第五轮第 3 条同类;健康对照项占 3 份。 +3. **卡面格局不再自相矛盾**:泰勒、齐达内卡上已没有 Kemadruma 与 Anaphaa 并存;答案里引用格局的句子只用命中的 Vosi / Ubhayachara,没有出现「月亮孤立」类描述。 +4. 父母题、请求数、禁句、纠正追问与第五轮持平。 +5. 成本:72 份墙钟 1,320 s(并发 4),单份中位 57 s、最长 140 s;输入 4,095,439 token(缓存约 89%),输出 1,030,439(推理 939,077);查卡 10 次。 + ## 真机清单(给产品,staging 部署后) 每条都在新会话里问,档案不填性别;看三件事(10-02 口径):受冲时是不是写成「压力 / 距离的迹象 + 现实里可能的范围」而不是替你下结论、是不是只请你说一次实际情况、有没有预设处境。