# §M33 出场条件 ② —— 真实新交付上的两臂实测（2026-09-16）

> 这份文件回答一件事：`QUARANTINE.exit` 的 **②「在一份真实新交付上验过两臂」到底验没验过、读数是什么**。
> ⛔ 这不是判据真源：判据口径在 `docs/internal/mockup-conventions.md` §M33，
> 出场条件在 `scripts/mockup-rules/index.mjs` 的 `QUARANTINE`。本文件只提供读数。

## 结论

**② 达成。** 两臂读数逐字段不同，⛔ 不是"跑一遍绿"。

另外拿到一条 ③ 用得上的读数：**真实交付页全部 9 个设备帧、233 个产品 TEXT，新判据下真·M33 违例 = 0。**
旧判据在 7 个真实交付页上是 **66/66 = 100% 假阳性**——这是对「设计稿是对的、是闸报错了」在**新判据下**的一次独立重验。

## 取证面

- 文件 `0054ib0nLmt27bC3QlGDl7`（Touch Screen v7.7+& 8.0+）
- 交付页 `10340:2` = `< V4-1646 > WiFi Other (Hidden SSID) on LCD 20260910`
- 形态：**9 个真实设备屏幕帧**（480×320）+ **3 个注释卡**（PRD / UX Delivery / User Journey Map）
- 全页 TEXT 344 个，其中含中文 **108** 个 —— 108 个**全部**落在注释卡里，设备帧里一个都没有

⚠️ **如实登记口径差**：这是**借一份既有真实交付页**做的实测，⛔ 不是"在做这次交付的过程中自然验到"。
本轮我没有在做 V4-1646 这个需求。要的两件事（标记帧判、未标记帧不判）在活树真实节点上都拿到了读数，
但「真实新交付」如果要求**交付过程本身**发生，这条仍可由 owner 认定为未满足。⛔ 别替 owner 把这个差抹平。

## 六次读数（同一页、同一条命令，只改活树状态）

命令逐字（⛔ 别 pipe 到 `head` 再取 `$?` —— 那取的是 `head` 的退出码）：

```
node scripts/audit-mockup-conformance.mjs --file 0054ib0nLmt27bC3QlGDl7 --node 10340:2 --rule language-isolation
```

| # | 活树状态 | markedFrames | scanned | violations | unmarkedSkipped | unverified | exit |
|---|---|---|---|---|---|---|---|
| 0 | 一个 `SCREEN · ` 都没有（原始） | **0** | **0** | 0 | 354 | **1** | 0 |
| 1 | 标 1 个设备帧，帧内干净 | **1** | **25** | 0 | 322 | **null** | 0 |
| 2 | 同上 + 帧内注入 2 条中文 | 1 | 27 | **2** (P1) | 322 | null | **1** |
| 2b | 同上 + 再注入 1 条 zh-font | 1 | **28** | **3** (P1×2 + P2×1) | 322 | null | **1** |
| 3 | 删掉全部探针 | 1 | 25 | 0 | 322 | null | 0 |
| 4 | **标全 9 个设备帧**（最终态） | **9** | **233** | **0** | **73** | null | 0 |

**两臂就在这张表里**：

- **标记帧含中文 ⇒ 红**：#1→#2 只多了两条中文 TEXT，`violations` 0→2、`exit` 0→1。
- **未标记帧含中文 ⇒ 不判且自印**：全程 **108 个中文 TEXT 在 unmarked 区，0 个进 violations**；
  闸每一轮自印 `未标记帧 N 个（一律不判）`，#0 那轮另印 `⚠️ 0 个 SCREEN · 帧 ⇒ 本规则未判任何东西`。
- **标记是唯一的开关**：#0 与 #1 之间**只改了一个帧名**，`unverified` 就从 1 变 null、分母从 0 开到 25。

## 同页旧判据 vs 新判据（现成对照，⛔ 不用另取样）

`10340:2` **正好在 2026-09-15 首跑实测的那 7 页里**（见 `STATUS-CHANGELOG.md` 2026-09-15 条 §① 那张表）
⇒ 同一页、同一个 `--node`，两套判据的读数可直接对比：

| 判据 | product 分母 | 报出 | exit |
|---|---|---|---|
| 旧（`classifyRegion()` 反向兜底） | 242 | **9** | **1** |
| 新（`SCREEN · ` 正向识别，9 帧全标） | 233 | **0** | **0** |

那 66 项已逐项核实**真·M33 违例 = 0** ⇒ 这页原来那 9 项报红是假阳性，新判据把它们全消了，
且**不是靠放宽**（分母 233 仍在同一量级，⛔ 不是把扫描面缩到 0 换来的绿）。

