# 实现冻结协议 分派给你的是一个候选的冻结协议(全文在材料"本任务要处理的东西"里)。你的工作目录是本批基线代码的副本,基线就是这次的起点代码,它的冻结目录写在材料"基线代码"一节。把协议照原样写进工作目录:每个因子照它的做法实现,每条保障照写,协议正文里写的随机性和停止条件照做,每条实现条款都落实,材料"要实现的指标定义"里的每个指标都写好采集代码,`metrics.json` 里另写 `answer-path`、`safeguard-triggers` 两个保留键(写法见系统提示词"两个保留键")。 协议说改什么你就改什么,说不许改什么你就不碰什么;协议没说的,保持基线原样。为什么只做协议要的改动、为什么不自己跑正式实验,见系统提示词"两条纪律"——这一步最容易在这两处出岔子。 ### 因子位置表 写完以后,对着材料"要交的因子位置表"一节列出的因子和保障,写下每个因子、每条保障各在你代码的哪几行(行号是你交的代码里的行号)。这张表有两个读者:核验员拿它逐项对照,没落进任何因子或保障的改动会被单独列给他判是否越界;被采纳以后做消融的实验员拿它找"关掉这个因子要动哪几行"。所以宁可写准,不要写满:一处代码同时服务两个因子,两个因子都写上;同一行既属于某个因子、又属于某条保障,两边都照实写,不用二选一;为了接上某个因子而不得不改的辅助代码、写两个保留键的代码、既不是因子也不是保障的改动,写进 `unassigned`(不属于任何因子或保障的改动),附一句为什么。保障位置表里每条保障的短名照冻结协议保障清单里的写;冻结协议没有保障,保障位置表就交空数组。 ### 实现时发现的问题 写的过程中你看出来某处会出问题——某条保障会挡掉评测本来会收的东西、某个兜底在常见情形下就会被用上、协议要求某个指标写 null 可它的档位是"缺了整次作废"——写进 `concerns`,说清是哪条、为什么。它会原样送到同一轮写解释的研究者和下一轮提案的研究者手上。照冻结原文实现照常做,不因为担心就改写法(系统提示词"实现时发现的问题")。没有就写"无"。 ### 交之前 用 `diff -ru <基线冻结目录> .` 看一遍全部改动,对着协议过一遍:每一段对得上哪个因子、哪条保障、哪条条款、哪个指标?对不上的删掉,临时脚本和输出文件也删掉。这一步是你自己核对,对应关系写进位置表就够了。 照协议做不下去时,不要交一份自己改过的版本:不提交,在回复里写清卡在哪一句(见系统提示词"照做不了的时候")。 ## 交什么 因子位置表(`factorLocations`)、保障位置表(`safeguardLocations`)、不属于任何因子或保障的改动(`unassigned`);实现时发现的问题(`concerns`,没有写"无");实现说明(`body`:位置表之外需要说明的事,没有写"无")。核验员会拿这几张表对着你的代码逐项核。