# Bundle 3 Review — BRIDGE-MOCKUP-008 Phase B-v2

> 生成: 2026-05-28 · 总: **152 low-conf + 16 outline pending + 3 new cat**
> 368 entries / 8 batches · Codex 用 spec-level pattern 标 low-conf 集中爆发 (output 77 / Meeting 21 / indicator 18)
> 回复方式: 直接报例外 / "全 accept §F" / 具体段单独答复

---

## §A. 3 New Category 命名拍板

| # | proposed | source | 条目 | 推荐 |
|---|---|---|---|---|
| A1 | `file/*` | Preview + file | 31 + 40 = 71 | ☐ accept |
| A2 | `communication/*` | Meeting | 39 | ☐ accept |
| A3 | `indicator/*` | indicator | 53 | ☐ accept |

---

## §B. output batch spec rule (1 决策 → 76 entries)

### 现状
38 个 outline/filled pair (X 1 + X 2) + 3 个 standalone (Aux output / ID3 / RSS)

Codex 全部命名为 `network/<service>-out-1` / `network/<service>-out-2` (机械数字 suffix)。

### 视觉模式 (与 Bundle 1 Help/Notification 同范式)
- `X 1` → outline (brand-keep svg)
- `X 2` → filled (semantic-convert svg)

### 🟢 推荐 spec rule

| pattern | rule |
|---|---|
| `<svc> 1` (38 entries) | → `network/<svc>-out-outline` |
| `<svc> 2` (38 entries) | → `network/<svc>-out` (base/filled) |
| `Aux output` | → `network/aux-out` ✅ |
| `ID3` | → `network/id3-out` |
| `RSS` | → `network/rss-out` |

### 实例预览 (sample)

| from | → to |
|---|---|
| network/facebook-out-1 | network/facebook-out-outline |
| network/facebook-out-2 | network/facebook-out |
| network/ndi-out-1 | network/ndi-out-outline |
| network/ndi-out-2 | network/ndi-out |
| network/rtmp-out-1 | network/rtmp-out-outline |
| network/youtube-link-out-1 | network/youtube-link-out-outline |
| ... | ... (全部 38 pair 同 pattern) |

**全 38 pair brand list**: facebook, grid, hls-pull, hls-push, hls-to-aws, instagram, IRLToolkit, issp, kick, kuaishou, Linkedin, mxl, NDI, NDI-with-SRT, RTMP, RTMP-link, RTMP-link-to-aws, RTMP-to-aws, RTP, RTP-pull, RTP-push, Restream, RIST, scte, SDI, secure, SMPTE-2110, SMPTE-2110-redundancy, SRT, SRT-listener, SRT-caller, srt-pull, srt-push, srt-to-aws, twitch, UDP-pull, UDP-push, x, yizhibo, youtube, youtube-link, zixi

⚠️ 我列了 41+ — 实际 38，部分 service 自带多变体（NDI / SRT / RTP 各 2-3 个子协议 pair）。

### 选项

(a) **🟢 accept spec rule** — 我 patch 76 → outline/base 命名
(b) 保留 `-1/-2` mechanical (Codex 现状) — 不推荐 (违反 §3.3 outline pair convention)

---

## §C. Meeting batch spec rule (1 决策 → 21 entries)

### 现状
10 个 1/2 pair + 1 个孤儿 (Mic off 1，base=`Mic off` 已 promote 但无 `Mic off 2`)

### 11 outline_pending (Codex 已标视觉 review)

| base (已 promote) | candidate outline | 推荐改名 |
|---|---|---|
| communication/1vn-voip | 1vN VoIP 1 | → **communication/1vn-voip-outline** |
| communication/calling | Calling 1 | → **communication/calling-outline** |
| communication/chat | Chat 1 | → **communication/chat-outline** |
| communication/connecting | Connecting 1 | → **communication/connecting-outline** |
| communication/mic | Mic 1 | → **communication/mic-outline** |
| communication/mic-off | Mic off 1 | → **communication/mic-off-outline** |
| communication/off | Off 1 | → **communication/off-outline** |
| communication/phone | Phone 1 | → **communication/phone-outline** |
| communication/pip-mic-off | PIP Mic off 1 | → **communication/pip-mic-off-outline** |
| communication/raise-hand | Raise hand 1 | → **communication/raise-hand-outline** |
| communication/role | Role 1 | → **communication/role-outline** |

