---
name: scanned-standard-clause-verify
description: 扫描版/文本版规范标准 PDF 的身份核验与条文原文核验流水线（S1 置信度核验）。当用户要求核验标准条文、官方核验、原文核对、标准入库核验、清除"待官方核验"标注、或给出标准编号/标准 PDF 要求确认其内容真实性时使用。不适用于技能文件内引用表格的复核（那由 prefab-standards-reviewer 负责）。
version: 1.2.0
---

# 标准条文核验流水线（scanned-standard-clause-verify）

## 定位

把"某标准某条文"从"声称存在"核验到"S1 级确认属实"的可重复流水线。源于装配式装修技能合集的官方核验实践（T/CECS 1018-2022、SJG 159-2024、DB33/T 1259-2021 等案例）。

S1 判定两要素：**官方发布 + 官方文本核验**。两要素齐备才标 S1；缺任一要素只能标"待官方核验"，且不得单独支撑安全类 pass 结论。

## 输入

- 标准编号（必需）
- 本地官方出版物 PDF 或官方发布渠道线索（必需其一）
- 待核验引用点清单（条文号/术语/限值/公式，可后续补充）

## P0 硬前置（先于 Step 1 执行，不可跳过）

三道硬前置是 `SSCV-R-P0-2` 对账步的前置面，**任何核验动作之前必须先执行**；机算预检由仓内工具 `程序文件/sscv_identity_precheck.py` 产出记录（四节：控制台编码自查/封面三要素机筛/文本层可用性实测/既有否证回读），记录随核验报告保存。

### 前置一：封面页身份三要素硬前置

任何 PDF 进入核验流程，**p001（封面页）必须强制渲染（dpi≥150）并逐字目视**，三要素缺一不可：

1. **编号**：逐字读出标准编号；为占位符（如 `JC/T ××××—202×`）⇒ 该件非正式发布稿，不得作发布稿替代凭据。
2. **稿别自标**：封面自标"征求意见稿/送审稿/报批稿/草案"⇒ 该件为过程稿，**不得采信为发布稿**，即使其他页面内容看似完整。
3. **日期**：发布/实施日期为占位符（如 `202X-XX-XX`）⇒ 与 1、2 同判。

**不得自 p002 起渲染**（跳过封面＝跳过本前置；CG-20260927-008 事故根因：渲染范围自 p002 起、封面页从未进入目视面）。工具机筛命中只是警示信号、**零命中不等于已核验**——已核验的唯一判据是核验报告中记录的逐字目视结果。

### 前置二：「文本层不可用」类宣称的最小验证

任何"文本层不可用/乱码/cmap 缺陷"类判定在落档前**必须**附最小验证三件：

1. **抽取器实跑**：至少一种抽取器（PyMuPDF/pdfplumber 等）实跑全份或代表页，报告可提取字符数；
2. **U+FFFD 命中计数**：全份替换字符计数（为 0 才支持"不可用"结论）；
3. **控制台编码自查**：先捕获 `sys.stdout.encoding` 再判——Windows 控制台 GBK 会把可提取的中文显示为乱码，**乱码表象不得径判 PDF 缺陷**（CG-20260927-008 事故根因：GBK 乱码被误诊为 PDF cmap 缺陷）。

### 前置三：授权读法须回读既有否证

收到"可以采信某副本"类授权时，落档前**必须**对该件既有否定性判定逐条回读并显式处置（采信/不采信+理由）；回读面＝核验报告与仓内既有记录（`成果/`、`记录/`、`_专题_技能合集策划/`，工具按 sha256 指纹检索）。**授权改变的是采信口径，不解除文件自身缺项的登记义务**（CG-20260927-008 事故根因）。

## 步骤

### Step 1 身份核验

从官方出版物核验六要素：公告号（如有）、发布机构、发布日期、实施日期、主编单位、出版信息。

- **执行本步前先跑「P0 硬前置」**：封面页（p001）未经强制渲染与三要素逐字目视，本步不得开始；预检工具与记录要求见该节。
- **日期优先级**：PDF 封面 > 官方在线平台（如 openstd、全国标准信息公共服务平台）。封面与在线冲突时以封面为准。
- 扫描版 PDF 用 PyMuPDF 渲染（dpi≥150）后用 Read 视觉读取封面/公告页；文本版直接提取。

### Step 2 版本形态判定

- 强水印重复出现 ≥3 次 → 判扫描版；辅助判据：可提取中文字符数异常低、机构名比例异常。
- 文本版注意：**目录顺序可能与正文不一致**，引用条目编号以正文实际出现位置为准。

### Step 3 提取路径选择

「文本层不可用」类判定须附「前置二」最小验证三件（抽取器实跑/U+FFFD 命中计数/控制台编码自查），不得以乱码表象径判。

