docs: record sync8 acceptance, BUG-1390/1391 and the ERR-110 refreeze
Independent Staging Quality Gate / validate (push) Successful in 15m2s
Independent Staging Quality Gate / publish (push) Successful in 4m10s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HwMNZEzdzmrbPhuRNmZe3C
This commit is contained in:
Jesse_Chen
2026-10-18 18:57:02 +08:00
co-authored by Claude Opus 5.5
parent 79f6ac5297
commit 0d92f586b6
4 changed files with 51 additions and 1 deletions
+30
View File
@@ -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`。
+2
View File
@@ -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 结果里有依赖集合 / 哈希顺序的结构进入了指纹。打分分数本身未见变化(未系统核对)。
@@ -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 相同(合同更新脚本里有断言)。