Files
Jyotisha/docs/research/rectification_mapping_trial_2026_10_03.md
T

15 KiB
Raw Blame History

生时校正:甲8 事件映射与甲9 月亮行运在 v5 77 例上的试算(2026-10-03)

研究分支归档:代码与脚本留在分支(甲1 codex/affliction-weight-trial-20261003 bcaeb990;甲8/甲9 codex/rectification-mapping-trial-20261003 3767b899),不合入。staging 只收本记录。

研究记录,不合入、不上线。分支 codex/rectification-mapping-trial-20261003,基线 origin/staging 80160d20(引擎与评测代码与之后的 d0233e3c 相同,后者只多一份任务书)。 提议来源:占星师侧交回的「裁决记录」(判定为其 Agent 自拟,待她本人确认),见 docs/research/astrologer_questions_v3_2026_10_03.md 甲8、甲9。

结论

  1. 甲8 映射(变体 A)明显变差:±10 / ±30 / ±60 三档的六题回放头名分别降 13.0 / 10.4 / 7.8 个百分点(cluster 口径降 16.9 / 15.6 / 20.8),±60 六格真值在区间 76 → 72。按「任一档降 >1pt 即变差」,判 变差。
  2. 主因是事业行把 10 宫扩成 10、6、9、11:单独只改事业一行,±10 回放头名就降 10.4pt(cluster 口径 13.0pt),±30 降 14.3pt。宫位放宽后几乎每个候选都「命中」,题卡能分开的候选变少:±10 平均可问题数从 5.1 降到 3.8,±60 六题后淘汰的候选中位数从 15 降到 7。
  3. 甲9 月亮行运按提议写法(变体 B:两锚各算、每命中 1.0 分)轻微变差:±10 / ±30 不变,±60 回放头名降 1.3pt(1 例),六格真值在区间 76 → 74。判 变差(够门槛,但只差 1–2 例,属噪声边缘)。
  4. 只加月亮锚、行运权重保持 0.25(变体 B0)对所有档位零影响:77 例中 8 例先验名次挪了 1–4 位,没有一个档位的数字变。行运只看木星、土星落宫,同一时间窗里所有候选的月亮星座几乎都一样,加月亮锚近似给所有候选加同一个常数。
  5. 两者都改(变体 C)最差:±10 / ±30 / ±60 回放头名降 13.0 / 13.0 / 7.8pt,±60 真值覆盖 98.7% → 93.5%,六格真值在区间 76 → 71。
  6. 建议:甲8 不按此表上线;若占星师本人确认要用,事业行先不要扩宫,或扩宫的同时要有「只奖不罚」以外的区分机制(这一点 09-29 的打分研究已证实做不出稳定信号)。甲9 月亮行运可以按「分别记录、不改权重」的方式做成观察项(B0 无害),但它对校正几乎没有信息量,不值得为它升级打分版本。

方法

  • 评测:scripts/research/holdout_v5_baseline.py --dataset v5(v5 77 例、964 件事件;sweep / cluster_width / futile_collect 三套),PYTHONHASHSEED=0。基线在未改动的代码上跑;分支上开关关闭(off)再跑一遍,三段结果与基线逐项相同、sweep 逐例结果逐字节相同,说明开关关闭时生产行为不变。
  • 变体由环境变量切换(只在 scripts/active_rectification_event_engine.py 导入时读取,默认关闭):
    • RECTIFICATION_MAPPING_TRIAL=a:只改甲8 映射。
    • =b:只改甲9,行运从命宫和月亮各算一项,每命中 1.0 分(原为命宫一项、每命中 0.25 分)。
    • =b0:只加月亮锚,行运每命中仍 0.25 分(用来把「加锚」和「加权重」拆开)。
    • =c:a + b。
    • RECTIFICATION_MAPPING_TRIAL_DOMAINS=career 等:只启用甲8 表中的某一行(消融)。
  • 运行与对比脚本:scripts/research/rectification_mapping_trial.py(run 给每个变体用独立的临时数据集文件名,可并行;compare 出下表)。各档汇总数字存 docs/research/rectification_mapping_trial_2026_10_03.json。
  • Dasha 权重(Vimshottari 2.0 / 1.5 / 0.75、Narayana 2.0 / 1.0)、分盘分摊公式 weight / (2·分盘数)、精度权重、功能吉凶辅助、Ashtakavarga / Shadbala 辅助、出卡与闸门全部不动;没有改打分版本号、迁移和前端。

