---
id: question-gen-v2-adversarial-audit
title: question-gen v2 设计对抗审核 — 六路独立核验（四层病灶闭合度 + 契约一致性）
type: review
created: 2026-07-15
status: blocking
target: research-wiki/designs/2026-07-15-question-gen-v2-grounded-contrastive-design.md
---

# question-gen v2 设计对抗审核

**方法**：6 路独立审核官（5 Claude + 1 Codex），互不通气，各自站"找漏洞"立场对抗式核验。5 路死磕 finding 四层病灶各一层 + QuestionUnit 契约一致性；1 路 Codex 端到端质疑质量。

**总判定**：**设计不能保证出题质量，不应直接进 writing-plans。** 四层病灶无一层 CLOSED；②不可翻转侧与契约层各带 Critical 级结构性缺陷（设计返工，非实现补丁）。

## 四层闭合度矩阵

| 层 | 判定 | 最致命残留 | 来源 |
|----|------|-----------|------|
| ① grounding 循环自证 | PARTIALLY | 换独立 VLM 只断"同模型自评"一半；打分仍黑盒标量、无帧证据可溯源（I1 自认）。时序逆序干扰项穿透 grounding/NLI/快解/后置四门 | ①+Codex |
| ② 结构性捷径 | **不可翻转侧 OPEN/Critical** | 数学必然：单维反事实互不重叠→正解=逐维众数→逐槽投票 100% 命中，且满足全部硬约束。病灶②被从"偏置"升级成"数学保证" | ②+Codex |
| ③ 歧义控制 | PARTIALLY（实操近 OPEN） | 现网 gate 仍 Phase A 松绑版且 multi_true 判官 text-only 不看帧；镜像模式引入两条新歧义路径（翻转轴模糊、搬运干扰项未复检） | ③ |
| ④ 对抗信号位置 | PARTIALLY | 前移的是"便宜替身"，完整 agent 仍后置且单裁判；回灌环无一致性校验+无收敛上界（踩 findings 漂移警告） | ④ |
| 契约一致性 | **BROKEN** | 设计只覆盖采样/分批/聚合 3 处，真实代码另有 5+ 处按单题拆 pair；镜像"即用即弃"架构与"生成期双入库"互斥=重写非改造 | 契约 |

## 跨审核官强收敛根因（高置信）

| # | 根因 | 指认者 | 硬伤 |
|---|------|-------|------|
| R1 | **MiniMax 单模型多角色=系统性单点** | ①③④+Codex | grounding打分+快解探针+歧义门三合一；仅歧义门加 NLI 第二路，grounding/快解裸奔→某类视频系统性偏差三门同向失效。缺 AdVQA 多裁判一致性门 |
| R2 | **不可翻转 4 子模式结构性未修** | ②+Codex | 逐维众数数学证明；覆盖 AR 题 60-70% 主体 |
| R3 | **契约拆 pair 远超设计覆盖的 3 处** | 契约+Codex | pools.py 三池切分把 P/Q 劈到不同池→AR pair 几乎全变孤儿被剔；correctness 逐题 dict 与 pair 双向 AND 口径无法共存→污染进化 |
| R4 | **验收指标自我确认 + 缺结构性/人工指标** | 全部+Codex | I4 测"模型是否用了捷径"非"捷径是否结构存在"；MiniMax 相关指标全同源自证。缺帧错配安慰剂测试/逐维众数命中率(纯算法)/人工双正解率κ/槽位卡方/pair 关系可解率 |
| R5 | **回灌环+补生成 recall 泄漏** | ③④ | 回灌无一致性校验+无轮次上限→漂移；补生成"重试直到通过"+门非确定+无 quarantine→precision-over-recall 稀释回 recall |

## 逐层高severity 残留（矩阵未尽项）

### ① grounding
- V1 打分仍 `list[float]` 黑盒，observation 无帧证据/rationale/帧号（`distractor_selector.py` `_score_options`）——换 MiniMax 不改此数据结构。
- V2 粗档下区间选择退化为平局任意 top-3，near-miss 甜区失效；扩池无梯度救不了。
- V4 快解探针非对称谬误：弱解题器"解不出"被当"题够硬"绿灯。
- V5 时序逆序干扰项被 NLI 判非等价放过、被时序弱的 MiniMax 判非双正解放过。

### ② 结构性捷径
- C1（Critical）逐维众数：见 R2。修法=放弃 hub-and-spoke，改平衡区组/因子设计（每维每值出现次数相等→逐维众数无定义），加纯算法硬校验 `argmax(逐维众数)==正解→fail`。
- C2（高）镜像对 flip 反相关把双向 AND 从 1/16 打回 1/1（单个"事件时序"文本线索通杀 P+Q）；bag-of-words 是"尽量"软约束未强制。
- C3/C4/C5（高/中高）evidence_gap 的"无法确定"恒定文本靶、semantic_rigidity 字幕匹配反向信号、premature 最终段文本靶——单维反事实改不掉这些语用/类别差异。
- C6（中）恒 A 正解槽位偏置无约束（Codex 亦独立指认 I1）。
- C7（中）NLI 的 embedding 回退是假绿灯，测不出语义泛化蕴含。

