# Hermes 温度门控机制 v3.8：Codex 独立复核

- 复核日期：2026-09-04
- 复核人：Codex
- 范围：Hermes 入口、温度门控流水线、质量门、报告生成器、版B遗留入口；与 CC 独立审查结果逐项对照。

## 结论

9/4 原始产物内部一致：源头 CSV 29 行、按 `ts_code` 去重 28 只，最终保变电气与继峰股份 2 只；温度 33°、偏冷、放行 L3/L1、总仓上限 50%。但原有代码存在会影响后续日期正确性的风险：

1. `run_daily_mechanism.py` 对致命步骤只打印不中止，可能继续用历史 JSON 生成报告。
2. `daily_investment_pipeline.py` 原先不校验候选 CSV 的 `signal_trade_date`，可能把旧快照静默标成当日；机制 JSON 也没有候选源溯源信息。
3. `quality_fn_qdh.py` 与报告生成器把 2026-06-30/2025-06-30 写死，且按 `end_date` 去重未明确使用最新公告口径。
4. 报告逻辑链和作战计划含有当日才成立的硬编码叙事，换日后可能与实际候选不一致。

## 已落地修改

- 致命步骤失败时立即 `break`，并以非零退出码结束；不再把历史报告冒充为本次新结果。
- 候选源强制存在 `signal_trade_date`，要求全文件为单一日期且等于机制 as-of；记录源文件、源日期、原始行数、去重数和移除重复行数。
- 机制输出改为生产命名 `温度门控机制_<asof>.json`，报告生成器优先读取生产命名文件，并校验机制温度日期、候选源日期和 JSON 溯源日期一致。
- 财务质量门按 as-of 选择已披露的最新半年/年度报告，与去年同期比较；公告日不可见的数据不参与判断。
- 报告中的策略分布、候选来源、质量分布和作战纪律改为动态拼接；移除“中恒PE162”等过期示例。
- `build_versionB.py` 移除 20260902 候选路径硬编码，改为读取最新日期目录。

## Codex 与 CC 的共同确认

- CC 独立审查发现的 3 项 P1 与 Codex 复核一致；CC 另指出报告期硬编码和重述口径分歧，已纳入本次修复。
- 9/4 现有输入的完整日期链为 `20260904`；QDH 最新日线数据、Serenity 候选源、机制 JSON 和 HTML 报告一致。
- 本次未修改 QDataHub 权威数据、Serenity 源头扫描结果、持仓原件或任何交易接口。

## 已执行验证

- 5 个修改脚本 AST 解析通过。
- `quality_fn_qdh.resolve_periods('600550.SH','20260904')` 与 `603997.SH` 均返回 `20260630/20250630`；在 `20260819` as-of 下回退到 `20251231/20241231`，证明公告日期过滤生效。
- 真实 `_load_real_candidates('20260904')` 返回 28 只；溯源状态通过，源文件 29 行、去重 28 只、移除 1 行。
- `_load_real_candidates('20260903')` 被日期护栏拒绝。
- 报告输入 `20260903` 与 9/4 候选源不一致时被拒绝。
- 入口致命步骤故障演练返回退出码 1，且不执行后续报告步骤。
- 机制流水线实际运行成功，输出温度 33°偏冷、保变电气/继峰股份各 5.0%观察仓位；报告生成成功，112.1KB。

## CC 补丁后复核与最终处理

CC 对 Codex 补丁做了第二轮对抗性复核，原报告见：
`G:\AI\Project\Serenity\runtime_data\team_tasks\20260904_hermes_mechanism_cc_post_patch\review.md`。

CC 先发现一个由“致命步骤立即退出”暴露的边界回退：合法的空白名单结果被误判为流水线失败，极冷/偏热日可能不出报告。已修正为：`signals is None` 才中止，合法 `signals == []` 继续落空候选 JSON，由报告明确展示“不强行荐票”。同时补齐了版B遗留的日期/数量硬编码，并将板块缓存日期和机制 as-of 不一致时在报告中显式标注。

最终判断：不回滚；核心 P1 已关闭。剩余事项属于下一轮增强，不阻塞当前本地接管。

## 尚未纳入本次修改的边界

- QDH 日线最新日的发现仍沿用 Hermes 现有路径逻辑；后续应切换为已验收 release/DataClient，并将 release_id 写入机制溯源。
- 温度计缓存的刷新时点仍由原有入口决定；当前报告会明确显示其板块表实际交易日，不再隐含冒充机制 as-of。财务扣非/营收双条件、熔断器中的组合回撤等属于下一轮机制增强，不在本次最小接管范围内。
- 9/4 的质量结论已通过原始财务文件读取验证计算路径，但本次没有改动 QDataHub 数据本身。
