diff --git a/docs/research/affliction_weight_trial_2026_10_03.md b/docs/research/affliction_weight_trial_2026_10_03.md new file mode 100644 index 00000000..accd2fd8 --- /dev/null +++ b/docs/research/affliction_weight_trial_2026_10_03.md @@ -0,0 +1,140 @@ +# 甲1 受克加权口径试算(2026-10-03,只读研究) + +> 研究分支归档:代码与脚本留在分支(甲1 `codex/affliction-weight-trial-20261003` `bcaeb990`;甲8/甲9 `codex/rectification-mapping-trial-20261003` `3767b899`),不合入。staging 只收本记录。 + +**结论:提议口径(七类加权、≥3.0 迹象明显 / ≥4.5 压力较集中)分不开「缺席」与「在身边」两组——父亲线、母亲线两种计法下,在身边组 6 人次全部 ≥3.0(6/6 误报),与现行「≥2 条」的判定逐人一致,加权只是换了刻度;父亲线在身边组的平均分反而更高。** + +- 脚本:`scripts/research/affliction_weight_trial_2026_10_03.py`(只读;`python3 scripts/research/affliction_weight_trial_2026_10_03.py`,加 `--json` 出全量) +- 数据:`frontend/tests/fixtures/consult-biography-backtest-golden.json`(真实引擎响应,Raman 岁差、平均交点,9 位 Astro-Databank AA 公开名人) +- 生平分组取自 `docs/research/astrologer_ai_workbook_2026_10_03.md` 第四节公开生平表;本记录不据此推荐任何口径。 + +## 1. 口径与实现 + +| 项 | 本试算的取法 | 数据来源 | +|---|---|---| +| 线 | 父亲:9 宫、9 宫主、太阳、PiK、D12 9 宫;母亲:4 宫、4 宫主、月亮、MK、D12 4 宫 | — | +| ① 同宫 2.0 | 宫内或星所在星座有罗睺/计都/土星/火星(不算自身);太阳在本上升为功能凶星时也算凶星 | golden `planets.*.sign_idx` | +| ② 特殊相位 1.5 | 只算土星 3/10、火星 4/8 的整宫特殊相位(另做「含第 7 相位」变体) | 自算;含 7 相位版与 golden `graha_drishti.houses.*.aspected_by` 逐宫比对 **0 处不一致** | +| ③ 功能凶星 1.5 | 宫主、太阳/月亮、PiK/MK 在本上升 `functional_malefics` 内 | golden `modules.functional_benefic_malefic` | +| ④ 落陷 1.5 | 引擎 `status` 含「落陷」 | golden `planets.*.status` | +| ⑤ 燃烧 1.0 | 按提议容许度(月12/12 火17/10 水14/12 木11/10 金10/8 土15/10)自算 | 与引擎 `COMBUSTION_ORBS` 相同;与 golden `graha_drishti.planets.*.combust` **0 处不一致** | +| ⑥ 6/8/12 1.0 | 宫主从命宫数(主跑);另做「从该宫数」 | golden `planets.*.house` | +| ⑦ D12 0.75 | D12 同号宫内有上述凶星 | golden `varga_spectrum.formal.D12` | +| PiK | golden 只有 7 星制(无 PiK)。用本仓 `scripts/jaimini.py::calc_chara_karaka_8` 按 golden 经度重算 8 星制,取标准 Jaimini 次序第 5 位(AK、AmK、BK、MK、**PiK**、PK、GK、DK) | 见第 5 节数据缺口 | +| MK | golden 7 星制 MK(产品卡实际用的);另做 8 星制第 4 位变体 | golden `jaimini.chara_karakas.MK` | +| 计法 | **逐对象**:每个对象(宫/宫主/征象星/PiK·MK)每命中一次加一次权重,同一颗星兼两个角色只算一个对象;**每类一次**:每类至多计一次 | — | +| 现行判定 | 命中类数 ≥2 →「有压力或距离迹象」 | — | + +## 2. 父亲线(主跑) + +缺席组 OBA、JOB、MON;在身边组 BUS、ZID、TAY。 + +| 代号 | 现行类数 | 逐对象分 | 判定 | 每类一次分 | 判定 | 生平 | 现行 | 逐对象 | 每类一次 | +|---|---|---|---|---|---|---|---|---|---| +| JOB | 2 | 5.0 | 压力较集中 | 3.5 | 迹象明显 | 缺席 | 吻合 | 吻合 | 吻合 | +| OBA | 2 | 3.0 | 迹象明显 | 3.0 | 迹象明显 | 缺席 | 吻合 | 吻合 | 吻合 | +| MON | 5 | 6.75 | 压力较集中 | 6.75 | 压力较集中 | 缺席 | 吻合 | 吻合 | 吻合 | +| TAY | 5 | 9.0 | 压力较集中 | 7.0 | 压力较集中 | 在身边 | 误报 | 误报 | 误报 | +| BUS | 3 | 6.5 | 压力较集中 | 5.0 | 压力较集中 | 在身边 | 误报 | 误报 | 误报 | +| ZID | 3 | 4.25 | 迹象明显 | 4.25 | 迹象明显 | 在身边 | 误报 | 误报 | 误报 | +| GAR | 3 | 7.0 | 压力较集中 | 5.0 | 压力较集中 | 不计 | — | — | — | +| PIA | 1 | 2.0 | 不明显 | 2.0 | 不明显 | 不计 | — | — | — | +| KAH | 3 | 6.5 | 压力较集中 | 5.0 | 压力较集中 | 不计 | — | — | — | + +组均分:逐对象 缺席 4.92 / 在身边 6.58;每类一次 缺席 4.42 / 在身边 5.42。缺席组最低分(OBA 3.0)是全部 6 人里最低的,在身边组的 TAY 是最高的。 + +命中明细: + +| 代号 | 命中 | +|---|---| +| JOB | ① 9 宫主金星与罗睺同宫;② 金星被土星照、PiK 罗睺被土星照 | +| OBA | ① 9 宫有火星;⑤ 9 宫主水星燃烧(距日 10.22°) | +| MON | ① 9 宫主木星与火星同宫;② 太阳被火星照;③ PiK 金星功能凶星;⑥ 9 宫主落 8 宫;⑦ D12 9 宫有土星 | +| TAY | ① 太阳与火星同宫、PiK 水星与火星同宫;② 9 宫主月亮被土星照;③ PiK 水星功能凶星;⑤ PiK 水星燃烧(0.18°);⑥ 9 宫主月亮落 12 宫 | +| BUS | ① PiK 水星与土星同宫;② 9 宫被火星照、9 宫主木星被土星照;③ PiK 水星功能凶星 | +| ZID | ① 9 宫有罗睺;③ PiK 木星功能凶星;⑦ D12 9 宫有罗睺 | +| GAR | ① 9 宫主土星与罗睺同宫(PiK 即罗睺);② 9 宫被火星照;③ 太阳功能凶星 | +| PIA | ① 9 宫有计都 | +| KAH | ① PiK 水星与罗睺同宫;② 9 宫主火星被土星照、PiK 水星被火星照;③ PiK 水星功能凶星 | + +## 3. 母亲线(主跑) + +缺席/波折组 PIA、MON;在身边组 BUS、ZID、OBA。 + +| 代号 | 现行类数 | 逐对象分 | 判定 | 每类一次分 | 判定 | 生平 | 现行 | 逐对象 | 每类一次 | +|---|---|---|---|---|---|---|---|---|---| +| PIA | 3 | 3.25 | 迹象明显 | 3.25 | 迹象明显 | 缺席 | 吻合 | 吻合 | 吻合 | +| MON | 3 | 7.0 | 压力较集中 | 4.0 | 迹象明显 | 缺席 | 吻合 | 吻合 | 吻合 | +| BUS | 4 | 5.75 | 压力较集中 | 5.75 | 压力较集中 | 在身边 | 误报 | 误报 | 误报 | +| ZID | 2 | 4.5 | 压力较集中 | 3.0 | 迹象明显 | 在身边 | 误报 | 误报 | 误报 | +| OBA | 3 | 5.25 | 压力较集中 | 3.75 | 迹象明显 | 在身边 | 误报 | 误报 | 误报 | +| JOB | 3 | 8.5 | 压力较集中 | 5.0 | 压力较集中 | 不计 | — | — | — | +| TAY | 4 | 9.5 | 压力较集中 | 6.0 | 压力较集中 | 不计 | — | — | — | +| GAR | 4 | 8.0 | 压力较集中 | 6.0 | 压力较集中 | 不计 | — | — | — | +| KAH | 3 | 8.0 | 压力较集中 | 5.0 | 压力较集中 | 不计 | — | — | — | + +组均分:逐对象 缺席 5.13 / 在身边 5.17;每类一次 缺席 3.63 / 在身边 4.17。PIA 3.25 是 5 人里第二低。 + +命中明细: + +| 代号 | 命中 | +|---|---| +| PIA | ③ 4 宫主土星功能凶星;⑥ 4 宫主落 8 宫;⑦ D12 4 宫有计都 | +| MON | ② 月亮被土星照、MK 水星被火星照;③ 4 宫主金星、MK 水星功能凶星;⑤ MK 水星燃烧(3.67°) | +| BUS | ① 4 宫主金星与土星同宫;② 月亮被土星照;③ 金星功能凶星;⑦ D12 4 宫有罗睺 | +| ZID | ② 月亮被火星照;③ 月亮、MK 木星功能凶星 | +| OBA | ② 4 宫被火星照;③ 4 宫主火星、月亮功能凶星;⑦ D12 4 宫有土星 | + +## 4. 敏感性 + +### 4.1 变体下的误报(在身边组 ≥3.0 的人数 / 缺席组 <3.0 的人数) + +| 变体 | 父亲线 逐对象 | 父亲线 每类一次 | 母亲线 逐对象 | 母亲线 每类一次 | +|---|---|---|---|---| +| 主跑 | 误报 3/3,漏报 0 | 误报 3/3,漏报 0 | 误报 3/3,漏报 0 | 误报 3/3,漏报 0 | +| ⑥ 从该宫数 | 误报 3/3,漏报 0 | 误报 3/3,漏报 0 | 误报 3/3,**漏报 1(PIA 2.25)** | 误报 3/3,**漏报 1(PIA 2.25)** | +| 不计 PiK(= 产品卡现状) | 误报 2/3(BUS 3.0、TAY 4.5),漏报 0 | 误报 1/3(TAY 4.5),漏报 0 | 同主跑 | 同主跑 | +| PiK 按本仓 KARAKA_8 第 8 位 | 误报 3/3 | 误报 2/3(BUS 1.5 降下) | 同主跑 | 同主跑 | +| ② 含第 7 相位 | 误报 3/3 | 误报 3/3 | 误报 3/3 | 误报 3/3 | +| MK 改 8 星制 | 同主跑 | 同主跑 | 误报 3/3 | 误报 3/3 | + +「不计 PiK」变体父亲线每类一次只误报 TAY,但 TAY 的 4.5 高于缺席组的 JOB 3.5、OBA 3.0,排序仍分不开。 + +### 4.2 权重网格(每类 0–3、步长 0.5,7⁷−1 = 823,542 组) + +问题:是否存在一组非负权重,使缺席组最低分 > 在身边组最高分。只报告存在性与最好间隔,不据此推荐口径。 + +| 变体 | 线 | 计法 | 存在可分权重 | 可分组合数 | 最好间隔 | +|---|---|---|---|---|---| +| 主跑 | 父亲 | 逐对象 | 否 | 0 | 0(只能打平) | +| 主跑 | 父亲 | 每类一次 | 否 | 0 | 0 | +| 主跑 | 母亲 | 逐对象 | 是 | 31,962 | +3.0(只用 ⑤=3、⑥=3) | +| 主跑 | 母亲 | 每类一次 | 是 | 39,788 | +3.0(只用 ⑤=3、⑥=3) | +| ⑥ 从该宫数 | 父亲 | 两种 | 否 | 0 | 0 | +| ⑥ 从该宫数 | 母亲 | 两种 | 否 | 0 | 0 | +| 不计 PiK | 父亲 | 两种 | 否 | 0 | 0 | +| 不计 PiK | 母亲 | 两种 | 是 | 同主跑 | +3.0 | +| ② 含第 7 相位 | 父亲 | 两种 | 否 | 0 | 0 | +| ② 含第 7 相位 | 母亲 | 逐对象 / 每类一次 | 是 | 148,029 / 91,238 | +3.0 | +| MK 改 8 星制 | 母亲 | 逐对象 | 是 | 2,212 | +1.5(②=1.5、⑥=3) | +| MK 改 8 星制 | 母亲 | 每类一次 | 否 | 0 | 0 | + +为什么父亲线怎么调都不行:每类一次的命中向量里,在身边的 TAY(①②③⑤⑥)完整包含缺席的 JOB(①②)和 OBA(①⑤),BUS(①②③)也包含 JOB。只要权重非负,被包含的一方分数不可能更高,与权重取值无关。 + +母亲线「可分」的含义:两个缺席样本各靠一条单独的信号与对照组拉开——MON 靠 ⑤(MK 水星燃烧),PIA 靠 ⑥(4 宫主落命宫起 8 宫)。只有 2 个缺席样本;换成「从该宫数」、或 MK 改 8 星制,可分性就消失或大幅缩小。这是对 5 个样本的拟合,不是证据。 + +## 5. 数据缺口与口径疑点 + +1. **golden 无 PiK**:引擎咨询卡只出 7 星制 chara karaka(`consultation-evidence-card.ts` 把 PiK 标为可选,卡上实际没有)。本试算用 `scripts/jaimini.py::calc_chara_karaka_8` 从 golden 经度重算。 +2. **本仓 8 星制 PiK 位次与标准不一致**:`scripts/jaimini.py` 的 `KARAKA_8` 把第 8 位标为 Pitrukaraka、第 7 位仍为 Darakaraka;标准 Jaimini 8 星制次序是 AK、AmK、BK、MK、PiK、PK、GK、DK(PiK 第 5 位、DK 第 8 位)。本试算主跑用第 5 位,并把本仓标签作为变体;两者在 9 张盘上 PiK 全部不同,父亲线结论不变。是否修正属另一轮,此处不改。 +3. **MK 两种星制在 5/9 张盘不同**:OBA(7 星制金星 / 8 星制水星)、TAY(水星 / 木星)、PIA(月亮 / 罗睺)、KAH(水星 / 太阳)、ZID(木星 / 土星)。产品卡用 7 星制。 +4. **相位与燃烧 golden 里其实有**:`routes.*.chart.consultation_native_layers.graha_drishti` 带 `aspected_by`(含第 7 相位)和 `combust`,只是没有进模型看到的卡(与回测 rubric「卡上没有相位与燃烧字段」的说法一致)。本试算自算后与它逐项比对 0 处不一致。 +5. **「被土星/火星照」的口径未定**:工作簿原题写「被土星、火星照」,提议写「特殊相位」。两种都算了,结论不变。 +6. **太阳作凶星**:按提议只在本上升为功能凶星时计入 ①/⑦;9 张盘里只有 GAR(双子上升)太阳是功能凶星,它不在判定组内,此项不影响结论。功能凶星一律取 golden 里引擎 v2 的 `functional_malefics`:JOB(处女上升)太阳在引擎里是功能中性,回测 rubric 写的「太阳 12 宫主、功能凶星」是旧口径,本试算没有采用。 +7. 样本只有 6 + 5 人次,任何可分结果都只能说明「这几张盘碰巧能拟合」,不能说明口径有区分力。 + +## 6. 运行信息 + +- 基线:`origin/staging` 80160d20;分支 `codex/affliction-weight-trial-20261003` +- `python3 -m pytest tests/test_repo_privacy_markers.py -q`:通过 +- 快速门:本机无 `.venv`,改用系统 `python3 scripts/run_quality_gate.py --profile quick`:Python 各步全部通过(pytest 1046 passed、1 skipped);最后一步 `npm test` 退出码 127(本 worktree 没有 frontend/node_modules,测试命令找不到),属环境缺口,本轮未改前端。 diff --git a/docs/research/astrologer_feedback_2026_10_03.md b/docs/research/astrologer_feedback_2026_10_03.md new file mode 100644 index 00000000..ec5dd9a5 --- /dev/null +++ b/docs/research/astrologer_feedback_2026_10_03.md @@ -0,0 +1,92 @@ +# 给占星师:试算结果与下一轮问题(2026-10-03) + +> 您好,谢谢您的确认。凡是会改变网站判断或打分的条目,我们都先在公开名人盘上试算一遍,确认不会变差再上线。下面是三项的结果,以及接下来要请您定的 4 个问题。 +> +> 这一页同样不需要用 AI。回答直接写在空格里就行。 + +--- + +## 一、已经安排上线的(您确认过,不改变打分) + +五大人格和 Kemadruma 各只保留一套检测;Shadbala 先判是否达到最低要求,分档标为「网站分档」;Bhava Bala 改用正式算法;罗睺、计都不设本宫,宫主链固定取火星、土星;落陷取消改为列出成立条件;八分法报告里并列原始值和净化后的值;Tajika 的 Muntha 按本命上升起算。 + +另外,我们对照 BPHS 第 32 章,发现 8 星制 Chara Karaka 的排位写错了:父亲星(PiK)应排第 5,配偶星(DK)应排第 8,代码里写反了。这一处会一并改正。 + +--- + +## 二、试算后暂不上线的 + +### 甲1 受克信号加权 + +用 9 位名人试算了您确认的权重(同宫 2.0、被照 1.5、功能凶星 1.5、落陷 1.5、燃烧 1.0、宫主落 6/8/12 宫 1.0、D12 同号宫 0.75;3.0 分「明显」,4.5 分「较集中」)。 + +| 父亲线 | 得分 | 判定 | 实际 | +|---|---|---|---| +| 乔布斯 | 3.5~5.0 | 明显或较集中 | 生父缺席 ✓ | +| 奥巴马 | 3.0 | 明显 | 父亲缺席 ✓ | +| 梦露 | 6.75 | 较集中 | 生父不明 ✓ | +| 泰勒 | 7.0~9.0 | 较集中 | **父亲在身边 ✗** | +| 布什 | 5.0~6.5 | 较集中 | **父亲在身边 ✗** | +| 齐达内 | 4.25 | 明显 | **父亲在身边 ✗** | + +(同一人有两个分数,是因为试了两种计法:每颗星逐一计分,和每类信号只计一次。) + +- 父亲在身边的 3 人全部被判为有压力,分数比缺席的人还高。母亲线也一样,3 人全部误判。 +- 我们把每类信号的权重从 0 到 3 逐一组合,试了 82 万组:父亲线上没有任何一组能分开这两组人。泰勒命中的信号类别,把奥巴马、乔布斯命中的全都包含了,所以权重怎么调,泰勒的分数都不会比他们低。 + +**结论**:盘上的受克信号判断不了父母在不在身边。网站保留现在的做法:只说「这条线上有压力迹象」,请用户自己说明实际情况,不按分数下结论。 + +### 甲8 生时校正事件映射 + +在 77 位出生时间可靠的名人盘上,用您确认的映射表重新做生时校正,看真实出生时间能不能排第一。 + +| 时间范围 | 现在 | 用新映射表 | +|---|---|---| +| ±10 分钟 | 63.6% ~ 66.2% | 49.4% ~ 50.6% | +| ±30 分钟 | 49.4% ~ 55.8% | 39.0% ~ 40.3% | +| ±60 分钟 | 31.2% ~ 40.3% | 19.5% ~ 23.4% | + +(每格两个数字,是两种评测统计方式的结果。) + +- 主要是事业这一行:从只看 10 宫扩到看 10、6、9、11 宫以后,各候选时间在同一年份上「都命中」,追问题失去了区分力,排名准确率降了 10~16 个百分点。 +- 婚恋、财富、健康、学业、六亲各行单独改,结果在上下 1~4 个案例之间摆动,看不出是变好还是变差。 +- 征象星(金星、DK、AmK、太阳等)引擎目前没有计分通道,这次没有试。父亲、母亲、子女、兄弟姐妹分开,需要先改网站提问的方式,也还没有做。 + +**结论**:事件映射暂不更换。 + +### 甲9 行运也从月亮数 + +| 做法 | 结果 | +|---|---| +| 命宫、月亮各算一项,每项按 1.0 分计 | ±60 分钟档少对 1 例,其余不变 | +| 只增加月亮起点,权重和现在一样 | 完全不变 | + +**结论**:从月亮数行运对生时校正没有帮助,暂不上线。 + +--- + +## 三、下一轮请您定的 4 个问题 + +**问 1 五大人格:D9 落陷算不算破格?** +现在:D9 落陷判为破格(格局不成立)。您上次没有提到这一条。 +☐ 维持破格 ☐ 只算减弱 ☐ 不影响 ☐ 其他:____ 出处:____ + +**问 2 八分法:过运时看净化前还是净化后的点数?** +您已确认报告上用净化后的值。我们理解,经典里看过运时(行星经过某宫、某 Kakshya)用的是净化前的 BAV 点数,净化后的值用于 Sodhya Pinda 计算。所以网站的过运判断暂时没改。 +☐ 过运也改用净化后的值 ☐ 过运维持净化前 ☐ 其他:____ 出处:____ + +**问 3 Tajika 年主用 Panchavargiya:具体怎么选?** +请确认下面的选法对不对:从五位候选(Muntha 主星、本命上升主星、年盘上升主星、Tri-rashi 主星、昼夜主星)中,选 Panchavargiya Bala 最强、并且照年盘上升的那一颗;都不照的话怎么办? +☐ 对 ☐ 不对,应该是:________ 出处(书名、章节):____ + +**问 4 Narayana 大运「K.N. Rao 版」具体指什么?** +我们核对了共享引擎,所谓「K.N. Rao 版 Narayana」只换了名字,大运顺序仍然和旧做法一样:从上升起、一律顺行。K.N. Rao 的书讲的是 Chara Dasha,网站已经在用 K.N. Rao 版的 Chara Dasha。请您说明,第二条时间轴应该用哪一种: +☐ 就用 K.N. Rao 的 Chara Dasha 替换现在的 Narayana +☐ 用 Sanjay Rath 的 Narayana Dasha(从命宫和第 7 宫中较强的一宫起算,奇偶决定顺逆) +☐ 其他:________ 出处:____ + +(不管选哪种,上线前都会先在 77 位名人盘上试算。) + +--- + +谢谢您!做完后直接发回这一页就行。 diff --git a/docs/research/rectification_mapping_trial_2026_10_03.json b/docs/research/rectification_mapping_trial_2026_10_03.json new file mode 100644 index 00000000..ee74e36e --- /dev/null +++ b/docs/research/rectification_mapping_trial_2026_10_03.json @@ -0,0 +1,1879 @@ +{ + "generated": "2026-10-03", + "dataset": "references/real_case_calibration/minute_rectification_holdout_v5.json", + "harness": "scripts/research/holdout_v5_baseline.py (PYTHONHASHSEED=0)", + "variants": { + "base": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1818, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6239, + "entropy6": 2.0988, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6364 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1018, + "entropy6": 2.5386, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4935 + }, + "60": { + "n": 77, + "top1": 0.0779, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0534, + "entropy6": 2.6466, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3117 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6623, + "coverage": 0.987, + "width_median": 13, + "tie": 0.0, + "entropy0": 2.624, + "entropy6": 2.014, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 15, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5584, + "coverage": 0.987, + "width_median": 33, + "tie": 0.0, + "entropy0": 4.1023, + "entropy6": 3.2545, + "squeezed": 1, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.4026, + "coverage": 0.987, + "width_median": 65, + "tie": 0.0, + "entropy0": 5.0543, + "entropy6": 4.1027, + "squeezed": 1, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 15, + "union_alive_median": 91, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 61, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 65, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "off": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1818, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6239, + "entropy6": 2.0988, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6364 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1018, + "entropy6": 2.5386, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4935 + }, + "60": { + "n": 77, + "top1": 0.0779, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0534, + "entropy6": 2.6466, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3117 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6623, + "coverage": 0.987, + "width_median": 13, + "tie": 0.0, + "entropy0": 2.624, + "entropy6": 2.014, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 15, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5584, + "coverage": 0.987, + "width_median": 33, + "tie": 0.0, + "entropy0": 4.1023, + "entropy6": 3.2545, + "squeezed": 1, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.4026, + "coverage": 0.987, + "width_median": 65, + "tie": 0.0, + "entropy0": 5.0543, + "entropy6": 4.1027, + "squeezed": 1, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 15, + "union_alive_median": 91, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 61, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 65, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "a": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1818, + "coverage": 1.0, + "width_median": 21, + "tie": 0.026, + "entropy0": 2.6251, + "entropy6": 2.3931, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.5065 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1063, + "entropy6": 2.5546, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3896 + }, + "60": { + "n": 77, + "top1": 0.0649, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0588, + "entropy6": 2.6478, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.2338 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.4935, + "coverage": 0.974, + "width_median": 15, + "tie": 0.0, + "entropy0": 2.625, + "entropy6": 2.2833, + "squeezed": 2, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 1, + "union_alive_median": 19, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.4026, + "coverage": 0.974, + "width_median": 41, + "tie": 0.0, + "entropy0": 4.1064, + "entropy6": 3.613, + "squeezed": 2, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 4, + "union_alive_median": 57, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.1948, + "coverage": 0.961, + "width_median": 73, + "tie": 0.0, + "entropy0": 5.0591, + "entropy6": 4.61, + "squeezed": 3, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 7, + "union_alive_median": 121, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 17, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 41, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 73, + "truth_in_range_rate": 0.9481, + "median_width": 37, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 72, + "truth_in_range_rate": 0.9351, + "median_width": 81, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 73, + "truth_in_range_rate": 0.9481, + "median_width": 87, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "b": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1948, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6254, + "entropy6": 2.101, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6364 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1052, + "entropy6": 2.5398, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4935 + }, + "60": { + "n": 77, + "top1": 0.0779, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0582, + "entropy6": 2.6472, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.2987 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6623, + "coverage": 0.987, + "width_median": 13, + "tie": 0.0, + "entropy0": 2.6254, + "entropy6": 2.0164, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 15, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5584, + "coverage": 0.987, + "width_median": 35, + "tie": 0.0, + "entropy0": 4.1055, + "entropy6": 3.2572, + "squeezed": 1, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.3896, + "coverage": 0.987, + "width_median": 65, + "tie": 0.0, + "entropy0": 5.0587, + "entropy6": 4.1058, + "squeezed": 1, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 15, + "union_alive_median": 91, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 59, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 63, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "b0": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1818, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6241, + "entropy6": 2.0992, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6364 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1023, + "entropy6": 2.5388, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4935 + }, + "60": { + "n": 77, + "top1": 0.0779, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0543, + "entropy6": 2.6467, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3117 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6623, + "coverage": 0.987, + "width_median": 13, + "tie": 0.0, + "entropy0": 2.6242, + "entropy6": 2.0144, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 15, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5584, + "coverage": 0.987, + "width_median": 35, + "tie": 0.0, + "entropy0": 4.1027, + "entropy6": 3.2549, + "squeezed": 1, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.4026, + "coverage": 0.987, + "width_median": 69, + "tie": 0.0, + "entropy0": 5.0551, + "entropy6": 4.1033, + "squeezed": 1, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 15, + "union_alive_median": 91, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 61, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 65, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "c": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1688, + "coverage": 1.0, + "width_median": 21, + "tie": 0.026, + "entropy0": 2.6263, + "entropy6": 2.3945, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.5065 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1084, + "entropy6": 2.5552, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3636 + }, + "60": { + "n": 77, + "top1": 0.0519, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0627, + "entropy6": 2.6484, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.2338 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.4805, + "coverage": 0.974, + "width_median": 15, + "tie": 0.0, + "entropy0": 2.6262, + "entropy6": 2.285, + "squeezed": 2, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 1, + "union_alive_median": 19, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.3766, + "coverage": 0.974, + "width_median": 41, + "tie": 0.0, + "entropy0": 4.1084, + "entropy6": 3.615, + "squeezed": 2, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 4, + "union_alive_median": 57, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.1948, + "coverage": 0.9351, + "width_median": 73, + "tie": 0.0, + "entropy0": 5.0628, + "entropy6": 4.6125, + "squeezed": 5, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 7, + "union_alive_median": 121, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 37, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 73, + "truth_in_range_rate": 0.9481, + "median_width": 37, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 71, + "truth_in_range_rate": 0.9221, + "median_width": 71, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 70, + "truth_in_range_rate": 0.9091, + "median_width": 71, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "a_relationship": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1818, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6246, + "entropy6": 2.1918, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6234 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1023, + "entropy6": 2.5402, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4935 + }, + "60": { + "n": 77, + "top1": 0.0519, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0535, + "entropy6": 2.6469, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3506 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6623, + "coverage": 0.974, + "width_median": 15, + "tie": 0.0, + "entropy0": 2.6246, + "entropy6": 2.1061, + "squeezed": 2, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 1, + "union_alive_median": 19, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5195, + "coverage": 0.987, + "width_median": 37, + "tie": 0.0, + "entropy0": 4.1027, + "entropy6": 3.3162, + "squeezed": 1, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 6, + "union_alive_median": 47, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.3766, + "coverage": 0.974, + "width_median": 73, + "tie": 0.0, + "entropy0": 5.0544, + "entropy6": 4.2441, + "squeezed": 2, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 13, + "union_alive_median": 93, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 35, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 37, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 67, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 73, + "truth_in_range_rate": 0.9481, + "median_width": 67, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "a_career": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1429, + "coverage": 1.0, + "width_median": 21, + "tie": 0.0, + "entropy0": 2.6259, + "entropy6": 2.2683, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.5325 + }, + "30": { + "n": 77, + "top1": 0.1039, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1075, + "entropy6": 2.5498, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3506 + }, + "60": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 121, + "tie": 0.013, + "entropy0": 5.0616, + "entropy6": 2.6482, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.2987 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.5325, + "coverage": 0.987, + "width_median": 15, + "tie": 0.0, + "entropy0": 2.626, + "entropy6": 2.1837, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 1, + "union_alive_median": 19, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.4026, + "coverage": 0.974, + "width_median": 37, + "tie": 0.0, + "entropy0": 4.1076, + "entropy6": 3.4426, + "squeezed": 2, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 5, + "union_alive_median": 49, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.3117, + "coverage": 0.974, + "width_median": 63, + "tie": 0.0, + "entropy0": 5.0618, + "entropy6": 4.2541, + "squeezed": 2, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 13, + "union_alive_median": 97, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 37, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 37, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 73, + "truth_in_range_rate": 0.9481, + "median_width": 65, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 67, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "a_finance": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1818, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.624, + "entropy6": 2.1867, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6234 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1016, + "entropy6": 2.5392, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4935 + }, + "60": { + "n": 77, + "top1": 0.0779, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0537, + "entropy6": 2.6464, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.2727 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6623, + "coverage": 0.987, + "width_median": 15, + "tie": 0.0, + "entropy0": 2.6241, + "entropy6": 2.1128, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 17, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5195, + "coverage": 0.987, + "width_median": 35, + "tie": 0.0, + "entropy0": 4.1021, + "entropy6": 3.3205, + "squeezed": 1, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.3377, + "coverage": 0.974, + "width_median": 63, + "tie": 0.0, + "entropy0": 5.0546, + "entropy6": 4.122, + "squeezed": 2, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 15, + "union_alive_median": 89, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 15, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 35, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 61, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 63, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "a_health_pressure": { + "sweep": { + "10": { + "n": 77, + "top1": 0.2078, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6242, + "entropy6": 2.1337, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6104 + }, + "30": { + "n": 77, + "top1": 0.1039, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1026, + "entropy6": 2.5338, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4545 + }, + "60": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0546, + "entropy6": 2.6466, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3247 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6494, + "coverage": 0.987, + "width_median": 13, + "tie": 0.0, + "entropy0": 2.6244, + "entropy6": 2.0552, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 17, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5714, + "coverage": 0.987, + "width_median": 35, + "tie": 0.0, + "entropy0": 4.103, + "entropy6": 3.2797, + "squeezed": 1, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.4156, + "coverage": 0.961, + "width_median": 63, + "tie": 0.0, + "entropy0": 5.0553, + "entropy6": 4.1172, + "squeezed": 3, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 15, + "union_alive_median": 91, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 63, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 74, + "truth_in_range_rate": 0.961, + "median_width": 63, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "a_education": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1948, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6237, + "entropy6": 2.0901, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6234 + }, + "30": { + "n": 77, + "top1": 0.0909, + "coverage": 1.0, + "width_median": 61, + "tie": 0.013, + "entropy0": 4.1016, + "entropy6": 2.5333, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.5325 + }, + "60": { + "n": 77, + "top1": 0.0779, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0532, + "entropy6": 2.6469, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3247 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6623, + "coverage": 0.987, + "width_median": 13, + "tie": 0.0, + "entropy0": 2.6238, + "entropy6": 2.0058, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 15, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5714, + "coverage": 1.0, + "width_median": 33, + "tie": 0.0, + "entropy0": 4.102, + "entropy6": 3.2454, + "squeezed": 0, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.3766, + "coverage": 0.987, + "width_median": 67, + "tie": 0.0, + "entropy0": 5.0541, + "entropy6": 4.1504, + "squeezed": 1, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 14, + "union_alive_median": 91, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 61, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 65, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + }, + "a_family": { + "sweep": { + "10": { + "n": 77, + "top1": 0.1818, + "coverage": 1.0, + "width_median": 21, + "tie": 0.013, + "entropy0": 2.6231, + "entropy6": 2.0971, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.6494 + }, + "30": { + "n": 77, + "top1": 0.0779, + "coverage": 1.0, + "width_median": 61, + "tie": 0.0, + "entropy0": 4.1004, + "entropy6": 2.5375, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.4935 + }, + "60": { + "n": 77, + "top1": 0.0649, + "coverage": 1.0, + "width_median": 121, + "tie": 0.0, + "entropy0": 5.0505, + "entropy6": 2.6461, + "squeezed": 0, + "too_narrow": 0, + "replay_top1": 0.3247 + } + }, + "cluster_width": { + "10": { + "n": 77, + "top1": 0.6364, + "coverage": 0.987, + "width_median": 13, + "tie": 0.0, + "entropy0": 2.6232, + "entropy6": 2.0122, + "squeezed": 1, + "independent": 1.0, + "public_median": 6, + "merge_median": 0, + "raw_median": 6, + "elim_median": 2, + "union_alive_median": 15, + "engine_union_median": 21 + }, + "30": { + "n": 77, + "top1": 0.5195, + "coverage": 1.0, + "width_median": 35, + "tie": 0.0, + "entropy0": 4.1011, + "entropy6": 3.2517, + "squeezed": 0, + "independent": 1.0, + "public_median": 17, + "merge_median": 0, + "raw_median": 17, + "elim_median": 7, + "union_alive_median": 43, + "engine_union_median": 61 + }, + "60": { + "n": 77, + "top1": 0.3636, + "coverage": 0.987, + "width_median": 67, + "tie": 0.0, + "entropy0": 5.0517, + "entropy6": 4.1007, + "squeezed": 1, + "independent": 1.0, + "public_median": 32, + "merge_median": 0, + "raw_median": 32, + "elim_median": 15, + "union_alive_median": 91, + "engine_union_median": 121 + } + }, + "futile_collect": [ + { + "radius": 10, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 11, + "mean_injected": 1.82 + } + }, + { + "radius": 10, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 13, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "truth", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 30, + "direction": "opposite", + "baseline": { + "truth_in_range": 76, + "truth_in_range_rate": 0.987, + "median_width": 33, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "truth", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 65, + "mean_injected": 1.82 + } + }, + { + "radius": 60, + "direction": "opposite", + "baseline": { + "truth_in_range": 75, + "truth_in_range_rate": 0.974, + "median_width": 67, + "mean_injected": 1.82 + } + } + ], + "errors": 0 + } + } +} diff --git a/docs/research/rectification_mapping_trial_2026_10_03.md b/docs/research/rectification_mapping_trial_2026_10_03.md new file mode 100644 index 00000000..24f5fbb5 --- /dev/null +++ b/docs/research/rectification_mapping_trial_2026_10_03.md @@ -0,0 +1,142 @@ +# 生时校正:甲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 段停下、未跑前端。本分支没有改前端。 diff --git a/docs/research/upstream_notice_2026_10_03.md b/docs/research/upstream_notice_2026_10_03.md new file mode 100644 index 00000000..efc3e686 --- /dev/null +++ b/docs/research/upstream_notice_2026_10_03.md @@ -0,0 +1,27 @@ +# 致共享引擎维护方:两处代码问题(2026-10-03) + +核对对象:yinduzhanxing `c7117f92`。 + +## 1. 「K.N. Rao 版 Narayana」只改了标签,大运序列没有变 + +- `cmd_narayana_dasha.py` 的默认值改成了 `variant_profile='kn_rao'`(acdc3551),对应的 profile 包括 `jaimini_odd_footed_dignity_v2`、`jaimini_general_order_v1`、`jaimini_lagna_seventh_strength_v1`、`jaimini_dual_lord_source_v1`、`parashara_equal_v1`。 +- 但 `narayana_dasha.narayana_dasha_full_report` 不管传入哪个 profile,都调用 `calc_narayana_mahadasha(lagna_sign_idx, planet_lons)`,也就是一律从上升起、一律顺行。这些 profile 只影响: + - 写进结果的元数据; + - `seed_selection` 记录(选出的起运宫没有被拿去排大运); + - `dense_boundaries` 的子运划分。 +- 所以输出带着 `kn_rao` 标签,但大运序列和 `legacy_local` 完全一样。贵方 `astrologer_questions_v3_repo_findings_2026_10_03.md` 里说「共享引擎已经确定使用 K.N. Rao profile」,就实际输出而言并不成立。 +- 另外请注意:K.N. Rao 公开的方法是 Chara Dasha,`jaimini.calc_chara_dasha(profile="kn_rao")` 已经实现了它;「K.N. Rao 版 Narayana」具体指什么,我们正在请占星师确认。 + +## 2. 8 星制 Chara Karaka 排位与 BPHS 不一致 + +- `jaimini.py:KARAKA_8` 当前写的是:1 AK、2 AmK、3 BK、4 MK、5 PK、6 GK、7 DK、8 PiK。 +- BPHS 第 32 章的 8 星制次序是:AK、AmK、BK、MK、**PiK**、PK、GK、**DK**。 +- 后果:用 8 星制时,父亲星、子女星、障碍星、配偶星都会落到错的行星上。我们在 9 张公开名人盘上按两种排位分别取 PiK,结果全部不同。 +- 我方将在 `TASK-astrologer-rulings-batch1-20261003` 的 T6 中修正,供参考。 + +## 附:我方试算结果(公开名人盘,供参考) + +- **受克加权(甲1)**:父亲线上没有任何非负权重能把「缺席」和「在身边」分开。 +- **事件映射(甲8)**:在 77 例上,±10 / ±30 / ±60 分钟三档的回放头名分别下降 13~17、10~16、8~21 个百分点,主要来自事业一行扩到 10、6、9、11 宫。 +- **月亮行运(甲9)**:按 0.25 权重加入月亮起点,结果不变;按 1.0 权重,±60 分钟档降 1.3 个百分点。 +- 详细记录:`affliction_weight_trial_2026_10_03.md`、`rectification_mapping_trial_2026_10_03.md`。