# Batch C Worker C：Convex Export 产品化补 Smoke

项目根目录：`/mnt/Data1T/mnote`

你不是单独在代码库里工作，可能有其他 worker 并行执行。不要回滚、覆盖或格式化与你任务无关的文件；不要提交 git。

## 背景

`design/01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md` 的 Gap C1 已确认 export 脚本支持：

- `--dry-run`
- `--manifest`
- `--conflict-report`
- `--rollback`

但仍缺独立 smoke 验证：

- dry run 不写文件
- 同名冲突不覆盖
- rollback 恢复导出前状态

## 目标

1. 新增或扩展 smoke，覆盖 dry-run / conflict / rollback 三个行为。
2. 优先复用 `scripts/task444-convex-workspace-export-local-fixture-smoke.js` 和 `scripts/export-convex-workspace-to-local.js`。
3. smoke 必须可离线运行，不依赖真实 Convex 服务。
4. 更新 `1-6` Gap C1 与本轮 Batch C checklist。

## 允许修改范围

- `scripts/task444-convex-workspace-export-local-fixture-smoke.js`
- 可新增 `scripts/task48*-convex-export-*.js`
- `design/01-tree-first-graph-kernel/process/1-6-next-phase-gap-closure-checklist-v1.md`
- `design/01-tree-first-graph-kernel/process/1-10-batch-c-p1-resource-buffer-gfm-convex-checklist-v1.md`
- 可新增 `.codex/reasonix-tasks/results/batch-c-worker-c-convex-export-smokes.md`

禁止事项：

- 不修改 Convex runtime / schema。
- 不改变 local-first 架构口径。
- 不让 smoke 写入仓库内非 tmp 目录。

## 验收命令

```bash
node --check scripts/task444-convex-workspace-export-local-fixture-smoke.js
node scripts/task444-convex-workspace-export-local-fixture-smoke.js
```

如果新增 smoke：

```bash
node --check scripts/<new-smoke>.js
node scripts/<new-smoke>.js
```

## 输出要求

最终写入 `.codex/reasonix-tasks/results/batch-c-worker-c-convex-export-smokes.md`，包含：

- 修改文件列表。
- dry-run / conflict / rollback 的验证方式。
- 验证命令和结果。
- 未完成项和风险。
