# v2.2 综合核查与修改说明

> 本页是第6步发布前验收历史，保留当时的版本、运行和未发布状态；第7步合并 / 部署请查[发布流程](publishing.md)及仓库 PR / Actions，不倒填历史记录。

本地审阅版 **2.2.0-rc.1**，2026-10-09。本步完成工程、数值、方法边界及真实浏览器功能核查，并修复发现的问题；没有提交、推送、GitHub 发布或合并。独立专家审阅、AI 测评和真人试用仍待核查。

## 当前可审阅入口

- [离线网页](index.html#published) · [六列案例验证状态](案例验证状态v2.2.md)。状态表分别记录材料、代码、数值、诊断、专家和真人，不合并成“已验证”。
- [实际复算及版本记录](assets/综合复算记录v2.2.json) · [55 个既有材料文件的身份复核](assets/材料复核记录v2.2.json)。表格、效应图和文字继续来自共同结果对象。
- [真实浏览器记录](assets/综合浏览器记录v2.2.json) · [桌面截图](assets/综合桌面核查v2.2.jpg) · [390 像素截图](assets/综合窄屏核查v2.2.jpg)。这是功能检查，不是学习效果或临床试验。
- [研究卡片](研究卡片说明v2.2.md) · [流水线 / 环境恢复](结果对象与复现v2.2.md) · [三层教学](教学路径v2.2.md) · [可计算报告](计算报告示范v2.2.html)。

## 工作区与保留范围

起点为本地 `codex/v2.2-method-reasoning`，HEAD `a8995237250e535b8342a76452f94a1529b64a64`。先读取 Git 状态并保存 139 个非忽略文件的 SHA-256 清单及原始工作区差异，保留第2–5步未提交成果。起点清单为项目本地 `build/第6步起点v2.2.json`，不是新增的统计期望值。

再次执行 `git ls-remote --symref origin HEAD`：实际远程默认分支是 **codex/clinical-stats-guide**，远程 HEAD 仍为上述提交，不能把 `main` 当作事实。未执行 fetch / pull / reset / checkout 来覆盖工作区；未改变远程状态。本版本的本地检查不代表远程 CI 已通过。

原有 10 个教学 / NHANES 输入、冻结目标、作者版本、比较快照和材料清单与 HEAD 字节一致；新增纵向目标仍为冻结 SHA-256 `8864d5d321271b669027d170cae15a2c2d8c14552a7ab4086eae931dc57a5563`。未改变任何冻结期望、舍入规则或原文容差。实际运行后的共同对象、派生表图、运行时间和来源哈希按生成流程更新；修复前产物另留本地 build 供对照。

## Standards 审阅：两项实际缺陷及修复

依据 code-review 工作流，以同一固定基线审阅工程与标准；此轴与下面 Spec 轴分开，不用通过项抵消缺陷。代码风格 / 耦合启发式是审阅判断，没有据此制造强制门槛。

| 问题 | 修改与理由 | 实际验收 | 限制 |
|---|---|---|---|
| P1：首次恢复时 bootstrap 库尚不存在，R 将其从 `.libPaths()` 丢弃 | 两个恢复脚本先建目录，再设路径；安装后重新设置和核查。增加自定义 bootstrap 路径，普通纵向恢复不借用旧分析库加载 renv | 使用两个新建 bootstrap 和分析库，分别核对 45 / 35 个锁定包及 R 4.5.2；在这两个库中重新运行分析 | 使用同一 macOS / 系统 R，项目缓存中的锁定包被复用；不是新 OS、容器或作者 2015 年环境 |
| P2：纵向冻结 / 哈希 / 分母校验使用 `assert`，Python `-O` 可移除 | 改为显式 `ValueError` 校验，保留原始函数失败、兼容适配及所有差异 | 新增优化解释器反例：篡改缺席访视数、把 DIFFERENCE 改 MATCH 均被拒绝；实际作者模型重跑后重新派生产物，`python3 -B -O scripts/纵向结果v2.2.py check` 通过 | 校验保证记录一致性，不替代数据真实性或统计专家评价 |

R 官方说明 `.libPaths()` 仅保留存在的目录；[R 搜索路径文档](https://stat.ethz.ch/R-manual/R-devel/library/base/html/libPaths.html)支持修复原因。[renv::restore 官方接口](https://rstudio.github.io/renv/reference/restore.html)允许指定 `library` 与 `lockfile`，本项目继续使用版本化自定义路径。没有更新锁文件来绕过恢复问题。

## Spec 审阅：三个要求缺口及修复

| 对照用户要求发现的问题 | 修改与理由 | 实际验收 | 边界 |
|---|---|---|---|
| 配对 + 多条件输入被映射为普通多组 ANOVA | 保留结构矛盾为待补充，要求明确重复测量、时点和预定对比；不输出普通独立多组方案 | 新增连续 / 二分类组合测试；浏览器实际提交连续矛盾输入后没有匹配方案，草案明确缺口 | 不自动替用户重写设计；仍允许导出“待补充”的讨论文本 |
| 复杂抽样分支抢先处理重复 / 聚类条件 OR | 两种结构同时存在时给专门方案待论证，保留条件 / 人群平均效应；要求论证权重层级、相关结构与方差 | 两种结构 × 三种效应层次回归案例；浏览器显示条件 OR 与“权重进入哪一层”的提醒 | 没有实现或宣称验证一个通用加权混合模型；候选需要专业讨论 |
| README“未完成真实数据分析”及当前复现说明的测试数量过时 | 当前 README 改为“两篇公共论文限定实算，另两篇未复算”；v1 / v2.0 及第2–5步记录明确标为当时状态；新增六列统一状态表，保留历史数字 | 当前文档、网页、状态 JSON 同步；状态生成器和反例测试拒绝擅自升级专家 / 真人或未运行论文状态 | 没有把历史“未执行”倒填为已完成；专家、AI、真人仍待核查 |

重要规则新增两个测试项目覆盖上述组合，并调整原配对多条件案例的预期行为。此前未知目标量、配对、不一致对、复杂抽样、重复测量、稀疏 / 零事件、预测时间缺失、单因素 P 筛选等边界仍通过。测试不是所有设计与目标量组合的穷尽验证。

最终兼容性复核还发现校验改写引入的同引号嵌套 f-string 只支持 Python 3.12。已改回兼容引号形式，系统 Python 3.9.6 的8项纵向契约及 `-O` 快照检查实际通过。只从该次实际 R 输出重新派生 builder 哈希和产物，没有再次拟合或更改数字。项目既有临床生成器包含需要 Python 3.12 的语法，因此本轮**完整及离线入口以 Python 3.12 验收**并在 README 明示；没有宣称整个项目支持 Python 3.9。

## 实际检查结果

| 类别与命令 / 操作 | 本轮实际结果 | 证据解释 |
|---|---|---|
| 工程：`npm run check:offline` | 76 个 Node 案例、30 个 Python 契约测试通过；本地链接 **243** 个、新文件命名 **108** 个通过 | 保存对象、派生视图、哈希、论文快照、课程文档、六列状态及综合运行记录核对；不拟合模型 |
| 工程：语法与差异 | 13 个网页 JS、19 个 Python、1 个 shell 入口检查通过；`git diff --check` 通过 | 不替代模型计算或远程 Linux CI |
| 构建 / 执行：C++ | 从官方 Boost Math 固定提交 `56bec1a6e230b9c401585eed4d0c7348ad2afe2c` 的源码，Apple Clang C++17 standalone 模式重新编译成功 | 源码及 archive 哈希记录，BSL-1.0；原始头文件只在忽略的 build，不作系统安装或公开复制 |
| 数值：`verify_results.py --r --cpp build/综合Welchv2.2` | Python / R / 新编译 C++ 各 10 个冻结值一致 | 相对容差 1e-9、绝对容差 1e-10；SAS 没有运行 |
| 数值：`tests/clinical-reportv2.0.py` | 7 项测试通过，R / Python 76 个摘要、缺失、检验 / 诊断值一致 | 实际 base R 调用；不是仅读旧快照 |
| 数值：修复后 targets 流水线 | 9 个目标实际完成、0 跳过：两个模拟例及四个 NHANES 限定模型，报告派生与检查 | 新 targets 状态目录；限定范围，原作者 NHANES Rmd 未执行 |
| 数值：纵向作者模型 | Logistic 原函数运行；连续原函数错误保留，单处兼容后运行；27 个选定对照仍为 22 一致 / 5 差异 | 没有改目标值制造通过；全部其他症状 / 图表 / SI 分析未重跑 |
| 数值：修复前后比较 | 557 个数值字段及相应分母、方向、目标量、缺失语义核对一致；11 个冻结文件哈希保留 | 这里的“前后”是本轮两个实际运行，不是论文新冻结的期望值 |
| 材料：只读指定文件清单 | 55 个文件的 SHA-256 与字节数一致 | 三篇原文 / SI / 勘误档案及新增纵向来源的闭合列表；不代表重读全部 SI 或执行全部补充分析 |
| 构建 / 执行：独立 HTML | 实际 R 重算，10 个冻结字段 + 4 个共同网页来源字段一致；重新生成并打开报告 | 小型原创计算示范，没有引入未经验收的 Quarto / 全套 CDISC 依赖 |
| 界面：真实本地浏览器 | 24 个记录的功能观察通过；1280 桌面、390 / 320 窄屏；无全页横溢、无捕获到的浏览器警告 / 错误 | 8 练习的错 / 对反馈、标签键盘、单选方向键、卡片缺口、提问清除、四案例共同结果、报告、状态表横滚 |

实际运行日志保存在项目本地 build：第6步单元检查 / 离线复核、首次恢复与纵向首次恢复、修复后数值 / 纵向重跑、临床实际检查、C++ 编译和三种实现核对；公开审阅范围只包含原创说明、既有汇总产物和上述机器可读验收记录。网页是静态文件，没有 `npm build` 这一前端打包入口；实际构建是报告 / 表图生成与 C++ 编译，不虚报一个不存在的命令。

## 实际文件范围

与第6步起点的139个文件相比，**112个未变、27个按目的修改、13个新增、0个删除**。本地 `build/第6步变更盘点v2.2.json` 记录文件及哈希，不扫描项目之外目录。

- 规则 / 回归：`docs/研究卡片v2.2.js`、`tests/研究卡片测试v2.2.cjs`；恢复及校验：`scripts/恢复环境v2.2.R`、`scripts/纵向环境恢复v2.2.R`、`scripts/纵向结果v2.2.py`、`tests/纵向结果测试v2.2.py`。
- 新增六列状态：`scripts/案例状态v2.2.py`、`tests/案例状态测试v2.2.py`、`docs/案例状态交互v2.2.js`、`docs/案例验证状态v2.2.md`及同名JSON / JS资产。
- 新增验收：本说明、`scripts/综合核查v2.2.py`、复算 / 材料 / 浏览器JSON、两张实际界面截图；同步 README、DESIGN、历史 / 当前验证入口、现有网页、样式、package与CI配置。
- 按实际计算重新派生共同对象、来源记录、三个主要效应图、纵向结果 / 文字及计算报告。旧冻结目标、作者版本、数据与软件差异记录保留，既有文件未批量重命名。

## 数值、设计与解释边界

| 案例 | 目标、分母与算法 | 已核查及仍待核查 |
|---|---|---|
| 24 例模拟 | A/B 各12；A−B 均值差 8.083333；Welch t 95% CI [2.808394,13.358273] | ID / 分母 / 无缺失与数值一致；独立性是教学设定，没有真实患者结论 |
| 96 例模拟 | A/B 各48；观测结局45/43，缺失3/5；第28天未调整 A−B=9.028992 mmHg，Welch CI [2.525722,15.532262] | 按变量分母、不插补、不由诊断 P 值自动换方法；缺失机制、目标人群可推广性、调整及敏感性待讨论 |
| NHANES 2019 | 未加权分析人数19756；五周期权重、分层、PSU；教育2–5各自相对教育1；线性系数 / OR 与原文正态 Wald CI | 72/72 选定数字一致；当前默认 t CI 只有16/32端点在原文舍入范围内，另16保留。P值不在这72个冻结判据内；domain敏感性另列，不作因果教育效应 |
| medplot 2015 | 225患者、812访视、四时点网格88缺席；分类计划14天−基线，患者随机截距；强度β采用 profile CI，条件OR采用 log-Wald CI | β0.349626，CI[0.111370,0.587889]；OR1.767288，CI[1.006829,3.102125]。正文与SI的人数 / 缺失叙述 / OR区间冲突保留；一条负时间日期不修复。不能把计划14天标签当每人精确随访14天 |

NHANES 核查样本流程、模型公式、权重 / 设计自由度和收敛；纵向核查患者-时点、观测 NA 与缺席、结局范围、优化代码 / 梯度、奇异状态和日期。**模型收敛不证明 MAR、残差 / 随机效应分布、因果调整、模型充分性或临床解释正确**。替代相关结构、缺失敏感性、完整诊断与独立专家审阅仍待核查。

## 剩余限制和后续专题

- 所有论文均未完成整篇重跑。出生体重文章的模型和暴露组完整管线未运行；现有两篇的限定一致不得推广到其余图表、症状或多重比较。
- 没有独立统计专家审阅、真人试用、AI 盲评 / 正确率测量或软件易用性实验。两个 AI 审阅代理的代码审阅也不算独立生物统计专家审阅。
- 本轮真实浏览器操作基于本地 HTTP；静态离线依赖检查通过，实际 `file://` 全流程仍待核查。生成的 Markdown 备份可见，但浏览器下载事件未被观察到，落盘未确认；不能写成下载成功。
- macOS / arm64 隔离包库恢复已运行；Windows、Linux、新 OS、容器及作者历史环境未验收。远程工作流已增加当前检查入口，但本步未运行 GitHub Actions。
- 工程链接检查覆盖本地引用、文件与离线资产；未自动访问所有第三方外链。期刊 SCIE 仍按已有可核查历史记录说明，当前 MJL / 单篇 WoS 记录未独立确认；不以 PubMed 收录替代 SCIE 判断。
- 论文、SI 和作者原文件继续在本地忽略目录；分别保留 CC-BY、GPL、BSL 及上游课程 MIT 的署名 / 使用边界。没有把无明确许可的 NHANES 作者 Rmd 放进本项目 MIT 仓库。
- 第7步才执行 GitHub 发布和合并。本地审阅版的存在与检查通过不代表已经进入远程默认分支。
