Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
65 lines
5.9 KiB
Markdown
65 lines
5.9 KiB
Markdown
# PROGRESS · BUG-1061 双重过运跨层(D1+D9)配对按名字数字比对(2026-09-27)
|
||
|
||
- 执行方式:直接执行(产品负责人 2026-09-27 同意修复 BUG-1061,由子代理实现),无单独任务书。
|
||
- 基线:`origin/staging` = `9aa37197`;分支 `codex/bug-1061-cross-layer-pairing-20260927`,工作树 `.worktrees/bug-1061-cross-layer-pairing-20260927`;未推送。
|
||
- 开工预检:`python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45` 退出 0,remote_visibility verified,focused tests ok。
|
||
- 冻结计分清单(ERR-110):`scripts/jyotish_engine.py`、`scripts/run_quality_gate.py` 不在 `sealed_holdout_rerun.py` `PRODUCTION_FILES` 与 holdout v2/v3 `frozen_scoring.files` 里;未动 `scripts/jyotish_api_server.py`、`.gitea/**`、`deploy/**`、迁移。
|
||
|
||
## 改了什么
|
||
|
||
| 文件 | 改动 |
|
||
| --- | --- |
|
||
| `scripts/jyotish_engine.py` | 新增 `_double_transit_target_meta`(D1 / D9 目标的 layer / kind / house / planet)与 `_double_transit_target_identities`;`cmd_double_transit_pac` 跨层两段循环改为身份集合有交集才配对,删掉按名字抽数字的比较。目标名、各层结果、条目格式、摘要文案不变 |
|
||
| `tests/test_double_transit_cross_layer_pairing.py` | 新增 8 条回归(三张公开 AA 盘真实引擎) |
|
||
| `scripts/run_quality_gate.py` | 新测试进 `CORE_PYTEST_TARGETS` |
|
||
| `frontend/tests/fixtures/consult-evidence-card-golden.json` | 用采集脚本重生成(未手改) |
|
||
|
||
配对规则逐条决定与理由见 `docs/BUG_HISTORY.md` BUG-1061。一句话:只认「同一宫」(D1 第 N 宫 ↔ D9 第 N 宫)与「同为 D1 第 N 宫主这颗星」(D1 宫主 ↔ 它的 D9 星座,以及它恰好也是 D9 第 N 宫主时的那项)。
|
||
|
||
试算过、未采纳的两种扩大口径(4 组输入 × 12 宫):
|
||
|
||
| 口径 | 跨层条目 | 摘要句变化 | 不采纳原因 |
|
||
| --- | --- | --- | --- |
|
||
| 采纳:同宫 + 同为 D1 第 N 宫主 | 31 → 38 | 7 / 48 | — |
|
||
| + 两层第 N 宫主互配(不同星) | 31 → 59 | 14 / 48 | 不是同一征象星,KN Rao 三点里没有 D9 宫主;扩大技法口径需产品另定 |
|
||
| + 上升主与其 D9 星座互配 | 31 → 89 | 24 / 48 | 与第 N 宫无关,同一对在 12 个宫的调用里重复出现 |
|
||
|
||
## 前后对照(3 张公开 AA 盘 + 报告 golden 虚构输入,各 12 宫;`PYTHONHASHSEED=0`,chart 缓存 TTL 0)
|
||
|
||
| 输入 | 跨层条目 修复前 | 修复后 | 变化 |
|
||
| --- | --- | --- | --- |
|
||
| barack_obama | 10 | 10 | 无 |
|
||
| elizabeth_taylor | 9 | 10 | +6 宫、+12 宫同宫条目;−9 宫误配 `Jupiter(D1)9宫(Cancer) + Saturn(D9)Mars_D9(Capricorn)` |
|
||
| steve_jobs | 6 | 9 | +2 / 6 / 7 宫同宫条目 |
|
||
| 虚构输入(报告 golden) | 6 | 9 | +1 / 2 / 8 宫同宫条目(报告跑的 7 宫不变,仍 4 条) |
|
||
| 合计 | 31 | 38 | +8 / −1;宫主类条目全部不变 |
|
||
|
||
`d1`、`d9`、`cl`、层内(D1 / D9 / CL)条目、`stats` 48/48 不变;摘要句 7/48 变化(6 处「❌ 无」→「⚠️ 跨层间接」,泰勒 9 宫反向)。
|
||
|
||
## Golden
|
||
|
||
- D1 / CL golden:`JYOTISH_API_CHART_CACHE_TTL_SECONDS=0 PYTHONHASHSEED=0 python3 tests/test_double_transit_d9_targets.py --capture` 重生成,逐字节不变。
|
||
- 数据卡 golden:`JYOTISH_API_CHART_CACHE_TTL_SECONDS=0 PYTHONHASHSEED=0 python3 scripts/research/capture_consult_evidence_card_golden.py`,两次运行逐字节相同。与原文件比,只有 `consultation_native_layers.double_transit` 子树变化(其余逐项相同):乔布斯结论 6 → 9、`house_7_summary`「❌ 无」→「⚠️ 跨层间接」;泰勒 9 → 10;奥巴马不变;family / annual / timing 三路相同。
|
||
- `report-density-fictional-reader.json`:09-23 冻结快照、无采集脚本,本轮未重生成(报告只跑 7 宫,本轮 7 宫条目数不变)。
|
||
|
||
## 测试
|
||
|
||
| 项 | 基线 `9aa37197` | 修复后 |
|
||
| --- | --- | --- |
|
||
| Python 门禁集(gate-pytest-args,含 growth contract / privacy markers / validation integrity)+ `test_double_transit_d9_targets` + `test_consultation_native_layers` + `test_report_reader_main` + `test_report_density_facts`(修复后另加新文件) | 978 passed / 1 skipped | 986 passed / 1 skipped(+8 新增;同一条 skip) |
|
||
| `tests/test_double_transit_cross_layer_pairing.py` 在基线引擎上 | 3 failed / 4 errors(新函数不存在)/ 1 passed(快速门登记) | 8 passed |
|
||
| 前端受影响 5 个文件(evidence-card v1 / v2 / telemetry、projection native / timing) | — | 34/34 pass |
|
||
| 前端全量(Node 22.14,`tsx --test tests/*.test.ts tests/*.test.tsx`) | 4192 / pass 4138 / fail 24 / skipped 30 / cancelled 0 | 4192 / pass 4138 / fail 24 / skipped 30 / cancelled 0 |
|
||
|
||
前端 24 条失败两边按名字逐条相同(含嵌套子测试比对;全部是需要 Docker / PostgreSQL 的数据库与部署套件),新增失败 0。本轮没有修改任何既有断言。前端基线的做法:同一工作树临时换回基线数据卡 golden 跑全量,再换回新 golden(前端只受这份 fixture 影响)。
|
||
|
||
## 未做 / 另记
|
||
|
||
- 部署后 chart 缓存(15 分钟 TTL,键不含代码版本)可能短暂返回旧跨层条目。
|
||
- 环境缺口:无 Docker,数据库 / 部署套件以与基线逐条一致的失败清单代替。
|
||
- 无新增缺陷编号。
|
||
|
||
## 验收(Claude,2026-09-27)
|
||
|
||
基于 `9aa37197` 独立复跑(Node 22.14,顺序执行):tsc 0;lint 0 error;`npm test` 4192 / 24 fail / 0 cancelled / 30 skip,失败名单与性别单基线逐条一致、无消失测试名;Python 门禁集退出 0;`tests/test_double_transit_cross_layer_pairing.py` + `test_double_transit_d9_targets.py` + `test_consultation_native_layers.py` 通过;build 正常。配对规则只认「同一宫」与「同一个第 N 宫宫主」两种身份,宫主类条目与 D1/D9/CL 各层结果不变;交叉层条目 31→38(8 条新增同宫配对、1 条误配移除)。推送前 rebase 到 `037cd1aa`(仅文档)。
|