From 0d92f586b6df3397f624ab3e4ad82cbeb8cb3fb0 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Sun, 18 Oct 2026 18:57:02 +0800 Subject: [PATCH] docs: record sync8 acceptance, BUG-1390/1391 and the ERR-110 refreeze Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C --- CHANGELOG.md | 3 +- docs/BUG_HISTORY.md | 30 +++++++++++++++++++ docs/research/pre_work_error_ledger.md | 2 ++ .../tasks/PROGRESS-upstream-sync8-20261017.md | 17 +++++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3eb24fe..9e03ccca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ - 福德点等公式敏感点:第三项不落在规定弧上时,结果多 30°。 - 行星状态的名称按落陷、燃烧、友星、中性、敌星分开;同时成立的几种会一起显示。姿态改用日出后的小时来算。 - 八分力的 Pinda 改为削减后再求和,数字会明显变大。每宫力量的方向和吉星集合也换了口径,排序可能变。 -- 生时校正的打分结果与改前相同。Skill 版本不变(BUG-1380 至 BUG-1389)。 +- 北极圈内极昼、极夜出生时,行星状态表照常显示,只有「姿态」一项标无法计算;英文报告里并存的状态用英文逗号分隔。 +- 生时校正的打分结果与改前相同。Skill 版本不变(BUG-1380 至 BUG-1391)。 ## 2026-10-18 — 星盘档案最多保存 20 个人 diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 1917f737..018903e9 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -36638,3 +36638,33 @@ - 相关记录:BUG-1388。 - 复发自:无。 - 修复版本:分支 `codex/upstream-sync8-20261017`。上游提交 `e628118d`、`7d545039`、`f75a6e77`、`ac565836`。 + +## BUG-1390 | 极昼极夜出生时整张行星状态表消失 + +- 状态:resolved +- 首次发现 / 最近更新:2026-10-18 / 2026-10-18 +- 来源:sync8(issue #80)验收时 Claude 发现。检索「Shayanadi」「determine_daytime」「avasthas」,命中 BUG-1389,属其引入的回归。 +- 现象:北极圈内夏至前后(或冬至前后)出生,完整解读里 `modules.avasthas` 整个缺失,`errors` 多一条 `avasthas: sunrise_or_sunset_unavailable_for_location_date`。改动前这张表是有的。 +- 触发条件:`cmd_full_reading` 的 Avastha 步骤为 PVR Shayanadi 调 `determine_daytime(rising='hindu')`;出生地当天没有日出或日落时抛 `SahamDayNightError`,被整步的 `except` 吞掉。 +- 根因:BUG-1389 把日出计算放在整个 Avastha 步骤的 try 里,一项输入缺失连带其余四类状态一起丢。 +- 修复:只捕获 `SahamDayNightError`,把原因传给 `calculate_all_avasthas`;这时 Shayanadi 标 `method_status='blocked'`、`state=None`,解释写「无法计算」,不退回元素启发式冒充。其余四类照常计算。 +- 验证:`tests/test_avastha_full_reading_wiring.py::test_polar_birth_without_sunrise_keeps_other_avasthas`(北纬 69.65°、6 月 21 日)。 +- 防复发:同上测试锁住「一项缺日出不得拖垮整表」。 +- 相关记录:BUG-1389。 +- 复发自:无(BUG-1389 同轮引入,未发布)。 +- 修复版本:分支 `codex/upstream-sync8-finish-20261018`。 + +## BUG-1391 | 英文报告的 Deeptadi 并存条件用了中文顿号 + +- 状态:resolved +- 首次发现 / 最近更新:2026-10-18 / 2026-10-18 +- 来源:sync8(issue #80)验收时 Claude 发现。检索「applicable_states」「report-fact-tables」,命中 BUG-1389。 +- 现象:一颗星同时符合几种 Deeptadi 状态时,英文版报告的 Avastha 表也写成「Deepta、Kopa」。 +- 触发条件:`frontend/src/lib/report-fact-tables.ts` 的 Avastha 表在两种语言下都用「、」拼接。 +- 根因:BUG-1389 加并存条件时只按中文写了分隔符,测试也把英文断言成顿号。 +- 修复:英文版用 `", "`,中文版仍用「、」。 +- 验证:`frontend/tests/report-fact-tables.test.ts`(三栏:原值英文断言「Deepta、Kopa」,新值「Deepta, Kopa」)。 +- 防复发:同上测试分语言断言。 +- 相关记录:BUG-1389。 +- 复发自:无。 +- 修复版本:分支 `codex/upstream-sync8-finish-20261018`。 diff --git a/docs/research/pre_work_error_ledger.md b/docs/research/pre_work_error_ledger.md index 1926cd69..1df1e484 100644 --- a/docs/research/pre_work_error_ledger.md +++ b/docs/research/pre_work_error_ledger.md @@ -453,6 +453,8 @@ Prevention: 引擎/打分路径的性能任务书开工前先查这两份清单 2026-10-14:校正打分提速(BUG-1323~1325、BUG-1345)改了 `event_probes.py`、`dasha_transition_proximity.py`、`active_rectification_event_engine.py`、`api_service.py`。与 `ephemeris_nutation_2026_10_08` 对照输出不变后,另存标签 `scoring_perf_2026_10_13`。nutation 那四份文件没有改。 +2026-10-18:上游同步第八轮(BUG-1380~1390)改了 `ashtakavarga.py`、`dasha_analyzer.py`、`narayana_dasha.py`,三者都在 dataset `frozen_scoring.files` 里。任务书没预见到,写了「不得自行重新冻结」,执行方照做停下,冻结身份测试 8 条红。执行方与验收方各自重跑,封存 20 / 偏移 900 逐项相同,产品同意后另存标签 `upstream_sync8_2026_10_18`。教训:动引擎计算的任务书开工前就要对照两份清单,把「输出不变则按 ERR-110 重冻」写进任务分解,而不是笼统禁止。 + ## ERR-111 | Shadbala 特征指纹随 PYTHONHASHSEED 变化,同一输入跨进程 `feature_hash` 不同 | observed 2026-09-26 同一台机器、同一份代码、同一虚构请求连跑两次 `score_candidates`:`candidate_feature_snapshot.features[*].fingerprints.shadbala` / `static` 与 `feature_hash` 每次都不同;固定 `PYTHONHASHSEED=0` 后两次逐字节一致。说明 Shadbala 结果里有依赖集合 / 哈希顺序的结构进入了指纹。打分分数本身未见变化(未系统核对)。 diff --git a/docs/tasks/PROGRESS-upstream-sync8-20261017.md b/docs/tasks/PROGRESS-upstream-sync8-20261017.md index b8cbc04f..3d13dde6 100644 --- a/docs/tasks/PROGRESS-upstream-sync8-20261017.md +++ b/docs/tasks/PROGRESS-upstream-sync8-20261017.md @@ -54,3 +54,20 @@ - `determine_daytime` 默认仍是原来的视日出窗口。只有 Saham 昼夜、Gulika、Shayanadi 传入 Hindu rising。Panchanga 和校正调用点没有改。 - 年运快照没有锁住这三条公式 Saham 的旧经度,所以没有改快照数字。 - 本机没有把 `ruff` 装进这次用的虚拟环境,没有跑 ruff。 + +## 验收与收尾(Claude,2026-10-18) + +验收基于 `44e961ef9`,基线 `e7bf60c1f`。产品同意按打分相同验收、重新冻结,并授权 Claude 直接收尾(分支 `codex/upstream-sync8-finish-20261018`,已合入当时的 `origin/staging`)。 + +| 检查 | 结果 | +| --- | --- | +| 封存回放 20 条(Claude 独立重跑) | 与基线逐项相同 | +| 偏移回放 900 条(Claude 独立重跑) | 与基线逐项相同 | +| 全量 pytest(两棵树并行,逐名对比) | 新增失败只有 8 条冻结身份;`test_vedastro_gateway` 一条并行偶发,单跑通过 | +| tsc / lint | 0 错 / 0 error(123 条存量 warning) | + +收尾改动: + +- BUG-1390:极昼极夜出生时整张 Avastha 表消失,改为只有 Shayanadi 标无法计算。 +- BUG-1391:英文报告 Deeptadi 并存条件改用英文逗号。 +- 重新冻结(ERR-110):标签 `upstream_sync8_2026_10_18`。两份研究脚本的 `FREEZE` / `REPORT`、密封合同当前指针、`tests/test_sealed_holdout_contract_freshness.py` 排除前缀、`frontend/tests/rectification-confirmation-gate.test.ts` 冻结路径,均按三栏改。scoring_perf 四份旧记录逐字节保留。新报告与 scoring_perf 报告的 trials、metrics、summary、historical_comparison 相同(合同更新脚本里有断言)。