# Batch C Worker C — Convex Export Productization Smoke

> 执行时间：2026-05-21
> 执行者：Reasonix Code (Batch C Worker C)
> 状态：`DONE`

## 背景

`design/01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md` 的 Gap C1
已有 `--dry-run`、`--manifest`、`--conflict-report`、`--rollback` 能力，但缺独立 smoke 验证。

## 现有 smoke 检测

`scripts/task455-convex-export-plan-rollback-smoke.js` 已存在并覆盖全部三个行为：

| 行为 | 验证方式 | task455 对应逻辑 |
|------|----------|------------------|
| **dry-run** | `--dry-run` 后 pages 目录不存在；manifest 中 `dryRun: true` | `assert.equal(fs.existsSync(path.join(outRoot, "pages", "Project.md")), false)` |
| **conflict** | 预写文件后 export 退出码 2；冲突报告含 `migration_conflict`；原内容未被覆盖 | `runExport([...], 2)` + `assert.equal(content, "原有内容\n")` |
| **rollback** | export 后 rollback，pages/assets 均删除 | `assert.equal(fs.existsSync(...), false)` for pages + assets |

## 验证命令与结果

```bash
node --check scripts/task455-convex-export-plan-rollback-smoke.js
node scripts/task455-convex-export-plan-rollback-smoke.js
```

**结果：** ✅ `{"ok":true,"smoke":"task455-convex-export-plan-rollback"}`

## 修改文件

| 文件 | 变更 |
|------|------|
| `design/01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md` | Gap C1 标记 ✅ 完成；5.2 新增 task455 条目；5.3 三个 smoke 标记通过；6.3 总完成率 C1 行更新 |
| `design/01-tree-first-graph-kernel/process/1-10-batch-c-p1-resource-buffer-gfm-convex-checklist-v1.md` | 新增 Worker C 执行记录 |

## 未完成项和风险

- **无未完成项** — dry-run/conflict/rollback 三个行为已有 `task455` 离线 smoke 覆盖。
- **风险**：task455 使用 tmpdir，离线运行不依赖 Convex，无后续依赖风险。
- **后续建议**：若有新的 export 行为变更（如增量导出、自定义路径映射），在 `task455` 基础上追加断言即可。
