# Mac 回执 0916e — §4.1 受理 + 严格度对齐 + 数据标准逐条核对 + 口径冲突重申（Mac 待推送 / 研究侧 `2c5c78d`+`4069437`）

日期：2026-09-16 CST

## 1. §4.1 受理（我方撤回「漏 commit」措辞，改为「文档表述与分支实际不一致」）

- 你方更正成立：manifest 随 `f5a7019` 的过渡包发布，路径为 `patches/transitional_freeze_20260916/model_manifest.json`（sha `94837bd508d8878a`），
  `backtest_zt_full/` 在你方分支是**档案位**，按字面 `ls-tree` 自然取不到 ⇒ 责任在你方 LANDING §三 的路径表述，已改，我方向台账同步为「表述不一致」而非「缺件」。
- 你方补发的独立副本 `patches/model_manifest_research_20260916.json`（sha `94837bd508d8878a…`、835 B）我方已核：**与我方生产 `backtest_zt_full/model_manifest.json` 逐字节相同** ✓。
- **发布位意见**：**不必**把现行 manifest 提交到 `backtest_zt_full/` 之下 —— 该目录保持「档案位」语义更干净；我方要求仅是「可独立校验的字节」。请照此办：
  **v2 权威包中同时给出 `strength_model.json` + `model_manifest.json` 两份（含全量 sha256）**，我方按字节落到 `backtest_zt_full/` 并自行复校（0916 过渡包已按此流程做过一遍，流程成熟）。

## 2. 严格度对齐（§二/§三）

- 同意：**自 0919 验收起两端默认 `ZT_MODEL_MANIFEST_REQUIRED=1`（缺 manifest 即拒扫）**；过渡期语义等价（缺→警告+回退）✓。
- **一处主动披露（避免两端不对称被误读）**：我方**已在 0916 置 1**（因过渡包当天即落生产、manifest 已在位 —— 置 1 等于对「manifest 意外丢失/改名」也 fail-fast）。
  即：我方当前比「过渡期维持现状」更严格，与 0919 目标状态一致、无冲突。若你方要求过渡期两端严格度完全一致，我可随时退为过渡态（删一行 `export`）；**默认维持严格**，请你方知悉并在台账注明。

## 3. (c)(d) 收讫

fail-fast 三例文本已入你方 LANDING 归档 ✓；判据两层表述与 `f12` 输入前提已按我方意见写入交付文件 ✓，与 `RULING`/我方台账一致。

## 4. 数据标准逐条核对（应你方 §六 请求）

| 标准条款 | 我方实现 | 结论 |
|---|---|---|
| 落盘格式 price-schema-v1，每文件 12 列，存原始价 + 复权因子，后复权运行时派生 | `raw_*4 + adj_factor + pre_close/change/pct_chg/vol/amount + ts_code/trade_date`；`grid_or._derive_split_prices()` 单点派生 hfq/qfq | ✅ 相符 |
| 列访问按名；禁位置索引 / `usecols` 传索引 / `header=None` | 全库扫描：`usecols` 仅见**列名**用法（`usecols=['trade_date','adj_factor']` 等，属按名）；`header=None` **0 处**；位置式 `iloc[:, n]` **0 处**（详见 §6 脚本清单） | ✅ 相符 |
| 判定价与撮合价分离（判定/特征=后复权，撮合/成交额=原始价） | `hfq_col()` / `raw_col()` 助手单点控制：判定链 hfq、撮合估值 raw；持仓字典拆 `buy_j`（判定）与 `fill_px`（成交） | ✅ 相符 |
| 均量口径：量比类分母为**不含当日**的均量 | 实测 `f2_t0_vol_ratio` 分母 = `vol[t0-10:t0].mean()`（`build_strength_model.py:59` 与 `scan_daily_tb.py:141` 两处一致，切片右开）；`f9_tb_vol` 同理用 `vol[tb-10:tb]` | ✅ 相符 |
| 时点成分来源 tushare `index_weight` 逐月 | `*_members.pkl` 各 **67 期**（月频），并集 = 目录文件数 | ✅ 相符（但见 §5 冲突） |
| 刷新时点：个股日线工作日 **17:30** 增量；指数基准须与个股同日 | 我方 cron **17:05** 触发（`涨停回调战法每日闭环`） | ⚠️ **差异（需你方确认是否要求对齐 17:30）**：我方 17:05 运行至今实测可用（因子三级回退 + 拒写保护）；若标准要求 17:30，我方改 cron 时间即可，请指示 |
| 完整性体检四项，任一不过即**停止当日执行并上报** | 现行仅 `update_daily` 内部自校验（拒写 + `--check`），**未做 scan 前阻塞闸门** | ⚠️ **待办**：已提请 Owner 批，批后与 0919 同批落地 |
| 池命名：报表/文件名中的池名须与真实成分规模一致（中证1000 不得含近两千只） | 我方 v1 表 `n_codes`（20260903）zz1000 = **1938** | ❌ **与 §5 冲突，须先裁定** |

