# Reasonix Batch A / Worker D:3-20 local upload / filetree 下一刀只读审计 Project root:由 runner 传入的独立 worktree。 ## 目标 只读审计 `3-20` 后续切片:local upload 主流程、filetree keyboard / clipboard / DND / context menu DOM。基于已落地的 `filetree-runtime.js`、`filetree-selection-runtime.js`、`filetree-context-menu-runtime.js` 和 `local-upload-runtime.js`,给出下一刀最小实现建议。 ## 只读范围 可以读取: - `rust/crates/mnote-web/src/ssr/pages/layout.rs` - `rust/crates/mnote-web/browser/filetree-runtime.js` - `rust/crates/mnote-web/browser/filetree-selection-runtime.js` - `rust/crates/mnote-web/browser/filetree-context-menu-runtime.js` - `rust/crates/mnote-web/browser/local-upload-runtime.js` - `scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js` - `scripts/task487-local-folder-tree-live-consumer-smoke.js` ## 禁止事项 - 严格只读,禁止修改任何源码、文档、脚本、生成产物或 git 状态。 - 不改变资源归属语义、tree command 语义或 upload API 合同。 - 不把 editor internal selection / history 迁入 `mnote-web` browser runtime。 ## 审计问题 请回答: 1. local upload 剩余函数中,哪些可迁到 `local-upload-runtime.js`,哪些仍应留在 inline 直到 API / editor 插入边界更清楚? 2. filetree keyboard / clipboard / DND / context menu DOM 中,下一刀应优先迁纯 helper 还是 DOM listener? 3. 哪个实现切片风险最低,允许文件范围是什么? 4. 对应最小测试和浏览器 smoke 是什么? 5. 哪些现有 runtime helper 可复用,避免新增第二套 filetree selection 真相? ## 输出要求 最终 handoff 必须包含: - local upload 函数归属表。 - filetree 下一刀建议。 - 明确禁止迁移项。 - 推荐 Worker 实现任务书草案和验收命令。