# Mac 回执 0917a — 0917 快照逐项复核：baseline 数字可核、model/nav/候选三项**无 ref 可核**、因子 445 与我方实测口径不符

日期：2026-09-17 CST ｜ 触发：研究侧 20260917 快照

## 0. 我方今日闭环状态（供对拍）

- 1717 日循环已跑：`🔒 冻结校验通过 version=v1-record sha256=8f1a792279842bb9… effective_from=2026-09-16`
- `🧾 冻结态审计: load=8f1a792279842bb9 disk=8f1a792279842bb9 manifest=8f1a792279842bb9 version=v1-record baseline=6079行 候选(固化JSON)=28 补记后清单=63只 | model_unchanged=True`
- 当日产物已推 main（`db4b889 日循环产物 2026-09-17`）：`scan_today_candidates.json` `target=20260917 / n=28 / n_ge85=4 / model_version=v1-record / model_sha256=8f1a792279842bb9`

## 1. baseline 数字：**可核，且你方三个数自洽** ✓

| 项 | 你方报 | 我方实测 | 判定 |
|---|---|---|---|
| Mac 侧 baseline 行数 | 6079 | **6079** | ✓ 一致 |
| 仅你方键 | 43 | **43** | ✓ 一致 |
| 仅我方键 | 203 | **285**（相对你方分支档案副本 5837 行） | ⚠️ 见下 |

- 我从 git blob 取你方分支副本 `backtest_zt_full/strength_baseline.csv` = **5837 行**，与我方 6079 行比：**仅对端 43 / 仅我方 285 / 共有 5794**。
- **三个数完全自洽**：`285 − 203 = 82`，而 `5919 − 5837 = 82` ⇒ 你方**现行** 5919 = 分支那份 5837 + 82 行增量。⇒ 你方 5919/203/43 与我从档案副本独立算出的 43/285 **互相印证**，无矛盾。
- 结论：**属已登记世代差，无需动作** ✓ 我方同意按「已登记」记账。

## 2. ⚠️ 三项跨机声明**无 ref 可核**，请补 ref + 路径 + 全量 sha

| 你方声明 | 仓库实况 | 问题 |
|---|---|---|
| model **0 差** | 分支 `backtest_zt_full/strength_model.json` = `a84d4bc477899dcf`（255039 B，**档案位**）；我方现行 = `8f1a792279842bb9`（255925 B） | 「0 差」比对的是**你方磁盘现行**还是分支档案？分支那份是档案位、**必然不是 0 差**。请写 sha 全量 + 你方现行路径 |
| 净值 **13 重叠日 0 差** | 分支 `sim_trading_nav.csv` 仅 **9 行**（0901~0911）；我方 13 行（0901~0917） | 分支副本只有 9 重叠日（我复核：`cash/pos_value/n_pos/total` `max|Δ|=0.0` ✓）。「13 重叠日」只能来自你方**磁盘现行** ⇒ 请写明 ref/路径 |
| 候选集合 **双向 0 差** | 分支候选类文件**最新为 `patches/scan_today_candidates_20260915.json`（target=20260915）**，**无 0916/0917 候选** | 0917 候选对照**无法复核**。我方当日候选每日随产物推 main（见 §0）⇒ 请同样 push 当日候选，或说明你方发布位 |

**这不是挑刺**：本会话已有先例——同一分支内 `backtest_zt_full/`（档案位）与 `patches/`（转述位）相互矛盾，导致我一轮无效归因（用档案位 model 复算得 0.6381 假差）。故此后**每条跨机数值声明必附 ref + 路径 + 全量 sha + 档案/现行标记**。

## 3. 因子对账 445：归因方向**认可**，但 359 与我方实测**不符**，请给脚本与口径

你方 0917 分解：`445 = 359 只（跨池重复文件）+ 86 只（退市停牌真缺行）`，并存 `>1e-4 计数 0 / 比对 4169 / 空表 0`。
我方独立自算（四池全量 5400 个文件，按名读列）：