变体 A 实际实现的映射

事件 现行(网站) 试算 A 说明
婚恋 7 宫 + D9;A7、UL 7、2、11 宫 + D9;只看 UL 提议表没有 A7,按表去掉
事业 10 宫 + D10;A10 10、6、9、11 宫 + D10;A10
财富 2、11 宫 + D2、D11 2、11、5、9 宫 + D2、D11 「Dhana 相关宫主」按这四宫的宫主计
健康 6、8、12 宫 + D30 1、6、8、12 宫 + D6、D8、D30 D6、D8 为试算新算,不进候选指纹
学业 4、5、9 宫 + D24、D5 4、5、9 宫 + D24 去掉 D5
迁居 4、12 宫 + D4 不变
父亲 (六亲统一:3、4、5、9 宫 + D12、D7、D3) 9、10 宫 + D12 按事件文本拆分,见下
母亲 同上 4 宫 + D12
父母(未指明哪一方) 同上 4、9、10 宫 + D12 提议表没有这一行,取父、母两行并集
子女 同上 5、2、11 宫 + D7
兄弟姐妹 同上 3、11 宫 + D3
六亲中无法归类 同上 保持现行六亲映射

「D1」在提议表每一行都有:现行引擎本来就按 D1 宫位和宫主计分,不需要另加。「1 宫主 / 4 宫主 / 5 宫主 / 7 宫主 / 3 宫主」都已被「目标宫的宫主」规则覆盖。「缺必要分盘不计分、不替代」与现行规则一致(缺分盘该事件跳过)。

六亲拆分怎么做的

v5 事件只有 family 一个标签,没有子类。本轮用事件英文描述的关键词拆分(trial_family_subdomain,顺序:子女 → 父母 → 父亲 → 母亲 → 兄弟姐妹)。130 件六亲事件的归类:

子类 件数
子女 78
父亲 16
母亲 10
父母(未指明) 7
兄弟姐妹 8
无法归类(配偶/伴侣去世 6 件、叔伯、祖辈、治疗师、被收养等) 11

线上用户口述经历没有这样的英文描述,也没有子类字段;题卡生成的六亲探针同样只有「六亲」一类,本轮一律保持现行映射。所以六亲拆分只覆盖 v5 的口述事件,线上要用必须先让采集环节区分父/母/子女/兄弟姐妹。

结果:基线 vs A / B / B0 / C

「回放头名」= 六张题卡答完后头名候选是真值;sweep 与 cluster 两套口径分别来自 minute_resolution_sweep 与 cluster_width_probe(后者用线上 unionStillValidRange)。「六格真值在区间」来自 futile_collect_stop_replay(truth / opposite 两个方向)。括号内为与基线之差;1 例 ≈ 1.3pt。

指标 基线 A 甲8 B 甲9(1.0) B0 月亮锚(0.25) C 甲8+甲9
±10 引擎先验头名 18.2% 18.2% (+0.0) 19.5% (+1.3) 18.2% (+0.0) 16.9% (−1.3)
±10 回放头名(sweep) 63.6% 50.6% (−13.0) 63.6% (+0.0) 63.6% (+0.0) 50.6% (−13.0)
±10 回放头名(cluster) 66.2% 49.4% (−16.9) 66.2% (+0.0) 66.2% (+0.0) 48.1% (−18.2)
±10 真值覆盖(cluster) 98.7% 97.4% (−1.3) 98.7% 98.7% 97.4% (−1.3)
±10 区间宽度中位(分钟) 13 15 13 13 15
±30 引擎先验头名 9.1% 9.1% 9.1% 9.1% 9.1%
±30 回放头名(sweep) 49.4% 39.0% (−10.4) 49.4% 49.4% 36.4% (−13.0)
±30 回放头名(cluster) 55.8% 40.3% (−15.6) 55.8% 55.8% 37.7% (−18.2)
±30 真值覆盖(cluster) 98.7% 97.4% (−1.3) 98.7% 98.7% 97.4% (−1.3)
±30 区间宽度中位(分钟) 33 41 35 35 41
±60 引擎先验头名 7.8% 6.5% (−1.3) 7.8% 7.8% 5.2% (−2.6)
±60 回放头名(sweep) 31.2% 23.4% (−7.8) 29.9% (−1.3) 31.2% 23.4% (−7.8)
±60 回放头名(cluster) 40.3% 19.5% (−20.8) 39.0% (−1.3) 40.3% 19.5% (−20.8)
±60 真值覆盖(cluster) 98.7% 96.1% (−2.6) 98.7% 98.7% 93.5% (−5.2)
±60 区间宽度中位(分钟) 65 73 65 69 73
±10 六格真值在区间 truth / opposite 76 / 76 76 / 76 76 / 76 76 / 76 76 / 76
±30 六格真值在区间 truth / opposite 75 / 75 74 / 73 75 / 75 75 / 75 74 / 73
±60 六格真值在区间 truth / opposite 76 / 76 72 / 73 74 / 75 76 / 76 71 / 70
判定(任一档降 >1pt = 变差) — 变差 变差(只差 1–2 例) 不变 变差

