Files
ElyOffice/tasks/reviews/R4.4-r1.md
T
ZacharyZhang-NYandClaude Opus 5.5 256240c365 R4.4: export and copy read as the visual mode reads
HTML export, plain text and rich copy read each paragraph, heading,
cell and HTML block through the component's MarkdownReader (pin
1251221). Emoji, alerts, the TOC and inline tags match visual mode.
Footnotes sit in place as [n]; link titles are not written.

Three review rounds failed; round 3's one finding (a scan per
footnote over open marks) is fixed with a growth regression, unreviewed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 09:11:47 -04:00

3.8 KiB

FAIL

  1. apps/ely-mark/src/output/html.rs:122、apps/ely-mark/src/output/plain.rs:105:退出 Markdown 容器时恢复入口的 code 计数,与组件的标签关闭、格式元素重开规则不符。输入 *a <code>b* :smile:</code> :smile:,组件读出 a b :smile: 😄,HTML 与纯文本却把两个短码都转成表情;反向交叉 a <code>*b</code>* :smile:,组件读出 a b 😄,两种导出却保留最后的短码。富文本复制共用该 HTML 写入器,同样受影响。修复方向:复用组件的容器栈读法,不能通过恢复 AST 容器入口计数模拟关闭标签;补这两种交叉方向的回归。证据:.work/R4.4-r1-review/optimized-probes.log 中两项交叉标签探针均失败。

  2. apps/ely-mark/src/output/html.rs:237、apps/ely-mark/src/output/html.rs:147:HTML 写入器跨独立可视行内区域沿用 Reading。表格 | x:smile: | :smile: |\n| --- | --- |\n| :smile: | :smile: | 的第一格关闭短码转换后,其余三格也原样输出 :smile:;可视模式和纯文本在这三格均为 😄。标题和紧凑列表还会泄漏 code 计数:# a <code>x\n\n:smile: 的下一段导出为短码,可视模式为表情。修复方向:按组件的段落、标题、单元格边界建立独立读取状态,涵盖紧凑列表,并补跨边界回归。证据:同一日志中的单元格与标题探针失败。

  3. apps/ely-mark/src/output/html.rs:121:结束可视块时没有结束其中未闭合的行内标签;浏览器修复嵌套会把格式或链接延续到下一块。输入 a <b>bold\n\nnormal,组件第二段的样式为空,导出 <p>a <b>bold</p><p>normal</p> 经 HTML5 解析后第二段为 <p><b>normal</b></p>。换成未闭合的 <a href="https://example.test">,下一段还会错误地成为链接。修复方向:在可视块边界结束该块的行内标签,保留块内约定的嵌套修复行为;测试实际解析后的格式和链接范围。证据:.work/R4.4-r1-review/unclosed-tags.log,两例均与组件实际读取结果不符。

  4. apps/ely-mark/src/output/html.rs:374:目录列出组件提供的全部标题,但正文只写被引用的脚注,导致目录含有不存在的目标。输入 [toc]\n\n# Main\n\n[^n]:\n ## Unused,可视模式显示脚注内标题,导出目录含 href="#h-25",却没有对应标题或 id="h-25";点击该目录项无法跳转。修复方向:使标题的实际输出集合与可视目录一致,确保每个目录项都有输出锚点,并测试未引用脚注内的标题。证据:optimized-probes.log 的目录目标探针失败。

  5. apps/ely-mark/src/output/html.rs:332:每个样式切片都重新扫描全部样式和链接,普通平铺 HTML 的写出退化为平方复杂度。输入 <div> 加 64,000 次 <b>x</b> 再加 </div>,只有 576,011 字节;实际输出源码以 opt-level=3 编译的探针中,16k、32k、64k 段分别耗时约 0.256、0.862、3.071 秒,同一 64k 输入的组件读取约 0.244 秒。组件依赖为测试构建,这不是完整发行性能测量;但平方扫描可直接从循环及增长曲线确认。copy_rich 在界面线程同步调用此写入器,因此该路径会长时间阻塞窗口,违反 PRD PERF-02。修复方向:按区间起止顺序维护当前样式和链接,避免每片扫描全集,并增加规模增长回归。证据:optimized-probes.log。

  6. apps/ely-mark/src/output/html.rs:16、apps/ely-mark/src/output/html.rs:283、apps/ely-mark/src/output/plain.rs:82:三条新增或改写的注释分别为 11、12、12 词,超过项目规定的十词上限。运行 python tests/scripts/comments.py 会在这三处失败。修复方向:缩短这三条注释;日志中的 R5 注释不属于本轮判定。证据:.work/R4.4-r1-review/comments.log。