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>
9.0 KiB
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 因既有.workbuddymirror 路径断言失败,未伪造环境。 - 用户硬门槛:必须 Node 22 + Linux 全量,按名称逐项对照,新增失败为 0 才能推;每个既有断言改动记录原值 / 新值 / 原因。本执行方没有推送权限。
T1–T3 实现
annual_tajika_pack._annual_comparable_value:年主仅比较实际行星,Tajika 缺少year_lord_sign不再导致假冲突。代码注明 BUG-1028 与上游差异。真实不同年主仍 conflict;参考版提示也不再无条件宣称分歧,且保留外部验证未完成说明。pl9_reader_export:年主、Muntha、年度上升各从独立字段取值;真实冲突以「太阳返照:…;Tajika:…(两者不同)」并列,不强行取一侧。选取依据仅解释现有本地 Muntha 守护星口径,不冒充 Panchadhikari。_annual_series_surface补保留solar_return,未来年返照时刻从对应年度真实数据读取。report-public-projection:共享安全规则与 PL9 报告专用规则分离;聊天导出、安全 chart fence / SVG 不使用新长英文段规则。明确内部字段、密钥、危险 URL、脚本仍拦截。Score / Weight 不单独让报告领域表消失,provider / attempt / job / model 仍拦截。删内部表只连紧邻说明段,不连标题。- 五要素只显示中文「综合性质 / 吉性要素数量 / 要素总数」,删除原始评分键;缺姓名不输出空姓名行。
- 未改 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/三引擎精度未在本轮关闭,不能把自动化绿当作领域真值验证。