N1d 子窗口完成报告:评测与奖励 + 关于页(窗口 N · 4/5)

窗口:N-d(execution-plan §六.十八 11-12)|日期:2026-08-19 依据:demo-redesign-design v0.3(§3.4 评测页四 tab / §3.5 关于页 / §4 对照表 / §7 素材清单)+ demo-n-window-ledger §12.1(冻结验收清单)+ 台账 §12 引言(demo/data 键名钉死)+ 各窗口报告(F1/M1/E4/K1/L1/G-2)+ site-design §6.2(口径纪律) 验收方式:demo 设计中枢独立验收(不轻信自检:独立重算 + AppTest 实跑 + 真实 浏览器视觉抽查 + git/CI 检查)


1. 交付总览

内容
页面实现 demo/pages/03_benchmark.py(评测与奖励四 tab 完整实现)+ demo/pages/04_about.py(关于页完整实现)
数据层增补 export 脚本新增提炼 reward_summary.json / engineering_summary.jsoneval_summary.json 增补成本字段(¥2.55 / ¥0.43);verify 增补 3 节(成本 / reward / 工程数字)
样式 theme.css 增补 N-d 区块(tabs 深色化 / 统计卡 / 堆叠条 / spike-in 条 / 运行卡 / 关于页样式 / 链接配色修复)
零改动 src/tests/ui/(git diff 确认)
提交 单 commit,只含 demo/ + pyproject.toml(S4 注释同步)+ docs/ 报告与登记(推送纪律 §六.7)

2. execution-plan §六.十八 打勾

3. 台账 §12.1 冻结验收清单逐项核对

# 验收项 结果 证据
1 benchmark tab:60 任务摘要 + IRR κ 出处注明 + gap 0.046 + M 后 0.0449 + 层间比较;全部读 demo/data 零硬编码 页面全部数字来自 data_index.benchmark_summary()(stat 卡 recall 0.820 / precision 0.7455 / F1 0.7810 / IRR κ=0.8336·623 决策·一致率 93.58%,n_decisions/n_gold_error/n_tasks_run 数据派生);gap callout 读 gap.delta / gap.delta_after_m / gap.in_tolerance / gap.tolerance_interval(+0.046 / +0.0449 区间内无告警);strata 两组(act 3 档 + difficulty 3 档,含 CI/n)+ comparisons 表(bootstrap p + Holm 校正 p,全部校正后 p≥0.05 如实呈现);κ 出处由摘要 JSON note 注明(irr.note caption 展示,F1 报告)
2 平台对照 tab:决策集差异可视化(10X 多双联体/UMI/批次);63.7/66.7 禁止混写;数字 = golden_summary entries 五份黄金对照表(id/平台/分数·verdict/决策数/维度分/critical issues 全部读 golden_summary);口径纪律 callout 页首(63.7 仅限 10X-B expected / 66.7 仅限 Smart-seq2-C,site-design §6.2);决策集差异两栏卡 + 构成表(共享 10 类型 + 高亮 doublet_detection 10X 独有行,出处 L1 §4.3/§5)
3 reward tab:映射表 {4:1.00,3:0.85,2:0.60,1:0.30,0:0.00} + -1 mask + spike-in 掉分演示 映射表读 reward_summary.mapping(L-1 mask 行灰显)+ mask 语义 callout(不参与分子分母)+ 聚合 mean/γ=0.30 + status experimental_uncalibrated 警告;spike-in 三范式条(scrna 0.85→0.2354 drop 0.6146 / deg 0.85→0.2125 drop 0.6375 / pan 0.85→0.2400 drop 0.6100),出处 E4 §三.9 + reward-protocol §七.2
4 真实评测档案 tab:两次运行(G 30.0 K1 重评 L1×19/L3×1 / L-b 30.0 L1×4/L2×1)+ 成本 + 定位声明 + R0 运行卡读 eval_summary runs 条目级 provenance(分数/verdict/level_counts/note/provenance);成本读 cost 字段(¥2.55 agent-eval-report §2 / ¥0.43 L1 §7.2,均平台余额差权威口径);定位声明 callout(确定性脚本非 LLM + 真实 LLM n=1 诚实声明);R0 卡读 r0_summary(ρ=0.9747 · PASS · detail · limit)
5 关于页:一句话 + 三价值层 + 工程数字(274 测试/CI 双矩阵/golden 0 差异/三元组快照)+ 路线图 + MCP + takeaway + 对照表 见 §4 逐项
6 工程纪律:pytest 全绿 + golden 0 差异 + CI 云上绿 + 推送纪律;demo/data 增补走 export 见 §7
7 skill:design-taste-frontend + web-design-guidelines 走查(🔴=0)+ code-review 双轴 见 §5/§6
8 报告 + execution-plan 打勾 本文件;execution-plan §六.十八 N-d 11-12 已勾

