Files
Jyotisha/docs/tasks/PROGRESS-bug-1061-cross-layer-pairing-20260927.md
T
Jesse_ChenandClaude Opus 5.5 d9c9e714f2
Independent Staging Quality Gate / validate (push) Successful in 11m14s
Independent Staging Quality Gate / publish (push) Successful in 3m47s
docs(tasks): BUG-1061 acceptance
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2026-09-27 19:08:07 +08:00

65 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`(仅文档)。