基线说明:本轮基线比 09-29 发布的 v5 数字(holdout_v5_baseline_v5_all_2026_09_29.json)略有不同(例如 ±30 先验头名 7.8% → 9.1%、±60 cluster 回放 32.5% → 40.3%),因为 staging 之后合入了功能吉凶 v2、sync4、sync5 等改动;本文所有差值都相对本轮同代码基线。

为什么 A 变差:题卡失去区分力

±档 平均可问题数 基线 → A 平均实问题数 基线 → A 六题后淘汰候选中位 基线 → A 引擎先验真值平均名次 基线 → A
±10 5.10 → 3.82 4.21 → 3.51 2 → 1 3.58 → 3.47
±30 7.10 → 6.27 5.44 → 5.25 7 → 4 9.01 → 8.05
±60 7.25 → 6.96 5.45 → 5.44 15 → 7 17.74 → 15.68

A 让口述事件的先验排名略好(真值平均名次前移约 1–2 位),但宫位放宽后不同候选对同一年份的「命中/不命中」更趋一致,题卡能问的、能淘汰的都少了,六题后的头名反而大幅下降。校正的信息主要来自问答而不是先验(见 09-29 定论),所以总体是变差。

消融:甲8 每一行单独启用

指标 基线 只改婚恋 只改事业 只改财富 只改健康 只改学业 只拆六亲
±10 回放头名(sweep) 63.6% −1.3 −10.4 −1.3 −2.6 −1.3 +1.3
±10 回放头名(cluster) 66.2% +0.0 −13.0 +0.0 −1.3 +0.0 −2.6
±30 回放头名(sweep) 49.4% +0.0 −14.3 +0.0 −3.9 +3.9 +0.0
±30 回放头名(cluster) 55.8% −3.9 −15.6 −3.9 +1.3 +1.3 −3.9
±60 回放头名(sweep) 31.2% +3.9 −1.3 −3.9 +1.3 +1.3 +1.3
±60 回放头名(cluster) 40.3% −2.6 −9.1 −6.5 +1.3 −2.6 −3.9
±10 六格真值在区间 truth / opposite 76 / 76 75 / 75 76 / 76 76 / 76 76 / 76 76 / 76 76 / 76
±30 六格真值在区间 truth / opposite 75 / 75 74 / 76 75 / 75 76 / 76 75 / 75 76 / 76 76 / 76
±60 六格真值在区间 truth / opposite 76 / 76 74 / 73 73 / 74 76 / 76 74 / 74 76 / 76 75 / 75

事业行是唯一一个稳定大幅变差的行;其余各行在 ±1~4 例之间来回摆,按 1pt 门槛也都算「变差」,但量级在 77 例的噪声线上,不能据此说它们有益或有害。

逐例变化最大的 5 例

