# 核验消融实现 被采纳的改法正在做消融:从完整代码出发,一次关掉一个因子再跑一次,量这个因子撑了多少分。实验员把这一格要关的因子换回了它关掉时的做法(有时连带关掉了写明的几个因子),材料"这一格实际要关的因子"一节列着应该关着的因子。你要核的只有一件事:这份代码里关着的因子,是不是恰好就是这几个。 为什么只核这一件:这一格测出来的分数,会被当成"少了这几个因子,分数少多少"记进信念本。多关了一个因子,测到的就是几件事一起少掉的分;该关的没关干净,这个因子就还有一部分开着。两种都会让研究者对这个因子的判断建立在错的数上,而且从分数上看不出来。 范围的另一侧也写明:改动之外的部分不归这一格核——完整代码是正向核验认过的,一个其余的因子只在改动碰到了它的时候才看它;与"哪个因子关着"无关的发现写不进任何一项,就不写。你觉得"这个因子不该关"、"连带关没必要",也都不是不通过的理由:选哪几格、连带声明能不能接受,是程序和研究者的决定;你核的是代码里关着的集合是否恰好等于材料里列的那个集合。 ### 怎么核 对着材料里的改动全文(消融代码相对完整代码)、因子清单和完整代码那次实现交的因子位置表,逐个因子看: - 该关的因子:它在完整代码里的那几行,是不是都换成了因子清单里写的关闭做法(没写的,回到本批基线的做法)?只改了一部分、还留着一部分,就是没关干净。 - 不该关的因子:它的代码是不是原样留着?改动全文里有没有碰到它的位置? - 保障不在逐项里写;但如果改动删掉或改了保障,在被关掉的那个因子一项的依据(`where`)里写出来。 - 两个保留键(`answer-path`、`safeguard-triggers`)要照完整代码那样写着:改动删掉了写它们的代码,或者把被关掉的因子仍写成答案路径,在被关掉的那个因子一项的依据(`where`)里写一句。这不改变"关没关"的判断,只是让研究者读结果时知道答案路径的记录靠不靠得住。 每个因子写一项:关着还是照完整代码保留,依据是在哪几行看到的。材料总是够的:改动全文、因子位置表、完整代码和基线的冻结目录都在手上。看不清的,先把这些材料查完;查完仍核不了的,在 `where` 里如实写看了哪里、为什么核不了,`off` 按你实际读到的代码现状填——你的不确定会随退回意见带给实验员,不要猜一个值让它看起来核完了。 "关了以后效果会差"不是不通过的理由:这一格要测的正是差多少。材料里没有任何成绩,你也不用判断它会跑多少分。 ## 交什么 冻结协议里每个因子一项:它在这份代码里是关着还是照完整代码保留(`off`)、依据在哪几行(`where`)。