docs(tasks): product approves D5 exception for CRLF chart fences (BUG-1020)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-24 14:16:59 +08:00
co-authored by Claude Opus 5.5
parent 7da2e6ca8e
commit 9c9b66d64c
4 changed files with 9 additions and 5 deletions
+2
View File
@@ -4,6 +4,8 @@
## BUG-1020:CRLF 无 JSON 与旧导出逐字节合同冲突(2026-09-24)
- 2026-09-24 产品批准 D5 有限例外(D14),裁决阻塞解除,转为待领取修复单;以下原记录保留。
- 独立审查使用真实虚构golden只转换换行,正文下载保留22段图盘JSON,同时仍等于旧导出。根因是旧FENCE_RE仅接受语言标记后的LF,属于继承缺陷。
- D13只放开安全SVG,没有授权改变D5;未静默修复或声称全部验收通过。建议CRLF围栏输入作有限例外后最小修复,待裁决,见 `docs/tasks/TASK-report-chapter-export-fix-20260924.md`。
+1 -1
View File
@@ -13560,7 +13560,7 @@
## BUG-1020 | CRLF 普通报告下载保留图盘 JSON 围栏
- 状态:blocked(已独立复现,修复与D5旧导出逐字节合同冲突,未获有限例外授权)
- 状态:investigating(产品 2026-09-24 批准 D5 有限例外 D14,修复单待领取;未修复前不得标 resolved)
- 首次发现 / 最近更新:2026-09-24。
- 影响面:旧普通Markdown下载与新分块导出的正文组。
- 现象 / 触发:真实引擎虚构golden仅将LF换成CRLF,正文下载残留22段图盘JSON;新分盘组仍可提取22盘。
+1 -1
View File
@@ -170,7 +170,7 @@
| 任务书 | 进度 | 主题 | 状态 | 落点 |
| --- | --- | --- | --- | --- |
| `TASK-report-chapter-export-fix-20260924.md` | `PROGRESS-report-chapter-export-20260924.md` | **CRLF图盘JSON残留(BUG-1020)**:旧剥离器只匹配LF;建议D5对错误围栏残留作有限例外,D13不构成该授权。 | 待裁决(blocked,未执行) | 组合候选未提交 |
| `TASK-report-chapter-export-fix-20260924.md` | `PROGRESS-report-chapter-export-20260924.md` | **CRLF图盘JSON残留(BUG-1020)**:旧剥离器只匹配LF;建议D5对错误围栏残留作有限例外,D13不构成该授权。 | 待领取(产品 09-24 批准 D5 有限例外 D14) | — |
| `TASK-report-chapter-export-20260924.md` | `PROGRESS-report-chapter-export-20260924.md` | **我的报告:分块导出 + 中文元信息 / 状态色 / 行内确认删除(BUG-1018/1019)**。旧整篇按钮由抽屉取代;常用 / 全部正文保持 D5 逐字节,所有组全选另附盘和核对表。后续产品裁决 D13:分盘必须带安全 SVG,有限替代原无 SVG 约束;JSON 围栏及内部字段仍禁。原生底部 dialog、760px、70%、860 两列、零额外请求、保留打印 / 原始附录。 | 已验收(Claude 09-24:同上;D13 SVG 与列表页删导出按钮均按产品口径;BUG-1018/1019 resolved;CRLF 见 fix 单) | `1420471a`(staging 已部署);真机清单欠 |
| `TASK-report-density-20260922.md` | `PROGRESS-report-density-20260922.md` | **报告信息密度与原始附录(BUG-1003~1007)**:与源头仓 PL9 全量报告同资料实测:对照 847,632 字符 / 8,044 表格行,我方 309,357 / 1,478。缺口不在引擎——20 张分盘全表、KP 四表、Ashtakavarga 四类、Shadbala 六分量、Avastha、Sahams、年度都已算得出,但 `personal-report-contract.ts` 的 `REPORT_SECTION_KINDS` **没有表格类型**、`CHART_IDS` 只有 9 种,这些表在产品页报告里没有落脚字段。另测出对外原始附录泄漏 925 种 / 3,797 处工程标识符(`parameter_sensitive` 697、`cmd_full_reading` 68、`PyJHora`/`JHora` 35、`PL9` 页码 59),对照物同项为 0。**产品 2026-09-22 三点拍板**:层 1 按 8 组表 + 分盘扩到 16 张;层 2 原始附录直接给 C 端且先全显示;B 类大运族要显示。**决策记录已写明推翻 BUG-999 的两条红线**(专业参考不得作普通下载 fallback;`parameter_sensitive`/「参数敏感」命中整行剔除)——**仅限附录通道**,普通正文投影不动。硬红线:表格层服务端装配、writer 不得写表;对照物的替代大运族日期与 Shadbala 分量在源头仍未闭环(506 行 date mismatch、`production_tuning_allowed=false`),不得照搬升级。让步顺序与串行依赖(任务 3 → 任务 4 同改契约)见任务书 | **验收未通过**(2026-09-23):任务 1/2/4/5 通过;任务 3 事实表在普通报告里显示 447 个引擎键路径(P1);隐私门新增失败(任务书自身写入真实出生资料 BUG-1008 已清 HEAD,fixture 数值碰撞待登记);当时 BUG-1003~1007、PROGRESS、testing 清单缺失;F3 现已补前两项,testing 新建受工具边界阻塞仍缺。Node 22 前端 0 新增失败、`/` Static、gzip +0.007% | 实现 `bbd96d3b`(原 `f968cb21`,09-23 为清除 BUG-1008 重写历史;已在 staging,未部署);修复单 `TASK-report-density-fix-20260923.md` |
| `TASK-report-density-fix-20260923.md` | `PROGRESS-report-density-20260922.md` | **报告密度验收修复单(BUG-1009/1010 + 补写 1003~1007)**:F1 事实表改成真正的表(逐组规定列,普通报告可见格 0 个引擎键 / 0 个下标 / 最多 2 位小数,`sourcePath` 保留供回查;主运年数不得填出生剩余年数);F2 按既有机制登记 fixture 的数值碰撞(已独立重跑确认是虚构输入);F3 补 Bug 历史 / PROGRESS / 真人清单并更正「未提交推送」;F4 两份清洗规则只留一份(Python 版漏第三方页码);F5 writer 写表拦截补测试与提示;F6 事实表可打印。硬红线:不得弱化隐私扫描、不得强推或重写 staging(历史清除由产品负责人决定);Sade Sati 三轮日期是原任务书错误、不在本单 | **已验收,F1–F6 全部通过**(2026-09-23,`a12f2c0d`):事实表 130 行 / 600 格 0 引擎键 0 下标、主运年数 18、隐私门转绿、两份规则逐字节一致、写表拦截变异测试红→绿;Node 22 前端 3,748 / 26(名单与基线一致)、Python 948/0。剩数据库测试 E2BIG 另开 fix2(BUG-1011) | `a12f2c0d`(门禁 run 6294 红,未部署);真人清单 `docs/testing/report-density-20260922.md` |
@@ -2,7 +2,9 @@
## 状态 / 基线
**blocked,待D5有限例外裁决;本文件不是执行授权。**
**待领取。产品 2026-09-24 已批准 D5 有限例外(见决策记录 D14),本文件即执行授权。**
基线更新:`origin/staging` 含已部署的 `1420471a`(两单组合已合入),从该基线开分支 `codex/report-chapter-export-fix-20260924`。
基线 `5ff43b47f38e378918c8b6bd967228185d7f02fe`,发现于尚未提交的 `codex/report-chapter-export-20260924`,组合候选 `codex/chart-report-integration-20260924`。原报告单完成本地实现后,独立审查发现本项;继承旧剥离器缺陷,不是新增回归。后续必须在两单组合版本之后串行执行,不覆盖在途工作。
@@ -35,8 +37,8 @@ console.log({
- 原单D5明确不可让步:正文全选与**旧版本**普通导出逐字节相同。
- 原单T1同时禁止JSON图盘围栏,CRLF输入下这两条无法同时成立。
- 用户后续D13只允许并要求SVG,不授权保留JSON,也未授权改变D5。
- **建议但尚未批准**:仅对CRLF图盘围栏的错误残留授权D5有限例外,新导出删除JSON;其它正文/安全SVG和LF输出不变。
- 未获该裁决前只记录blocked,不改剥离器、不将两个共同修改后的helper比较当成旧行为等价。
- **D14(产品 2026-09-24 批准)**:D5 对 CRLF / 混合换行输入中的 `jyotish-chart` JSON 围栏残留作有限例外——新导出必须删除这些围栏,因此 CRLF 输入下与旧导出不再逐字节相同;差异**只能**是被删掉的围栏(及其紧邻的围栏换行)。LF 输入仍须与冻结的旧导出逐字节相同,其它正文、安全 SVG、顺序一律不变。
- 仍禁止只比较两个共同修改后的 helper 来声称历史行为等价(见任务分解第 1、4 条的冻结 golden)。
## 硬红线