12 lines
3.8 KiB
Markdown
12 lines
3.8 KiB
Markdown
FAIL
|
||
|
||
crates/ely-lok/src/lib.rs:10 — [P1] C07.2 要求的 GPUI `LokView` 及视图渲染链缺失。当前仅导出 `Worker`、`Doc`、`Tile`、`Invalidations`;源码没有图块缓存、旧代际响应丢弃、页面裁剪或统一的缩放/滚动/DPI 坐标转换。临时消费程序 `use ely_lok::LokView;` 实测编译报 E0432;同一 960×960 twips 区域在 `worker.rs:269` 始终按 64×64 像素渲染,接口无法请求 200% DPI 所需的 128×128 像素。`docs/engineering-risks.md:29` 所称“客户端按页矩形裁剪”“旧代际图块不覆盖新画面”也缺少实现与验收依据。修复方向:完成可消费的 GPUI 视图、目标像素尺寸与共享坐标转换、按代际接收/丢弃图块,并以延迟旧响应及缩放、滚动、DPI 场景验证后更新证据。
|
||
|
||
crates/ely-lok/src/events.rs:122 — [P1] 每次按键或点击均通过 `worker.rs:308、321` 无条件递增代际并设置 `all=true`,覆盖精确失效矩形的作用,违反 LOK-03“只更新必要图块”。实测打开含两段文字的 FODT,读取 512×512 图块与失效批次,再点击 `(150,150)`:点击前后像素完全相同,事件却从 `(generation=0, all=false, rects=[])` 变为 `(1, true, [])`。局部编辑同样只能触发整区重绘;即使后端产生矩形回调,这个无条件全量标志仍然存在。修复方向:恢复可靠的内容区域失效来源,以实际脏区驱动重绘;将纯光标/选择事件与内容变更分开,补充局部编辑仅更新相交图块的测试。
|
||
|
||
crates/ely-lok/src/worker.rs:66 — [P1] `WAIT_EVENTS` 同步阻塞唯一的 IPC 读取线程,等待期间后续编辑、关闭和退出请求均无法被读取;非 macOS 的 `serve` 在第 214 行存在同一路径。客户端 `poll_events` 同时占用 `&mut Worker` 并同步等待回复。实测文档空闲、已知代际为 0 时发送文档允许的 `WAIT_EVENTS(id, 0, 0)`,随后发送 `POST_KEY` 和 `SHUTDOWN`,1.5 秒后三个请求均无回复且进程仍存活;当前后端没有自发图块回调,只有被堵住的编辑请求才能推进代际,因而形成永久等待。修复方向:让事件订阅/等待期间继续处理控制请求,提供可完成的取消与关闭路径,并验证空闲订阅后编辑和退出均可完成。
|
||
|
||
crates/ely-lok/src/worker.rs:269 — [P1] 图块尺寸直接做有符号除法、`usize` 强转与未检查乘法,错误参数进入分配和 FFI。通过与公开 `Doc::paint_tile` 相同的请求格式实测:`(w=0,h=960)` 和 `(w=14,h=960)` 都返回 `OK`、零像素;`(w=-15,h=960)` 在第 270 行触发 `attempt to multiply with overflow`,worker 中止,客户端收到 EOF,进程内全部会话随之丢失。修复方向:在分配及调用 LOK 前校验文档区域和目标像素尺寸,以 checked arithmetic 核对缓冲区及 IPC 上限,非法请求返回明确错误并保持 worker 可用;覆盖零值、负值、极小值及超大值。
|
||
|
||
crates/ely-lok/src/client/tests.rs:210 — [P2] 像素测试把全零缓冲区计为有效深色像素;第 221 行的编辑失效测试只核对代际与标志,未验证更新后的画面。本轮在临时副本中仅将 `Document::paint_rect` 的函数体改为空操作,保留独立的启动绘制自检,重新构建 worker 后,`a_tile_paints_real_pixels` 与 `an_edit_bumps_the_generation_and_invalidates` 仍全部通过;此时实际图块始终为全零。这使当前测试无法守住 C07.2 的基本绘制与更新行为。修复方向:针对包含已知正文的区域验证有效页面/文字像素以及编辑造成的预期画面变化,并要求该空绘制变异触发失败。基线已亲自完成 `cargo build -p ely-lok --bins --locked`、`cargo check -p ely-lok --all-targets --locked`、固定补丁引擎下的全部 10 项测试与注释检查,均通过。
|