# Codex Prompt v2: 诊断 sync-figma-library 默认行为是否真的不删 figma-data

> v1（`phase-f-diagnose-pipeline-default-safety.prompt.md`）的 baseline 判定过严，把合法 untracked artifact 也算成"脏"。本 v2 修正判定规则。

唯一目标：用**显式干净 tracked baseline + 一次 default-mode pipeline + 严格 diff** 判断 pipeline 默认是否真的不改 figma-data 的 tracked 文件。

---

## 必读前置

1. `figma-sync/sync-figma-library.mjs`（确认 APPLY_CLEANUP 默认 false 时不传 --apply）
2. `figma-sync/cleanup-unpublished.mjs`（确认 APPLY 默认 false 时不删文件）
3. `docs/internal/phase-f-diagnose-report.md`（v1 跑出的报告，被 baseline 校验拦下）

---

## 判定规则（v2 修正版）

**只关注 tracked 文件（D / M），忽略 untracked（??）。**

理由：untracked 文件如 `figma-data/figma-to-code-mapping.json`、`figma-data/normalized/published-vs-code.audit.json` 是脚本合法产出，不属于 figma 数据破坏范畴。

---

## 任务步骤

### Step 1：恢复干净 tracked baseline

```bash
git checkout HEAD -- figma-data/ docs/site-review-manifest.json
```

### Step 2：验证 baseline 仅含合法 untracked

```bash
# 只看 D / M（忽略 ??）
git status --short figma-data/ docs/site-review-manifest.json | grep -v '^??' | wc -l
```

期望输出：`0`（没有 D / M / 其他非 untracked 状态）。

如不为 0，输出具体内容并 STOP 报告——baseline 仍有 tracked 改动需要先解决。

可选：列出 untracked 内容供参考，但不阻塞继续。

```bash
git status --short figma-data/ docs/site-review-manifest.json | grep '^??'
```

### Step 3：跑前快照（只记 tracked）

```bash
git status --short figma-data/ docs/site-review-manifest.json | grep -v '^??' > /tmp/diagnose-v2-before.txt
```

把这个文件粘到最终报告（应该为空）。

### Step 4：跑 pipeline（默认模式，不带 flag）

```bash
pnpm sync:figma-library
```

完整捕获 stdout。重点保留：
- 整个 SUMMARY 段
- Step 1 cleanup 的 "保留 X | 删除 Y" 行
- Step 3 ensure-docs-site-manifest 的 "待补条目" 清单（如有）

### Step 5：跑后快照（只记 tracked）

```bash
git status --short figma-data/ docs/site-review-manifest.json | grep -v '^??' > /tmp/diagnose-v2-after.txt
```

### Step 6：分域判定

#### 6.1 figma-data/ 域
- 跑前 tracked 状态：应空
- 跑后 tracked 状态：**期望仍为空**
- 出现任何 `D` / `M` = ❌ pipeline 默认不安全

#### 6.2 docs/site-review-manifest.json 域
- 跑前：应空
- 跑后：**预期 1 个 M**（Step 3 ensure-docs-site-manifest --apply 重写 manifest）
- 这是设计内行为，**不算 ❌**

---

## 判定表

| 跑后 figma-data/ tracked 状态 | 结论 |
|---|---|
| 全空（0 个 D / M） | ✅ Pipeline 默认 cleanup 真 dry-run，**v1 报告的 ❌ 是 before snapshot 误判** |
| 有任何 D / M | ❌ Pipeline 默认仍改 figma-data，需修脚本 |

---

## 禁止

- ❌ 加 `--apply-cleanup`
- ❌ 加 `--with-extract`
- ❌ 修任何 `figma-sync/*.mjs`
- ❌ 删除 untracked 文件（即使看起来像残留也不删）
- ❌ 跑 `pnpm test` / `pnpm build`

---

## 完成后输出

写到 `docs/internal/phase-f-diagnose-report-v2.md`，格式：

```markdown
# Phase F Diagnose Report (v2)

跑时间：YYYY-MM-DD HH:MM:SS

## Step 1 baseline 恢复
- `git checkout` 后 tracked 状态（grep -v ^??）：
  ```
  [粘贴]
  ```
- baseline tracked 是否干净：[Yes/No]
- 残留 untracked（仅参考，不阻塞）：
  ```
  [粘贴]
  ```

## Step 3 跑前快照（tracked only）
```
[粘贴 /tmp/diagnose-v2-before.txt]
```

## Step 4 pipeline 输出（关键段落）
- Step 1 cleanup 自己输出（保留 X | 删除 Y）：
  ```
  [粘贴]
  ```
- Step 3 ensure-docs-site-manifest 输出：
  ```
  [粘贴]
  ```
- 完整 SUMMARY：
  ```
  [粘贴]
  ```

## Step 5 跑后快照（tracked only）
```
[粘贴 /tmp/diagnose-v2-after.txt]
```

## Step 6 分域判定
- figma-data/ tracked 跑后状态：[全空 / 有 D / 有 M + 详情]
- manifest tracked 跑后状态：[空 / M docs/site-review-manifest.json]

## 最终判定
- ✅ / ❌ Pipeline 默认 cleanup 真 dry-run（不改 figma-data tracked 文件）
- ✅ / ❌ Step 3 manifest 改动符合预期（1 个 M）

## 解释
[一段文字解读]

## 异常项（如有）
[描述]
```

---

## 完成后 STOP

不要修脚本。把报告路径告诉用户，等下一步。
