5.8 KiB
5.8 KiB
Batch A2 Worker C:task473 语义与 4-34/4-46 文档收口 — 执行结果
执行人
Reasonix Worker C (Batch A2)
环境
| 检查项 | 状态 |
|---|---|
| 项目根 | /mnt/Data1T/mnote |
| Node.js | 可用 |
node --check |
通过,无语法错误 |
| 修改文件数 | 3(见下) |
| 未触及 Rust | ✅ |
| 未提交 git | ✅ |
| 未撤销/覆盖已有改动 | ✅ |
修改文件
| 文件 | 改动说明 |
|---|---|
scripts/task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js |
evidence.ok = true → evidence.ok = hasFocusEvidence |
design/04-tree-domain/process/4-34-filetree-trash-dual-browser-no-refresh-v1.md |
5 处更新:验收矩阵非 md 行写实、3.5 审计结论更新、5 边界更新、6 完成标准更新 |
design/04-tree-domain/process/4-46-batch-a-filetree-action-trash-smoke-execution-checklist-v1.md |
追加 Batch A2 执行记录 |
Smoke 语义变化
改动前:task473 步骤 9 正确记录 ok: false 和 focus 缺口,但末尾无条件设置 evidence.ok = true,整体结果为 ok: true。脚本作为回归测试时无法区分"所有功能正常"和"已知缺口但其他正常"。
改动后:evidence.ok = hasFocusEvidence。当 focus 缺口存在时 evidence.ok = false;如果后续实现了 restore focus(selectSidebarFileTreeDocument 被调用、data-selected="true" 出现),hasFocusEvidence 变为 true,整体通过。各步骤诊断数据照常记录到 result.json。
这一改变意味着:
- Batch A2 目标达成:task473 现在是一个可检测的回归测试 — restore focus 修复后 smoke 自动变绿;回归时自动变红。
- false-positive 消除:不再把"已知缺口但其他功能正常"混淆为
ok: true。 - 诊断不丢:所有
steps、focusAfterRestore、navEventsAfterRestore、fileReappearsInFiletree仍写入result.json。
文档状态变化
4-34 design/04-tree-domain/process/4-34-filetree-trash-dual-browser-no-refresh-v1.md
| 位置 | 旧内容 → 新内容 |
|---|---|
| §2 验收矩阵(local folder 非 md 行) | 待定/待定/待定/待定 → ✅ task435/✅ task437+464/✅ task437+473/✅ task437+464,empty-trash 标记 ❌ 未覆盖 |
| §3.5 审计结论(task163 行) | 尚未覆盖 Markdown 重命名/删除、非 md rename、非 md trash/restore/purge → task435 覆盖 Markdown+非 md create/rename/delete;非 md trash/restore/purge 由 task437+464 覆盖;local folder Markdown 自身 trash lifecycle 仍未编写 |
| §5 边界(非 md bullet) | 非 md 本地资源文件 watcher/trash/restore/purge 仍单列为待补 → 已由 task435/437/464/473 分项覆盖;local folder Markdown trash lifecycle 仍未编写 |
| §6 完成标准 | task436 或等价 smoke 证据 → task435/437/464/473 或等价 smoke 证据;追加 restore focus 缺口不视为完成的约束 |
4-46 design/04-tree-domain/process/4-46-batch-a-filetree-action-trash-smoke-execution-checklist-v1.md
| 位置 | 旧内容 → 新内容 |
|---|---|
| §8 执行记录尾 | 追加 Batch A2 Worker C 执行记录,说明本轮目标是关闭 task473 的 focus gap 作为可检测回归测试 |
验收命令结果
$ node --check scripts/task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js
SYNTAX_OK
$ git -C /mnt/Data1T/mnote diff --name-status design/04-tree-domain/process/4-34-filetree-trash-dual-browser-no-refresh-v1.md \
design/04-tree-domain/process/4-46-batch-a-filetree-action-trash-smoke-execution-checklist-v1.md \
scripts/task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js
M design/04-tree-domain/process/4-34-filetree-trash-dual-browser-no-refresh-v1.md
M design/04-tree-domain/process/4-46-batch-a-filetree-action-trash-smoke-execution-checklist-v1.md
M scripts/task473-local-folder-trash-restore-no-refresh-focus-gap-smoke.js
注:git diff 中出现的 D design/04-tree-domain/process/4-44-*.md 和 D design/04-tree-domain/process/4-45-*.md 是先前已有更改,非本 worker 引入。
仍未覆盖项
仍在 open 状态、不视为完成
- Restore focus / reveal 完全未实现(task473 step 9
hasFocusEvidence===false)。selectSidebarFileTreeDocument从未在 restore 路径调用,且不支持local-file:行 ID。4-28§5.3 已给出短/中/长三条实现路径。 - local folder empty-trash smoke 未编写 — 验收矩阵中标记 ❌。
- local folder Markdown 自身的 trash lifecycle(通过 tree command archive/restore/purge
.md文件)未编写独立 smoke。
local folder 非 md 资源覆盖率(本轮已写实的覆盖)
| 子项 | 覆盖 Smoke | 状态 |
|---|---|---|
| 外部 create/rename/delete(no-reload) | task435 | ✅ |
| API archive(delete → trash) | task437 | ✅ |
| API restore(trash → 原路径) | task437 | ✅ |
| API purge(从 trash 彻底删除) | task437 | ✅ |
| Trash UI delete → 可见 | task464 | ✅ |
| Trash UI restore → 文件恢复 | task464 | ✅ |
| Trash UI purge → 文件消失 | task464 | ✅ |
| Trash workbench restore no-refresh(fetch 型,无导航) | task473 | ✅ |
| Restore 后 filetree 行重现(轮询 1200ms) | task473 | ✅ |
| Restore 后 filetree focus/reveal | task473 | ❌ open |
| empty-trash smoke | — | ❌ open |
风险评估
- 无 Rust 修改,回归风险低。
task473smoke 语义从"永远 ok:true"变为"有 focus 才 ok:true",可能影响依赖其ok字段的外部脚本。但 task473 的消费者只有 Codex 复核流程(4-46§5),该流程应优先查看result.json全量字段而非仅ok。- 4-44 / 4-45 文件缺失(非本 worker 引入)可能导致 Codex 复核时误判为越权删除;已在结果中说明。