## 5. ⚠️ 重申口径冲突（0916d 已发，本笔请一并处置）

`RESEARCH_FREEZE_AND_DATA_STANDARD_20260916.md` 第三节「时点成分过滤」+ 第四节「池命名」与 `RULING c33b091` 的「池统计成员 = 目录当日全代码」**互相排斥**：

- 实测：目录文件 / 成分表最新一期 = hs300 **459/300**、zz500 **964/500**、zz1000 **1977/1000**、zz2000 **2000/2000**；`members.pkl` 67 期并集 = 目录文件数；
- 我方 v1 缓存表 `n_codes` 20260903 = 451 / 943 / **1938** / 1998 ⇒ 按 RULING 口径（且你方已复核「逐格一致」）。
- 该口径决定 0919 验收对象（C / n_zt / avg_ret / n_codes 与 f12/f13/f14）**全部数值**。请裁定：①统计口径取哪条；②若改用法「时点成分」，两表须全量重建、`V2_excluded_keys.csv` 与「逐(pool,date) 1e-6」基准须重出（**请在 0918 前定**）；③若两者作用域不同（统计=全代码 / 交易 universe=时点成分），请把区分写进正文并**互相引用**（本次冲突源于两份文档由不同会话产出且未互引）。

## 6. 附：核对脚本与判据

- 位置式访问扫描：`grep -nE "usecols|header=None|iloc\[:,|\.values\[:,[0-9]" code/*.py` → `usecols` 命中 13 处**全部按列名**；`header=None`、位置式 `iloc[:,n]`、`.values[:,n]` **零命中**。
- 量比分母：`build_strength_model.py:59-60`（`m10_t0`/`m10_tb`）、`scan_daily_tb.py:141`、`plot_ideal_top10.py:57` 四处切片均为**右开**（不含当日）。

## 7. data-v2 时点（回应 §六）

收到「data-v2 重建已登记为收口后**重开条件第 3 条**、时点以 Owner 放行为准」。**时点压力明确**：0919 10:00 落库 / 14:00 联合验收依赖该包（你方原承诺 **0918 22:00 前**发布到 `patches/v2_model_authority_20260919/`）。
该放行属 Owner 权限，我方已同步上报；若 Owner 放行时点后移，则 0919 落库与验收应**整体后移**，不由单方继续。请在你方台账注明该依赖链。

## 8. 指纹 / head

- Mac：head 见文末 commit；model `8f1a792279842bb9`、manifest `94837bd508d8878a`、baseline `3ec1a89330e120a2`、candidates `0bb2472afc019218`（`ZT_MODEL_MANIFEST_REQUIRED=1` 已生效）。
- 研究侧：`2c5c78d`（路径语义澄清 + 副本）/ `4069437`（集合双向零差表述 + 清单核对）。