Files
Jyotisha/docs/tasks/PROGRESS-report-reader-main-fix-20260925.md
T
jesse-uxandClaude Code 4d801e53c3
Independent Staging Quality Gate / validate (push) Successful in 16m28s
Independent Staging Quality Gate / publish (push) Successful in 3m33s
fix: integrate people archive, report reader and western chart corrections
Validate on Linux Node 22 and PostgreSQL 17: 3894 frontend tests and 64 database tests pass, with no removed test names or new failures. Preserve static Home, bounded gzip, assertion-change records and manual acceptance gaps.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-25 20:41:16 +08:00

75 lines
9.0 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 · 读者版年运与投影修复(2026-09-25)
## 最终整合复验补记
组合快照 `final-r4b` 已在 Linux Node22.23.2 / PostgreSQL17 验证:前端3894/3894、DB64/64,fail/skip/cancel/todo均0;tsc/lint/build各exit0,lint0error/127既有warning,首页Static。相对开工基线无旧测试名消失、无新增失败;完整首屏/入口增量/专属JS gzip分别+0.1612%/−0.4536%/−0.7984%。完整证据与环境失败历史见 `PROGRESS-three-fixes-integration-20260925.md` final-r4b节。
下文为本单执行期记录;Python/隐私最终快照补验另记,受控登录与部署缺口不由自动化替代,BUG状态不提前升级。
## 状态与基线
本地实现与定向回归已完成,等待协调方对组合代码独立审查、Linux Node 22 全量及构建验收。未提交、未推送、未部署;BUG-1026 / 1028 不提前写 resolved。
- 任务:`TASK-report-reader-main-fix-20260925.md`,本树 `codex/report-reader-main-fix-20260925`。
- 开工远端基线:`48fe4daf519dab2a5c6bf4b01dd513067de1647b`;任务所列 `fabe0114` 之后为任务文档更新。
- 已检索并完整核对 BUG-1026 / 1028 及关联 BUG-999 / 1027;旧防复发测试存在,但只锁表头、泄漏词或同键合成字典,未检查实际可见单元格和 Bhava Bala 整表。
- 已读 AGENTS、frontend/AGENTS、DESIGN、VOICE、CONTEXT 与预检台账。开工预检 `python scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45`:remote verified,fragment scan / adapter diagnostics 已执行;focused 因既有 `.workbuddy` mirror 路径断言失败,未伪造环境。
- 用户硬门槛:必须 Node 22 + Linux 全量,按名称逐项对照,新增失败为 0 才能推;每个既有断言改动记录原值 / 新值 / 原因。本执行方没有推送权限。
## T1–T3 实现
1. `annual_tajika_pack._annual_comparable_value`:年主仅比较实际行星,Tajika 缺少 `year_lord_sign` 不再导致假冲突。代码注明 BUG-1028 与上游差异。真实不同年主仍 conflict;参考版提示也不再无条件宣称分歧,且保留外部验证未完成说明。
2. `pl9_reader_export`:年主、Muntha、年度上升各从独立字段取值;真实冲突以「太阳返照:…;Tajika:…(两者不同)」并列,不强行取一侧。选取依据仅解释现有本地 Muntha 守护星口径,不冒充 Panchadhikari。`_annual_series_surface` 补保留 `solar_return`,未来年返照时刻从对应年度真实数据读取。
3. `report-public-projection`:共享安全规则与 PL9 报告专用规则分离;聊天导出、安全 chart fence / SVG 不使用新长英文段规则。明确内部字段、密钥、危险 URL、脚本仍拦截。Score / Weight 不单独让报告领域表消失,provider / attempt / job / model 仍拦截。删内部表只连紧邻说明段,不连标题。
4. 五要素只显示中文「综合性质 / 吉性要素数量 / 要素总数」,删除原始评分键;缺姓名不输出空姓名行。
5. 未改 API 主文件、Ayanamsa、宫制、大运、依赖、迁移、workflow、人物档案或西洋盘代码;未改 Skill 包,版本不 bump。
## 上游 Panchadhikari 同步决定(D2 允许让步)
查证上游提交 `23b9609e330dbee70a4725bdc222b125d9b0e39f` 的 `scripts/tajika.py::calc_panchadhikari_year_lord` 及其力量计算闭包:会在产品进程导入 `jhora`,外部不可用时退到本仓已 blocked 的 Panchavargiya native_proxy;且其 Muntha 从年度上升推算,与本轮恢复本命上升的既有口径不一致。完整同步会跨越许可证隔离与算法治理边界,不能为了补表格解除 blocked。
因此按 D2 使用本地既有真实字段,不引入此选择器、不改算法、不宣称 oracle / 多引擎精度闭环。查证源码只留本地 `artifacts/report-reader-fix/upstream-tajika-inspect.py`,不并入运行包。
## Golden 与测试证据
Golden 使用原有明确虚构测试输入,通过 `cmd_full_reading → build_professional_report_reference_packet → _pl9_export_markdown_for_edition(reader_main)` 真实重算,1832 行;provenance 增加生成链和任务名。未手写领域响应。
末尾重算脚本再次覆盖 golden 被工具拒绝,未换工具绕过,也未转交覆盖。改用**只读**完整引擎重算对照,确认最终代码输出与先前已成功重算的 golden **逐字相等**,故不需要第二次覆盖。证据 `fixture-final-verification.log`。这仅证明**该次重算逐字相等,不承诺全引擎跨次字节确定性**。协调方独立多次重跑观察到 Shadbala Mercury / Venus 的 Drik / Total 有 0.01 漂移,年运与章节无差;保留本次成功记录及独立限制,不改算法、golden 或容差消除漂移。本单字段回归以真实年运来源和明确单元格断言为准,不能由一次全报告相等推断所有引擎输出确定性。
新增 Python 4 项测试覆盖:真实不同键字典一致、三年非空且变化、未来真实返照时刻、真实两侧值冲突故障注入、缺名与五要素清理。前端新增2项并增强 golden:Bhava Bala 标题+十二行表原样存在、后续表不丢标题、聊天英文保留、安全规则不退步、年运可见格不为空。没有删除既有测试。
| 验证 | 结果 | 证据(本地 artifacts/report-reader-fix/) |
| --- | --- | --- |
| Python 开工两文件基线 | 17 通过 | report-baseline-tests.log |
| Python 修改后两文件 | 21 通过 | python-targeted.log |
| Python 最终扩展7文件(含API增长、隐私、parity) | 124 通过,0 失败 | python-expanded-final.log |
| 前端三文件首次 | 38 通过 / 2 个旧 SHA 不符;逐行检查后按 D3 修正 | frontend-targeted.log、projection-diff.txt |
| 前端三文件最终,Node 22.23.2 | 40 通过 / 0 失败 / 0 跳过 | frontend-targeted-final.log |
| 最终 tsc --noEmit | exit 0,0 错 | tsc-final.log |
| 最终 npm run lint | exit 0,0 error / 127 warning | lint-final.log |
| Python quick,UTF-8,skip-frontend-runtime | 首跑与最终重跑均 exit 0;最终 948 passed / 1 skipped | python-quick.log、python-quick-final.log |
| 最终真实引擎与 golden 对照 | 1832 行逐字相等,未覆盖 | fixture-final-verification.log |
环境:Windows、Node 22.23.2 / npm 10.8.1、Python 3.11.7。quick 使用 `PYTHONUTF8=1 PYTHONIOENCODING=utf-8`,与协调方 UTF-8 基线同环境;前端单独跑,不把 Windows 定向当 Linux 全量。
协调方通报的 **Linux Node 22 基线**:3863/3863、fail0、skip0、DB61/61、tsc0、lint0error/127warning、build0 首页 Static;证据主仓 `artifacts/three-fixes-baseline-20260925-u2mvj0n4/linux-logs/`。最终组合必须 fail0、原测试名称无消失、新增失败0,构建/gzip由协调方独立验收,不能引用旧 Node20 失败豁免。
## 所有既有断言改动三栏
| 断言位置 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| test_annual_tajika_pack:executive_summary.status | in {blocked, parameter_sensitive} | == partial_verified | 两侧真实相同年主不再误报冲突;只是本地可读状态,外部 replay 边界未升级 |
| test_annual_tajika_pack:unified.status | in {blocked, parameter_sensitive} | == partial_verified | 同上,统一报告摘要同步真实本地状态 |
| report-public-projection:KP 原始表标题 | doesNotMatch | match ### KP 原始表 | D3 只删内部表及说明段,不删标题;防后续正常表归错章节 |
| personal-report-density-retry:投影 SHA | f3aeb8f4b09ba0a78af4ab5e7aee4db32d7499b8e6b1488f2925b35fd91750b9 | 3d16948c52d97adbdcfee45441336f8cd1ae242e3c0c99f766cb8aa0bc964067 | 固定旧 density golden 未改,旧/新投影逐行差异仅增加标题与空行,符合 D3;不是为消红放宽泄漏 |
| report-export-blocks:LF 下载 SHA | b7f6947f6ae6f82e4a972be3c1f2bc50260ed0c5f029847264f40a5ee6ba7b88 | 4295165c4ed6e13b03e8c3c25fd54ad3ef5a2ca1732e9f0783d0ada0c2bbfef2 | 同一投影恢复标题后普通下载同步;22 个安全 SVG、去围栏、逐字节组合、泄漏零命中断言未弱化 |
只有上述5处改变既有预期。新增断言不替代原有泄漏、安全或图盘断言;参考版年运提示回归也使用真实完整引擎结果。
## T4 记录与未完成验收
- 沿用 BUG-1026 / 1028 补根因、旧测试为何未拦住、修复与回归;更新 testing、CHANGELOG、DESIGN、任务索引、BLOCKED。
- 无受控登录,未读取或借用凭据。浏览器清单未执行,不写已验收;无提交/推送/部署/health 声明。
- quick 在 Windows 把5个既有 pending_packets 文件改为 CRLF;逐字核验确为纯换行后,恢复操作被工具拒绝覆盖。未绕过或转交代执行,保留本树脏态;这5个文件不在交付白名单,不修改 oracle 内容。整体 `git diff --check` 会因此报 CRLF whitespace;仅交付范围 `scripts frontend tests docs CHANGELOG.md BLOCKED.md` 的 diff --check 为0。清理需用户另行批准,见 BLOCKED。
- 本单是纯代码维护,不输出运势解读;MEVG/三引擎精度未在本轮关闭,不能把自动化绿当作领域真值验证。