# 4-42 FileTree Open Target RootUri Contract Checklist v1 > 状态:done > > 归档说明(2026-05-21):FileTree open target `rootUri` 合同已完成,缺失 `rootUri` 的旧 payload 兼容仍保留。 > > 日期:2026-05-20 > > Owner:FileTree runtime open target / `filetree_runtime.rs` ## 1. 目标 补齐 P0-4 的剩余合同问题:`FileTreeOpenTarget::LocalFile` / `Directory` 已存在,但 `rootUri` 仍为空字符串占位。需要让 runtime 环境携带本地 root,并让 open target 输出真实 `rootUri`。 ## 2. 允许修改范围 - `rust/crates/mnote-web/src/tree_shell/filetree_runtime.rs` - `rust/crates/mnote-web/src/tree_shell/runtime_api.rs` - `rust/crates/mnote-web/src/routes/tree.rs` - 相关 Rust 单测 ## 3. 禁止事项 - 不改变 File Tree row 的长期资源真相。 - 不改前端打开行为。 - 不删除旧 `Asset` JSON 兼容字段。 ## 4. Checklist - [x] `FileTreeRuntimeEnvironment` 携带可选 `rootUri`。 - [x] `resolve_open_target` 对 `LocalFile` / `Directory` 使用环境中的 `rootUri`。 - [x] tree shell SSR app state / runtime reduce 请求填入 local folder `rootUri`。 - [x] runtime API 反序列化对缺失 `rootUri` 保持兼容。 - [x] Rust 单测覆盖 local file / directory open target 输出真实 `rootUri`。 ## 5. 验收 - [x] `cargo test -p mnote-web filetree_runtime -- --test-threads=1` - [x] `cargo test -p mnote-web runtime_api -- --test-threads=1` - [x] `cargo test -p mnote-web tree_shell_filetree_mode_embeds_asset_state -- --test-threads=1` ## 5.1 本轮执行记录 - 已合入:`FileTreeRuntimeEnvironment.rootUri`,并在 filetree runtime open target 中用于 local file / directory。 - 已补充:tree shell 前端 runtime 环境构造会在 local folder 模式传入 `rootUri`。 - 已验证:缺失 `rootUri` 的旧 runtime API JSON 仍可反序列化。 ## 6. 非目标 - 不处理 resource lifecycle。 - 不处理 tab URL 同步。