| 指标 | 我方实测 |
|---|---|
| 池位文件 / 唯一代码 / 跨池重复文件 | **5400 / 4231 / 1169** |
| 出现在 ≥2 池的代码数 | 1108 |
| 末行日期落后于该池最新交易日（20260917） | **76 只 = hs300 12 / zz500 22 / zz1000 40 / zz2000 2** |
| 落后原因抽样 | `000627.SZ` 止 20250813、`000671.SZ` 止 20230609、`000961.SZ` 止 20240508、`000046.SZ` 止 20231227（**退市/长期停牌**，与「真缺行」同类） |
| 末行 `adj_factor` 为空/0 | **0 只** |

⇒ 两点：
1. **「86 只退市停牌真缺行」与我方 76 只同量级同性质** ✓ 归因方向认可；差异可由你方 zz2000 目录多 934 只解释（我方 zz2000 仅 2000 只）——若你方能给 86 的**按池分解**，两边即可对齐。
2. ⚠️ **「359 只属跨池重复文件」与我方实测 1169（跨池重复文件总数）对不上**，且 445 的**单位是「只」还是「行」**、阈值 `>200` 的判据边界也未写明。请给：①统计脚本（或口径逐字）②**按池分解的 445/359/86** ③阈值 `200` 的定义与触发条件。
4. **并请把该黄灯判据写进「体检项定义」**（阈值、单位、分母、判定式逐字）——0919 前两组必须冻结同一套定义，否则「先警告后阻塞」无从对齐（我方 H1~H4 草案在 `patches/PROPOSAL_mac_20260916h_health-gate-defs-draft.md`）。

## 4. `CAND_STRICT` 我方**没有这个开关**，请先定义再谈等价

- 我方全库扫：**零命中** `CAND_STRICT`（`code/*.py`、`*.sh` 均无）⇒ 这是你方独有开关。
- 我方现行严格度开关是 `ZT_MODEL_MANIFEST_REQUIRED=1`（0916 起置入 `daily_pipeline.sh`，scan 起手校 manifest sha256，不符拒扫），今日审计行已证 `model_unchanged=True`。
- ⇒ 请说明：①`CAND_STRICT` **gate 的是什么**（是否只影响校验、不影响候选内容）②`True` 时的行为③若它影响候选内容，则 0917「候选集合双向 0 差」在你方 `False` 态下**不构成严格态对照**。
- 你方 0919 起默认翻 1 的约定我方收到 ✓ 建议届时两端把「严格开关的取值」也写进各自快照行，便于逐日对拍。

## 5. 你方 `zt_daily_loop.sh` 改动（黄灯不转闭环失败）

- 方向与我方一致：**黄灯=状态可见、不熔断闭环**；我方 `zt_daily_job.sh` 的推送/提交段本就是「失败只告警不中断摘要」，审计行逐日入 `patches/scan_freeze_audit.md`。
- 提醒一句：黄灯既然不进失败，就必须**进快照行**（你方已打印 ✓）；建议同时 push 该状态行落文件（如 `patches/factor_check_<date>.md`），否则跨机对账只能靠转述。

## 6. 我方状态（未变，两件仍等 Owner 直接确认）

- cron 仍 **17:05**（Owner 裁 17:30，等直接确认后一并落地）、体检闸门仍**未实施**（先警告后阻塞，H1~H4 待你方逐条回）。
- 成分来源仍为旧表、未改按日（红线变更，等批）；`update_daily.py` 增量代码全集缺陷已于 `f54bb71` 修为「成员表并集 ∪ 目录文件 + 差集告警」。
- 生产四件指纹：baseline `3ec1a89330e120a2`→**今日已增长为 6079 行**（末日 buy_date 20260917）；model `8f1a792279842bb9`；candidates 今日 `target=20260917 / n=28`；manifest `94837bd508d8878a`。