# 4-45 FileTree / Open Editors Lifecycle Link Checklist v1 > 状态:process > > 日期:2026-05-21 > > Owner:filetree action smoke / resource lifecycle observability ## 1. 目标 参考 Sidex Explorer + Open Editors 联动,补 MNote filetree action 与 open editor state 的可观测测试。当前优先修 smoke 缺口和文档状态,不直接改核心业务。 ## 2. 允许修改范围 - `scripts/task430-vscode-explorer-stage7-smoke.js` - `scripts/task471-local-folder-bulk-resource-trash-smoke.js` - `design/04-tree-domain/process/4-44-filetree-action-layer-paste-drop-delete-v1.md` - 如发现 checklist 已全部完成,可建议移动到 `done/`,但不要直接移动未验证文件。 ## 3. 禁止事项 - 不修改 `layout.rs` / `web_shell.rs` / `local_folder_source.rs`。 - 不改变 delete 默认到垃圾箱的语义。 - 不把环境准备失败伪装成通过。 ## 4. Checklist - [x] 跑或修复 `task430` / `task471` 的可复现前置条件。 - [x] 明确哪些 smoke 已过、哪些因环境阻塞。 - [x] 补充 open editor / filetree active row / lifecycle 状态断言建议。 - [x] 更新 4-44 checklist 执行记录。 ## 5. 验收 - `node --check scripts/task430-vscode-explorer-stage7-smoke.js` - `node --check scripts/task471-local-folder-bulk-resource-trash-smoke.js` - `node scripts/task430-vscode-explorer-stage7-smoke.js` - `node scripts/task471-local-folder-bulk-resource-trash-smoke.js` ## 6. 非目标 - 不实现完整 undo stack。 - 不改 cloud storage drop executor。 ## 7. 本轮执行记录 - 2026-05-21:Reasonix Worker D 识别到 `task430` 的前置问题:新注册用户在 `workspaces:fetchWorkspaceSummaries` 前可能还没有 workspace,需要先通过 `/api/tree/commands` create action 触发 workspace bootstrap。 - 2026-05-21:Worker D 还建议将 `task471` 的验证记录同步到 `4-44`,并补 open editor / lifecycle 状态断言。 - 2026-05-21:Worker D 进程停留在计划提交阶段,没有生成 `final.md`,也没有实际修改 smoke 或 checklist;本轮不把 4-45 checklist 标记为完成。 - **2026-05-22:Worker A 实际修改:** - 给 `task430` 的 workspace bootstrap 添加 fallback:当 `workspaces:fetchWorkspaceSummaries` 无返回时,通过 `/api/tree/commands` create(不带 workspaceId)触发 Rust 端 `workspaces:ensureDefaultWorkspace` 自举 workspace。 - 添加 `result.phases` 阶段追踪(auth-signin → auth-navigate → workspace-bootstrap),让失败可区分环境阻塞 vs 业务回归。 - 添加 `filetree-active-row` 断言:检查当前打开页对应的 FileTree row 是否有 `[data-active="true"]`。 - 添加 `filetree-selected-row` 记录:记录选中行 ID(不做强制断言,因选中语义随点击变化)。 - 添加 `open-editors-section` 记录:确认 MNote 当前无 Open Editors DOM section(VS Code 对比的已知缺口),只记录不报错。 - 所有新增断言均使用 `runOptional` 包装,环境缺口标记为 skipped 而不阻塞整体结果。 - 2026-05-21:Codex 独立复跑 `node --check scripts/task430-vscode-explorer-stage7-smoke.js` / `node scripts/task430-vscode-explorer-stage7-smoke.js`,结果 `ok:true`。`result.phases` 中 `auth-signin`、`auth-navigate`、`workspace-bootstrap` 均通过;`f2-inline-rename-doc`、`f2-inline-rename-asset`、`cut-paste-move`、`dnd-preflight-guard` 均通过。 - 2026-05-21:Reasonix Browser Worker 复跑 task430,输出目录 `tmp/reasonix-batch-a-browser-task430-2026-05-21/`,结论 `PASS_WITH_KNOWN_GAPS`。已知缺口保留为:FileTree row 未同步 `data-active="true"`、Open Editors section 未实现、右键菜单缺 `Paste Into`、DnD readonly/重名冲突仍需后续端到端矩阵。 - 2026-05-21:Codex 独立复跑 `node --check scripts/task471-local-folder-bulk-resource-trash-smoke.js` / `node scripts/task471-local-folder-bulk-resource-trash-smoke.js`,结果 `ok:true`。Reasonix Browser Worker 输出目录 `tmp/reasonix-batch-a-browser-task471-2026-05-21/`,确认两个 local folder 资源行可 Ctrl 多选、确认文案含 `2 个附件`、DOM 状态写入 `bulk-delete` / `archived`,`.mnote/trash-index.json` 包含两项。