docs(research): 甲1/甲8/甲9 trial records, astrologer feedback round 4, upstream notice (Narayana label-only, KARAKA_8 order)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-10-03 11:00:00 +08:00
co-authored by Claude Opus 5.5
parent d0233e3c37
commit 60d065a8cf
5 changed files with 2280 additions and 0 deletions
@@ -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,测试命令找不到),属环境缺口,本轮未改前端。
@@ -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 位名人盘上试算。)
---
谢谢您!做完后直接发回这一页就行。
File diff suppressed because it is too large Load Diff
@@ -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 段停下、未跑前端。本分支没有改前端。
@@ -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`。