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

9.0 KiB
Raw Blame History

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/三引擎精度未在本轮关闭,不能把自动化绿当作领域真值验证。