生命偏离原有秩序而不必然崩溃,现有的解释分成三路:门槛以下的容错、输入与产出的配比、重要性排序的优良。三路共同假定了一条从未说出的东西——排序在前,让步在后:哪一样先让是被某个上位的东西事先决定的,而让步本身不反过来改这个决定者。本文用信念修正理论自己的表示定理推翻这条假定:牢固度排序与收缩行为是充分必要的互相刻画,排序只能从已经发生的放弃里读出来;它不是让步的原因,是让步的记录。据此提出屈位:一次偏离中最先让开、并因此使其余部分免于让开的那一处;以及屈位序,历次屈位排成的、可跨次比较的次序。辨别装置是一道屈位阶梯,每一级标注三件:落在实体侧还是判定侧、是否事先明文指定、让完有没有留下可跨次比较的记录;要打的是"判定侧·未指定·无记录"那一级。判据不含程度词:这一次的合格,有没有用到一次豁免;上一次的豁免是不是也在这一处。 材料取自审计学的重要性水平与未更正错报、二语习得的化石化、信念修正的牢固度排序。以十二个公开仓库的 10,110 个源码文件、5,212 处豁免标记做了一次预注册检验,四条结果里两条被自己的口径推翻、一条方向意外:让步并不集中在少数几处,而是摊开的;但它系统性地偏向检验装置一侧,标记落在测试与类型检查文件上的份额中位数为 0.53、最高 0.99。最稳的一条是十二个仓库无一保存历次豁免的时间序列。结论:先让的往往是尺子,不是被量的东西。
关键词:屈位;屈位序;判定侧让步;牢固度排序;未更正错报;化石化
一份年度安全报告写着:本年度无重大事故。
这句话有两种来路,而报告上分不开。一种是这一年确实没有发生足以构成重大事故的事件。另一种是发生了,而在它被判定为重大事故之前,有一处先让开了——某项检查这次没做,某个阈值这次上调了一点,某条报警这次被判为误报并关掉,某个"已知问题"这次又被延期了一个季度。
两种来路的差别不在事实层,在让步的位置。第一种里没有人让;第二种里让的是判定装置。而年报只记结果,两者在结果上完全同形。
再看三个更具体的场合。
审计。 一份无保留意见的审计报告,不等于报表没有错。审计准则明文允许一部分错报留在报表上不作调整——只要它们低于事先确定的重要性水平。准则同时要求把这些未更正的错报汇总列表,单独评估其个别与汇总的影响。也就是说:这个行业把"哪些错允许留着"写进了自己的正式产品,并给它设了一张表。 那张表上的每一行,都是一次先让开。
外语学习。 一个学习者的英语可以流利到能开会、能写报告,而某几个语法点永远是错的——第三人称单数不加 s、冠词的用法、某个时态的搭配。它们在系统的其他部分继续发展的同时停在那里。语言学称之为化石化。这不是能力不足,是让步的位置:为了把话说下去,某几处被放弃了,而放弃的那几处从此不再被纠。
信念。 一个人遇到一件与自己的看法不符的事,很少整套推翻。他放弃的是其中一条——通常是最不吃重的那一条。逻辑学把这种最小改动的处理写成了理论,并给"哪一条先被放弃"设了一个排序。
三个场合的形状是同一个:遇到不相容,让开一处,其余保持。 而三个场合的账本都只记结果——意见类型、口语流利度、修改后的信念集——没有一本记"这一次让的是哪一处,上一次让的是不是也是它"。
本文从这里开始。
本文有意选了三门与这道题距离很远、彼此也很远的学问。理由在第十四节:近处的几种说法互相借词太多,一起站在同一块地上,看不见那块地。
审计学处理的是一份报表还算不算一个可以拿去用的整体。它的判定是鉴定式的:整体上是否公允反映,是否存在重大错报。它的账本硬,终止性明确——到出具意见那一天,成败已定。
它对本题的单一主张是:一个含错的体系还能不能被继续使用,决定性的只有一条,就是重要性水平这条线的位置。 线以上必须调整,线以下不必调整;线定得对,体系照常运转;线定得不对,要么把审计做垮,要么把信任做垮。
它给得出时序读数:计划阶段确定整体重要性与实际执行的重要性,期中调整,期末汇总,出具意见。以月计。
它自己承认解决不了、又天天在用的那件东西是重要性水平的来源。这条线不是被审对象的属性,是审计师的职业判断,通常按某个基准的百分比确定——税前利润的若干个百分点、收入或资产的若干个千分点。于是有一件事在准则内部是公开的:同一笔错,在一个盈利的年份低于线,在一个亏损的年份高于线。 线随基准动,而基准正是它要去检验的那个东西的一部分。
配套的第二件是未更正错报汇总表。准则要求审计师把审计中发现而管理层未予更正的错报累计起来,并评估它们单独和汇总是否重大。换句话说,这个行业明文规定了它的交付物里含有一批已知的、被允许留着的错,并且要求把它们列出来。
二语习得处理的是一个学习者的语言往哪走、走多快、什么把它粘住。它的账本比前一门软:失败不是某一天判定的,是"不再变化"这件事被观察到。
它对本题的单一主张是:一个学习中的系统能不能继续发展,决定性的只有一条,就是可理解的输入与被迫产出的压力之间的配比。 输入不足则无从重构,产出压力不足则无须重构;配比对了,中介语持续向目标语靠拢。
它的时序读数以月和年计。
它自己承认解决不了、又天天在用的那件东西是化石化。Selinker 在 1972 年提出中介语这个概念时就指出:只有极少数成年学习者最终达到母语者水平,绝大多数人的某些结构会永久停住。麻烦在于判定——Long 在 2003 年的综述里主张,文献中被称作化石化的现象,绝大多数只能算"稳定化",因为要证明一个结构永远不再变化,需要的纵向证据几乎没有人拿得出。
这一条对本文极其要紧:这门学问明文承认,它无法判定某一处是不是已经不再让了。 一个已经停住的位置和一个暂时停住的位置,在它的账本上同形。
逻辑学中处理"遇到反例怎么办"的那一支,把这件事做成了形式理论。它的账本硬且判定明确:一个修正操作要么满足那组公设,要么不满足。
它对本题的单一主张是:一个信念体系遇到不相容而不整个塌掉,决定性的只有一条,就是牢固度排序——哪些命题在被迫取舍时先被放弃。 排序好,系统只丢掉最不吃重的一条,主干保全;排序坏,主干先掉,整套跟着塌。
它的时序读数是轮次:一次收缩、一次扩张、一次修正各算一步。
它自己承认解决不了、又天天在用的那件东西是排序的来源。理论对牢固度排序只给约束,不给产生机制:它必须是一个满足若干条件的序关系,至于这个序从哪儿来、由什么决定,理论明说不管。第五节会看到,这一处不只是留白,它是本文全部论证的入口。
三门不是分工,是互相取消。取消的地方各不相同,因而无法靠判谁对来化解。
审计学与二语习得。 审计说:门槛以下的错留着不影响这个体系可用。二语习得说:化石化恰恰就是门槛以下的错留着,而正是它们使这个系统永久停在那里——不是不能用,是不会再长。两条不能同真:若门槛以下确实无关紧要,一个人的英语不会因为几个小错而永远停在原地;若化石化是真的,那么"低于线可忽略"这句话就只在结算的那一刻成立,在发展的尺度上是错的。
二语习得与信念修正。 二语说让步的位置由外部条件决定——输入里出现得少、产出中没有压力的那些结构先被放弃。信念修正说让步的位置由内部排序决定,而这个排序按定义不由证据决定:牢固度是关于命题在体系中的地位,不是关于它的证据强度。两条不能同真:一个由外部输入频率决定,一个由内部地位决定,同一处让步不能既是频率的结果又是地位的结果。
审计学与信念修正。 审计的门槛是一条同质的数量线——错报按金额排,超过多少就必须调。牢固度是一条异质的排序——命题之间没有共同的量纲,只有前后。两条不能同真:若让步的位置可以由一个数量门槛定,那么牢固度就可以化约为大小,AGM 那套排序是多余的;若牢固度是不可化约的排序,那么用金额定门槛就是把一个序关系伪装成了度量。
三门根本不在同一个语域里作答:一个在算金额,一个在看频率,一个在排先后。裁判无从当起。
把三门的争论压成一句:它们争的是"哪一样先让、让多少不算数"这件事该由谁定、放在哪儿、有多少。
写成这个形状之后,共有的那条假定就露出来了:
排序在前,让步在后。哪一处先让,是被某个上位的东西——门槛线、输入条件、牢固度排序——事先决定的;让步本身不反过来改这个决定者。
这条念给三门听,三门都会说这还用说吗。审计的门槛在计划阶段就定下来,全年据以执行;二语的输入条件是环境给的,学习者的表现不改变环境;牢固度排序是修正操作的输入,不是它的输出。三门的分歧全部发生在这条假定之上——它们争的是谁是那个上位的东西,从没有人问过:会不会根本没有那个上位的东西,而所谓排序只是历次让步留下的影子。
这条假定还有一个很实用的后果,它解释了为什么这道题一直只能用"某种品质"来回答。既然排序在前,那么"没崩溃"这件事就只能是这个排序好不好的问题:门槛定得准、输入配得好、牢固度排得对。所有现成的答案都落在这一格里,而且都是不可证伪的——事后总能说"因为它的排序好"。
推翻这条假定的材料不需要从外面搬。它是这个领域最有名的一条结果,只是从来不往这个方向用。
Gärdenfors 与 Makinson 在 1988 年给出的表示定理说:一个知识体系的修正方法满足那组理性公设,当且仅当存在一个满足相应约束的牢固度排序,使得这个排序决定了体系中各命题的放弃优先次序。
这是一条充分必要的互相刻画。它在这个领域里回答的是另一个问题——为公设化的修正操作提供一个语义构造,证明公理与构造等价。而把它读成一句关于因果的话,它说的是:
排序与让步行为是同一件事的两种写法。给定一个合乎理性的修正操作,那个排序必然存在且可以从它读出来;反过来,给定排序,操作也就定了。
于是共有假定被推翻,而且是被它自己那一门推翻的:
第一,排序不在让步之前。 你说不出一个先于让步、独立于让步而可测的排序。你能观察到的只有让步;而"因为排序如此所以先让这一处"这句话,在表示定理里是循环的——排序恰恰是从"先让了这一处"里读出来的。
第二,"它的排序好所以没崩溃"是一句同义反复。 一个没崩溃的体系,按定理必然存在一个排序刻画它;找到那个排序不构成解释。这正是三门的答案都不可证伪的技术原因。
第三,那么什么是可以观察的? 只有让步本身:位置与次序。这就是本文全部读数的来源。
两条辅证可以并排放,形状完全一样,各来自另一门:
审计那边:门槛按基准的百分比定,而基准是被审对象的一部分;一个正在恶化的实体,基准下降,线随之下移,去年不算数的错今年算数了。线不是外生的,它被它所度量的东西决定。
二语那边:判定某处是不是"已经不再让了",只能看它此后还让不让。牢固与否只能由未来的让步来判定,不能由当下的观察来判定。
三处指向同一件事:能读到的只有让步;排序是它的影子,不是它的原因。
据此,本文把可观察的那一样东西命名出来。
屈位:一次偏离中最先让开、并因此使其余部分不必让开的那一处。
屈位序:同一个系统历次屈位按时间排成的、可跨次比较的次序。
四条判据,缺一条就不是屈位。
判据一 · 有位置。 它是一处,不是一个程度。"这次标准松了一点"不是屈位;"这次跳过了第三道校核"是。判法:能不能指着一份文件、一道工序、一个器件、一条规则说出它。指不出来的,退回为程度描述,不进本文的读数。
判据二 · 在先。 它是这一次里第一个让开的,不是让开得最多的那一个。这一条最容易被弄错:事后追责总是找损失最大的那一处,而屈位常常损失极小——正因为它损失小,它才被拿来先让。
判据三 · 有豁免作用。 它让开之后,其余部分这一次不必让开。判法是反事实的:若这一处不让,这次偏离会往哪里去。不能做反事实的场合,退而求其次:这一处让开与偏离终止之间,有没有别的让步发生;若没有,豁免作用成立。
判据四 · 可跨次比较。 这一处在下一次偏离里,能不能被认出是同一处。这一条不是关于屈位的性质,是关于记录的性质——它决定屈位序存不存在。判据四不成立时,屈位仍然发生,屈位序不存在。
必须先排除的四种像而不是:
其一,故障不是屈位。 一个器件坏了,若它的坏并没有使其余部分免于坏,那只是损失。判据三是分界线。
其二,冗余的启用不是屈位。 备用泵顶上是在册资源被调用,账上会记一笔,且它不是"让开",是"顶上"。方向相反:屈位是撤走一样东西,冗余是加上一样东西。
其三,正式的标准修订不是屈位。 一次经过审议、留了记录、写进文本的阈值调整,是第七节阶梯上的第二级,不是要打的那一级。二者的差别在留痕,不在幅度。
其四,基线的漂移不是屈位。 参照系一点点移动是连续的、无位置的、无人执行的;屈位是一次有位置、有执行者、可指认的动作。若一个现象说不出"是哪一处、由谁、在哪一刻让的",它是漂移,不归本文管。
一次偏离往往不止让一处。把这一次里发生过的让步按先后排成一道阶梯,每一级标注三件事。
栏
问什么
取值
侧
让开的是被判定的那件东西,还是判定它的那道工序
实体侧/判定侧/不可判
指定
这一处事先有没有被明文写成"允许在此让开"
已指定/未指定
留痕
这次让开有没有留下一条能与上一次比对的记录
有/无
三栏交叉出十二种,其中六种在实务中常见,本文只需要分清其中四种。
级
侧
指定
留痕
它是什么
甲
实体侧
已指定
有
设计好的牺牲件:熔断器、泄压阀、蓄滞洪区
乙
实体侧
未指定
无
事故:最先坏的不是设计让它坏的那一个
丙
判定侧
已指定
有
正式豁免:有申请、有批准、有期限的例外
丁
判定侧
未指定
无
本文要打的那一级
甲级是工程学的成熟做法,不需要任何新框架。乙级是事故调查的日常对象,损失可见、有人追责。丙级有档可查。只有丁级,在系统的全部形式审查里一律通过:没有事故,没有损失,没有违规,指标合格,甚至比不让的时候还好看。
要打的这一级有两条签名,每条各配一条误诊阻挡。
签名一 · 它自己不可能发出信号。 判定侧的让步,按定义就是把发信号的那道工序关掉一次。所以它不像别的隐患那样"没有人去查"——是能查的那样东西正是被让掉的那一样。这一条比"缺乏监测"强得多:补装一个监测器不解决问题,因为下一次被让开的可以正是这个新装的监测器。
误诊阻挡:若这一次让的是实体侧(真的坏了一个零件、真的少交了一批货),会有信号,那不属于这一级。判法是先分清侧,再看信号。
签名二 · 让过一次的地方下次更容易再让。 第一次跳过某道校核需要一个理由和一次决心;第二次只需要指出上次跳过了也没事。这条自我加固不依赖任何人的私心——它只依赖一件事:没有反例。 而反例恰恰被第一次让步消掉了。
误诊阻挡:若这一处的重复让步是经过审议并留了记录的,那是丙级不是丁级。留痕是分界线,幅度不是。
第三条不写成签名,写成后果:丁级的自我加固使让步向少数几处集中,从而使系统在很长时间里表现优异;直到那几处让无可让。第十节的检验对这条后果给出了不利结果,见 10.3。
本文的主读数不是一个比值,是一条次序。
屈位序 Σ:把同一个系统历次偏离中的屈位按时间排成一列,每一项写四件——第几次、哪一处、第七节三栏的取值、与上一项是否同处。
它不需要总量,不需要分母,也不需要把不同系统放在一起比大小。它要回答的只有三个问题:先让的是哪一处;是不是上一次那一处;这两次之间有没有一份记录把它们连起来。
派生两个量,都只在同一个系统的纵向上可读:
重复轮次 R:某一处第二次成为屈位时,是第几次偏离。R 越小,让步空间收窄得越快。
判定侧份额:Σ 中侧栏取"判定侧"的项数占比。这一个只作探索性证据,不作承重读数——理由见 10.3,本文的检验表明它对编码口径极其敏感。
清点手册
项
内容
读数名
屈位序,符号 Σ;派生量:重复轮次 R
单位
一次偏离一项。一次偏离内多处让开时,只取第一处入 Σ,其余记在该项的备注里
偏离的取法
必须有独立于屈位的判定依据(超出正常运行范围、触发预案、进入应急状态);不得用"有人让开了"来界定偏离
粒度
一处=一份文件、一道工序、一条规则、一个器件中的一个。边界例:同一道校核在两个不同环节各被跳过一次,算两处;同一道校核在同一次偏离里被跳过两遍,算一处
编码规则一
侧栏的判法:让开的那一样,是否在这次偏离发生前就承担着"判断有没有问题"的职能。是则判定侧
编码规则二
指定栏只认在本次偏离之前已经存在的文本;事后补写的授权一律记未指定
编码规则三
留痕栏只认能与上一次比对的记录。一次性的说明、只写在本次报告里的一段话,记无
编码规则四
不可判的项必须单列,不得并入任何一侧;不可判项占比高于三分之一时,Σ 不可用
编码规则五
Σ 只在同一系统内纵向可读,不得跨系统比长短
不适用
无法独立判定偏离时刻的场合;不可判项过半的场合;一次性系统(只发生过一次偏离)
三处一致
第八节定义 = 第十五节证伪条款 = 第十七节赌注,同一定义、同一粒度、同一份编码规则
三条判读纪律
纪律一 · Σ 不可事后重建。 判据四要求可跨次比较,而事后重建的比较用的是今天的分类去套过去的记录。第十二节第三处的削弱说明了这一点:这是本文最贵的一处让步。
纪律二 · 判定侧份额对编码口径极其敏感。 第十节里,同一批数据在两种都合理的分母下,集中度读数相差一倍以上。凡报判定侧份额,必须同时给出分母的取法。
纪律三 · 空的 Σ 是有信息量的。 一个系统若历次偏离都查不出屈位,有两种来路:它真的靠余量顶住,从不让步;或者它的让步全在判定侧且无留痕,因而不可见。两种来路在结果上同形,本文分不开——这是附录一的第一个洞。
这一次的"合格",有没有用到一次豁免?上一次的豁免是不是也在这一处?这两次之间,有没有一份记录把它们连起来?
它是拿去问文件的,不是拿去问人的判断的。下面五个场合各跑一遍,五个答案互不相同;其中两个是查出来的,并且反过来改了本文。
场合一 · 一份年度安全报告。 答案:查不到。年报只记事件,不记豁免;豁免记在另一套系统里(变更管理、偏差处理),而两套系统之间没有把"本年度的合格里用掉了哪几次豁免"接起来的字段。
场合二 · 一份审计工作底稿。 答案:查得到,而且是这一行明文要求的。 未更正错报汇总表逐条列明了本期允许留在报表上的错。这一处反过来改了本文——本文原本要写"让步从不被记";实际上有一个行业把它记了,而且写进了准则。改动是:屈位可以被记录,问题不在能不能,在没有人把历次的表接起来。 一年一张表,年与年之间不做比对,同一个科目连续五年出现在表上不会触发任何东西。本文因此把主张从"没有记录"改窄为"没有序列"。
场合三 · 一个学习者的语言。 答案:查不到,且不可能查到。没有任何人记录"这一次是为了把话说完而放弃了哪个结构"。这一场说明,本文的读数在无记录体系的场合一律无效。
场合四 · 一次系统故障的复盘。 答案:部分查得到,但方向反过来。 这一处也是查出来的。复盘文档记的是"根本原因",而根本原因几乎总是被追到实体侧——某个组件、某段代码、某个配置。判定侧的让步(这次没跑那套检查、这个告警上周被静音了)通常写在"背景"或"时间线"里,不进"原因"栏。 改动是:本文的侧栏不能靠读原因栏来编码,必须读时间线;而时间线是自由文本,不是字段。这使本文的读数在最需要它的地方最难取得。
场合五 · 一次信念的修正。 答案:查不到,但可以逼出来。给同一个人相隔一段时间提两个互相冲突的问题,看他两次放弃的是不是同一条。这是本文唯一一个可以当场做的最小检验,见第十五节。
五个答案的分布本身是一条结论:屈位在有正式记录的地方查得到单次,在任何地方都查不到序列。
本文不打算把证伪条件全留在纸上。下面这一条用公开可复算的数据实际跑过,四条结果里两条被本文自己的口径推翻,一条方向出乎意料。
统计之前先写死假设、变量与阈值,存档后才取数。
取十二个公开仓库的当前工作树:ansible、sqlalchemy、tornado、black、pytest、httpx、aiohttp、click、vue core、svelte、express、axios。合计 10,110 个源码文件。
被检验的对象是书面的屈位——写在源码里的豁免标记。取数前写死的标记清单:类型检查豁免、代码风格豁免、覆盖率豁免、前端校验豁免、允许失败的持续集成作业、预期失败与条件跳过的测试标记,共十类,一行一次命中。
H1(集中):按标记数排序,居前 10% 的文件承担全部标记的 50% 以上。
H2(非规模效应):按每千行标记密度排序,居前 10% 的文件承担全部标记的 30% 以上。H2 是对最强竞争解释——"其实不就是大文件里标记多吗"——的控制;H2 不过,则 H1 无信息。
H3(序列不存在):仓库中不存在把历次豁免按时间排成序列的记录。判据是文件名或目录名含相应词并且内容按时间排列。
H4(承重重合):标记最多的前十个文件里,属于主干目录(非测试、非示例、非文档)的比例不低于 0.5。预期方向是让步集中在主干。
代理变量声明(写在取数之前):源码里的豁免标记不等于一次真实偏离中最先屈服的位置。它只是"被事先指定为可以在此让开"的书面形态,属于第七节阶梯上的丙级,不是要打的丁级。屈位序本身不在这份数据内。
结果一(H1、H2 按预注册口径全部通过):十一个有标记的仓库里,H1 全部通过,中位数 0.768;H2 也全部通过,中位数 0.623。按预注册,两条都成立,而且成立得非常漂亮。
结果二(口径缺陷,两条通过被本文自己推翻):漂亮得可疑,所以回头查了分母。有标记的文件在全部文件里占比极低:ansible 3.1%、svelte 4.5%、axios 8.0%。当有标记的文件不足全部文件的 10% 时,"前 10% 的文件"按定义装下了全部标记,H1 与 H2 机械地等于 1.000。十一个仓库里有三个正是这种情形。
把分母改成"有标记的文件"重算(事后追加,已标明):
预注册口径
修正口径
H1 中位数
H2 中位数
两条都判负。让步并不集中在少数几处,它是摊开的。 十一个仓库里,有标记的文件占全部文件的比例从 3.1% 到 57.6% 不等,而在这些文件内部,标记的分布接近均匀。
结果三(H4 判负,且方向是本文没料到的):标记最多的前十个文件里,主干目录的比例中位数只有 0.50,十一个仓库里七个达标、四个不达标,其中两个是 0.00。更要紧的是另一个数:落在测试与类型测试文件上的标记份额,中位数 0.532,均值 0.614,最高的一个是 0.995。 也就是说,一个项目写下的豁免,一半以上不是给主干代码开的,是给检验主干的那一层开的。
结果四(H3 成立,且是全篇最稳的一条):十二个仓库,无一存在把历次豁免按时间排成序列的记录。零命中。豁免本身写得清清楚楚,每一处都在源码里、可检索、可统计;而"这些豁免是哪一次加的、上一次加在哪儿、这一处是第几次被豁免",一条都查不到。
结果五(一个仓库为零):express 在这份清单下标记数为 0。它不是没有让步,是没有把让步写下来。这一条限定了本文读数的覆盖面:它只能读到被写下来的那一类。
第一,删掉了"让步向少数几处集中"这句话。 这是本文第七节原本要写的第三条签名。修正口径下集中度判负,而且不是勉强判负——控制密度之后 0/11。保留下来的主张因此变窄也变硬:让步是摊开的;使它要紧的不是集中,是它落在哪一侧。
第二,把承重的落点从"集中"挪到"侧"。 结果三给出的那个数——判定侧份额中位 0.53、最高 0.99——是这次检验唯一一条方向明确且不是本文事先押的结论。它把本文的第三层主张改写成了现在这一句:先让的往往是尺子,不是被量的东西。 这一句比原来的更容易证伪,因为它给出了一个可以直接去数的方向。
第三,把"判定侧份额"降为探索性证据。 结果二说明本文的读数对分母的取法极其敏感——同一批数据在两种都合理的编码下,集中度相差一倍以上。凡涉及份额的量,本文一律只作探索性使用,并要求同时报出分母。承重的读数只剩下次序本身。
第四,把最稳的一层定在"没有序列"。 结果四是四条里唯一按预注册通过而没有被口径问题污染的一条,而且它不需要任何比值:零命中就是零命中。 本文因此把第三层主张定为一句可以直接去查的话,见第十八节。
第五,明写这次检验测的不是要打的那一级。 源码里的豁免标记是丙级——已指定、有留痕。本文要打的丁级按定义不留痕,因而在任何一份可检索的数据里都读不到。这次检验能做的,只是证明连丙级都没有被排成序列。 若连留了痕的那一类都没有人把历次接起来,不留痕的那一类就更不必说了——这是一个由弱推强的论证,本文承认它的强度有限。
按预注册的四条算:两条通过而被本文自己的口径推翻,一条判负且方向意外,一条成立。没有任何一条为本文提供了它原来想要的那种支持;本文最结实的一句话是被结果三逼出来的。
类比是"像",兑现是"在那个地方能据此去查一件具体的事"。前九处正向,后三处反过来让本文难看。
一 · 化工装置的偏差处理。 可查:一年内的"偏差记录"里,有多少条的处置是"经评估不影响质量,予以放行"。把这些条按涉及的检验项排开,看有没有同一项反复出现。若有一项连续多次出现而无人过问,那是丁级正在向丙级堆积。
二 · 医院的临床路径变异。 可查:变异记录里"退出路径"的理由分布。屈位的形态是:不是治疗方案改了,是这个病例被移出了路径——判定装置先让开,于是这次不算变异。
三 · 电网的告警管理。 可查:被长期抑制或置为"已知"的告警条目及其抑制起始日期。国际上有专门的告警管理规范要求统计"抑制中的告警数",而没有规范要求统计"抑制的历史序列"。这是本文第三层主张的一个现成正例。
四 · 供水管网的水质超标处置。 可查:超标记录中判为"采样误差、重新取样"的比例,以及重新取样的采样点是否与原点一致。判定侧让步在这里有一个极干净的形态:不是水变好了,是这次的采样被作废了。
五 · 学校的学业评价。 可查:某一门课的合格率长期稳定,而及格线、赋分办法、补考规则逐年微调。屈位序在这里是可重建的——各年的评分办法文本都在。
七 · 药品的稳定性考察。 可查:不合格结果的调查中,判为"实验室差错"从而作废原结果的比例。这一比例在监管中有名字,本文的贡献是要求把历次作废按检验项排成序列。
以下三处反过来给本文添麻烦。
十 · 熔断器与泄压阀。 工程学早就把屈位设计好、写进图纸、定期更换,并且明文记录每一次动作。这是甲级,不需要本文。 它说明屈位这件事一旦被认真对待,是完全可以做到有指定、有留痕、有序列的。本文说的那件事不是原理上的困难,是各领域没做。
十一 · 未更正错报汇总表。 如第九节场合二所述,审计已经把单次的屈位制度化了。本文在这一点上不是提出者,是复述者,必须承认。 本文剩下的贡献只是"把历次接起来"这一步,而这一步在会计上也不新——多期比较分析本来就是审计程序之一。这一处削弱了本文的原创性主张,写在这里而不是藏在末尾。
十二 · 分诊。 灾难医学的分诊制度是一套事先写好的、公开的、有伦理论证的让步次序。它同时是甲级与丙级,而且它明文承认自己在做什么。这说明当让步的后果足够严重、足够可见时,人类会把屈位序做出来。 那么本文说的那件事,可能只在后果不可见的地方成立——这是一个不小的适用范围收缩,本文接受。
跨领域取材若只用来举例,是不诚实的。下面三处,是这三门学问反过来削掉本文原本要写的东西。
本文最自然的处方是:把这些豁免管起来,让它们少发生。
审计学不同意,而且理由是硬的。重要性水平不是审计的缺陷,是审计得以存在的条件:若要求报表零错报,审计成本趋于无穷,而且没有任何一份报表能通过。一个不允许任何让步的检验体系,等于不检验——因为它给出的答案永远是不合格。
削掉之后:
本文不主张减少让步,只主张把让步的位置与次序记下来。让步的总量是一个成本问题,不归本文管;本文管的只有一件事——它是不是一直落在同一处,以及有没有人知道。
这一削动的是价值排序。它意味着本文不能被引为"收紧标准""减少例外""零容忍"的论据。恰恰相反:一个把豁免全部取消的体系,会把让步逼到无留痕的丁级去。
本文原本会写:只要开始记录,就能在让无可让之前发现问题。
二语习得否掉了这一句。它自己的核心难题正是判定一处是不是已经不再让了,需要的纵向证据几乎拿不到——所谓化石化与稳定化的区分,至今没有公认的操作标准。也就是说,即使你完整记录了屈位序,你仍然无法判断某一处还剩多少可让的余地。
削掉之后:
屈位序告诉你"这一处又让了一次",不告诉你"这一处快到底了"。本文的读数是一个位置的读数,不是一个余量的读数。
这一削动的是适用范围。它意味着本文不能被当作预警指标使用——重复轮次 R 小只说明让步空间在收窄的方向上,不给出剩余次数。任何按 R 排预警等级的做法,本文明确反对。
本文最省事的处方是:在现有记录里加一栏,把每次让步的位置写上。
信念修正的表示定理否掉了这个想法,而且是从相反的方向。既然排序可以从修正行为里读出来,那么把屈位序记下来,等于把这个系统的牢固度排序公开出来。而一个公开的排序有一个立刻的后果:它是可以被利用的。知道哪一处会先让的人,可以把压力精确地施加到那里,或者把自己想保的东西挪到高处去。
削掉之后:
屈位序是一份关于"这个系统会先放弃什么"的公开说明书。它不适合无差别公开;本文只主张对承担后果的一方可见,并在第十六节写死了三条边界。
这一削动的是处方形态:从"加一栏并公示"改成"加一栏并限定可见范围"。这也是本文与所有透明化主张分开的地方——本文要的不是透明,是可比对。
下面十种最容易与本文混。每条写清它说到哪一步、差别落在哪,以及一个可以分出对错的观察。
一 · 最弱环与薄弱环节。 说到哪一步:一条链的强度由最弱的一环决定。分离线:最弱环是一个静态属性,可以在扰动发生前测;屈位是一个事件,只在扰动发生时才有。判定形式:若一个系统历次屈位都发生在事前测定的最弱环上,则最弱环这个概念已经够用,本文多余;若历次屈位在不同位置上跳动、且相当一部分落在判定侧(判定侧根本不在强度链上),则本文对。 第十节的判定侧份额是这条分界的直接证据。
二 · 熔断器与设计的牺牲件。 说到哪一步:可以事先指定一处让它先坏。分离线:这正是本文阶梯上的甲级,本文完全同意它有效。差别在于,甲级的存在不保证屈位落在甲级上——第十节里,最多被豁免的文件是测试文件,而没有任何一份设计文件指定过测试是牺牲件。判定形式:查历次屈位落在甲级上的比例。接近 1,本文多余;显著小于 1,甲级只是一个愿望。
三 · 目标置换(Merton, 1940)。 说到哪一步:手段被当作目的,规则的遵守取代了规则的目的。分离线:目标置换说的是判定标准被过度遵守,本文说的是判定标准被让开。方向相反。判定形式:看那道工序这次是被严格执行了还是被跳过了。严格执行而失去意义,归 Merton;被跳过而结果合格,归本文。
四 · 常态化的偏差(Vaughan, 1996)。 这是最危险的一位。Vaughan 在挑战者号的研究里提出:组织会把一次次超出预期的观测重新界定为"在可接受范围内",直到灾难。它已经说到了"判定标准逐次让步"这一步。分离线在于对象与形态:常态化的偏差说的是同一个技术参数的可接受范围被逐次拓宽——它是一个幅度的连续漂移,且有大量记录(每次飞行后的评估文件都在)。本文说的是位置:这一次让开的是哪一道工序,下一次是不是同一道;它是离散的、可点名的,而且本文的检验表明这个序列没有被任何账本保存。 判定形式:取一个案例,若历次让步全部落在同一个参数的范围上,则归 Vaughan;若历次让步分散在不同的工序上而每一次都被单独合理化,则那个序列只有本文的读数能看见。 本文与她的关系不是竞争,是接续:她给了机制,本文补的是清点单位。
五 · 安全边界的漂移(Rasmussen, 1997)。 说到哪一步:系统在经济压力与工作量压力下持续向可接受行为的边界迁移,直到越界。分离线:Rasmussen 的迁移是无位置的、系统性的、由梯度驱动的;本文的屈位是有位置、有执行者、可点名的一次动作。判定形式:问"这一次是谁在哪一刻让开了哪一处"。答得出是屈位;答不出、只能说"整体在漂",是迁移。 二者可以同时为真:迁移是慢变量,屈位是它的每一次落地。
六 · 未更正错报汇总表。 说到哪一步:本期允许留下的错,逐条列出并评估汇总影响。分离线只有一条:它是横截面的,本文要的是纵向的。 判定形式:查同一科目连续出现在若干年的表上,有没有任何一条程序会因此被触发。没有,则本文补的那一步确实缺。
七 · 化石化(Selinker, 1972)。 说到哪一步:中介语的某些结构永久停住。分离线:化石化是结果的名字,本文问的是过程中的动作——这一处是在哪一次、为什么被放弃的。判定形式:化石化预测该结构此后不再变化;本文预测的是该结构在此后每一次表达压力下都会被再次放弃,且放弃是可观察的事件。若在纵向记录里看得到重复的放弃事件,本文的读数有独立内容;若只看得到一个恒定的错误,化石化已经够用。
八 · 牢固度排序(Gärdenfors & Makinson, 1988)。 说到哪一步:修正操作与排序互相刻画。分离线:它把排序当作构造工具,本文把它当作只能事后读出的记录,并据此拒绝"因为排序好所以没崩溃"这种解释。判定形式:能不能给出一个独立于让步行为、可事前测量的排序。给得出,本文错;给不出,"排序在前"这句话就只是一个记法。
九 · 免疫豁免与免疫耐受。 说到哪一步:识别装置对某些抗原不作反应,从而避免自伤。分离线:耐受是被建立起来的、有机制、有细胞学基础的稳定状态;本文说的是一次一次的事件性让步。判定形式:看它是不是每次都需要一次动作。需要,是屈位;不需要、已经内建,是耐受。 这一条也提醒本文:屈位重复足够多次会变成耐受,而那时它就不再属于本文这一类。
十 · 技术债。 说到哪一步:为了眼下的进度而接受一个此后要还的次优方案。分离线:技术债的账本记的是欠了什么,本文的账本记的是让开的是哪一处、上一次是不是也是它。二者的交集是丙级。判定形式:技术债的清单里有没有"这一项是第几次被延期"。没有,那份清单仍是横截面的。
上面十位里有五位不是竞争者,是从五个方向逼到同一件事跟前的人。摆在一起,本文补的是哪一步就清楚了。
最弱环从强度一侧逼近:让步的位置由物性决定。它给出了位置,但只对可测强度的东西成立,且判定装置不在它的链上。
常态化的偏差从过程一侧逼近:判定标准会逐次让步。它给出了机制,但清点单位是参数的范围,不是工序的位置。
安全边界的漂移从压力一侧逼近:让步由梯度驱动。它给出了动力,但没有落点。
未更正错报汇总表从账一侧逼近:让步应当被列出来。它给出了字段,但只在一期之内。
牢固度排序从形式一侧逼近:让步有次序。它给出了次序的形式,同时证明这个次序不可事前取得。
五位共同没有问的是同一句:历次让步的位置,作为一条可跨次比较的序列,谁在保存。 本文补的是这一步,不是发现了这件事。这一点必须写明:本文不主张此前无人看见,只主张此前无人为它设过序列。
划界写完之后还欠一句:本文这条判断,为什么不能从三门中的任何一门单独推出来。答案不是三门各有缺陷——是它们各自的问题结构恰好使这一步成为不必要的。
审计学到不了,因为它的任务在一天之内结束。 审计的产品是一份意见,出具那一天成败已定。对一个以期为单位结算的行业来说,"这一处是第几次被允许留下"这个问题在本期之内没有意义——本期的判断只依据本期的重大性。它不是没想到跨期,是跨期比对不属于它要交付的那样东西。真要它交,它会问:那我按哪一年的重要性水平判?而这个问题在它的框架里无解,因为线每年都重定。
二语习得到不了,因为它没有判定的一方。 一个学习者放弃一个结构,没有任何工序被跳过——没有检验,没有阈值,没有豁免申请。让步在这里是纯粹实体侧的,判定侧根本不存在。于是本文最要紧的那一栏(侧)在它的对象上恒为空。它看得见让步,看不见让步会落在两侧中的哪一侧,因为它的对象只有一侧。
信念修正到不了,因为它一开始就把次序形式化掉了。 它有次序,而且是最严格的次序;但那个次序是逻辑对象,不是历史记录。表示定理保证排序存在,恰恰因此使"去记录历次放弃"变成多余的——既然排序存在且可从行为读出,何必再存一份流水账。它到不了这一步的原因,正是它已经走完了这一步的形式那一半。 本文做的只是把它那一半翻回经验一侧:既然排序只能从历次放弃里读出,那么历次放弃就必须被保存,而这件事没有人做。
三门到不了的三个理由互不相同——一个是结算周期,一个是对象只有一侧,一个是形式已足。这三条合起来才说明:这不是一个被遗漏的问题,是一个在三种问题结构里各自被合理地取消掉的问题。
上面十位各有各的结构性盲区。句式固定为"某某把某样东西当作给定,因此看不见某样东西",并要求写出承认之后它会怎么塌。
最弱环把"强度是构件的属性"当作给定,因此看不见判定装置也会先让,而判定装置没有强度。一旦承认,这条链上就出现了一个没有量纲的环,链的比较失效。
常态化的偏差把"被让步的是同一个参数"当作给定,因此看不见让步在不同工序之间跳。一旦承认,它赖以叙事的那条"逐步拓宽"的曲线就画不出来了。
安全边界的漂移把"迁移是连续的"当作给定,因此看不见每一次落地都是一个可点名的离散动作。一旦承认,梯度这个比喻就不再是解释,只是一个总结。
未更正错报汇总表把"重要性是本期的属性"当作给定,因此看不见跨期的重复。一旆承认,重要性水平就不能按年确定,而整套实务建立在按年确定之上。
牢固度排序把"排序是修正的输入"当作给定,因此看不见排序只是修正的记录。一旦承认,用排序解释稳健性就成了同义反复——它自己的表示定理已经把这一点写在那里了。
五行背后是同一样被当作给定的东西:
让步的位置是被某种性质决定的,因此只要知道那个性质,就不必记录历次让步。
这块地是互相批判的各派共同站着的:强度派、过程派、压力派、账本派、形式派,争的是决定让步位置的是哪一种性质,而共同假定了存在这样一种性质。正因为共同站着,谁也没法回头看它——你要质疑它,就得先承认"没有任何性质能替代对历次让步的记录",而这句话在任何一派的语言里都听起来像是放弃解释。
必须立刻补一句,免得这段被读成一种超然:本文自己也在一张表里。 本文能说出这件事,靠的是把三门学问的三本账并排放,让它们互相照出对方没有的那一栏。这个办法只在有三本账可以并放时管用;对只有一本账的领域,本文提供的不是发现,是一个提醒——去找第二本账。
F1(证伪主件,一周内可做完的回溯检验,成本最低)。 取任一有正式偏差处理制度的机构近三年的偏差记录,按"涉及哪一道检验工序"给每条编码,排成时间序列。若同一道工序被重复让开的次数与随机分布无异——即让步在工序之间是均匀独立的——则本文的第二层主张(屈位序有内容)为伪。 所需数据在多数机构的既有记录里已经存在。这一条是本文最愿意让别人先做的。
F2(机制证伪,控制最强竞争解释)。 最强的竞争解释是"其实不就是那道工序本来就最容易出问题吗"。控制掉工序的基础触发频率之后——即以每道工序被触发的次数为暴露量——若"被让开"的条件概率在各工序之间没有差异,则本文为伪:那时让步的位置只是触发次数的影子,不构成一个独立的序列。
F3(判定侧偏向)。 在具备完整时间线记录的一批故障复盘中,若判定侧让步的份额显著低于实体侧,则本文最结实的那一句(先让的是尺子)为伪。 第十节给出的 0.53 中位数来自源码豁免标记这一种间接材料,本文明确要求用故障时间线独立重做一次。
F4(轮次预测)。 本文的三条机制各有回写,且回写落点相同——都落在判定这件事的那道工序上。可裁决的形式是:取一个体系连续三次偏离,看每次之后被修改的是实体还是判据。若三次修改的都是判据(放宽阈值、增设豁免、调整口径)而实体未动,本文的轮次预测成立;若实体先于判据被修改,则为伪。 顺序比相关难被巧合满足,这一条是本文最愿意押的。
F5(甲级的比例)。 若在有明确牺牲件设计的系统里,历次屈位落在设计指定的牺牲件上的比例接近 1,则本文对那类系统多余,其适用范围应收缩到无牺牲件设计的系统。
F6(最小实验,当场可做)。 对同一批受试者,相隔一段时间提出两组结构相同而表面不同的信念冲突,记录每次放弃的是哪一条。若两次放弃的位置之间没有任何关联,则牢固度排序的可读性主张为伪——那时让步是随机的,不构成序列。
F7 · 若 F1 判负,能学到什么。 学到的将是一件比本文更值钱的事:让步的位置是随机的,因此系统的稳健不来自任何"排序",只来自让步空间的总量。 那时正确的处方是数余量,不是数位置——而这恰恰是本文一开始要反对的那一条。本文愿意接受这个结果。
本文的处方是把屈位记下来。一旦记下来会发生什么?
丁级会往下沉。 一次被记录的判定侧让步,会立刻引来两种反应:要么补一份事后授权把它变成丙级,要么下一次换一种不产生记录痕迹的方式让开。前者是形式合规,后者是把问题赶到更深处。 两种都不需要改变任何实际做法。
第二重反噬更难看。屈位序一旦成为一个被考核的东西,最省事的达标办法是把让步分散开——同一道工序不连续让两次,轮着让。这样重复轮次永远很大,读数漂亮,而系统的实际让步空间收窄得一模一样,甚至更快,因为现在每一道工序都被让过一遍了。
第三重反噬来自本文自己的伦理条款。第十六节第二条要求这个读数不得用于追责——而一个不与任何后果挂钩的记录,在多数机构里活不过两年:没有人会为一栏不影响任何决定的字段维护数据质量。于是本文同时要求两件互相取消的事:它必须无害才能被如实填写,又必须有用才不被废弃。 唯一看得见的折中是把它挂在一个本来就会停下来的环节上——偏差处理的结项、变更的关闭、事故的销号——让填写这一栏成为那个环节走完的条件,而不是另设一套台账。这个折中很弱,因为那些环节本身也可以被让开,而它一旦被让开,恰恰不会留下记录。
我看不到出口。 使一次让步能够发生的,正是它不必被登记;而使它可比对的,正是它被登记。二者不能同真。本文能给的只有一条很弱的建议:不建常设台账,只在每一次偏差处理的结项文件里加一问——"本次让开的是哪一处,上一次是哪一处"——并要求当时填写,不许事后补。
本文的产物是一份可能落到具体工序、进而落到具体岗位上的序列,因此它自带被拿去追责的风险。以下三条是发表的前提,不是建议。
其一,这个读数指的是位置,不是人。 一处反复成为屈位,说明这个体系的压力反复落在这里,不说明守着这一处的人有什么问题——恰恰相反,是他一次次替整个体系让开的。
其二,不得用于任何追责、扣减或处分。 屈位序一旦与追责挂钩,第一次被记录的让步就是最后一次被记录的让步。这一条不是建议,是这个读数能够存在的条件。
其三,可见范围须限定。 见第十二节第三处:屈位序是一份关于"这个系统会先放弃什么"的说明书。它应当对承担后果的一方可见,不应当无差别公开;已按它做出过任何不利安排的,必须公开编码规则并提供复核通道。
本文的自我定位不检成稿,也不检写它的那条路线,改检一件更小、更具体的东西:第十节那次检验本身。
那次检验里发生过两次让步,位置都可以指出来。
第一次在分母上。 预注册写的是"全部文件的前 10%"。跑出来 H1、H2 全部通过,漂亮得不像话。此时有两条路:接受这个结果,或者回头查分母。本文回头查了,发现分母选错,两条通过随之判负。——这一次让的是实体侧:本文放弃了自己想要的结论。
第二次在假设上。 H4 判负之后,本文没有停在"判负",而是从同一批数据里取出了另一个数(判定侧份额),并把它写成了最结实的一句。这一次让的是判定侧:本文放宽了"什么算这次检验的结论"这条线。 预注册里没有这一条,它是事后从数据里长出来的。
按本文自己的阶梯,第二次让步的三栏取值是:判定侧、未指定、有留痕——丙级,不是要打的丁级,因为它留了痕(就是你正在读的这一段)。 若本文没有写这一段,它就是丁级。
具体后果有两条:
第一,第十节那条最结实的结论,在证据等级上低于其余各条,因为它是事后取得的。本文已在 F3 里要求用独立材料重做一次,这不是谦辞,是这条结论目前唯一的凭据。
第二,本文提出的读数,本文自己只做了一次。 屈位序需要至少两项,而本文这次检验只有一次偏离(一次预注册、一次结果)。按本文自己的编码规则第五条,这次检验的屈位序不可用。
自减条款:本栏此后凡报告预注册检验者,须一并列出该次检验中让步的位置与栏值;只报结果不报让步位置的,按本文自己的判据视同无留痕。
到 2034 年 6 月 30 日 为止:
在下列三类公开可查的记录规范中,明文要求把历次让步的位置排成可跨期比对的序列——即要求记录"本次让开的是哪一道工序"并要求与上一次比对——者,占比低于 5%。
三类是:① 制药、化工、食品的偏差与变更处理规范;② 电力、供水、轨道交通的告警抑制与临时措施管理规范;③ 各类质量体系认证中关于"不符合项"与"让步接收"的记录要求。
什么不算命中,写死五条:
若到期时占比达到或超过 5%,本文的第三层主张即告失败。
问题是生命为什么具有韧性,为什么偏离原有秩序之后不必然崩溃。
现成的三类回答分别把决定项放在门槛线的位置、输入与产出的配比、牢固度排序的优良上。三者互相取消,而它们共同假定:排序在前,让步在后——哪一处先让是被某个上位的东西事先决定的,让步不反过来改这个决定者。
信念修正自己的表示定理推翻了这条假定。排序与修正行为是充分必要的互相刻画,排序只能从已经发生的放弃里读出来。它不是让步的原因,是让步的记录。 于是"因为它的排序好所以没崩溃"是一句同义反复,而这正是三门的答案都无法被证伪的技术原因。
能观察的只剩下让步本身。据此本文提出屈位——一次偏离中最先让开、并因此使其余部分不必让开的那一处,四条判据;以及屈位序——历次屈位排成的、可跨次比较的次序。辨别装置是一道三栏标注的阶梯,要打的是"判定侧·未指定·无留痕"那一级;它的两条签名是:它自己不可能发出信号,以及让过一次的地方下次更容易再让。
一次预注册检验把本文削掉了一半。让步并不集中在少数几处——控制密度之后,集中度在十一个仓库里零通过。删掉这句更强的话之后,剩下的那一句是被数据逼出来的,也更容易去查:
先让的往往是尺子,不是被量的东西。 十二个仓库、10,110 个源码文件、5,212 处书面豁免里,落在检验装置一侧的份额中位数是 0.53,最高 0.99。
而最稳的一层不需要任何比值:十二个仓库里,没有一个保存自己历次豁免的时间序列。 每一处豁免都写得清清楚楚、可检索、可统计;而"这是第几次在这一处让开",一条都查不到。
因此本文最终的结论不是关于韧性的一句赞美,是一句可以直接去查的话:
一个系统看上去从不崩溃,可能只是因为每一次它都先让开了判定自己有没有崩溃的那道工序;而没有任何账本会把这些让步排在一起,让人看出它们一直落在同一个地方。
洞一 · 空的屈位序有两种来路,本文分不开。 查不出屈位,可能是真的没让步,也可能是让步全在无留痕的丁级。两种在结果上同形。这一个洞恰好落在本文最要紧的那一级上。
洞二 · 第十节测的不是要打的那一级。 源码里的豁免标记是已指定、有留痕的丙级;丁级按定义不留痕,因而在任何可检索的数据里都读不到。本文用"连丙级都没有被排成序列"去推"丁级更不会有",这是由弱推强,强度有限。
洞三 · 三条机制的回写为什么都落在判据上,本文给不出理由。 第十五节 F4 的轮次预测建立在三个例子的观察上。为什么不是落在实体上,本文没有机制,只能把它写成一条可判伪的预测。
数据来源:十二个公开仓库的当前工作树,以 git clone --depth 1 获取,取数日期 2026 年 8 月 13 日。仓库:ansible/ansible、sqlalchemy/sqlalchemy、tornadoweb/tornado、psf/black、pytest-dev/pytest、encode/httpx、aio-libs/aiohttp、pallets/click、vuejs/core、sveltejs/svelte、expressjs/express、axios/axios。
规模:扩展名为 .py、.js、.ts、.tsx、.jsx、.yml、.yaml 的源码文件共 10,110 个;命中豁免标记的行共 5,212 行;有标记的文件 990 个。
标记清单(取数前写死,不得增删):类型检查豁免、代码风格豁免、覆盖率豁免、前端校验豁免、类型断言豁免两种、允许失败的持续集成作业两种、预期失败标记、条件跳过标记,共十类;同一行含多个标记只计一次。
主要读数:按标记数与按每千行密度两种排序下,居前 10% 的文件所承担的标记份额;分母有两种取法(全部文件/有标记的文件),第十节两种都报了。
H3 判据:文件名或目录名含 waiver、exemption、deviation、exception-log、suppression 之一且内容按时间排列者计为命中;十二个仓库合计命中 0。
已知的代理变量问题:源码豁免标记不等于一次真实偏离中最先屈服的位置;它是"事先指定为可在此让开"的书面形态。判定侧的编码用的是文件路径是否落在测试、示例、规格、基准、夹具、文档目录中,这是一个粗糙的代理,会把主干里的检验代码误判为实体侧。
口径变更记录:分母由"全部文件"改为"有标记的文件"发生在结果一之后,属事后追加,正文已标明并同时报告两种口径。
同一栏目里有几篇形状相近,读者极易并读,故逐条分开。
与《伏持》(同一道题的另一篇)。 那一篇问的是谁在撑——偏离与新秩序之间,续存由两端名册上都查不到的单位承担。本篇问的是谁先让——同一段时间里,最先让开的是哪一处。两篇的方向相反:一个是有人顶上而不被记,一个是有一处撤走而不被记。判定形式:做一次移除。移除它那段续存塌掉,是那一篇;移除它其余部分反而要跟着让,是本篇。 两者可以在同一次偏离里同时发生,读数互不决定;本文明确反对把二者合成一个"隐性韧性"复合指标。
与《骑缝》。 那一篇问的是还是不是它——改变前后两侧共有的那一份。本篇问的是这一次让开的是哪一处。判定形式:那一篇看的是两端的交集,本篇看的是中间的次序。 若某系统零骑缝而屈位序很长,说明它每一次都换了新的让步位置且两端不共享任何东西——两个读数在这里给出的是互相独立的信息。
与《合牵》。 那一篇问的是下一次还扛不扛得住——恢复中被打通而没有关回的连接。本篇问的是这一次是哪一处先让。二者形状相邻但方向不同:合牵是加了一条不该留的连接,屈位是撤了一道该在的工序。判定形式:看那个动作是打通还是撤除。 两者叠加时,系统的下一次偏离会更快到达无处可让的状态——但这只是一句猜测,本文没有证据。
与《熟带》——必须先说明一处重合。 那一篇与本篇在同一时段成稿,而两篇都取了信念修正这一门,也都放在同一个位置上,引的还是同一批文献。这是一处真实的重合,本文不辩解,只把两篇取的东西分开。那一篇取的是幂等性——修正一次之后再修一次不再变化,据以说明"反应变小"这件事在形式一侧本是好性质,从而拿走了它自己的价值排序。本篇取的是表示定理——排序与修正行为互相刻画,据以说明"因为排序好"是同义反复。两处取的是同一套理论的两条不同结果,指向也相反:一条说结果的稳定是好的,一条说用排序作解释是空的。判定形式:给定一个连续被修正的体系,若它的修正在数次之后不再变化,那是那一篇管的现象;若它每次都变而变的位置可以指出来且反复落在同一处,那是本篇管的现象。 两篇的读数在同一个体系上可以一个有值一个无值,因而不互为验证;同一门学科在同一位置上被连用两次,两篇的跨域支撑不得合并计算。
与《阅痕》。 那一篇问的是判定装置认不认自己的产物;本篇问的是判定装置这一次有没有被跳过。判定形式:装置运行了但不认账,归那一篇;装置这次没运行而结果照样合格,归本篇。
与《移基》。 那一篇问的是参照系在滚动;本篇问的是某一道工序被让开。判定形式:说得出"是哪一处、由谁、在哪一刻"的,是本篇;说不出、只能说整体在漂的,是那一篇。 第六节的第四条排除项就是为这条分界写的。
四篇一行分工:还是不是它(《骑缝》)/这一次为什么没塌(《伏持》)/下一次还扛不扛得住(《合牵》)/这一次是哪一处先让的(本篇)。
1. Alchourrón, C. E., Gärdenfors, P., & Makinson, D. (1985). On the logic of theory change: Partial meet contraction and revision functions. The Journal of Symbolic Logic, 50(2), 510–530.
2. Gärdenfors, P., & Makinson, D. (1988). Revisions of knowledge systems using epistemic entrenchment. In Proceedings of the Second Conference on Theoretical Aspects of Reasoning about Knowledge (TARK '88), 83–95. San Francisco: Morgan Kaufmann.
3. Gärdenfors, P. (1988). Knowledge in Flux: Modeling the Dynamics of Epistemic States. Cambridge, MA: MIT Press.
4. Hansson, S. O. (1994). Kernel contraction. The Journal of Symbolic Logic, 59(3), 845–859.
5. Selinker, L. (1972). Interlanguage. International Review of Applied Linguistics in Language Teaching, 10(3), 209–231.
6. Long, M. H. (2003). Stabilization and fossilization in interlanguage development. In C. J. Doughty & M. H. Long (Eds.), The Handbook of Second Language Acquisition (pp. 487–535). Oxford: Blackwell.
7. Krashen, S. D. (1985). The Input Hypothesis: Issues and Implications. London: Longman.
8. Swain, M. (1985). Communicative competence: some roles of comprehensible input and comprehensible output in its development. In S. Gass & C. Madden (Eds.), Input in Second Language Acquisition (pp. 235–253). Rowley, MA: Newbury House.
9. International Auditing and Assurance Standards Board. ISA 320: Materiality in Planning and Performing an Audit. New York: IFAC.
10. International Auditing and Assurance Standards Board. ISA 450: Evaluation of Misstatements Identified during the Audit. New York: IFAC.
11. Merton, R. K. (1940). Bureaucratic structure and personality. Social Forces, 18(4), 560–568.
12. Vaughan, D. (1996). The Challenger Launch Decision: Risky Technology, Culture, and Deviance at NASA. Chicago: University of Chicago Press.
13. Rasmussen, J. (1997). Risk management in a dynamic society: a modelling problem. Safety Science, 27(2–3), 183–213.
14. Hollnagel, E., Woods, D. D., & Leveson, N. (Eds.) (2006). Resilience Engineering: Concepts and Precepts. Aldershot: Ashgate.
15. Holling, C. S. (1973). Resilience and stability of ecological systems. Annual Review of Ecology and Systematics, 4, 1–23.
16. Ashby, W. R. (1952). Design for a Brain: The Origin of Adaptive Behaviour. London: Chapman & Hall.
17. Perrow, C. (1984). Normal Accidents: Living with High-Risk Technologies. New York: Basic Books.
18. Reason, J. (1997). Managing the Risks of Organizational Accidents. Aldershot: Ashgate.
版本与分工声明
正文十八节与三篇附录,汉字数见文末统计。检验数据取自公开仓库,取数与统计脚本、预注册文本、逐仓结果可复算。
分工如下。作者出题、限定取材的约束、定下成文的标准并对全部结论负责;语言模型承担文献核链、克隆取数、编码与统计、初稿撰写。第十节那五条结果的取舍由作者逐条过目:其中两条按预注册本来是通过的,回查分母后判负,仍按判负写入;一条判负而方向与预期相反,也原样保留。凡与作者事先设想不合的读数,一律不删不改。
本文可以分层引用:第一层是屈位这个构念与它的四条判据;第二层是三栏标注的阶梯与屈位序这条读数;第三层是一条不依赖前两层的经验主张——没有任何账本把历次让步的位置排成一条可跨次比较的序列。第一层若被推翻,后两层仍然成立;第三层最容易检验,也最稳。