Files
ElyOffice/tasks/reviews/C13.5-r1.md
T

3.7 KiB
Raw Blame History

FAIL

apps/ely-tree/src/remotes.rs:110:强制推送计划只固定远端租约,源仍是执行时的分支引用,实际覆盖范围可超出确认内容,违反 PRD §13.3。复现:本地与远端 main 都在 base -> keep-me,读取计划得到 lost=[];确认前从终端把本地 main 重置到 base,再执行原计划。随附 Git 实测推送成功,远端分支退回 base,确认框遗漏了被移除的 keep-me。修复方向:记录源提交,以固定源提交计算覆盖清单;在写队列执行前核对计划所属分支与源提交,变化后重新预览、确认,推送使用已确认的源提交。增加确认期间本地引用变化的测试。

apps/ely-tree/src/places.rs:273:储藏、远程与工作树表单执行时使用当前活动仓库,表单状态缺少发起仓库身份;asks_places.rs:131 的推送远程及上游选择也沿用当前仓库。窗口探针复现:在 A 发起 B 的异步打开,随后立即打开 A 的储藏对话框并填入 for A;B 打开完成后仍显示原对话框,提交后 A 的储藏数为 0,B 为 1,B 的改动被收走。修复方向:表单、选择和工作树路径选择回调携带发起仓库 ID,通过该 ID 入队;所属仓库关闭时使请求失效。增加异步打开其他仓库期间提交这些对话框的测试。

apps/ely-tree/src/running.rs:58:按冒号前缀合并所有 stderr 行,会删掉独立的错误与 hook 说明,违反 PRD §13.3 的完整失败输出要求,也与 agents.md C13.5 的输出声明冲突。复现:真实本地远端的 pre-receive hook 依次输出 POLICY_A required、POLICY_B required 并退出 1;随附 Git 推送的实时输出包含两行,follow 返回的错误仅保留 remote: POLICY_B required,POLICY_A 被删除。修复方向:根据实际 CR 重写与 LF 换行保留记录,独立换行的诊断全部保留;增加真实 hook 连续同前缀报错的断言。

apps/ely-tree/src/network.rs:211:首次推送的远程名称前缺少 --,remotes.rs:109 的强制推送同样如此,合法名称被解析成选项;agents.md C13.5 声明的参数隔离在这两处失效。复现:通过应用支持的 remote add -- -dash <path> 添加远程,新分支推送时选择 -dash;实际参数 push --progress --set-upstream -dash refs/heads/main:refs/heads/main 被随附 Git 拒绝,报 unknown switch 'a'。修复方向:两个推送入口均在远程位置参数前放入 --,覆盖以连字符开头的远程名称。

apps/ely-tree/src/stash.rs:41:过滤全部空字段破坏了合法空 reflog 说明的三字段记录,导致整个储藏列表读失败,违反 TREE-10。复现:修改文件后执行 oid=$(git stash create)、git stash store -m '' "$oid";Git 能正常列出这个储藏,实际 stash::list 返回 InvalidData,其字段只剩提交号和时间。修复方向:按 NUL 分隔的固定三字段记录解析,仅处理记录流末尾的分隔符,保留空说明;增加空说明与普通储藏混合列表的测试。

reference/Ely-GPUI-Components/src/git/refs.rs:230:共用行调用 focus_ring 却没有边框宽度,键盘聚焦行时焦点框无法绘制;同文件第 290 行还把行内动作及其焦点框放在仅悬停时显示的透明层中,违反 UX-03 和 PRD §20.3。钉住的 1c96a3c 组件窗口探针复现:鼠标位于列表外,依次 Tab 到储藏行、应用、弹出、删除,四步可见边框绘制数均为 0,Enter 仍会执行透明动作;分支与标签共用此行布局。修复方向:给行的焦点框提供边框宽度,并在键盘焦点进入动作时显示动作层;增加鼠标离开列表时逐个 Tab 停靠点的绘制与执行断言。