窗口 G-2 补充报告:评测缺口修复(declared 注入 + 规则平台键放宽 + 重评)
日期:2026-08-16(窗口 G-2) 性质:对窗口 G 真实评测的修复与重评(零成本——只跑本地审计引擎 + 已有运行产物, 不重跑 Agent、不手工编轨迹) 宪法:
docs/protocols/agent-eval-protocol.md(v1.0 + §4.1 declared 修订,本报告为 G-2 补充) 对应验收:execution-plan-v1 §六.十二 G2-a/b/c/d(13 项,本窗口已冻结) 主报告(旧版留档):docs/migration/agent-eval-report.md(窗口 G,2026-08-16,不修改结论) CI 状态:GitHub Actions 双矩阵(3.10/3.12)全绿(push 0150a53,run 31891058554)
1. 背景与问题
窗口 G 真实评测链路全通(M1×M3 20/20 一致,成本 ¥2.55),但分数全 L-1 不可用:
规则 required_context 硬依赖 sequencing: 10X_scRNA_seq,采集三级可信源均拿不到
→ 键 unverified → 规则不匹配 → 全部”无法评估”。暴露规则层与采集层的接口缺口
(agent-eval-report.md §7/§8 修复清单:declared 注入 + 规则平台键评估)。
分水岭事实(G2-b 项 5,查证定案):GSE115978(Jerby-Arnon 2018, Cell, PMID 30388455)
为 Smart-seq2(GEO 官方 Overall design 原文:”profiled with a modified full length
SMART-Seq2 protocol”)——因此 declared 注入 10X_scRNA_seq 是错的;正确做法 =
declared 注入 smartseq2 + 规则平台键放宽接受 smartseq2。查证过程与存档见
docs/migration/G2b-platform-key-review.md §1。
2. G2-a:declared 上下文注入(采集层)
四级可信源定稿:call_arg > data_metadata > declared > unverified。
| 项 | 内容 |
|---|---|
| declared 来源定义 | 只允许来自评测者/数据事实——运行宪法/评测配置注入(如数据集平台);与 Agent claim(M1 声明)严格区分:Agent 上报的键永远不进 declared(纪律 1) |
| 链路落地 | M3Parser(declared=...)(已有参数,语义修订为评测者注入);make_cellvoyager_hook(declared=...)(hook 链路);CLI parse-notebook --declared(已有)+ cross-validate --declared(本次新增) |
| missing 交互 | declared 提供 schema 键 → 该键进入 context(context_trust=declared),不再 unverified(G2-a.2) |
| 信任排序守卫 | declared 不能覆盖 call_arg/data_metadata(严格排序,禁止跳级) |
| 声明文件(重评用) | cellvoyager-outputs/reports/gse115978_declared.json:{"sequencing": "smartseq2", "data_category": "raw_counts"}(含来源注记,评测者署名) |
| 测试 | tests/test_declared_eval.py 12 项:declared→规则匹配(验收项 3 直接测试)、缺键仍 L-1 回归守卫、10X 仍命中、信任排序、unverified 清除、CLI 接线 |
验收项 3 实测:qc_filtering + declared sequencing=smartseq2 → Q1.1-QC-001 匹配 → L1
(此前同输入为 L-1 无法评估)。
3. G2-b:规则平台键审查 + 修订(B5 三闸 + semver)
审查报告(22 条 scRNA 规则逐条判定):docs/migration/G2b-platform-key-review.md。
汇总:过强放宽 17 条(sequencing 16 条 + N1.1 data_category 1 条);D1.1 双联体
保留 10X 专属(纪律 5:双联体是液滴平台问题,Smart-seq2 板式 FACS 分选无此前提);
无平台依赖 4 条(A1.1-API + S1.x 一致性族)不动。
| 修订 | 内容 |
|---|---|
| 规则 YAML | 17 个文件:sequencing: [10X_scRNA_seq, smartseq2];N1.1 追加 data_category: [umi_counts, raw_counts](Smart-seq2 全转录本 = raw_counts) |
| 引擎 | required_context 列表 = any-of 语义(RuleRegistry,engine 0.2.0 → 0.2.1) |
| 采集配套 | sc.tl.leiden/louvain 签名 context_fixed: {graph_type: SNN}(工具定义语义,C1.1 真实前置条件在采集层可提取) |
| ruleset | 1.1.1 → 1.2.0(generate_manifest 重算 43 文件哈希;17 个规则文件哈希变更记入 golden asset_manifest change_log,18 条) |
| B5 三闸 | bio-audit ruleset-validate:清单 PASS / 冲突 PASS(0)/ golden PASS(0 差异) |
| golden 漂移 | 0 差异,基线未更新,C4 未触发——放宽是纯加性(20 轨迹 137 决策全用 10X/umi_counts,命中集合逐决策不变);若未来轨迹用 smartseq2/raw_counts 将从 L-1 变为可评分,属预期行为变化(G2-c 已验证) |
4. G2-c:重评(用已有真实运行产物,不手工编轨迹)
方法(零成本):cellvoyager-outputs/scripts/analyze_run.py(窗口 G 原分析脚本,
新增 --declared 与 --no-verdict-store 参数)对既有产物重跑——
① 重解析运行 notebook(GSE115978_melanoma_analysis_1.ipynb,19 cells,未改动);
② 从 WAL/verdicts 重建 M1 声明(20 条,未改动);③ 交叉验证(四类判定);④ 重建
final 轨迹(M3 事实 context + declared)→ run_audit 打分。不重跑 Agent(省钱),
不手工编轨迹(纪律 4)。原 final_trajectory_v2.json 已备份
(cellvoyager-outputs/backups/final_trajectory_v2_pre_g2.json,SHA256
C54E76E22321B0A482B41DC9FE410FFCBDE65EB4A35E53209331BBF6AE12F960)。
结果(报告:cellvoyager-outputs/reports/windowG_reeval.json):
| 指标 | 窗口 G(修复前) | G-2 重评(修复后) |
|---|---|---|
| trajectory_score | 0.0(全 L-1 占位) | 30.0 |
| eval_verdict | needs_correction(占位) | needs_correction(有效) |
| L4/L3/L2/L1/L0/-1 | 0/0/0/0/0/20 | 0/1/0/7/0/12 |
| 交叉验证 | 一致 20 / 虚报 0 / 漏报 0 | 一致 20 / 虚报 0 / 漏报 0(不变) |
| 维度分 | — | data_handling 0.300 / method_selection 0.575(最低维主导 → 30.0) |
8 条有效评分逐条(L0/L1 清单):
| step | 决策类型 | choice | level | 规则 |
|---|---|---|---|---|
| nb01-clustering_method | clustering_method | Leiden | L3 | C1.1-CLUS-001 |
| nb01-qc_filtering ×4 | qc_filtering | hard_threshold | L1 | Q1.1-QC-001 |
| nb01-scRNA_normalization ×2 | scRNA_normalization | LogNormalize | L1 | N1.1-NORM-001 |
| nb08-annotation_method | annotation_method | manual_marker | L1 | A1.1-ANNO-001 |
L-1 清单(12 条,如实归因):immune_correlation_method ×12(Spearman)——
规则覆盖缺口:scRNA 规则集不含该类型(本体 paradigms=[pan-cancer],范式隔离设计
ontology-design §二.1);declared 齐全也无法评分。非 context 缺口、非 Agent 质量结论。
与 demo 时代 CellVoyager 结果对比(29 分 5 L0)
| 口径 | demo 时代(scrna_melanoma_cellvoyager,12 决策) | G-2 真实运行(20 决策) |
|---|---|---|
| 分数 | 29.0 | 30.0 |
| L0 | 5(no doublet / no batch / cell-level DEG 伪重复 / PCA arbitrary / …) | 0 |
| L1 | 有(如 hard_threshold QC) | 7 |
| L3 | 部分(如 Leiden) | 1 |
| verdict | blocked(含 L0) | needs_correction |
差异解读(如实,不夸大):
- 方法学取向不同:demo 轨迹是”12 步完整管线”(含双联体/批次/DEG 环节),5 个 L0 全是”跳过关键步骤”;真实运行 max-iterations=5 的 5 步分析聚焦 QC→注释→免疫相关, 未进入双联体/批次/DEG 环节——没有 L0 不等于没有风险,而是决策覆盖范围更窄 (免疫相关 12 步在 scRNA 范式下无规则可评)。
- QC/归一化/注释三处 L1 与 demo 同款:hard_threshold(固定阈值)与 LogNormalize 在两代评测中均被评为”有风险”——规则体系跨 demo/真实运行一致(信度证据)。
- Leiden 在两侧均为 L3(当前标准算法),与规则设计一致。
- 分数相近(29 vs 30)是巧合口径,不可直接比较:决策数不同(12 vs 20)、 L-1 占比不同(demo 0 vs 本次 60%)、最低维主导聚合机制不同;唯一可靠对比维度是 L0/L1 计数与规则命中(如上表)。
- demo 时代的 5 个 L0 中 3 个(no doublet/no batch/cell-level DEG)在本运行中 根本不构成决策点:Smart-seq2 无双联体前提(D1.1 10X 专属)、单样本 FACS 分选 无批次整合环节、未做 DEG。这是平台事实查证(§1)带来的评测范围差异。
5. G2-d:回归
| 闸 | 结果 |
|---|---|
| pytest 全量 | 234/234(222 既有 + 12 新增 declared/平台键测试) |
| golden 重放 | 0 差异(20 轨迹 137 决策;基线未更新,C4 未触发) |
| ruleset-validate 三闸 | 清单 PASS / 冲突 PASS(0)/ golden PASS |
| validate-ontology | PASS(冲突 0) |
| benchmark-validate 四闸 | taskset / contamination / coverage / golden 全 PASS |
| reward-validate 五闸 | PASS |
| ruff | 新增/修改代码零错误 |
| 60 任务集全局影响(benchmark-run,v1.1.0) | 与窗口 G 基线逐项一致:mean 0.5528(CI [0.4818, 0.6218] 同)、recall 0.820 / F1 0.781 / precision 0.745、edge 检出 0.667、gap Δ=0.046(区间内无告警)——放宽对任务集零影响(纯加性最强证据) |
执行计划快照:docs/specs/2026-08-13-execution-plan-v1.md §六.十二 13 项逐项打勾(G-2 完成标记)。
6. 产物清单
| 产物 | 路径 |
|---|---|
| G-2 补充报告(本文件) | bio-audit-v2/docs/migration/agent-eval-report-g2.md |
| 平台键审查报告 | bio-audit-v2/docs/migration/G2b-platform-key-review.md |
| declared 测试 | bio-audit-v2/tests/test_declared_eval.py(12 项) |
| 规则修订(17 文件) | bio-audit-v2/src/bioaudit/rules/data/scRNA/*.yaml(ruleset 1.2.0) |
| 引擎修订 | bio-audit-v2/src/bioaudit/storage/rule_registry.py(any-of)+ capture/signatures.yaml(graph_type SNN) |
| 采集链路 | bio-audit-v2/src/bioaudit/capture/{models,m3_parser,cellvoyager_hook}.py + cli.py(cross-validate –declared) |
| 重评结果 | cellvoyager-outputs/reports/windowG_reeval.json + reports/gse115978_declared.json |
| 重评轨迹 | cellvoyager-outputs/runs/GSE115978_winG_20260816_final/final_trajectory_v2.json(declared context 版;旧版备份 backups/final_trajectory_v2_pre_g2.json) |
| 资产变更留痕 | docs/specs/2026-08-13-golden-baseline/asset_manifest.json change_log(+17 条) |
7. 诚实局限
- immune ×12 仍 L-1:scRNA 范式无 immune_correlation_method 规则(覆盖缺口), 本轮不过度修(不新增规则);留待规则库按本体 backlog 生长。
- n=1 不变:LLM 随机性,分数不可复现(宪法 §9);30.0 仅描述本次运行。
- declared 边界靠流程保证:本窗口以评测者署名声明文件 + 宪法修订落地; 未来运行需运行配置显式注入,避免任何 Agent 侧回填路径。
- 双联体/批次/DEG 环节未在本运行覆盖:与 demo 的对比受决策范围限制(§4 解读 5)。
8. 窗口 K1 重评追加(2026-08-16,immune 覆盖缺口闭合)
窗口 K1(execution-plan §六.十五)落地 scRNA 版免疫相关性规则
I4.1-IMMU-001_scRNA_correlation_method(ruleset 1.4.0 → **1.5.0;本体
immune_correlation_method paradigms 扩至 [pan-cancer, scRNA],ontology 0.1.1 → 0.1.2)
后,对既有 final 轨迹(final_trajectory_v2.json,未改动,重评前已备份
final_trajectory_v2_pre_K1.json,SHA256 58A48116…)仅重跑本地审计引擎:
12 条 immune 决策从 L-1 → L1(细胞级 Spearman 相关性检验 = 伪重复,与 G1.1
同原则;文献锚定:Squair 2021 PMID 34433851 / Hollander & Wolfe 1999 / Kowalski 1972)。
结果(报告:cellvoyager-outputs/reports/windowK1_reeval.json,ruleset 1.5.0 / ontology 0.1.2):
| 指标 | G-2 重评(ruleset 1.2.0) | K1 重评(ruleset 1.5.0) |
|---|---|---|
| trajectory_score | 30.0 | 30.0(不变) |
| eval_verdict | needs_correction | needs_correction(不变) |
| L3/L2/L1/L0/-1 | 1/0/7/0/12 | 1/0/19/0/0(L-1 清零) |
| 维度分 | data_handling 0.300 / method_selection 0.575 | data_handling 0.300(不变)/ method_selection 0.339 |
| critical_issues | 7 | 19(+12 条 L1) |
如实呈现(不夸大):
- 分数不变(30.0 → 30.0):最低维主导聚合下 data_handling 0.300 仍是瓶颈维 (hard_threshold ×4 + LogNormalize ×2 全 L1),immune 12 条 L1 落在 method_selection 维(0.575 → 0.339)——覆盖缺口闭合 ≠ 分数提升, 免疫相关 12 步从”无法评估”变为”有风险(细胞级伪重复)”,构成如实变化。
- L1 而非 L3 的归因:本运行 Spearman 为细胞级相关性(Step 4/5: 1,787 个肿瘤细胞为观察单位,与 T 细胞邻近 exhaustion 评分相关)—— 按 K1 规则细胞级 = 伪重复 = L1 有风险(与 G1.1 对细胞级 wilcoxon 同原则); Spearman 本身作为方法选择是对的(L3 通道保留给样本/患者级秩相关)。
- 跨窗口一致性:agent-eval-report-g2 §7 局限 1 已消除(immune 不再 L-1), 其余局限(n=1、declared 边界、覆盖范围)不变。
- K2/K3 连锁(窗口 K-b,ruleset 1.6.0)对本运行零影响:本轨迹 20 决策 choice 全部命中词表(无兜底 L0),不涉及 t-test 族——重评数字在 K 窗口 最终状态下保持(见 K1-score-correctness-report.md §6)。