4. 关于页内容(台账 §12.1 第 5 项逐块)

内容 出处
项目一句话 “把单细胞分析方法学审计自动化:管线拆成一条条决策,逐条对照可执行规则给出等级与依据——分数可复现、结论可追溯、证据可展开” 设计 §3.5
三价值层 01 lint 层(审得准)/ 02 benchmark 层(信得过)/ 03 reward 层(可训练),白话顺序叙事 设计 §3.5
工程数字 274 测试(读 engineering_summary,pytest –collect-only 实测)/ CI 双矩阵 3.10+3.12 / golden 0 差异(20 轨迹 137 决策)/ 三元组快照(current_snapshot 运行时取) engineering_summary + current_snapshot
路线图 已做 G-2~M 七窗口 + N 窗口(8 条);排期项 6 条(L3/L4 结论级审计、多 Agent 对比、h5ad 在线分析、reward RLHF 校准、PRM、Docker/线上部署)——如实声明 execution-plan + E4 §七 + L1 §8
MCP 说明 文字(bio-audit-mcp v1.0.0,三工具 audit_decision/audit_trajectory/report)+ JSON-RPC 代码示例;不作演示页 docs/mcp-contract.md
takeaway 三句话(逐条标错 + 可追溯可复现 + 系统自身被评测) 设计 §2 观众③
对照表 旧痛点×新手段 5 行(白底平铺→深色分层 / 默认控件→定制组件 / 一条条跑→多选对比 / 无来源→快照徽章 / 口径混乱→分列纪律) 设计 §4
链接 文档站 / 仓库 / 快速开始(青色可点击链接,修复 Streamlit 默认深蓝覆盖) site-design §3

5. 数字核对表(独立重算:verify_demo_data.py 11 节全 [OK] + AppTest 渲染核对)

口径 页面显示 demo/data 摘要 源报告/产物重读 一致
recall 0.820 0.82 benchmark_run_baseline.json aggregate
precision 0.7455 0.7454545454… 同上
F1 0.7810 0.7809523809… 同上
IRR κ / α 0.8336 / 0.8335 κ=0.8336 · α=0.8335 F1 报告锚点(623 决策 · 一致率 93.58%)
gap +0.046 → M 后 +0.0449 delta 0.046 / delta_after_m 0.0449 benchmark_run_baseline.json gap + M1 报告 +0.0449 锚点
决策构成 correct 477 / edge 96 / error 50 / 合计 623 n_gold_correct/n_gold_error/n_decisions benchmark 摘要 + F1 报告
strata deg 0.4431 / pan 0.6264 / scrna 0.5757;难度 0.6335/0.5373/0.3844(含 CI·n) strata.act / strata.difficulty benchmark_run_baseline.json
黄金对照 ×5 80.0 / 69.0(原始 63.0 并存)/ 66.7 / 80.0 / 63.7(含维度分、critical issues、口径 note) golden_summary entries windowI/L 报告重读
成本 G ¥2.55 eval_summary cost 2.55 agent-eval-report.md §2 锚点(余额 39.53→36.98)
成本 L-b ¥0.43 eval_summary cost 0.43 L1 §7.2 锚点(余额 22.53→22.10)
reward 映射 4:1.00 / 3:0.85 / 2:0.60 / 1:0.30 / 0:0.00 + L-1 mask reward_summary.mapping/mask reward-mapping.md §2/§3 逐行锚点
spike-in scrna 0.85→0.2354(drop 0.6146)/ deg 0.85→0.2125(0.6375)/ pan 0.85→0.2400(0.6100) reward_summary.spike_in E4 §三.9 + reward-protocol §七.2 锚点 + drop 数值自洽(=0.85−after)
真实评测 ×2 G 30.0(L1×19/L3×1,K1 重评)/ L-b 30.0(L1×4/L2×1) eval_summary runs 条目级 windowK1_reeval / windowLb_analysis 重读
R0 ρ=0.9747 · PASS r0_summary.key_metric scrna_r0.json(K/M 后版本)
工程数字 274 测试 engineering_summary.n_tests pytest –collect-only 实测 274

