101 lines
5.8 KiB
Markdown
101 lines
5.8 KiB
Markdown
# 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 作为可检测回归测试 |
|
||
|
||
## 验收命令结果
|
||
|
||
```bash
|
||
$ 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 状态、不视为完成
|
||
|
||
1. **Restore focus / reveal 完全未实现**(task473 step 9 `hasFocusEvidence===false`)。`selectSidebarFileTreeDocument` 从未在 restore 路径调用,且不支持 `local-file:` 行 ID。`4-28` §5.3 已给出短/中/长三条实现路径。
|
||
2. **local folder empty-trash smoke 未编写** — 验收矩阵中标记 ❌。
|
||
3. **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 修改,回归风险低。
|
||
- `task473` smoke 语义从"永远 ok:true"变为"有 focus 才 ok:true",可能影响依赖其 `ok` 字段的外部脚本。但 task473 的消费者只有 Codex 复核流程(`4-46` §5),该流程应优先查看 `result.json` 全量字段而非仅 `ok`。
|
||
- 4-44 / 4-45 文件缺失(非本 worker 引入)可能导致 Codex 复核时误判为越权删除;已在结果中说明。
|