### ③ 歧义控制
- R1 视觉双真+文本独立（拿杯子/放盘子同框）：NLI 放行，视觉侧唯一裁判 MiniMax 漏判即穿门。
- R2/R3（高，v2 新引入）镜像翻转轴模糊→P/Q 各自可辩护；搬运进 Q 的干扰项未在翻转题干下重新 grounding 复检。
- R6（实操高）现网 `gate_multi_true.md` 仍松绑版；`_gate_multi_true` text-only 不看帧，"视觉双真"结构上无输入通道。

### ④ 对抗信号位置
- R1 便宜探针能挡的题 ⊂ 完整 agent 能挡的题，差集=结构性/多步 shortcut，仍靠后置。
- R2 回灌环缺一致性校验+无 `max_regen_rounds` 上界。
- R4 后置难度判定单裁判，缺 AdVQA 多裁判一致性；"agent 恰好能解/不能解"的偶然性主导难度标签。

### 契约（BROKEN，设计未覆盖的 5+ 处）

| 处 | 文件/函数 | 拆 pair / 错口径 | 严重度 |
|----|----------|-----------------|-------|
| 三池 progressive exclusion | `pools.py::build_pools`/`_sample_excluding` | 拆 pair 到 test/val/diag→几乎全变孤儿 | Critical |
| per-category train/val 切分 | `pools.py::_split_one_category` | 拆 pair 到 train/val | Critical |
| batching 对/错桶分离（先于 FFD） | `batching.py::_select_mixed_by_task_type` | 按逐题 correctness 把 P/Q 分进 correct/error 桶并抽样丢弃 | Critical |
| gate 信息量阶梯 | `gate_ladder.py`+`runner._run_gate_validation` | 逐题跑 gate，双向 AND 不生效，逐题分污染 e-process/进化 | High |
| pools.json 冻结/解冻 | `pools.py::_q_to_dict`/`_dict_to_q` | 丢 pair 三字段→孤儿 | High |
| 作弊门逐题剔除 | `adversarial_filter.py::run_cheater_gate`/`write_final_bank` | 半剔成孤儿 | High |
| correctness dict 逐题键 | `runner` 6+ 处消费 | pair 双向 AND 无处安放，与逐题 predictions 口径不自洽 | High |
| 镜像即用即弃架构 | `adversarial_filter.py::generate_mirror_question` | `_mirror`后缀/临时 pair_id/不入库，与"生成期双入库"互斥=重写非改造 | High |
| 非 AR byte-identical | 混合池 `rng.sample` | unit 折叠改变 population 长度→非 AR 选择漂移，破坏铁律 | Medium-High |

## 必须返工的设计条目（按优先级）

1. **§4.1.B 推倒重来**（R2, Critical）：hub-and-spoke → 平衡区组/因子设计 + 逐维众数硬校验。
2. **§4.2/§4.4 补第二独立视觉裁判 + 修快解探针非对称**（R1, Critical）：grounding 打分带帧证据核验 + 第二 VLM 交叉（qwen/MiniMax 多模态看帧，非 CLIP 几何）；快解探针要求 solver 先证胜任；歧义门补第二视觉裁判凑多裁判。
3. **§5 契约大幅扩写**（R3, Critical）：采样上移 pools.py（三池/train-val 以 unit 为原子）；新增 unit 粒度 correctness 视图与逐题 dict 分离；序列化补 pools.json；作弊门 unit 粒度剔除；gate_ladder pair 口径。
4. **§2/§4.5 如实标注镜像是重写**（R3）：给持久 pair 落库 schema。
5. **§4.4 multi_true AR 变体吃帧**（③）：VLM 看真实帧；先落地收紧 rubric；镜像对增设翻转轴清晰度门 + 干扰项翻转题干下重新 grounding。
6. **§4.3 回灌环加独立一致性校验+收敛上界；补生成加 quarantine**（R5）。
7. **§4.1 I4 验收指标重构**（R4）：补纯算法结构性指标 + 人工/异构审计 + 帧错配安慰剂测试。

## 关键约束修正

- **grounding 不需要 CLIP**：排除的是专用图像嵌入模型（CLIP/SigLIP 太难装配）；VLM 多模态（qwen/MiniMax 直接看帧+文本）可用。故"第二独立视觉裁判 / multi_true 吃帧 / grounding 帧证据核验"均可用 VLM 多模态落地，只是拿不到几何相似度。

## 反自证验收指标清单（R4 落地）

| 指标 | 靶向 | 手段（须非同源自证） |
|------|------|---------------------|
| 帧错配安慰剂测试 | ①虚假 grounding | 喂错误视频帧打分，分数须显著坍塌 |
| 逐维众数命中率 | ②C1 | 纯算法机械投票，阈值≈0.25 |
| 答案槽位卡方 + pair 槽位反置率 | ②C6 | 纯统计 |
| pair 关系可解率 | ②C2 | P+Q 一起喂盲答器+时序排序规则解法，须≈1/16 |
| 双正解率 + 裁判间 κ | ③ | 双 VLM 视觉裁判 + 求解器分歧探针三源投票，基线 33%→阈值≤5% |
| 难/烂混淆矩阵 | ④ | 人工/强裁判双标签，对照纯 Phase B 基线 |
| 难度判定翻转率 | ④R4 | N 次独立 agent 试答，测判定稳定性 |
| 前移拦截覆盖率 | ④R1 | 后置剔除题里"本应生成端拦下"占比 |

## 相关
- 设计: [2026-07-15-question-gen-v2-grounded-contrastive-design.md]
- 诊断: [2026-07-15-question-gen-v2-diagnosis-and-strategy.md]
