# Reasonix Batch A3 Worker B:local folder Markdown trash lifecycle smoke Project root: `/mnt/Data1T/mnote` ## 目标 补齐 `4-34` 中 local folder Markdown 自身 trash lifecycle 独立 smoke:Markdown 页面通过 `/api/tree/commands` 完成 archive / restore / purge,文件系统与 trash index 均一致。 ## Ownership 允许修改: - 新增 `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` 禁止: - 不修改 Rust 源码。 - 不修改 `4-46` 或移动任何 design 文件。 - 不提交 git。 - 不把非 md 资源生命周期代替 Markdown 页面生命周期。 ## 要求 1. 新增 API smoke,可参考 `task437-local-folder-asset-trash-lifecycle-smoke.js`。 2. 构造临时 local folder root 和 `.mnote/workspace.json`。 3. 至少覆盖 loose Markdown 页面: - `delete` 后 canonical command 应是页面或资源 lifecycle 中当前实现返回的真实值。 - 源 `.md` 消失,`.mnote/trash` 中出现对应文件,`trash-index.json` 记录 `local-md:*`。 - `restore` 后 `.md` 回原路径,trash 文件消失,index 清理。 - 再次 `delete` 后 `purge`,源路径与 trash 路径均不存在,index 清理。 4. 如 bundled Markdown 页面当前实现也容易覆盖,可加一个 bundled case;否则在结果中说明只覆盖 loose Markdown,bundled 由 Rust 单测覆盖或待后续。 5. 结果写入 `tmp/task475-local-folder-markdown-trash-lifecycle-smoke/result.json`。 6. 更新 `4-34` 对 local folder Markdown trash lifecycle 覆盖状态,但不要移动文件。 ## 验收命令 ```bash node --check scripts/task475-local-folder-markdown-trash-lifecycle-smoke.js node scripts/task475-local-folder-markdown-trash-lifecycle-smoke.js ``` ## 最终输出 写入 `.codex/reasonix-tasks/results/batch-a3-worker-b-markdown-lifecycle.md`,包含: - 修改文件 - smoke 覆盖内容 - 验证命令和结果 - 未完成项 / 风险