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

之前 Phase F 验证报告（`docs/internal/pipeline-safe-default-verification.md`）给出 ❌，但 before snapshot 是空的，所以**无法判断 pipeline 是真删了还是 before 状态本来就脏**。

本任务唯一目标：用**显式干净 baseline + 一次 default-mode pipeline + 严格 diff** 判断真相。

---

## 必读前置

1. `figma-sync/sync-figma-library.mjs`（确认 APPLY_CLEANUP 默认 false 时不传 --apply）
2. `figma-sync/cleanup-unpublished.mjs`（确认 APPLY 默认 false 时不删文件）
3. `docs/internal/pipeline-safe-default-verification.md`（之前那份有歧义的报告）

---

## 任务步骤（按序执行，不跳步）

### Step 1：恢复干净 baseline

```bash
# 把之前 cleanup 留下的 120 D + 3 M + manifest 改动全部重置到 HEAD
git checkout HEAD -- figma-data/ docs/site-review-manifest.json
```

**验证 baseline 干净**：

```bash
git status --short figma-data/ docs/site-review-manifest.json
```

期望输出：**完全为空**（无任何 D / M / ??）。

如不为空，STOP 报告异常——baseline 不干净不能继续验证。

### Step 2：跑前快照

```bash
git status --short figma-data/                      > /tmp/diagnose-before-figma.txt
git status --short docs/site-review-manifest.json   > /tmp/diagnose-before-manifest.txt
```

把这两个文件内容粘到最终报告（应该都是空的，证明 baseline 干净）。

### Step 3：跑 pipeline（默认模式，不带任何 flag）

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

**完整捕获 stdout**。重点保留：
- 整个 SUMMARY 段
- Step 1 cleanup 的输出（脚本自己 println 的"保留 X | 删除 Y"那行）
- Step 3 ensure-docs-site-manifest 的输出（"待补条目"清单）

### Step 4：跑后快照

```bash
git status --short figma-data/                      > /tmp/diagnose-after-figma.txt
git status --short docs/site-review-manifest.json   > /tmp/diagnose-after-manifest.txt
```

### Step 5：严格 diff

对每个域分别判定：

#### 5.1 `figma-data/` 域
- 跑前：应空
- 跑后：**期望仍为空**——这是默认安全的核心标准
- 如出现任何 `D` / `M` / `??`（除非是合法的 untracked output 文件，如 `figma-to-code-mapping.json` 的更新或 `published-vs-code.audit.json`），算 ❌

#### 5.2 `docs/site-review-manifest.json` 域
- 跑前：应空
- 跑后：**预期 1 个 M**（因为 Step 3 ensure-docs-site-manifest --apply 会再次写入 5 条 in-review 条目）
- 这是设计内行为，**不算 ❌**

---

## 判定规则

| 跑后 figma-data/ 状态 | 结论 |
|---|---|
| 全空 | ✅ Pipeline 默认 cleanup 真的是 dry-run，**之前的 ❌ 是误判**（before snapshot 没正确捕获已脏状态） |
| 有任何 D / M（非合法 untracked） | ❌ Pipeline 默认仍会改 figma-data，**默认安全机制有 bug，需要修脚本** |

---

## 禁止

- ❌ 加 `--apply-cleanup`
- ❌ 加 `--with-extract`
- ❌ 修任何 `figma-sync/*.mjs`（即使发现 bug 也只报告，不要"顺手修"）
- ❌ 修任何 `figma-data/*`（除 pipeline 自己写的合法 untracked 输出）
- ❌ 修 manifest（除 Step 3 自己写的）
- ❌ 跑 `pnpm test` / `pnpm build`

---

## 完成后输出

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

```markdown
# Phase F Diagnose Report

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

## Step 1 baseline 恢复结果
- `git checkout` 后 `git status --short figma-data/ docs/site-review-manifest.json`：
  ```
  [粘贴]
  ```
- baseline 是否干净：[Yes/No]

## Step 2 跑前快照
- figma-data/：
  ```
  [粘贴 /tmp/diagnose-before-figma.txt]
  ```
- manifest：
  ```
  [粘贴 /tmp/diagnose-before-manifest.txt]
  ```

## Step 3 pipeline 输出（关键段落）
- Step 1 cleanup 自己的输出（"保留 X | 删除 Y"那行）：
  ```
  [粘贴]
  ```
- Step 3 ensure-docs-site-manifest 的输出（待补条目数）：
  ```
  [粘贴]
  ```
- 完整 SUMMARY：
  ```
  [粘贴]
  ```

## Step 4 跑后快照
- figma-data/：
  ```
  [粘贴]
  ```
- manifest：
  ```
  [粘贴]
  ```

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

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

## 解释（如何解读上面的判定）
[一段文字说明结论]

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

---

## 完成后 STOP

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