口径分列(site-design §6.2):63.7 仅限 10X-B expected 口径(页面 callout + 摘要 note);66.7 仅限 Smart-seq2-C 口径;29/30 双口径注沿用 N-b 实现;成本双口径 (余额差权威 vs usage 换算 ¥0.90)以余额差为准并留档说明。

6. skill 应用记录

6.1 design-taste-frontend 执行(页面生成)

6.2 web-design-guidelines 走查(🔴=0)

走查方式:真实浏览器(Playwright headless Chrome)+ 全页/元素级截图 + AppTest DOM 断言交叉验证。五维结果与问题闭环:

维度 结果
字体排版 ✅ 等宽数字 + 三层字重层级;中文混排行高 1.6;无 <14px 正文(最小 0.66rem 仅徽章)
间距节奏 ✅ 8px 网格一致;卡片 10px 圆角;组间距一致
交互反馈 ✅ tabs hover/active 态(琥珀下划线);链接 hover 变色;无新增按钮
色彩对比 ✅ token 一致;正文 #e5e7eb on #0f1115 ≈ 13:1;链接青 #22d3ee
布局层级 ✅ 主次分明;两栏等高;窄屏 1100px 表格纵堆叠

问题闭环(全部修复后复验):

🔴 = 0。

6.3 code-review 双轴审查(Standards vs Spec 分开展示)

审查员 A(Standards 轴)与审查员 B(Spec 轴)独立子代理并行、分开展示、不合并 裁决;意见闭环如下(采纳/驳回逐条记录)。报告见 §8。

(§8 填写闭环记录)

7. 工程纪律核对

7.1 推送与 CI 云上结果

8. 双轴代码审查闭环记录

审查员 A(Standards 轴,构建质量)与审查员 B(Spec 轴,需求符合性)独立子代理 并行审查(各自实跑 verify/ruff/collect-only 佐证)、分开展示、不合并裁决; 意见闭环如下(采纳/驳回逐条记录)。

8.1 Standards 轴 findings 与闭环(🔴=0)

# 严重度 finding 闭环决议
S1 🟠 Tab 4 L 分布渲染含 ×0 空档(cellvoyager_g level_counts 含 0 档),与全 demo「0 档省略」约定冲突 采纳03_benchmark.py L 分布加 int(v) > 0 过滤(与 result_view.level_counts_label 同约定);页面实测 G 显示 L3×1 · L1×19
S2 🟠 R0 状态徽章类名笔误:ba-flow-chip ba-flow-final 不存在(theme.css 只有 ba-flow-chip-final),绿色最终态样式丢失 采纳:改 ba-flow-chip ba-flow-chip-final
S3 🟠 export/verify 的 subprocess(pytest –collect-only)未检查 returncode,失败会静默吞或裸 traceback 采纳:两脚本补 if proc.returncode != 0: raise/check(带 stderr 尾巴)
S4 🟠 export/verify 新增 pytest 硬依赖,与 pyproject「纯 stdlib」注释冲突 采纳:pyproject.toml:35 注释同步更新(pytest 属 dev extra,构建 demo/data 需已装)
S5 🟠 平台对照卡硬编码分数(80.0/69.0/66.7/63.7 等)与「零硬编码」承诺冲突 采纳:卡片 prose 改为「分数·verdict 见上表」,仅保留决策集事实(审查前已先行修复)
S6 🟡 锚点正则双份复制(export vs verify,散弹式修改) 驳回(说明):verify 是 N1a 定稿的独立重读核对(S4/S5 决议),共享锚点模块会耦合两脚本、丧失独立核对价值;verify 用更严的 :.4f 精确锚是对 export 的交叉校验,属设计特性
S7 🟡 cost 键防御不对称(页面 r.get("cost", {}) 后直接 cost["amount"] → KeyError) 驳回(说明):demo/data 由 manifest 指纹钉死,缺 cost = 数据缺陷,应响亮失败而非静默降级
S8 🟡 页面无除零/结构兜底(n_total=0、ci 缺键) 驳回(说明):数据被 manifest 钉死(623 决策等锚点断言),强耦合即防漂移设计
S9 🟡 _LEVEL_SEMANTICS 与 result_view.LEVEL_META 文案重复 驳回(说明):前者是 reward 映射语义(reward-mapping.md §2 宪法),后者是 level 徽章语义,职责不同;宪法变更走评审流程
S10 🟡 死 CSS .ba-about-links(改链接后无使用) 采纳:theme.css 移除
S11 🟡 关于页 CI/golden 卡显示值硬编码(3.10+3.12 / 0 差异) 采纳:export 增补结构化字段 ci_matrix_versions(ci.yml 锚点解析)+ golden_diff,页面派生显示
S12 🟡 st.code JSON 示例含 // 注释(JSON 不支持) 采纳:移除注释行
S13 🟡 性能:四 tab 全执行 + 六份 JSON 重读 驳回(说明):文件均 <10KB,与既有页面同构;数据量增长时再上 cache_data

