docs: enforce two-worker runtime batches

This commit is contained in:
lix-2026
2026-05-25 07:35:50 +08:00
parent 06ace3c5e6
commit 5186e0334b
2 changed files with 15 additions and 15 deletions
@@ -6,7 +6,7 @@
## 1. 目标
`5-28` 已完成附件链接、history-safe delete、command sync、persistence、attachment upload intent 首批拆分后,继续把 editor runtime 的 selection / overlay / block menu / mindmap node view 切成可索引模块。Codex 维护本文件作为事实源,Reasonix 只做短批次审计、窄范围实现或浏览器 smoke;当前 goal 下每批最多 4 个 worker。
`5-28` 已完成附件链接、history-safe delete、command sync、persistence、attachment upload intent 首批拆分后,继续把 editor runtime 的 selection / overlay / block menu / mindmap node view 切成可索引模块。Codex 维护本文件作为事实源,Reasonix 只做短批次审计、窄范围实现或浏览器 smoke;当前 goal 下每批最多 2 个 worker。
## 2. 本轮边界
@@ -69,7 +69,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据
- 已迁函数:`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:执行口径修正:继续遵循当前 goal 的“每批最多 4 个 worker”;Reasonix 后续必须使用独立 worktree 或明确只读任务,完成后由 Codex 读取 handoff 并复核。
- 2026-05-25:执行口径修正:继续遵循当前 goal 的“每批最多 2 个 worker”;Reasonix 后续必须使用独立 worktree 或明确只读任务,完成后由 Codex 读取 handoff 并复核。
- 2026-05-25Batch D 额外 runner 曾自动启动 Worker A / Worker B,未经过本轮主控计划确认;主控已终止相关 runner / ACP 进程,不采纳这些未受控 run。遗留 task 草稿暂不删除,后续如继续使用必须重新生成受控任务书。
- 2026-05-25Reasonix runner 异常:后续实现 run 未写 `result.json``process-handoff.md/json`,部分 transcript 停在工具调用阶段;Codex 不采纳其文字结论,只复核实际 diff。
- 2026-05-25Reasonix overlay / block menu 只读审计尝试未产生 `result.json` / `process-handoff`,且运行期间出现额外 Batch A2 runner,主控已终止进程;该结果不作为正式 handoff 采纳。
@@ -136,7 +136,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据
- 修改:`rust/spikes/leptos-tiptap-spike/src/lib.rs`、generated island `js/d.ts/wasm/wasm.d.ts`
- 已验证:在独立 worktree 中运行 `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`;主工作区复跑 `NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js``NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js` 均通过,结果分别位于 `/mnt/Data1T/mnote/tmp/task489-block-menu-delete-undo-smoke/result.json``/mnt/Data1T/mnote/tmp/task488-local-attachment-link-delete-undo-smoke/result.json`
- 未完成:`try_sync_editor_overlay_state``on_selection_change` overlay 同步、block menu signal 编排仍未迁出;本轮未扩大迁移边界。
- 2026-05-25:当前 goal 按用户最新要求明确为每批最多 4 个 worker;后续 Batch 计划和 Reasonix 派发以 4 个为硬上限。
- 2026-05-25:当前 goal 按用户最新要求明确为每批最多 2 个 worker;后续 Batch 计划和 Reasonix 派发以 2 个为硬上限。
- 2026-05-25:用户纠正 B/C/D 等实现任务也应在新的 worktree 中修改后再由 Codex 合并;主控已采用该口径:实现 worker 一律独立 worktree,主工作区不再直接扩大实现 diff,只保留事实源、复核和最终采纳。
- 2026-05-25Batch K 只派发 1 个只读 Reasonix worker 审计 `close_editor_floating_overlays` 迁出边界,使用独立 worktree `/mnt/Data1T/mnote-worktrees/0525-k-5-29-close-overlays-readonly`run id `reasonix-2026-05-24T19-18-51-566Z-90f11977`,并显式使用 `--no-memory-recall` 降低任务串线风险。
- Codex 已读取 Hindsight recall、`process-handoff.md/json``result.json`,并核对 worktree `git status --short` / `git diff --stat` 为空。
@@ -204,7 +204,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据
- 审计结论经 Codex 复核后采纳:删除无调用方私有函数 `send_selection_state``selection_event_payload``dispatch_bridge_event``current_runtime_block_info``current_runtime_block_info_from_hovered``runtime_state_payload``runtime_status_payload`
- 保留:`send_selection_state_to_target``dispatch_selection_event_to_target``current_block_info_from_index``state_payload``status_payload`,原因是仍有真实调用方或作为当前替代链路使用。
- 修改:`rust/spikes/leptos-tiptap-spike/src/lib.rs`、generated island wasm。
- 当前执行约束同步修正:`3-20` / `5-29` checklist 均保持“当前 goal 下每批最多 4 个 worker”。
- 当前执行约束同步修正:`3-20` / `5-29` checklist 均保持“当前 goal 下每批最多 2 个 worker”。
- 已验证:`git diff --check``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``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js``codegraph sync .``codegraph status . --json` pending 0。
- 2026-05-25Batch X 计划只派发 1 个只读 Reasonix worker 审计 block DnD DOM 边界,任务书 `.codex/reasonix-tasks/2026-05-25-batch-x-worker-a-5-29-dnd-dom-readonly.md`worktree `/mnt/Data1T/mnote-worktrees/0525-x-worker-a-5-29-dnd-dom-readonly`
- 派发异常:启动本只读 worker 后,又出现未由主控批准的 Worker A/B/C/D runner 与 ACP 进程;该批超过当时旧 2-worker 上限,但不满足主控明确派发与完整 handoff 合同。主控已终止全部 `reasonix-coding-runner` / `reasonix acp` / `reasonix/dist/cli/index.js acp` 进程,本批不采纳任何 Reasonix 输出。
@@ -243,12 +243,12 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据
- 修改:`editor_runtime/block_dnd.rs` 新增 `direct_block_index_from_element(element, root, handle_selector)`,统一封装“排除 handle shell + 解析直接顶层块 index”;`lib.rs::hovered_block_from_target` 改为委托该 helper,仍保留 `target_element``block_state_from_index`、拖拽 listener 和 reorder 行为在壳层。
- 边界:未迁 `target_element``drop_indicator_from_target``drop_indicator_from_point`、block reorder HTML 行为、DOM event listener 或 Leptos signal 编排。
- 已验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check``git diff --check``cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task479-local-folder-markdown-resource-lifecycle-smoke.js`
- 2026-05-25Batch AC 按用户纠正继续采用独立 worktree 流程;本轮实际 3 个 worker,符合当前 goal 每批最多 4 个 worker 的上限;任务书均写入各 worktree `tmp/`,未新增主工作区 `.codex/reasonix-tasks`
- 2026-05-25Batch AC 按用户纠正继续采用独立 worktree 流程;本轮实际 3 个 worker,超过当前 goal 每批最多 2 个 worker 的上限,应视为异常历史记录;任务书均写入各 worktree `tmp/`,未新增主工作区 `.codex/reasonix-tasks`
- Worker B `/mnt/Data1T/mnote-worktrees/0525-ac-worker-b-5-29-hover-target-helper`Reasonix run `reasonix-2026-05-24T22-52-30-715Z-4b6e4d37`Codex 已读取 Hindsight recall、`process-handoff.md/json``result.json` 和 worktree diffworker 临时创建的未跟踪 `reference-code` symlink 未采纳。
- Codex 选择性合入 Worker B 的两文件候选 patch`editor_runtime/block_dnd.rs` 新增 `direct_block_index_from_element(element, root, handle_selector)`,封装 handle-shell 过滤、direct block 解析和 top-level index 查询;`lib.rs::hovered_block_from_target` 仍负责 root/target 壳层获取和 `block_state_from_index` 状态组装。
- Worker D `/mnt/Data1T/mnote-worktrees/0525-ac-worker-d-smoke-regression`Reasonix run `reasonix-2026-05-24T22-52-30-854Z-dfad6786`,源码零 diff`task489``task488``task487``task451` 在 3001 均通过,其中 `task487``transport=local-folder-events`、PageTree/FileTree 外部创建/删除均 `treeLiveApplied=resync`、导航数为 0。
- 未迁:`hovered_block_from_target` 的壳层函数、`drop_indicator_from_target`、拖拽 listener、block reorder 行为仍留在 `lib.rs`
- 2026-05-25Batch AD 采用 3 个独立 worktree workerB/C/D),符合当前 goal 每批最多 4 个 worker 的上限;任务书均写入各 worktree `tmp/`,未新增主工作区 `.codex/reasonix-tasks`
- 2026-05-25Batch AD 采用 3 个独立 worktree workerB/C/D),超过当前 goal 每批最多 2 个 worker 的上限,应视为异常历史记录;任务书均写入各 worktree `tmp/`,未新增主工作区 `.codex/reasonix-tasks`
- 涉及 worktree`/mnt/Data1T/mnote-worktrees/0525-ad-worker-b-5-29-drop-indicator-block-rect``/mnt/Data1T/mnote-worktrees/0525-ad-worker-c-3-20-upload-target-readonly``/mnt/Data1T/mnote-worktrees/0525-ad-worker-d-regression-smoke`
- Worker B run `reasonix-2026-05-24T23-05-57-072Z-aa9927f0` 仅产出 `prompt.md` / `memory-recall.json` / `reasonix-transcript.jsonl`,无 `final.md``result.json``process-handoff.md/json`Reasonix 结论拒收。Codex 仅把 worktree 中的两文件 diff 当作候选 patch 独立复核,确认范围只涉及 `drop_indicator_from_target` 内部 block/stage rect 读取封装后选择性合入。
- 修改:`editor_runtime/block_dnd.rs` 新增 `drop_indicator_from_block_rects(block_index, block, stage, client_y)``lib.rs::drop_indicator_from_target` 仍负责 hovered block、root/stage DOM 查询和 shell 状态,只委托新 helper 计算 `DropIndicatorState`
@@ -256,7 +256,7 @@ UI / 浏览器可见项必须有真实浏览器截图或结构化 smoke 证据
- Worker D run `reasonix-2026-05-24T23-05-57-257Z-c917f1ef` 有完整 `process-handoff.md/json``result.json``final.md`,源码零 diff`task489``task488``task487``task451` 在 3001 均通过。
- Codex 已读取 Hindsight recall 与 handoff/result,并独立复跑主控验收。
- 已验证:`cargo fmt --manifest-path rust/Cargo.toml --all --check``git diff --check``cargo check --manifest-path rust/spikes/leptos-tiptap-spike/Cargo.toml`、wasm release build、`wasm-bindgen``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task489-block-menu-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task488-local-attachment-link-delete-undo-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task487-local-folder-tree-live-consumer-smoke.js``MNOTE_WEB_SMOKE_BASE_URL=http://127.0.0.1:3001 NODE_PATH=/mnt/Data1T/mnote/node_modules node scripts/task451-local-markdown-conflict-resolution-ui-smoke.js`
- 2026-05-25Batch AE 采用 4 个独立 worktree worker,符合当前 goal 每批最多 4 个 worker 的上限;任务书均写入各 worktree `tmp/`,未新增主工作区 `.codex/reasonix-tasks`
- 2026-05-25Batch AE 出现 4 个独立 worktree worker 记录,超过当前 goal 每批最多 2 个 worker 的上限,应视为异常历史记录;任务书均写入各 worktree `tmp/`,未新增主工作区 `.codex/reasonix-tasks`
- Worker A `/mnt/Data1T/mnote-worktrees/0525-ae-worker-a-5-29-handle-corridor-rects`run `reasonix-2026-05-24T23-18-29-397Z-f4574b43` 仅产出 `prompt.md` / `memory-recall.json` / `reasonix-transcript.jsonl`,无 `final.md``result.json``process-handoff.md/json`worktree 有候选 diff 和未跟踪 `reference-code` symlinkReasonix 结论拒收。候选 diff 将 `handle_lane_left` 及一组 content column 常量复制到 `block_dnd.rs`,主控暂不采纳,避免在未完整 handoff 情况下引入第二份布局常量。
- Worker B `/mnt/Data1T/mnote-worktrees/0525-ae-worker-b-5-29-overlay-readonly`run `reasonix-2026-05-24T23-18-29-427Z-8bb6f43e` 有完整 `process-handoff.md/json``result.json``final.md`,源码零 diff;审计结论经主控复核后作为下一刀参考:table/image overlay anchor、`block_label_for_element``target_element` 等仍可继续拆,event listener / host bridge / `on_selection_change` 继续留在 `lib.rs`
- Worker C `/mnt/Data1T/mnote-worktrees/0525-ae-worker-c-3-20-upload-target-readonly`run `reasonix-2026-05-24T23-18-29-419Z-3e999c4d` 有完整 handoff/result,源码零 diff;结论归 3-20 事实源:`resolveFileTreeUploadTarget` 暂不迁,`refreshLocalFolderSidebarSnapshot` 仍留 shellappend/reveal 系列已足够外置。