# 4-47 [process] Batch A3 Local Folder Trash Final Smoke Checklist v1 > 创建时间:2026-05-21 > > 上位入口:`design/01-tree-first-graph-kernel/process/1-8-mvp-post-process-execution-order-v1.md` > > 阶段:Batch A / P0 剩余 local folder trash smoke 收口 > > 当前状态:`DONE` ## 1. 目标 关闭 `4-34` 和 `4-46` 中 Batch A 剩余的 local folder 垃圾箱验证缺口: - local folder empty-trash UI smoke。 - local folder Markdown 页面自身的 archive / restore / purge smoke。 - 根据真实 smoke 结果判断 `4-34` / `4-46` 是否可归档到 `done/`。 本阶段不改 delete 默认进入垃圾箱的语义,不把 reload 型刷新伪装成 no-refresh,不扩新产品面。 ## 2. 当前剩余缺口 - `4-34` 中 local folder 非 md 资源 empty-trash 已由 `task474` 覆盖。 - `4-34` 中 local folder Markdown 自身 trash lifecycle 已由 `task475` 覆盖。 - `4-46` Batch A 执行总 checklist 已满足归档条件。 ## 3. Reasonix Worker 拆分 ### Worker A:local folder empty-trash UI smoke Owner: - 可新增 `scripts/task474-local-folder-empty-trash-ui-smoke.js` - `design/04-tree-domain/process/4-34-filetree-trash-dual-browser-no-refresh-v1.md` - `.codex/reasonix-tasks/results/batch-a3-worker-a-empty-trash.md` 目标: - 构造 local folder 临时 root,同时放入 markdown 页面和非 md 资源。 - 通过 tree command 或 UI 将它们移动到 `.mnote/trash`。 - 打开 `/trash?sourceKind=local_folder&rootUri=...`,分别点击“清空页面垃圾箱”和“清空资源垃圾箱”。 - 断言对应行消失、文件系统 trash 文件消失、`trash-index.json` 对应 entry 清理。 - 记录点击清空期间无非预期 browser navigation。 验收: ```bash node --check scripts/task474-local-folder-empty-trash-ui-smoke.js MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1: PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task474-local-folder-empty-trash-ui-smoke.js ``` ### Worker B:local folder Markdown trash lifecycle smoke Owner: - 可新增 `scripts/task475-local-folder-markdown-trash-lifecycle-smoke.js` - `design/04-tree-domain/process/4-34-filetree-trash-dual-browser-no-refresh-v1.md` - `.codex/reasonix-tasks/results/batch-a3-worker-b-markdown-lifecycle.md` 目标: - 构造 loose Markdown 和/或 bundled Markdown 页面。 - 通过 `/api/tree/commands` 验证 Markdown 页面的 `delete` / `restore` / `purge`。 - 断言 canonical command、源路径、trash 路径、`trash-index.json` 和恢复后的 documentId 与文件系统一致。 - 这是生命周期 smoke,不要求 UI 截图;浏览器可见性由 Worker A 和后续 Browser Worker 覆盖。 验收: ```bash node --check scripts/task475-local-folder-markdown-trash-lifecycle-smoke.js MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1: node scripts/task475-local-folder-markdown-trash-lifecycle-smoke.js ``` ### Worker C:文档归档审查 Owner: - `design/04-tree-domain/process/4-34-filetree-trash-dual-browser-no-refresh-v1.md` - `design/04-tree-domain/process/4-46-batch-a-filetree-action-trash-smoke-execution-checklist-v1.md` - 如条件满足,可移动到 `design/04-tree-domain/done/` - `.codex/reasonix-tasks/results/batch-a3-worker-c-doc-archive.md` 目标: - 在 Worker A/B smoke 结果可复核后,判断 `4-34` 是否满足归档条件。 - 判断 `4-46` 是否已经完成 Batch A P0,是否可以归档。 - 若仍有缺口,必须写明 blocker 与下一步,不得强行移动。 验收: ```bash git diff --name-status ``` ## 4. Codex 复核项 - [x] 读取 Worker A/B 输出;Worker C 由 Codex 本地完成归档审查。 - [x] 独立审查 diff,确认无越权修改。 - [x] 运行新增脚本 `node --check`。 - [x] 在最新 mnote-web 临时端口 `3014` 上实跑新增 smoke。 - [x] 完成后拆 Browser Worker 复测关键 UI smoke 并核验截图。 - [ ] `git diff --check`、`codegraph sync .` 后提交。 ## 5. 完成条件 - `task474` 或等价 smoke 覆盖 local folder empty-trash UI。 - `task475` 或等价 smoke 覆盖 local folder Markdown archive / restore / purge。 - `4-34` / `4-46` 状态与真实证据一致。 - 浏览器 worker 输出截图和 `result.json` 已由 Codex 复核。 - 本阶段完成后由 Codex 提交 git。 ## 6. 执行结果 - `task474-local-folder-empty-trash-ui-smoke.js` 新增并通过:local folder 页面垃圾箱与资源垃圾箱清空 UI、confirm、无导航、trash-index 清理、文件删除。 - `task475-local-folder-markdown-trash-lifecycle-smoke.js` 新增并通过:loose Markdown 页面 delete / restore / purge 生命周期与文件系统一致。 - Codex 复核命令: - `node --check scripts/task474-local-folder-empty-trash-ui-smoke.js` - `node --check scripts/task475-local-folder-markdown-trash-lifecycle-smoke.js` - `MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3014 PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/google-chrome-stable node scripts/task474-local-folder-empty-trash-ui-smoke.js` - `MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3014 node scripts/task475-local-folder-markdown-trash-lifecycle-smoke.js` - Reasonix Browser Worker 复测输出:`tmp/reasonix-batch-a3-browser-task474-empty-trash-2026-05-21/`,核心截图 `trash-workbench-empty.png` 已由 Codex 查看。