排序分 = 三档先验真值名次变化之和 + 每次回放头名翻转记 5 分。只列案例 id。

  • A(75/77 例有变化):serena_williams_1981_aa_v5_holdout(±10 回放头名中→失)、silvio_santos_1930_aa_v5_holdout(三档回放头名都中→失)、chad_everett_1937_aa_v4_holdout(三档都中→失)、george_w_bush_1946_aa_v5_holdout(±60 失→中)、lionel_messi_1987_aa_v5_holdout(±30、±60 失→中)。
  • B(27/77):joseph_kennedy_iii_1980_aa_v4_holdout(先验名次 3→1 / 9→5 / 12→5)、audrey_hepburn_1929_aa_v5_holdout、cher_1946_aa_v5_holdout、frida_kahlo_1907_aa_v5_holdout(±60 回放头名中→失)、muhammad_ali_1942_aa_v5_holdout。
  • B0(8/77,全部只是先验名次挪 1–4 位):cher_1946_aa_v5_holdout、charles_de_gaulle_1890_aa_v5_holdout、elizabeth_montgomery_1933_aa_v4_holdout、lou_diamond_phillips_1962_aa_v5_holdout、sigmund_freud_1856_aa_v4_holdout。
  • C(76/77):serena_williams_1981_aa_v5_holdout、chad_everett_1937_aa_v4_holdout、george_w_bush_1946_aa_v5_holdout、lionel_messi_1987_aa_v5_holdout、silvio_santos_1930_aa_v5_holdout。

没实现 / 无法试算

项 状态 原因
征象星:金星、DK(婚恋);AmK、太阳(事业);太阳、月亮(健康);水星、木星(学业);月亮(迁居);太阳、PiK(父亲);月亮、MK(母亲);木星(子女);火星(兄弟姐妹) 未实现,需新增通道 现行引擎只有「大运主星落目标宫 / 是目标宫主 / 在分盘落目标宫」三条通道,没有「大运主星是某征象星」或「征象星受激活」的计分通道;Chara karaka(DK、AmK、PiK、MK)也没有进校正上下文。本轮只实现宫位、分盘部分。
「Dhana 相关宫主」 近似 按 2、11、5、9 宫主计(目标宫宫主规则);没有实现 Dhana yoga 组合判断。
父母 / 子女 / 兄弟姐妹拆分 只对 v5 口述事件生效 数据只有「六亲」标签,按英文描述关键词拆;11 件无法归类的保持现行映射。线上采集与题卡没有子类,上线前要先改采集。
题卡(探针)的六亲题 保持现行映射 题卡只有「六亲」一类。其余领域的题卡随映射一起变(同一张 DOMAIN_CONFIG)。
行运锚点记录 transit_anchor 以规则名记录 命宫锚保持原规则名 controlled_transit_*_domain_house;月亮锚记为 transit_anchor_moon_controlled_transit_*_domain_house。没有在证据结构里加独立字段(避免动输出契约)。
行运权重 1.0 的含义 按「每个锚点每命中一颗星 1.0 分」解释 提议原文只写「transit 权重 1.0」。另跑 B0(保持 0.25)把加锚和加权重分开。
研究辅助模块(minute_rectification_fact_ranker_v4、dynamic_rectification_* 等) 只随标准领域变化 它们直接读 DOMAIN_CONFIG[领域],不认识六亲子类;本评测不经过这些模块。

测试

  • python3 -m pytest tests/test_repo_privacy_markers.py -q:通过。
  • 定向测试(本机无 .venv,用系统 python3 3.13):events / events_v4 / memoization / raman / convergence / confirmation / dated_transitions / api / 冻结身份四个文件。分支比 origin/staging 多 4 个失败,全部是冻结哈希检查(test_sealed_holdout_contract_freshness 三条、test_reported_offset_research::test_recorded_specification_and_all_prespecified_cells):引擎文件内容变了,冻结哈希对不上。这是预期结果,本分支不合入,所以没有重新冻结;真要上线须按 ERR-110 重新冻结并升级打分版本。另两条失败(test_frozen_implementation_hash_matches_manifest、test_long_real_conversation_reaches_vedastro_after_local_range_is_narrow)在 origin/staging 上同样失败,与本轮无关。
  • 快速门 python3 scripts/run_quality_gate.py --profile quick(无 .venv,系统 python3):origin/staging 一次性检出 Python 段 1047 passed / 1 skipped,随后 npm test 因检出里没有 node_modules 失败(环境缺口);本分支 Python 段 1042 passed / 4 failed / 1 skipped,4 条失败全是 test_rectification_validation_integrity_gate.py 里的同一组冻结哈希检查(同上原因),门禁在 Python 段停下、未跑前端。本分支没有改前端。