8.2 Spec 轴 findings 与闭环(1 🔴 + 2 🟠 + 5 🟡,全部闭环)

# 严重度 finding 闭环决议
F1 🔴 benchmark tab 硬编码 623/50/60(台账 §12.1 第 1 项原话「零硬编码」) 采纳bm["n_decisions"] / bm["n_gold_error"] / bm["n_tasks_run"] 派生(审查前已先行修复,机制违规非数据错误)
F2 🟠 平台对照卡重复硬编码分数与决策数 采纳:同 S5(卡片去字面量,主表已全读 entries)
F3 🟠 verify/export 默认调用在中文 Windows(GBK)崩溃:¥ 消息 UnicodeEncodeError,§9-11 无法执行(独立实跑复现) 采纳:两脚本 main() 开头 sys.stdout.reconfigure(encoding="utf-8", errors="replace");修复后默认调用(无环境变量) 11 节全 [OK] 实测通过
F4 🟡 数据集元数据硬编码(7,186 cells × 22,454 genes · 32 患者 等,L1 §3.1/§5 出处) 驳回(说明):spec 未规定这些叙事性数据进 demo/data(台账 §12.1 第 2 项只要求 platform/n_decisions/维度分/critical_issues 读 entries);页面 caption 已注出处;如需入数据走 export 后续窗口
F5 🟡 gap callout 硬编码 ±0.10 采纳:读 gap.tolerance_interval(数据现成)
F6 🟡 「κ 出处 F1 报告 §F2」chip 冗余硬编码 采纳:移除 chip,出处由 provenance note + irr.note caption 承担(摘要 JSON 内已注明)
F7 🟡 关于页工程卡显示值硬编码 采纳:同 S11(ci_matrix_versions / golden_diff 结构化)
F8 🟡 level 语义文案硬编码(_LEVEL_SEMANTICS) 驳回(说明):同 S9(宪法文案,非数字;变更走评审)
F9 🟡 export 新增 pytest 子进程强依赖 + 台账状态未更新 部分采纳:S4(pyproject 注释同步);台账状态表更新归 demo 设计中枢(N1a C3 裁决,不属执行窗口)

8.3 闭环后最终验证

双轴结论:Standards 🔴=0(5 🟠 + 6 🟡 全部闭环,1 驳回说明);Spec 符合度高, F1-F8 全部闭环(3 驳回均附理由)。无阻塞项,意见闭环率 100%。

9. 遗留与说明(给 N-e)

  1. demo/data 由 9 → 11 文件(新增 reward_summary / engineering_summary); N-e 全站走查时按新清单核对。
  2. 成本口径双记录(G 报告 §2 权威余额差 vs usage 换算;L1 §7.2 同款)——页面以 余额差权威口径展示,usage 换算留档于 eval_summary cost.source 注。
  3. 工程数字 274 为 pytest 实收集(export 时实测)——若后续窗口新增测试,重跑 export 即自动更新,页面无硬编码。
  4. 「未验证」节点色等跨窗口待办延续(台账 §5),N-e 收口。
  5. 走查截图存于本机临时目录(不入仓库);N-e 的 image-to-code 预览页将重截。

报告完毕。窗口 N-d 执行计划快照与 execution-plan 打勾完成;git commit/push 与 CI 云上确认见 §7/§7.1。