diff --git a/design/03-rust-web/process/3-19-rust-web-browser-runtime-module-extraction-v1.md b/design/03-rust-web/process/3-19-rust-web-browser-runtime-module-extraction-v1.md
new file mode 100644
index 00000000..1b7beb63
--- /dev/null
+++ b/design/03-rust-web/process/3-19-rust-web-browser-runtime-module-extraction-v1.md
@@ -0,0 +1,539 @@
+# 3-19 Rust Web 浏览器 Runtime 模块外置化重构 v1
+
+> 创建时间:2026-05-24
+> 状态:`process`
+>
+> 触发背景:
+> - CodeGraph 对 `mnote-web` 前端内嵌 JS 的符号定位效果一般。
+> - 字面搜索命中太多,尤其是 `layout.rs` / `tree.rs` 内的大型 raw string。
+> - 需要判断是更换 graph 工具,还是调整源码组织方式。
+>
+> 参考实现:
+> - `/mnt/Data1T/mnote/reference-code/sidex-main/src/vs/workbench/contrib/files/browser/views/explorerView.ts`
+> - `/mnt/Data1T/mnote/reference-code/sidex-main/src/vs/workbench/contrib/files/browser/views/explorerViewer.ts`
+> - `/mnt/Data1T/mnote/reference-code/sidex-main/src/vs/workbench/contrib/files/browser/explorerService.ts`
+> - `/mnt/Data1T/mnote/reference-code/sidex-main/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts`
+
+## 1. 结论
+
+当前不应优先更换 CodeGraph。主要问题不是 graph 项目选型,而是 `mnote-web` 的大量浏览器 runtime 仍作为 Rust raw string / HTML inline script 存在。对 CodeGraph、IDE、ast-grep、浏览器 stack trace 来说,这些逻辑首先是 Rust 字符串,不是一等 JavaScript / TypeScript 源文件。
+
+短期可以做“内嵌 JS 提取索引”作为定位辅助,但它只解决查询体验,不改变维护边界。长期重构方向应是:保留 Rust SSR / projection / reducer 的语义主导权,把浏览器端 DOM 绑定、host bridge、transport controller、DND、context menu、resource open adapter 等 runtime 分阶段迁出 Rust raw string,变成可索引、可测试、可复用的 `.js` 或 `.ts` 模块。
+
+补充结论(2026-05-24):最近 `bugs/0524.md` 的修复耗时说明,低效并不只发生在 `layout.rs` 的 tree/filetree runtime,也发生在 `web_shell.rs` 的文档页 host adapter 和 `leptos-tiptap-spike/src/lib.rs` 的编辑器 runtime 巨型文件。本设计只覆盖 `03-rust-web` 的浏览器 shell runtime 外置化;`leptos-tiptap` 编辑器命令、附件、history、DOM bridge 需要并行进入 `05-editor-mainline` 设计,不应塞进本设计里一起实施。
+
+## 2. 当前代码基线
+
+### 2.1 主壳内嵌 runtime
+
+- `rust/crates/mnote-web/src/ssr/pages/layout.rs`
+ - `SIDEBAR_TREE_JS` 从文件顶部开始,是当前主壳最大浏览器 runtime。
+ - 职责混合了:侧栏宽度、工作区切换、page tree / file tree 事件、文件树选择、拖拽、资源打开、附件上传、Page AI panel、账号菜单、本地文件夹 watcher。
+ - `TREE_LIVE_CONTROLLER_JS` 负责 tree live bootstrap、WS / SSE / local-folder event transport、snapshot / delta / resync 分发。
+ - `PageLayout` 通过 `
+