fix(reports): strip chart fences across newline styles

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
jesse-ux
2026-09-24 18:27:14 +08:00
co-authored by Claude Code
parent 5ec29eb736
commit fa8fef559b
7 changed files with 70 additions and 8 deletions
+5 -5
View File
@@ -13590,14 +13590,14 @@
## BUG-1020 | CRLF 普通报告下载保留图盘 JSON 围栏
- 状态:investigating(产品 2026-09-24 批准 D5 有限例外 D14,修复单待领取;未修复前不得标 resolved)
- 状态:resolved(本地修复,待 staging 门禁与部署 health 复核)
- 首次发现 / 最近更新:2026-09-24。
- 影响面:旧普通Markdown下载与新分块导出的正文组。
- 现象 / 触发:真实引擎虚构golden仅将LF换成CRLF,正文下载残留22段图盘JSON;新分盘组仍可提取22盘。
- 根因:report-chart-block.ts的FENCE_RE在jyotish-chart语言标记后仅匹配LF,stripReportChartBlocks共用它;旧测试验证LF剥除和CRLF字节等价,没有覆盖含真实围栏的CRLF无JSON。
- 修复:尚未实施。建议仅支持语言标记后的CRLF,保留其余换行、SVG与投影;需先授权D5只对错误JSON残留作有限例外,D13不是该授权。
- 验证:独立只读审查,转换golden后正文25块/残留22围栏/仍与旧导出byte-equal;相关105/105通过不能替代此未通过项。
- 防复发:待补真实golden CRLF/混合换行无JSON回归及冻结旧LF输出字节锁;禁止只比较两个共同改过剥离器的函数而声称历史输出不变。
- 修复:按产品D14有限例外,将语言标记及围栏尾部边界改为匹配`\\r?\\n`;不标准化整篇换行,不改SVG、投影、生成链或下载器。
- 验证:真实虚构reader golden的LF、CRLF、混合换行均输出0段`jyotish-chart`围栏、22个SVG且`ordinaryOutputLeaks`为空;LF普通导出SHA256固定为`3c52e8bfcfcb3ce3852bd5323867a69bc47d0f9aa821a34692172e7d61c6bcb8`。定向测试已通过;尚无部署health证据。
- 防复发:report-chart-block与report-export-blocks定向回归覆盖真实golden CRLF/混合输入及独立LF hash锁;禁止只比较两个共同修改后的helper而声称历史输出不变。
- 相关记录:BUG-999/1003;TASK-report-chapter-export-fix-20260924.md。
- 复发自:BUG-999同输出边界的未覆盖换行路径,继承剥离器缺陷,非本轮新增回归。
- 修复版本:未修复 / 未提交 / 未部署。
- 修复版本:本地待提交。