docs: add runtime followup checklists
This commit is contained in:
@@ -0,0 +1,42 @@
|
|||||||
|
# Reasonix Batch A / Worker B:5-29 overlay / block menu 只读审计
|
||||||
|
|
||||||
|
Project root:由 runner 传入的独立 worktree。
|
||||||
|
|
||||||
|
## 目标
|
||||||
|
|
||||||
|
只读审计 `rust/spikes/leptos-tiptap-spike/src/lib.rs` 中 overlay / block menu 相关逻辑,为 `design/05-editor-mainline/process/5-29-editor-runtime-followup-checklist-v1.md` 提供下一刀最小实现建议。
|
||||||
|
|
||||||
|
## 只读范围
|
||||||
|
|
||||||
|
可以读取:
|
||||||
|
|
||||||
|
- `rust/spikes/leptos-tiptap-spike/src/lib.rs`
|
||||||
|
- `rust/spikes/leptos-tiptap-spike/src/editor_runtime/*`
|
||||||
|
- `scripts/task488-local-attachment-link-delete-undo-smoke.js`
|
||||||
|
- `scripts/task489-block-menu-delete-undo-smoke.js`
|
||||||
|
- `scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js`
|
||||||
|
|
||||||
|
## 禁止事项
|
||||||
|
|
||||||
|
- 严格只读,禁止修改任何源码、文档、脚本、生成产物或 git 状态。
|
||||||
|
- 不运行会写入源码的格式化、构建生成命令。
|
||||||
|
- 不把 shell resource open / local upload 归入 editor runtime。
|
||||||
|
|
||||||
|
## 审计问题
|
||||||
|
|
||||||
|
请回答:
|
||||||
|
|
||||||
|
1. 哪些 overlay / block menu 函数依赖 `ReadSignal` / `WriteSignal` / `NodeRef` / `Window` 等状态,暂不适合第一刀迁移?
|
||||||
|
2. 是否存在可先迁出的纯 helper?如果有,列出函数名、当前位置、建议目标模块。
|
||||||
|
3. 是否应先引入小型 context struct,还是继续保持函数参数直传?
|
||||||
|
4. 哪些 smoke 能覆盖迁移后风险?
|
||||||
|
5. `apply_html_update` 迁出是否仍被 overlay / bridge event 耦合阻塞?
|
||||||
|
|
||||||
|
## 输出要求
|
||||||
|
|
||||||
|
最终 handoff 必须包含:
|
||||||
|
|
||||||
|
- 函数归属表。
|
||||||
|
- 下一刀建议,按 P0/P1/P2 排序。
|
||||||
|
- 明确不可迁项和原因。
|
||||||
|
- 建议的验收命令 / smoke。
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
# 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 实现任务书草案和验收命令。
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
# 3-20 Browser Runtime 后续收口 Checklist v1
|
||||||
|
|
||||||
|
> 创建时间:2026-05-25
|
||||||
|
> 状态:`process`
|
||||||
|
> 来源:承接 `design/03-rust-web/done/3-19-rust-web-browser-runtime-module-extraction-v1.md` 的后续未专项完成项。
|
||||||
|
|
||||||
|
## 1. 目标
|
||||||
|
|
||||||
|
在 `3-19` 已归档的基础上,继续把仍留在 Rust inline / 主壳大 runtime 中的浏览器行为切成可审计模块。Codex 维护本文件作为事实源,Reasonix 只承接短批次审计、窄范围实现或浏览器 smoke;每批最多 2 个 worker。
|
||||||
|
|
||||||
|
## 2. 本轮边界
|
||||||
|
|
||||||
|
本轮优先处理:
|
||||||
|
|
||||||
|
- 主壳 filetree keyboard / clipboard / DND / context menu DOM 后续切片。
|
||||||
|
- document pane host adapter / document session / conflict panel runtime 只读审计。
|
||||||
|
- 本地上传主流程剩余边界审计,包括 `uploadFileToMediaAsset`、`uploadFilesWithResolvedTarget`、`insertUploadedAssetIntoEditor`。
|
||||||
|
- WS / SSE tree live 浏览器回归 smoke。
|
||||||
|
|
||||||
|
本轮不处理:
|
||||||
|
|
||||||
|
- Tiptap 编辑器内部命令、history、selection overlay;这些归 `5-29`。
|
||||||
|
- Rust kernel tree command 语义重写。
|
||||||
|
- Page AI panel 外置化;需要另起 `07-ai` 设计。
|
||||||
|
|
||||||
|
## 3. Batch A 候选任务
|
||||||
|
|
||||||
|
- [ ] Worker A:只读审计 document pane host adapter。
|
||||||
|
- 目标:列出 `web_shell.rs` 中 document pane host / session / conflict panel 可迁模块、风险和 smoke。
|
||||||
|
- 输出:候选模块表、禁止迁入 editor runtime 的边界、下一刀建议。
|
||||||
|
- [ ] Worker B:只读审计 local upload 主流程。
|
||||||
|
- 目标:复核上传主流程剩余函数是否可从 `SIDEBAR_TREE_JS` 拆入 `local-upload-runtime.js`,不得改变资源归属语义。
|
||||||
|
- 输出:函数归属表、不可迁项、必须保留的 smoke。
|
||||||
|
- [ ] Worker C:只读审计 filetree keyboard / clipboard / DND。
|
||||||
|
- 目标:基于已落地 `filetree-runtime.js` / `filetree-selection-runtime.js` / `filetree-context-menu-runtime.js`,给出下一刀最小实现范围。
|
||||||
|
- 输出:建议只迁纯 helper 还是 DOM listener,列出冲突文件。
|
||||||
|
- [ ] Worker D:浏览器 smoke 审计 WS / SSE tree live。
|
||||||
|
- 目标:只读验证主壳 tree live 外置 runtime 在浏览器中仍加载,记录 WS 正常路径和 SSE fallback 的可测性。
|
||||||
|
- 输出:截图、console/network、result.json;不修改源码。
|
||||||
|
|
||||||
|
## 4. 验收命令
|
||||||
|
|
||||||
|
按具体切片选择:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo fmt --manifest-path rust/Cargo.toml --all --check
|
||||||
|
cargo check --manifest-path rust/Cargo.toml -p mnote-web
|
||||||
|
cargo test --manifest-path rust/Cargo.toml -p mnote-web filetree
|
||||||
|
cargo test --manifest-path rust/Cargo.toml -p mnote-web runtime
|
||||||
|
node scripts/task487-local-folder-tree-live-consumer-smoke.js
|
||||||
|
node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js
|
||||||
|
```
|
||||||
|
|
||||||
|
UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据。
|
||||||
|
|
||||||
|
## 5. 采纳规则
|
||||||
|
|
||||||
|
- Reasonix 结果必须先查 Hindsight `reasonix` recall,再读 `process-handoff.md/json`、`result.json`、diff 和验证证据。
|
||||||
|
- 只采纳限定文件范围内的最小 diff;越界重构、回滚用户改动、修改 git 状态的一律拒绝。
|
||||||
|
- browser smoke worker 必须 `modified_files=[]`。
|
||||||
|
- 本文件只记录真实完成项;未验证项保持未勾选。
|
||||||
|
|
||||||
|
## 6. 本轮执行记录
|
||||||
|
|
||||||
|
- 2026-05-25:Codex 创建本续跑事实源。
|
||||||
|
- 2026-05-25:修正执行约束:本文件遵循当前 goal 的“每批最多 2 个 worker”,不再沿用早期草稿中的 4 worker 并行方案。
|
||||||
|
- 2026-05-25:下一批只派发 Worker B(local upload / filetree 下一刀只读审计);Worker A/C/D 暂缓。
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# 5-29 Editor Runtime 后续收口 Checklist v1
|
||||||
|
|
||||||
|
> 创建时间:2026-05-25
|
||||||
|
> 状态:`process`
|
||||||
|
> 来源:承接 `design/05-editor-mainline/done/5-28-leptos-tiptap-editor-runtime-module-extraction-v1.md` 的后续未专项完成项。
|
||||||
|
|
||||||
|
## 1. 目标
|
||||||
|
|
||||||
|
在 `5-28` 已完成附件链接、history-safe delete、command sync、persistence、attachment upload intent 首批拆分后,继续把 editor runtime 的 selection / overlay / block menu / mindmap node view 切成可索引模块。Codex 维护本文件作为事实源,Reasonix 只做短批次审计、窄范围实现或浏览器 smoke。
|
||||||
|
|
||||||
|
## 2. 本轮边界
|
||||||
|
|
||||||
|
本轮优先处理:
|
||||||
|
|
||||||
|
- `editor_runtime/dom_selection.rs` 第一刀。
|
||||||
|
- overlay / block menu 后续切片的只读审计。
|
||||||
|
- 仍使用 HTML 整文替换的用户编辑路径风险复核,例如块手柄拖拽重排和复制副本。
|
||||||
|
- `task488` / `task489` / `task479` 作为回归基线。
|
||||||
|
|
||||||
|
本轮不处理:
|
||||||
|
|
||||||
|
- shell host resource open / local upload 落盘语义;这些归 `3-20`。
|
||||||
|
- Page AI 流式 apply / review session。
|
||||||
|
- mindmap 事实源重构;本轮最多审计 node view 拆分边界。
|
||||||
|
|
||||||
|
## 3. Batch A 候选任务
|
||||||
|
|
||||||
|
- [x] Worker A:实现 `dom_selection.rs` 第一刀。
|
||||||
|
- 允许修改:`rust/spikes/leptos-tiptap-spike/src/lib.rs`、`rust/spikes/leptos-tiptap-spike/src/editor_runtime/mod.rs`、新增 `rust/spikes/leptos-tiptap-spike/src/editor_runtime/dom_selection.rs`。
|
||||||
|
- 目标函数:`active_editor_text_selection`、`selection_summary`、`has_active_text_selection`、`selection_has_rich_marks`,以及必要的 selection payload helper。
|
||||||
|
- 禁止:迁出 block menu DOM、overlay state、host bridge、resource open。
|
||||||
|
- [ ] Worker B:只读审计 overlay / block menu 拆分。
|
||||||
|
- 目标:列出强依赖 Leptos signal 的函数,判断是否先抽 context struct 或先迁纯 helper。
|
||||||
|
- 输出:下一刀最小实现范围和 smoke 建议。
|
||||||
|
- [ ] Worker C:只读审计剩余 HTML 整文替换用户编辑路径。
|
||||||
|
- 目标:查 `set_content`、`apply_html_update`、`apply_document_update` 的用户触发链路,列出可迁 Tiptap command/transaction 的候选。
|
||||||
|
- 输出:风险表和建议 RED smoke。
|
||||||
|
- [ ] Worker D:浏览器 smoke 审计 editor runtime 基线。
|
||||||
|
- 目标:只读运行或复核 `task488`、`task489`、`task479`,截图/结果证明附件删除和块菜单删除 undo/redo 仍可用。
|
||||||
|
- 输出:result.json、截图、console/network;不修改源码。
|
||||||
|
|
||||||
|
## 4. 验收命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo fmt --manifest-path rust/Cargo.toml --all --check
|
||||||
|
cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml
|
||||||
|
cargo build --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml --target wasm32-unknown-unknown --release
|
||||||
|
wasm-bindgen rust/spikes/leptos-tiptap-spike/target/wasm32-unknown-unknown/release/mnote_leptos_tiptap_spike.wasm --target web --out-dir rust/spikes/leptos-tiptap-spike/generated/island --out-name mnote-leptos-tiptap-spike-island
|
||||||
|
node scripts/task488-local-attachment-link-delete-undo-smoke.js
|
||||||
|
node scripts/task489-block-menu-delete-undo-smoke.js
|
||||||
|
node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js
|
||||||
|
```
|
||||||
|
|
||||||
|
UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据。
|
||||||
|
|
||||||
|
## 5. 采纳规则
|
||||||
|
|
||||||
|
- Reasonix 结果必须先查 Hindsight `reasonix` recall,再读 `process-handoff.md/json`、`result.json`、diff 和验证证据。
|
||||||
|
- 实现 worker 只能改允许范围;只读和 smoke worker 必须没有源码 diff。
|
||||||
|
- `lib.rs` 不能新增附件/history/DOM bridge 大块逻辑。
|
||||||
|
- 本文件只记录真实完成项;未验证项保持未勾选。
|
||||||
|
|
||||||
|
## 6. 本轮执行记录
|
||||||
|
|
||||||
|
- 2026-05-25:Codex 创建本续跑事实源。
|
||||||
|
- 2026-05-25:Worker A 未继续派发;Codex 主控已在主工作区完成 `dom_selection.rs` 第一刀并提交 `c7ab4e56 refactor: extract editor dom selection runtime`。
|
||||||
|
- 已迁函数:`node_is_within_root`、`active_editor_text_selection`、`has_active_text_selection`、`selection_summary`、`selection_has_rich_marks`。
|
||||||
|
- 未迁:`SelectionPayload`、`selection_payload`、`send_selection_state*`、`selection_event_payload`,原因是仍依赖 bridge event、`HoveredBlockState` 和 runtime block id 边界。
|
||||||
|
- 已验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check`、`cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen`、`task488`、`task489`、CodeGraph pending 0。
|
||||||
|
- 2026-05-25:下一批只派发 Worker B(overlay / block menu 只读审计);Worker C/D 暂缓,避免超过每批最多 2 个 worker 的 goal 约束。
|
||||||
Reference in New Issue
Block a user