| 形态 | 路径 |
|---|---|
| 文本版 | pdfplumber 直接提取 |
| 扫描版 | PyMuPDF dpi≥150 渲染 + Read 视觉读取（首选，T/CECS 案例验证有效）；大篇幅再考虑 OCR 分块 |
| 目次页偏移 | 目录页码常与 PDF 物理页不一致：先用一条已知条文定位实际页，算出偏移量再批量定位 |

### Step 4 官方文本缺失时的二手源降级链

仅当无官方文本可用时启用，且**须两源印证**：

- 知乎转载页：WebFetch 返 403 → `chrome.exe --headless=new --dump-dom` + UA 伪装 + `--virtual-time-budget` 抓全文
- 建标库：WebFetch 重定向死循环 → `curl -A <UA>` 直抓
- 头条系：反爬严格，WebFetch 只返回验证脚本 → 浏览器自动化（open tab → navigate → get_page_text）
- 地方标准：优先找住建局官方发布 PDF（SJG 159-2024 案例即此路径，官方发布 PDF 即满足 S1 两要素）

### Step 5 引用点逐条核对

每个待核验点输出核对表：条文号 | 核验内容 | 原文摘录 | 页码/位置 | 结论（一致/不一致/不存在）。"不存在"的条文号（如臆造条文）必须显式记录并全链删除。

### Step 6 分级标注与登记

- 结论写入 standards-index（项目仓 `_专题_技能合集策划/standards-index.md`）：核验记录表新增行 + 状态字段更新 + §八变更日志。
- 在 change-governance.md 登记变更编号（CG-YYYYMMDD-序号），级别按该文件第一节判定。
- 入库/重编号须按 prefab-governance-sync 技能的发布流程同步三层（项目仓 → 运行时根 → shared 镜像）。

### Step 7 标注全链清除（核验完成后）

对活跃文件（combined_reference / SKILL.md / examples.md / 运行时技能文件）按下列变体模式清单逐一 grep 并清除；技能升版号（x.y.z 第三位）。

**变体模式清单**（实测出现过的变体，须全部执行，漏一项即残留）：

| 模式 | 实际形态示例 |
|---|---|
| 待官方核验 | 〔待官方核验〕降级标注 |
| 条文号待核验 | 〔S1·条文号待核验〕 |
| 待核验条文号 / 待补录标准 | "未决事项"表行 |
| 未对全文核验 | "条文号/表号/具体条文未对全文核验" |

**清除边界**：Step 7 只清技能内容文件中的降级标注；standards-index 的核验状态字段与备注（如"待核验""待补充官方来源"）属索引记录，由 Step 6 更新，不在清除范围。裸词"待核验"不得作为清除模式——它是索引 schema 的合法状态枚举值（interface-contracts verification_status），裸匹配会误伤治理文件。

**零断言验收**：清除后对清单中每个模式在活跃文件范围重新 grep，须全部零命中；任一残留即视为清除未完成。

**历史草稿与过程报告不改写**（draft A/B 层、阶段报告、策划方案保持原样）。

## 已知错误库（交叉验证锚点）

核验与复核时高频复现的错误，遇到直接对照：

- GB 55030 实施日期是 2023-04-01，勿写成 2021
- 整体浴室应引 GB/T 36491-2018，非 CJ/T 164
- 耐火极限表出自 GB 50016-2014(2018年版) 表 5.1.2，非 GB 55037
- JC/T 882-2001 已废止；GB 45671-2025 代替 JC 1066（2025-11-01 实施）
- T/CSUS 03-2019 / T/CSUS 48-2022 名称以官方封面为准（曾因 QA 误改全链回归）
- GB 55030 优先范围限于其公告所称现行工程建设标准
- 封面自标「（征求意见稿）」的副本不得作发布稿凭据（CG-20260927-008：98 页征求意见稿曾被首轮误登为条文级核验；封面三要素见 P0 硬前置）
- Windows 控制台 GBK 乱码不得径判文本层缺陷（CG-20260927-008：四抽取器实跑全份可读、U+FFFD 命中 0；先查控制台编码）

## 验收清单

- [ ] 封面页 p001 已强制渲染（dpi≥150）并逐字目视，三要素记录在案（预检记录已产出）
- [ ] 「文本层不可用」类判定附最小验证三件（抽取器实跑/U+FFFD 命中计数/控制台编码自查）
- [ ] 采信类授权已回读既有否证并逐条显式处置
- [ ] 六要素完整且标注核验来源（封面/公告页/官方平台）
- [ ] 每个引用点有核对表记录（含原文摘录与页码）
- [ ] S1 或"待官方核验"标注已落到 standards-index 对应行
- [ ] change-governance.md 变更日志已登记 CG 编号
- [ ] 活跃文件按 Step 7 变体模式清单 grep 零残留（若核验通过）
- [ ] 三层同步完成（转 prefab-governance-sync 验收）