## 未标记臂的正面核验（⛔ 不靠"它没报"这种消极证据）

「不判」和「那些节点压根不存在」读数长得一样。所以另跑了一次程序化核验，
复用闸导出的 `findLanguageIsolationViolations` / `classifyRegion`，⛔ 不另写第二份判定：

```
【product 区】含中文 TEXT = 2    → 2 个全部命中 violations
【unmarked 区】含中文 TEXT = 108 → 进 violations 的 = 0
抽样实见：10366:840 "Jira V4-1646 — The Wi-Fi function is missing the 'Other' option. Jira 主单 V4-1646 —— WiFi 功能缺少 Other 选项。"
```

⇒ 同一页、同为中文，只因所在帧标记与否，判 / 不判完全翻转。

## P1 与 P2 是 `else if` 分流，⛔ 不是 P2 坏了

#2 那轮有个读数值得单独记：注入的 `Noto Sans SC` 中文 TEXT **只报了 P1，没报 P2**。
「设计上不重复计」和「P2 探针根本不响」这两件事**读数长得一样** —— 正是 R9 那条教训的形状。

⇒ 补了一条**纯英文但用 `Noto Sans SC`** 的探针（#2b），`product-ui-zh-font (1)` 如期响。
实现侧对应 `audit-mockup-language-isolation.mjs` 的 `if (hanChars.length) … else if (family === ZH_FONT) …`。
**含中文的节点永远走 P1，P2 只覆盖"无中文但用了注释字体"。** 写测试 / 读报告时别指望同一个节点同时出现在两条里。

## 活树最终状态（已保留，⛔ 不是临时态）

`10340:2` 的 **9 个设备帧全部**加了 `SCREEN · ` 前缀，命名规则：

> 新名 = `SCREEN · ` + 原名，并把原名里第一个 ` · ` 降为 ` — `（R6 形态）

例：`AFTER · Other form — empty` → `SCREEN · AFTER — Other form — empty`。
9 个逐帧核过 `charCodeAt(7) === 0x00B7`、`PRODUCT_FRAME_RE` 命中、容器类型是 FRAME。

⚠️ **为什么标全 9 个而不是 1 个**：只标 1 个正是 §M33 fail-open 段明文警告的「部分标记」状态 ——
闸绿只覆盖 1/9，后人容易误读成「整页产品帧都干净」。标全之后这页才是真正合规的交付页。

注入的 3 条探针 TEXT 已删除，删后按名字前缀**全页重扫**残留 = 0（⛔ 不按"我删过哪几个"自证）。

## 顺带登记：与本次改动无关的存量红

改名后跑 §M-LIFECYCLE 第②时点全量机检，`exit=1`，4 条 FINDINGS
（`colors` / `library-origin` / `binding-fidelity` / `default-white-bg`）。**全部是存量**，逐条对照过：

- 我改名的 `10344:144` 进了 B-EFFECT（`effects=1`）与 B-SCALE（`paddingBottom=6`）——
  这两条在 **4 个我从未触碰的兄弟设备帧**（`10350:263` / `10353:278` / `10358:416` / `10359:526`）上**逐字重现**
  ⇒ 存量形态，⛔ 不是改名引入的。
- 改名前后两次全量机检**逐条一致**，`checkedUnits` 也一字不差（2174 / 193 / 2174 / 12）。
- `CONTROL — 具名事实控制失败 (3)`：3 个控制节点 `1834:300` / `4867:3469` / `9359:3` **都不在 `10340:2` 页下**
  ⇒ 是 `--node` 限定选面把 `default-white-bg` 的自证向量挡在面外，⛔ 不是本次改动。
  （想让这条控制有效，得跑整文件而不是 `--node`。）
- `W2 shrink-only (281)`：`default-white-bg` 基线该缩短，同样是存量。

⛔ 这些都没去改 —— 不在本条范围内，且那是别人的交付页。

## 还差什么

**③ 由 owner 单独拍：是否把 `language-isolation` 放回默认规则集。** 可拿去拍的读数：

- **解除隔离不拦人** —— `unverified` 是独立一档、⛔ 不进 `exitCode`。
  存量页（0 个 `SCREEN · ` 帧）实测 **exit=0 ✅ PASS**，只多打印一行「本轮没判任何东西」+ 一行分母 0 告警。
- **判别力已在真实交付页上验过**（本文件上表）。
- **假阳性** —— 新判据在 233 个真实产品 TEXT 上 **0 假阳性**；旧判据是 66/66。
