Files
ElyOffice/tasks/reviews/C13.6-r2.md
T

1.9 KiB

FAIL

apps/ely-tree/src/work.rs:233:固定文件路径后仍直接交给 git clean -f -- <files>;Git 会把确认时已变成目录的文件路径递归展开,删除预览外的文件,违反 TREE-13 的危险操作预览及 agents.md C13.6 的“预览后新出现的文件不动”。实际执行函数探针复现:创建 out/early.txt,预览得到 files=["out/early.txt"];确认前把该文件替换为同名目录并创建 out/early.txt/late.txt;执行返回 Ok(()),新增的 late.txt 被删除。随附 Git 的独立命令也复现相同结果。R1 的既有目录内新增文件场景已通过,现有清理测试覆盖该文件变为目录的场景时失败。修复方向:保留并核对预览对象类型,以限制为具体文件的删除流程执行;类型变化时拒绝并重新预览,增加上述回归测试。副本中的类型核对修复使新增文件保留、探针通过。

apps/ely-tree/src/places.rs:91:刷新引用日志时保留旧的列表下标与 OID,places_pane.rs:135 再按旧下标取记录;前插同 OID 的事件会将选中状态和详情静默转移到另一条日志,违反 TREE-13 的 reflog 查看及 agents.md C13.6 的“详情显示所选那一条”。实际窗口与执行探针复现:初始提交后创建并切换到 other,选中 HEAD@{1} 的初始提交记录;从独立 Git 执行 checkout --detach HEAD;刷新后初始提交位于 HEAD@{2},界面仍选中 HEAD@{1},详情标题从 commit (initial): original event 变为 checkout: moving from master to other。原先同 OID 多行的首次选择已修复,现有 tests/recovery.rs:389 的测试遗漏刷新后的事件身份。修复方向:刷新时按所选事件身份重新定位,或在身份失效时清除选择和详情;覆盖同 OID 日志前插的窗口回归。副本中按原事件重新定位后,探针保留原记录并通过。