## 接口契约（IC-11 接收方）

本技能是 `interface-contracts.md` **IC-11（标准复核工具/任何技能 → 标准条文核验流水线）** 的接收方。

- **请求（发起方传递）**：标准编号（必填）、官方来源线索（必填，本地官方出版物 PDF 路径或官方发布渠道线索，二者必需其一）、待核验引用点（可选，条文号/术语/限值/公式清单）、项目所在地（可选）。
- **响应（本技能返回）**：身份核验（六要素 + 版本形态）、条文核对表（条文号|核验内容|原文摘录|页码位置|结论）、核验结论（S1 确认属实/待官方核验/无法核验）、核验报告路径、未决事项（条件必返回）。
- 字段约束与 IC-11-Request JSON Schema 见 `../shared/interface-contracts.md` §4.4 IC-11。
- 官方来源线索缺失时返回"参数不足"，不得仅凭二手源发起核验（SSCV-R-P0-3）。

## 红线约束（禁止行为）

本技能红线已在全局注册表 `../shared/redlines-registry.md` §十五注册（SSCV 标识，10 条：P0×3 + P1×4 + P2×3）。摘要如下，完整定义以注册表为准：

| 编号 | 级别 | 红线 |
|------|------|------|
| SSCV-R-P0-1 | P0 | 严禁未核验即标 S1（两要素齐备方可标 S1，缺任一只能标"待官方核验"，且不单独支撑安全类 pass） |
| SSCV-R-P0-2 | P0 | 严禁提取结果未经复核对账即作核验原文（OCR/视觉提取须与原文影像逐条对账） |
| SSCV-R-P0-3 | P0 | 严禁二手源结论升级为 S1（二手源仅限"待官方核验"或参考级） |
| SSCV-R-P1-1 | P1 | 严禁跳过身份核验（六要素须从官方出版物取得并标注来源） |
| SSCV-R-P1-2 | P1 | 严禁单一二手源采信（降级链须两源印证） |
| SSCV-R-P1-3 | P1 | 严禁仅凭目录页码批量定位（须先定位实际页算偏移量） |
| SSCV-R-P1-4 | P1 | 严禁静默跳过不存在的条文（疑似臆造须显式记录"不存在"并全链删除） |
| SSCV-R-P2-1 | P2 | 必须记录原文摘录与位置（含核验来源标注） |
| SSCV-R-P2-2 | P2 | 必须登记并同步（standards-index + change-governance + 层级同步） |
| SSCV-R-P2-3 | P2 | 必须零残留验收（按变体模式清单 grep 复检零命中） |

## 环境依赖声明

本技能流水线依赖以下运行环境，缺失时须降级并明示：

| 依赖 | 用途 | 缺失时降级 |
|------|------|-----------|
| PyMuPDF（fitz） | 扫描版 PDF 渲染（dpi≥150）为影像供视觉读取；身份预检工具（`程序文件/sscv_identity_precheck.py`）的封面渲染与文本层实测同赖本依赖 | 无法处理扫描版，仅能处理文本版或转人工；预检工具退出码 2 fail-closed |
| Read 视觉读取 | 对渲染影像识别封面/公告页/条文 | 同上 |
| pdfplumber | 文本版 PDF 直接提取 | 改用 PyMuPDF 文本提取或转人工 |
| chrome headless（`--dump-dom`） | 知乎等反爬页面二手源抓取 | 换用其他二手源或标注无法核验 |
| curl / WebFetch | 建标库等二手源直抓 | 同上 |
| 浏览器自动化 | 头条系等强反爬二手源 | 同上 |

二手源依赖仅在无官方文本时启用（见 Step 4），且结论受 SSCV-R-P0-3 约束。

## 输出物路由

核验产出统一路由，避免散落在临时目录：

- **核验报告**：写入项目仓 `成果/标准核验/标准编号_核验报告_YYYYMMDD.md`（含六要素、条文核对表、结论、未决事项）。
- **索引登记**：核验结论写入 `_专题_技能合集策划/standards-index.md` 核验记录表与状态字段（见 Step 6）。
- **治理登记**：在 `_专题_技能合集策划/change-governance.md` 登记 CG 编号。
- **预检记录**：工具 `程序文件/sscv_identity_precheck.py`（仓内程序文件）产出的身份预检记录随核验报告保存至 `成果/标准核验/`；封面渲染影像落工具 `--out` 目录。
- 过程性中间产物（渲染影像、抓取原文）不进入 `成果/`，核验完成后按文件管理规范处置。

## 协同边界

- 本技能管"从标准 PDF 取真"；技能文件内引用表格的对表复核由 prefab-standards-reviewer 负责。
- 入库发布的三层同步与 git 提交由 prefab-governance-sync 负责。
- 核验发现引用错误后的修复定级（S/A/B/C）按 change-governance.md 执行。