### 10 "X 2" filled siblings
每 base 已 promote (`communication/<x>`)，"X 2" 是 filled with replace-hex-with-currentColor 的版本 — 应该是基 base 名 (无后缀)，但 base 已占。

### 🟢 推荐 spec rule

| pattern | rule |
|---|---|
| `<x> 1` (11 entries) | → `communication/<x>-outline` (base 已存在) |
| `<x> 2` (10 entries) | → `communication/<x>-filled` (因 base 无后缀已被 base entry 占) |

(b) 备选：保留 `-1/-2` 命名

### 实例预览

| from | → to |
|---|---|
| communication/1vn-voip-1 | communication/1vn-voip-outline |
| communication/1vn-voip-2 | communication/1vn-voip-filled |
| communication/mic-1 | communication/mic-outline |
| communication/mic-2 | communication/mic-filled |
| communication/raise-hand-1 | communication/raise-hand-outline |
| communication/raise-hand-2 | communication/raise-hand-filled |
| ... | ... (全 11 + 10) |

---

## §D. indicator batch (18 low-conf)

### Codex 全部归 indicator/* — 含 brand wordmark (~6)

| 条目 | 当前 | 我的建议 |
|---|---|---|
| facebook | indicator/facebook | ⚠️ brand wordmark → **brand/facebook**? 或 indicator/* (上下文 = source brand indicator) |
| microsoft | indicator/microsoft | 同上 → **brand/microsoft**? |
| tiktok | indicator/tiktok | 同上 → **brand/tiktok**? |
| twitch | indicator/twitch | 同上 → **brand/twitch**? |
| x | indicator/indicator-x | 同上 → **brand/x**? |
| YouTube | indicator/youtube | 同上 → **brand/youtube**? |

### 🟢 推荐 spec rule

**保 indicator/* 不动** — 上下文是"source/protocol indicator"，brand 是视觉特性不是 cat (svg_decision=brand-keep 已表达)。与 user 批 sign-in provider 同处理 (留 user/* 不移 brand/*)。

### 其他 12 低 conf (协议 + 状态)

| 条目 | 当前 | 我的建议 |
|---|---|---|
| anywhere | indicator/anywhere | ✅ accept |
| DASH | indicator/dash | ✅ accept |
| External | indicator/external | ✅ accept |
| file | indicator/file | ⚠️ 与 cat=file 撞概念 → **indicator/source-file** 推荐 |
| free | indicator/free | ✅ accept |
| grid-pack | indicator/grid-pack | ✅ accept |
| HDS | indicator/hds | ✅ accept |
| MPEG | indicator/mpeg | ✅ accept |
| pack | indicator/pack | ✅ accept |
| unknown | indicator/unknown | ✅ accept |
| live 1 | indicator/live-1 | outline pair → **indicator/live-outline** |
| live 2 | indicator/live-2 | filled → **indicator/live** (无 base 存在; 直接占 base) |

---

## §E. Small batches (Preview/user/file/input/Video = 36 low-conf)

### Preview (2)

| # | from | 我的建议 |
|---|---|---|
| Pv1 | file/preview-1 (icon/Preview/1) | ⚠️ 纯数字 leaf — **file/preview** (无 base 占) 或 keep file/preview-1 |
| Pv2 | file/screen-1 (icon/Preview/Screen 1) | outline pair → **file/screen-outline** (待视觉 confirm) |

### user (11) — 全部 brand-keep 社交/auth provider icon

| # | from | 我的建议 |
|---|---|---|
| u1-9 | user/apple-dark / auth0-dark/light / facebook / google / microsoft / tiktok / twitch / wechat / youtube | ✅ accept all (user/* sign-in provider 范式，与 indicator batch 同处理；brand-keep svg 已表达品牌特性) |
| u10 | user/unkown (typo) | ⚠️ → **user/unknown** |
| u11 | user/YouTube → user/youtube | ✅ accept (Codex 已 lowercase) |

### file (7)

| # | from | 我的建议 |
|---|---|---|
| f1 | file/add-folder-1 | outline pair → **file/add-folder-outline** |
| f2 | file/add-folder-2 | filled → **file/add-folder** (无 base 占?需视觉 confirm) |
| f3 | file/component | ✅ accept |
| f4 | file/default-folder | ✅ accept |
| f5 | file/folder-2 | ⚠️ 与 file/folder base 关系 → **file/folder-filled**? 待视觉 confirm |
| f6 | file/other | ⚠️ 太泛 → keep file/other (catch-all) |
| f7 | file/sub-component | ✅ accept |

### input (10)

| # | from | 我的建议 |
|---|---|---|
| i1 | network/custom-source-in | ✅ accept |
| i2-6 | network/facebook-in / tiktok-in / twitch-in / youtube-in | ✅ accept (与 output batch brand 对称) |
| i7 | network/input-x (Codex 加 input- prefix 避撞名) | ⚠️ 与 output `network/x-out` pattern 不对称 → **network/x-in** 推荐 |
| i8 | network/other-source-in | ✅ accept |
| i9 | network/rtp-3-in | ⚠️ 数字 3 mechanical → **network/rtp-3-in** keep? 或视觉 confirm if outline pair |
| i10-11 | network/zixi-1-in / zixi-2-in | outline pair → **network/zixi-in-outline** / **network/zixi-in** (与 output zixi 对称) |

### Video (6)

| # | from | 我的建议 |
|---|---|---|
| V1 | media/file-1 (icon/Video/File 1) | outline pair → **media/file-outline** (但与 cat=file 撞名风险 — 建议 **media/video-file-outline**) ⚠️ |
| V2 | media/media | ⚠️ 重复词 → **media/video-media**? 或视觉 confirm |
| V3 | media/random | ✅ accept |
| V4 | media/scte | ✅ accept |
| V5 | media/source-unavailable | ✅ accept |
| V6 | media/tag | ✅ accept |

---

## §F. Aggregate 推荐 (最快 path)

### Spec-level 决策 (3 个，affect ~120 entries)

1. **§B output spec rule (76 entries)**: `<x> 1 → -out-outline` / `<x> 2 → -out`
2. **§C Meeting spec rule (21 entries)**: `<x> 1 → -outline` / `<x> 2 → -filled`
3. **§D indicator 保 cat 不变 + live outline pair** (2 entries 改名)

### Per-entry 改名 (我的建议)

| batch | 改名 entries |
|---|---|
| Preview | Pv1 file/preview-1 → file/preview / Pv2 → file/screen-outline (待视觉) |
| user | u10 unkown → unknown (typo) |
| file | f1 add-folder-1 → -outline / f2 → -filled / f5 folder-2 → folder-filled |
| input | i7 input-x → x-in / i10 zixi-1-in → zixi-in-outline / i11 zixi-2-in → zixi-in |
| indicator | live-1 → live-outline / live-2 → live / file → source-file |
| Video | V1 file-1 → video-file-outline / V2 media → video-media (或 keep) |

### 视觉 confirm 项 (假设 1=outline / 2=filled，约 ~50 entries 受 §B/§C spec 规则影响，应视觉抽查)

建议先 patch 全 spec rule + per-entry，user Phase C merge 前抽 3-5 个 pair 视觉确认 (打开 dist/icons/svg/ 看 1 vs 2)。

---

## §G. 回复方式

(a) **"全 accept §F"** — 我 patch §B+§C+§D+§E 全部建议 (~120+ entries 改名)
(b) "全 accept Codex 现状" — 跳过我所有建议，按 Codex 原 -1/-2 入库（最快但 outline/filled pair convention 违反）
(c) 列例外 / 段反对 / 个别 keep — 灵活
