人为什么把疾病、破财、婚姻不谐、家道中落与死亡这些结果,组织成方位、形势、禁忌与吉凶?以往的回答分三路:不确定与失控催生了它;它是认知装置的副产品;它是宗族与地权竞争的说辞。本文提出第四种。所有可用的硬账本都必须分案:一病一次、一案一判、一单一险、一事一报。分案是它们能干活的前提。分案带来一个后果:没有任何一本账负责把分属不同账本、各自已经结清的几件事合起来看,而"为什么偏偏落在我们家"这个问题恰恰只能在合起来看的时候才成立。于是出现一类持有者:它由若干已结条目合成,任何账本都不曾为它开过户,而它一经确立,反过来重新指定每一条目的地位。本文称之为合户,给出四条判据、一件装置(跨账归户表)与三个读数(账内合并率、跨账共合率、跨单位合并数)。判据不含程度词:这几件事,有没有任何一本账把其中任意两件放在同一个账户下;如果没有,是谁把它们放在一起的,按什么规则。本文在 PyPI 的两本互不隶属的公开账上作了一次预注册检验:1,444 个版本条目、593 条安全公告、27,707 对被同一公告共同覆盖的版本。结果是三个排成一列的数——账内合并近乎完全(最大单条覆盖率中位 1.000),跨账合并近乎为零(0.0007),跨单位合并严格为零(593 条公告中跨包者 0 条)。预注册的主读数被自己的数据判伪,并因此被改写。
关键词:合户;分案;跨账共合率;跨账归户表;归堆自明假定;已结条目
一个村里的中年人,五年之内遇上四件事:母亲中风、自己被裁、儿子高考失利、妻子提出离婚。四件事各有各的去处。中风进了医院,有病历、有出院小结、有一份写得清清楚楚的诊断;裁员进了劳动仲裁,调解结案,补偿到位;高考有分数条;离婚有调解书。四本账,四个结论,每一本都办得干净,没有一处可以指摘。
可是他要问的那个问题,四本账一本也接不住:为什么偏偏是这五年,偏偏是这一家。
这个问题不是四个问题的加总。它要求把四件事合起来看,而合起来看这件事,在制度上不属于任何人。医生的职责是把这一次中风看清楚,不是把这一家五年看清楚;仲裁员管这一份劳动关系;法官管这一桩婚姻;招办管这一次考试。每一位都做了分内的事,而且做得对。分案是这些账本能够干活的前提:一份包含全家五年的病历没法用来结算,一份把裁员和离婚写在一起的裁决书没法执行。
于是有了一个空缺。这个空缺不是谁的失职,它是分案这门手艺的稳定产物:
没有任何一本账负责把分属不同账本、各自已经结清的几件事合起来看。
而风水先生做的,恰好就是这件没有人做的事。他到这户人家来,不查病历,不看裁决书,不问分数。他把这四件事——连同前些年的几件——一起摆在一张图上,指出它们共同的来处:那道正对着大门的路,那根压在床上的梁,那座朝向不对的坟。他给出的不是一个解释,是一个账户:一户人家的账户。四件事第一次被记在同一个名下。
本文要主张的就是这件事。人把不确定的结果组织为空间中的方位与形势,其驱动不在"不知道",也不完全在"账已经关上"(这一层已由本栏同题的前一篇处理),而在分案本身:每一本可用的账都必须切割,而切割出来的那些单位合起来并不能容纳"这一家""这一段""这一脉"这样的持有者。这个持有者要出现,必须由账外的人合成。
合成出来的这个东西,本文命名为合户:由若干分属不同账本、各自已经结清的条目合成的一个持有者,而任何账本都不曾为它开过户;它一经确立,反过来重新指定每一条目的地位。
"反过来重新指定"这半句是要害。合户不只是把四件事放在一起。它一旦成立,那次中风就不再只是一次中风,它成了"那年动土之后的第一件事";那次裁员成了"第二件"。四件已经各自结清的事,被重新赋予了在另一个次序里的位置,而这个次序在四本账上都不存在。
本文的三层主张可以分开引用。第一层最强也最易倒:合户是一类被造出来的持有者,不是既有对象的一次重新描述。第二层是一件工具:跨账归户表——把几件已结之事横排、把各本账竖排,逐格填它在那本账上的账户名,然后只问一件事:有没有哪一格能同时容纳两件。第三层最稳,也最容易查:在医疗、司法、保险、事故调查这四类机构里,没有任何一个岗位的职责说明包含"把本机构的已结案件与其他机构的已结案件合并考察"。合案不是任何人的活。
为了不让这三层停在纸面,本文向三门与风水毫不相干的学问各要了一条互不相容的主张——校勘学、交通运输工程、公共预算——从它们打不通的地方取出一条谁也没说出口的共同假设;又在两本完全公开、互不隶属的登记账上,把最便宜的那条检验按预注册跑了一遍。跑出来的主读数被自己的数据推翻了,本文把推翻过程与改写结果一并写在第九节。
这道题的邻居——人类学、宗教学、地理学、建筑学、心理学——都不进本文的取材。它们在这道题上已经站定了位置,向它们要参照,得到的只会是本领域内部的又一轮讨论;它们的位置留到第十二节,作为要正面处理的对手。
本文取的三门,共同点只有一个:每一门都必须回答"一个结算单位的边界由什么决定",而三门给出的答案互不相容。
一处必须先讲明的规矩:下文把每一门的立场收紧成"只有我这一条是决定性的"这种排他形式,是本文为使三者互相顶撞而作的收紧,原作者并未这样写过。可核的是每条背后所引的具体工作;不可核、也不应被当作引文的,是这三句收紧后的话。本文不使用任何无法按作者与题名在公开数据库中检索到的文献。
一部古书传到今天,往往有十几个乃至上百个本子,字句互有出入。校勘学要做的,是从这一堆各自完整的本子里,定出一个可以拿来读、拿来引、拿来印的文本。
它的方法有一条主线:从异文的分布反推诸本之间的亲缘关系,把偶然独立发生的讹误与共同继承的讹误分开,据此建起一棵传承的树,再从树上回推出那个所有现存本子共同的来源。这条路线的产品,就是定本。
这里有一件在这门学问里人尽皆知、却几乎不被拿去讨论的事:
定本是一个历史上从未存在过的本子。 它由若干个各自完整、各自真实存在过的本子合成,而它自己不是其中任何一个。它是被造出来的。
而它一经确立,就反过来重新指定了每一个实存本子的地位:某个宋本从此是"一个异文来源",某个明刻从此是"一个转录讹误的携带者"。这些本子在被定本确立之前,各自是完整的、独立的、有自己的读者与流传史的;之后,它们成了另一个东西的证据。
这一门也承认它这条路线的边界:共同讹误只能证明存在共同来源,不能证明不存在;两个抄手完全可能在同一处独立犯下同样的错,而这种偶合在原理上无法被穷尽排除。校勘学为此发展了一整套判别经验,却没有一个可以清点的量。
时序读数:先动的是本子——一个新本子被发现,异文格局改变;异文格局与既定的传承次序对不上,于是这部书赖以成立的那套条件(何为底本、何为定本、校例怎么写)被改写;改完之后回写两处:某些异文从此不再被记为异文,而传承树被重排。下一轮通常仍由新本子先动。
第二门给出的答案完全不同:单位的边界不由对象决定,由流决定。
这门学问处理的是一件反直觉的事实。一条快速路上出现拥堵,堵住的那一段并不是出问题的那一段。真正的限制在下游某处——一个匝道汇入、一处车道数减少、一个坡道——那里的通行能力被超过了,于是排队从那里开始,向上游推进。你站在堵得最厉害的地方,看到的是结果不是原因;原因在你前方几百米甚至几公里之外,而那里可能一路畅通。
这门学问还承认一件更麻烦的事:排队一旦形成,即使完全消散,那处瓶颈的通行能力也不回到原先的数值。 通行能力在这里不是一个固定的属性,它是过程的函数。同样地,新修一条路增加的容量,会被随之被诱发出来的新出行吃掉一部分,于是"这条路修得值不值"这个问题,无法用修路前后的同一把尺子来量。
这些事实合起来给出这门学问的排他主张:路段自身的属性不单独决定它的表现;表现由整条链上流的传播决定。 因此逐段独立评价再求和,得不到全网的答案——各段之和不等于整体,这一点在这门学问里是常识。
时序读数:先动的是路径的组织——一次配时调整、一次车道分配、一次绕行;它与路网当下的条件场(需求分布、天气、事件)对不上;于是显露出来的拥堵形态改变——排在哪儿、排多长;改完之后回写两处:重新配时与改道,以及需求本身的重新分布。下一轮仍由路径端先动。
第三门的答案又是另一套:单位的边界既不由对象决定,也不由流决定,而由一张事先排好的表决定。
一笔钱是什么、归谁、算哪一年,取决于它在科目体系中的位置和它落在哪个预算年度,而不取决于它实际被用来做什么、实际在哪一天花掉。同一件事,挂在不同科目下,会得到不同的审批路径、不同的监督规则、不同的绩效口径。年度的切割更是彻底:一个跨三年的工程,必须被切成三段,分别落进三个年度的收支平衡里。
这门学问自己承认这条切割是人为的,并且为它专门造了制度:结转与结余、跨年度预算平衡机制、中期财政规划——每一样都是为了对付"事情不按年度发生"这个事实。
它还承认一件更彻底的事:存在一类支出责任,迟早要由财政承担,而它在任何科目、任何年度里都没有位置。为此发展出或有负债与隐性债务的统计与披露口径——也就是说,这门学问明文承认:它的分类体系不是穷尽的,有东西落在所有格子之外,而且那些东西是真的要还的。
时序读数:先动的是实际发生的支出显露;它与财政赖以运行的条件场(收入能力、法定支出责任、转移支付)对不上;于是预算的路径组织改变——科目重排、支出次序调整、结转安排;改完之后回写两处:同一笔支出被重新归类,以及对收入能力的估计被改写。下一轮由条件端先动。
三条摆在一起,冲突是硬的,判谁对化解不了。
校勘学与交通运输工程不能同真。前者说,单位由对象的合成确定:定出一个本子,一切归属随之而定。后者说,任何静态的单位划分都会归错——因为显露的位置与限制的位置系统性地分处两地,且方向固定。若后者对,校勘学的定本就是一次典型的"在堵车的地方找原因";若前者对,交通那套"必须看整条链"就只是没有把单位定好。
交通运输工程与公共预算不能同真。交通说,切割必然出错,各段之和不等于整体。预算说,切割不但可行而且必须——它的全部合法性建立在"这笔钱属于这个科目、这个年度"之上。一份把三年合起来算的账,在预算体系里根本不能被批准。
公共预算与校勘学不能同真。预算说,单位由一张事先排好的表给定,条目往格子里填。校勘学说,单位是事后合成的,而且合成出来的那个东西此前不存在,还要反过来重定各成员的地位。一个是先有格子后有条目,一个是先有条目后有格子,而那个格子还不是任何条目。
三家争的其实是同一件事:一个结算单位的边界由什么决定。 一个说由对象的合成,一个说由流的传播,一个说由表的结构。三条互不相让,失败定义也彼此翻译不过来——定本错、拥堵与事故、赤字失控与支出失灵。
三家吵成这样,脚下踩的是同一块地。
把三条主张放在一起念,会发现它们争的是边界由什么决定,而不是条目是否总有归属。校勘学说边界由合成确定——合成之后每个本子都有了地位;交通说必须看整条链——链上每一段仍然属于这条链;预算说由表决定——表把每一笔都收进某个格子。三家的争论从头到尾预设着同一件事:
每一件已经发生的事都归属于某一个结算单位,这些单位合起来是穷尽的;因而"这几件事该不该合起来看"由单位的边界给定,不需要另外有人去做合并。
把这句话念给三家听,三家都会说这还用说吗。它们会以为你在说一句关于分类的常识:当然要有归属,当然分类要力求穷尽,当然合不合看要按规矩来。正因为三家都会这样反应,它才是共同的前提,而不是第四家的立场。
这条前提有一个更宽的形态,整个学界都站在它上面。当研究者面对一堆条目时,标准动作是问"该怎么分类",而几乎不问"是谁在做归堆、按什么规则、这次归堆本身是不是一件要被记账的事"。归堆被当作分析者的自由动作:它不消耗什么,不产生什么,也不需要授权。
本文把这块地叫作归堆自明假定:把哪些条目归成一堆,被当作由对象自身决定、不需要承办人;因而"堆"从来不被当作一个被生产出来的东西。
风水研究的三条路全都站在这块地上。不确定性那一路,把"要被解释的那件事"当作已经在那里的东西,只问人为什么去解释它;认知副产品那一路,问的是解释为什么容易产生,不问被解释的那个对象是怎么被划出来的;隐语那一路,问它被用来说什么,同样默认"这一家的运"是个现成的话题。三条路互相攻击,谁也不回头看这块地——因为三条路都站在它上面。
这块地一旦被承认可疑,三条路要同时让步。若"这一家的运"不是一个现成的对象,而是被合并动作造出来的,那么解释的产生就不再是问题的中心,合并的承办才是;于是要问的不是"人为什么相信",而是"这次合并是谁做的、按什么规则做的、为什么必须由账外的人来做"。
要推翻一条三家共有的前提,从外面搬理由没有用——那只是加入争论。只能取三门里某一门早已印出来、却一直另作他用的那件东西。
校勘学有一件这样的东西,而且它不是边角案例,是这门学问的标准产品:定本。
把它的性质逐条摆出来:
其一,它由若干各自完整的成员合成。参与合成的每一个本子,在被拿来做校勘之前,都是一个完整的、可以独立阅读的对象,各有各的流传史。
其二,它自己不是任何一个成员。它不是宋本,不是明刻,不是任何一个曾经躺在某个书架上的实物。
其三,它此前不存在。这一点比第二点更强:不是"我们还没找到它",而是它作为一个本子从来没有被抄写过、印刷过、阅读过。
其四,它一经确立,反过来重新指定每一个成员的地位。宋本从此是"一个异文来源",明刻从此是"一个转录讹误的携带者"。它们的身份被一个不存在的东西重新定义了。
其五,这门学问离不开它。去掉定本这一步,校勘学交不出它的产品:剩下的只是一堆互不统属的本子和一份异文表,而那不是一部可以引用的书。这就是核心工艺的意思——一处例外可以被说成特例,一件天天在用的工艺不能。
于是那条共有前提被自家人推翻了:
合并出来的单位可以先于成员的归属并决定它,而这个单位自己不是任何一个成员,甚至此前并不存在。
这句话在校勘学自己那里回答的是另一个问题:怎样从异文里复原一部书。没有人拿它去问:一个不存在的单位凭什么能重定各成员的地位。可是它确实能,而且天天在做。
这一推翻带出一个三家谁也不会同意、三家的证据合起来却只能得出的后果:
"这几件事算不算一件事"这个问题,没有一个不依赖于承办人的答案;而做出这个答案的那一次动作,本身是一件被生产出来的东西,只是没有任何账本记它。
三家不会同意,各有各的道理,且都不是疏忽。校勘学不会同意,因为它把定本当作复原,即"找回那个本来就有的东西";承认定本是被造出来的,等于承认它的整套合法性来自约定而非发现——它把定本说成复原,正是为了不必回答这个问题。交通不会同意,因为它的全部工作建立在流的物理性上;承认单位由承办人造出来,等于把它的客观性交出去。预算不会同意,因为它的表是先在的、由法定程序批准的;承认表之外还有必须被承担而无处安放的东西,它其实已经在或有负债那里承认了一半,但它绝不会承认那意味着"合并需要一个承办人"——那会把预算的权威变成一次选择。
合户:由若干分属不同账本、各自已经结清的条目合成的一个持有者;任何账本都不曾为它开过户;它一经确立,反过来重新指定每一条目的地位。
四条判据,缺一条即不成立:
判据一 · 跨账。 所合并的条目分属两本及以上互不隶属、互不引用的账。若几条都在同一本账里,那是这本账自己的账户功能,不是合户。这一条把"同一家医院把三次住院合成一个病案号"排除出去。
判据二 · 各自已结。 每一条在被合并之前都已经独立结清,且那次结清没有依赖其他条目。若几件事本来就是一件事的几个环节(一次事故的几处伤情),那是正常并案,不是合户。
判据三 · 无开户。 没有任何账本为这个持有者设过一个可累计的账户。这一条最容易看走眼:户口本上有"户",族谱上有"支",可是户口本不记疾病,族谱不记裁员——它们各自的账户里装不下跨账的条目。有名字不等于有账户;能不能累计才算数。
判据四 · 反定。 这个持有者一经确立,各条目的地位被重新指定。若几件事被放在一起之后仍然各是各的,那只是一次列举,不是合户。
四条合起来是一句更短的话:它是被合出来的,而不是被找出来的。
要说清四种"像而不是"的东西,否则这个构念会被读错。
第一种:同一实体的记录归并。 把散落在几个系统里的记录判定为同一个人——这是一门成熟的技术。它与合户的分别在方向上:记录归并的目标是找回一个本来就是同一个的实体,判对判错有客观标准(这两条记录说的是不是同一个人,原则上可查)。合户没有这个标准:那四件事本来就不是"同一件事",合户不是把它们认出来,是把它们做成一件事。判据四那半句"反过来重新指定",记录归并里没有——归并之后,张三还是张三。
第二种:一个已经存在的社会单位。 家庭、宗族、法人、家户——这些确实存在,有名字,有边界,有时还有法律地位。但它们不是合户,除非它们有一个可以累计跨账条目的账户。一个家庭在户籍上存在,不意味着有任何一本账在累计"这个家庭遇到过的事"。判据三管的就是这个。反过来说,正因为家庭作为名字存在而作为账户不存在,它才特别容易被拿来当合户的挂靠处。
第三种:把几件事列在一起。 一份年终总结、一份大事记、一份履历,都是把几件事列在一起,而且常常跨账。它们不是合户,因为它们不反定:列完之后每件事还是原来那件事,没有谁被重新指认为另一件事的前因或后果。
第四种:一次正常的并案。 司法上把几个关联案件并案审理、医学上把几处症状归为一个综合征——这些都是账内动作,有程序、有文书、有承办人、有可追责的主体。合户没有承办程序,也没有可追责的主体。
还有一件必须写清楚,否则后面几节会被误读:合户不是错误,也不是虚构。 它是分案这门手艺的稳定产物。一本不分案的账没有合户,可是它也没法用。合户可能是对的——那四件事也许真的有共同的来处(一段长期贫困、一次家庭变故、一种遗传倾向)。本文不主张合户为假,本文主张的是:判定它真假的那个位置,在现行的账本体系里空着。
构念要能用,得配一件能把两样看起来一样的东西分开的工具。本文用的是一张表,但不是分类表——它是一张覆盖矩阵。
做法:把待考察的 m 件已结之事横排作列;把与它们相关的 n 本账竖排作行;逐格填这件事在这本账上的账户名(病案号、案号、保单号、报告编号、版本号)。没有出现在某本账上的,格子留空。
填完之后只问三件事:
第一问 · 账内合并。 每一行里,有没有两格填了同一个账户名?有,说明这本账把这两件事合起来了。逐行统计。
第二问 · 跨账共合。 取任意一对事件,若它们在某一行里同账户,再看别的行里是否也同账户。两本互不隶属的账,对同一对事件作出同样的合并——这是最要紧的一格。
第三问 · 跨单位合并。 有没有任何一个账户名,同时容纳了分属两个不同登记单位(不同的人、不同的机构、不同的包、不同的宗支)的条目?
这张表与一条时间带的分别在于:它不看先后,只看边界。合户不是一个先后关系的产物,它是一个边界关系的产物。 用时序去装它,会把"谁和谁算一家"这个问题压成"谁在谁之后",而前者才是这一篇要答的。
表填出来之后,几乎总会看到同一个形状:行内密、行间疏、跨单位空。 每一本账在自己内部合并得很好;两本账之间几乎不共合;而跨越登记单位的账户一个也没有。第九节把这个形状在真实数据上量了出来。
从那张表上读三个数。
读数一 · 账内合并率 a:某一本账内,被该账合并到同一账户下的事件对数,占全部事件对数的比例。它衡量这本账把东西合起来的能力。
读数二 · 跨账共合率 κ:在被账本 A 合并的事件对里,同时也被账本 B 合并的比例。这是本文的主读数。 它无量纲,可事后清点,跨领域可比。
读数三 · 跨单位合并数 z:全部账户中,同时容纳两个不同登记单位之条目的账户个数。它通常是一个很小的整数,而本文预期它是零。
三个数要排成一列读。a 高、κ 低、z 为零,就是合户被生产出来的完整条件:每本账都在合并,合并的结果互不承认,而没有任何账户能跨过登记单位——于是"这一家"这个持有者只能由账外的人合成。
按本文的规矩,一个新读数造出来之后要先做一件事:举一个"既有的主要指标最好看、而这个数最难看"的真实例子;举不出来,说明它只是既有指标的代理。
在这道题上,既有的主要指标是"信息化程度""数据完整度""管理规范化水平"。本文的读数与它正交,而且方向常常相反:一个信息化程度极高、每一本账都建得极完整、每一条记录都可查的地区,a 会很高,而 κ 与 z 不会因此上升——因为把两本账打通需要的不是数据质量,是一个愿意承担合并责任的位置,而信息化不生产这样的位置。第九节的实测正是这个形状:两本账都维护得极好,各自的合并近乎完美,而它们之间的共合率是万分之七。
清点手册见附录一。这里只说三条最容易出错的:
其一,"一件已结之事"的粒度写死为:某本账自己发出的一份结案凭据。 一份出院小结、一份裁决书、一份保单理赔结论、一份事故报告、一个已发布的版本条目。附录一给了一个恰好在边界上的例子。
其二,"互不隶属的两本账"要写死判据: 两本账由不同主体维护、有各自独立的编号体系、且在正式记录中互不引用对方的编号。第九节把"互不引用"直接量成了一个数。
其三,全篇一个口径。 正文、检验条款、赌注三处引用的 a、κ、z,用的是同一个定义、同一份编码规则。三处一致性自查写在附录一末尾。
一件工具的价值,看它能不能分出一格是所有形式审查都能通过、而问题恰恰在这里的情形。分出来的那一格若一眼可见是坏的,那就不需要工具。
本文要打的那一格:
每一本账都无差错,每一件事都已结清,每一位经办人都尽了职;而这几件事之间的关系在任何账上都不存在,于是唯一给出这个关系的人,站在所有账本之外,且不对任何一本账负责。
这一格的形式审查全部通过:病历规范、裁决合法、报告完整、编号可查。从任何一本账上看,一切都办完了,办得还相当好。
这一格成立的两条签名,各配两条误诊阻挡。(本文只用两条,因为这一格的特征是边界性的,签名多了会与时间性的特征混起来。)
签名一 · 合并能力随边界断崖式归零。 在同一批对象上,账内合并近乎完全,跨账合并近乎为零,跨单位合并严格为零。三个数排成一列,落差是数量级的,不是渐变的。
误诊阻挡甲: 不要把 κ 低读成"两本账质量差"。κ 低与账本质量无关——两本账都可以维护得极好而 κ 仍近乎零,因为它们的账户是按各自的目的划的,本来就没有理由重合。把 κ 低归给管理不善,会导致一个错误的处方(要求两本账对齐口径),而那个处方会同时毁掉两本账各自的可用性。
误诊阻挡乙: 不要把 z=0 读成"没有人在做跨单位的合并"。恰恰相反:合并一直在做,只是做的人不在账上。z=0 说的是账本里没有这个动作的位置,不是说这个动作没有发生。
签名二 · 合成出来的持有者会反过来重排成员。 合户一旦成立,那几件已结之事被重新指认为一个次序里的环节;而这次重排不产生任何文书,也不改变任何一本账上的原始记录。
误诊阻挡丙: 不要把"当事人换了一种说法"直接读成反定。判准是硬的:看那几件事的相对地位有没有变——某一件是不是从"一件事"变成了"另一件事的前因"。只是加了形容词、加了感慨,不算。
误诊阻挡丁: 不要把反定读成记忆错误或事后叙事的一般倾向。人当然会重述往事,这是常态。这一格要求的是一个外部合成物先被确立(一处宅、一座坟、一道路),成员的地位再随之改变;若没有这个外部合成物,只有叙述的调整,那属于叙事研究的辖区,不属于本文。
两条签名合起来说明一件事:这一格越正规化越严重。 账本分得越细、越专业、编号体系越独立、各管各的责任越清楚,a 越高而 κ 与 z 越接近零;于是需要被合成的那个持有者越无处安放。这是本文全篇最反直觉、也最容易检验的一句:专业分工不是这套东西的对手,是它的产地。
要检验"跨账合并",最难的地方恰恰是本文第三层主张说的那件事:没有人负责做它,因而也没有人记录它。 医院不记录病人在法院的案子,法院不记录他在医院的病历。
但有一处例外,公开、免费、可逐条复算:Python 的公共包索引 PyPI。在同一批对象(某个包的若干版本)上,并存着两本互不隶属的账。
账一 · 漏洞账。 安全公告(PYSEC、GHSA、CVE 编号),由安全社区与数据库机构维护。它的账户是一条公告,成员是这条公告所影响的那些版本。
账二 · 撤回账。 版本的撤回标记与撤回理由,由包的维护者维护。它的账户是一条撤回理由,成员是被这条理由撤下的那些版本。
两本账由不同主体、按不同规则、为不同目的维护,编号体系互相独立,而它们描述的是同一批已经发布、不可更改、各自已经结清的版本条目。这正是跨账归户表要填的那张表,而且它已经填好了,只等清点。
必须先说清楚:本文不主张软件版本与一户人家是同一类东西。本文主张的是,"两本互不隶属的账在同一批已结条目上各自做合并"这个结构,在这里可以被完整地量一次,而在别处量不到。
统计之前把假设、名单与阈值写死存档,事后未改(全文见附录二)。样本是事前写定的 25 个包,按"长期存在、被广泛依赖、有安全公告历史"选取,写定名单时未查看任何结果。取数:每包取包级记录得全部版本与撤回标记,再对其中最近的至多 60 个正式版本逐一取版本级记录,读它受哪些公告影响。六条假设:
H1(两账互不引用):撤回理由文本中出现漏洞编号的比例 ≤ 0.10。
H2(两账成员不重合):受漏洞影响的版本中被撤回的比例 ≤ 0.10。
H3(两账划分不重合):被同一条公告共同覆盖的版本对中,两者同时被撤回的比例 ≤ 0.10。
H4(主读数:无户率):在"受漏洞影响的版本"集合上,任取两个版本,若没有任何一本账把它们置于同一账户之下,记为无户配对;跨包无户率的中位数 ≥ 0.30。
H5(跨包账户):元数据中是否存在字段,表达"本包的这件事与另一个包的那件事属于同一件事"。预期不存在。
H6(同源归户):对指向同一上游仓库的多个包,是否有字段把它们归入同一账户。预期不存在。
25 个包全部抓取成功,得 1,444 个版本条目,其中 1,057 个受至少一条公告影响(73.2%),25 个被撤回(1.73%)。逐条结果如下。
表一 预注册六条假设的逐条结果(25 个包,1,444 个版本条目,1,057 个受公告影响)
假设
阈值(预注册)
实测
判定
H1 两账互不引用
含漏洞编号比例 ≤ 0.10
34 条撤回理由中 2 条含漏洞编号 → 0.0588
通过
H2 两账成员不重合
受影响版本被撤回比例 ≤ 0.10
18 / 1,057 → 0.0170
通过
H3 两账划分不重合
同公告版本对同时被撤回 ≤ 0.10
19 / 27,707 → 0.0007
通过(极强)
H4 主读数:无户率
跨包中位 ≥ 0.30
中位 0.0000;均值 0.0170;22 个包中 20 个为 0
判伪(已改写读数)
H5 跨包账户字段
预期不存在
元数据无任何表达包间归属的字段
字段不存在
H6 同源归户字段
预期不存在
flask/jinja2/werkzeug 同源而无同组字段
字段不存在
H1 通过。 34 条撤回理由里,只有 2 条提到漏洞编号,比例 0.0588。撤回理由写的是另一套东西:回归缺陷、构建错误、依赖上界过严、补丁回合失败。两本账在文字层面几乎互不引用。
H2 通过。 1,057 个受漏洞影响的版本里,只有 18 个同时被撤回,比例 0.0170。一个版本被公告认定为有漏洞,几乎不影响它在撤回账上的状态——它照样留着,照样可以安装。
H3 通过,而且极强。 被同一条公告共同覆盖的版本对共 27,707 对,其中两者同时被撤回的只有 19 对,比例 0.0007。漏洞账做了两万七千多次合并,撤回账几乎一次也没有跟着合。
H4 判伪,而且是极端判伪。 预注册的主读数——无户率——中位数是 0.0000,均值 0.0170;22 个可算的包里有 20 个的无户率恰好为零。阈值是 0.30。
H5 与 H6:字段不存在。 元数据字段里没有任何一项表达包与包之间的归属关系;样本中 flask、jinja2、werkzeug 三个包指向同一个上游组织,而索引里没有任何字段把它们放在一个账户下。
这一处不利结果是本文这一轮最值钱的东西,因为它推翻的不是一个数字,是本文原来的问法。
无户率之所以近乎为零,原因很简单:安全公告是按版本区间发布的。 一条公告说"3.2 之前、4.2.10 之前的所有版本受影响",于是这个区间里几乎任意两个版本都被它共同覆盖。漏洞账在自己内部合并得极其充分:实测中,22 个包里有 19 个存在一条公告覆盖了该包全部受影响版本,最大单条覆盖率的中位数是 1.000。
于是本文原来那个问法——"有没有任何一本账把这两件放在同一账户下"——问得太弱了。一本账内部当然会合并,那正是账户这个东西的功能。 用这个问法去量,答案必然趋近于"都有户",而这与合户是否存在毫无关系。
据此,本文把主读数改写了:
问的不是"有没有被合并",是"两本互不隶属的账各自作出的合并,重合不重合"。 主读数由无户率改为跨账共合率 κ——被账本 A 合并的事件对里,也被账本 B 合并的比例。实测值就是 H3 的那个数:0.0007。
这次改写的收益不止于修一个定义。原来的读数把"账内合并"与"跨账合并"混为一谈,因而它其实测不到本文的机制;新的读数只测边界。若不做这次真跑,本文会写下一句更强、也更错的话:"在分案的制度下,已结条目之间的关系普遍无户可归。" 数据说不是——在一本账内部,关系归得又全又整齐;无处可归的,只是跨过账本边界的那些关系。这句更弱的话才是对的,而且它更难被既有概念吸收。
把改写后的三个读数放在一起,形状非常干净:
表二 三个读数排成一列:合并能力随边界断崖式归零
读数
所测的边界
实测值
账内合并率 a(以最大单条公告覆盖率计)
一本账内部
中位 1.000;22 个包中 19 个为 1.000
跨账共合率 κ
两本互不隶属的账之间
0.0007(19 / 27,707)
跨单位合并数 z
跨越登记单位
0(593 条公告中跨包者 0 条)
账内合并近乎完全,跨账合并近乎为零,跨单位合并严格为零。 593 条公告,没有一条同时覆盖两个包——跨越登记单位的账户,一个也没有。
需要强调的是第三个数为什么重要。它不是"很少",是零;而且它是结构性的零:公告的编号体系以包为单位组织,一条公告如果影响两个包,实践上会被拆成两条。也就是说,这本账的编号规则本身就规定了账户不得跨越登记单位。边界不是被疏忽的,是被写进规则的。
这正是本文说的那个形状:每本账都在尽职地合并,而合并的能力在跨过边界的地方断崖式归零。于是"这几件事属于同一个持有者"这个判断,无论多么必要,都只能由账外的人作出。
其一,这是结构的清点,不是关于风水的检验。 软件包不是人家,公告不是病历。它证明的是:两本维护良好的账在同一批已结条目上各自合并,而合并结果几乎不重合、且都不跨登记单位。它不证明人在连遭变故后会去看坟。
其二,代理变量明写。 撤回标记只显示当前状态,不显示撤回时刻;"受影响版本"由公告的版本区间推出,未逐版本人工核对。
其三,系统性偏差明写。 每包只取最近至多 60 个正式版本,早期版本的公告覆盖读不到,方向为低估;预发布版被排除,而撤回在预发布版上更常见,这会使撤回账的规模被低估——这一处偏差不利于本文,因为它人为压低了两账重合的机会。
其四,最愿意押的那一条没跑成。 本文最想检验的是"账本分得越细,κ 越低"这条正向读数。它需要在同一批对象上比较分账粒度不同的多组账本,而公开数据里找不到粒度有真实变异的同质样本。这是本文交出去的第一个洞,写在第十五节。
一个判断要能用,得配一句可以拿去问文件、问台账、问编号规则的话,不含"应当""真正""充分""合理"这类词。
本文的问话是:
这几件事,有没有任何一本账把其中任意两件放在同一个账户下?如果没有,是谁把它们放在一起的,按什么规则?
在五个互不相同的场合各跑一遍,答案必须互不相同。下面五个里,第四与第五是查出来的,且都反过来改了本文。
场合一 · 一户人家的五年。 四件事分属四本账:病历、仲裁卷、分数条、调解书。每本账内部有账户(病案号、案号),而没有任何一本把其中两件放进同一账户。是谁把它们放在一起的:一位受雇的堪舆师。按什么规则:坐向、形势、年份的飞星。这一条规则不写在任何一本账的编号规则里。
场合二 · 一个厂的三次停产。 一次设备事故(安监的账)、一次环保处罚(生态环境的账)、一次劳资纠纷(人社的账)。三本账各有编号,互不引用。合并者:厂里的老人,或一位被请来看厂门朝向的先生。
场合三 · 一个宗支的三代人。 族谱有"支"这个名字,可是族谱不记疾病、不记诉讼、不记破产。名字在,账户不在。 这一格最清楚地显示判据三的必要:有名字不等于能累计。
场合四 · 同一批软件版本上的两本账。(查出来的)账内合并率极高(最大单条覆盖率中位 1.000),跨账共合率 0.0007,跨单位合并数 0。这一格反过来改了本文:它判伪了预注册的主读数,把问法从"有没有被合并"改成"两本账的合并重不重合"。
场合五 · 同一个上游组织的几个包。(查出来的)flask、jinja2、werkzeug 指向同一个上游组织,而索引里没有任何字段把它们归入同一账户;593 条公告没有一条跨包。
这一格反过来改了本文,而且改得最重。 本文原本要写的一句更强的话是:"跨单位的账户之所以不存在,是因为没有人想到要建。" 这一格证明不是。编号规则本身规定了账户不得跨越登记单位——一条公告若影响两个包,实践上被拆成两条。也就是说,边界不是疏忽,是设计。据此本文改写了机制的表述:合户的产地不是制度的粗糙,是制度的精确。越是把编号规则写清楚的体系,越是明文禁止账户跨越登记单位。
以上五答彼此不同;末二答出自实查,且都逼本文作了修改。
一 · 临床。 预测:一个病人在同一家医院的多次就诊会被合成一个主索引号(账内合并率高),而他在另一家医院、在法院、在保险公司的条目不会与之同账户。跨机构调阅的存在不改变这一点——调阅是查看,不是开户。
二 · 司法。 预测:关联案件并案审理有明确程序与文书,而"这几起案件为什么都落在同一个当事人身上"没有承办岗位。可以直接查各级法院的岗位职责说明。
三 · 保险。 预测:同一投保人的多张保单在核保端有客户号(账内合并),而理赔结论之间不互相援引;两张保单的理赔各自独立结清,谁也不问它们为什么都出在这一年。
五 · 公共预算。 预测:跨年度的同一件事被切成若干年度条目,而"这几段是同一件事"这个判断不进入任何一年的预算文本,只出现在中期规划这类不具约束力的文件里。
六 · 公共登记册。(已实测)预测:两本互不隶属的账在同一批条目上,跨账共合率极低而账内合并率极高;跨登记单位的账户为零。实测 0.0007 与 0。
七 · 校勘学。 预测:定本一经确立,参与合成的各本子在后续引用中被系统性地改称为"某某异文来源";改称的时刻早于任何新证据的出现。这是反定的一个可查形态。
八 · 交通运输工程。 预测:把若干路段的服务水平逐段评价再求和,得到的结论与全网仿真的结论系统性不同,且差异方向固定——逐段求和低估拥堵,因为它把跨段传播的排队切断了。
九 · 流行病学。 预测:同一个人的多种慢性病分属不同专科的登记系统,共病这个持有者没有独立账户;共病研究之所以困难,不是数据缺失,是没有一个以人为单位的可累计账户。
十 · 组织。 预测:一家公司的若干次失败分属不同部门的复盘文档,而"这几次失败是同一回事"这个判断只出现在离职者的私下叙述里,不出现在任何一份复盘中。
十一 · 学术。 预测:一个研究者的若干篇论文分属不同期刊的账本,而"这几篇是同一个纲领"这个判断由综述作者作出——综述作者正是学术体系里被授权做合户的那个岗位,而他的合并不改变任何一篇论文的原始记录,却改变它们的地位。
十二 · 家庭。 预测:一次合户被确立之后(比如"祖坟朝向不对"),家中此后发生的新事件会被自动收入该账户,而不需要重新论证。这是账户一旦开出就具有的性质,也是合户与一次性列举的分别。
十三 · 医疗纠纷。 预测:同一家属对多起就诊结果的追问,会被各科室各自当作独立投诉处理;而家属坚持的恰恰是"这几件是一回事"。双方的分歧不在事实,在账户边界。
第一处,校勘学削掉了本文的价值排序。
本文最自然的写法,是把合户说成一次不受约束的虚构。校勘学不让这么写:定本同样是被合成的、此前不存在的对象,而它是这门学问的正当产品,有方法、有判据、有可争论的对错。一个被合成出来的单位,可以是最好的工作对象。
如果没有这一处,本文原本会写下这句更强的话:"合户是一次没有依据的合并,其内容不可评价。" 现在本文不这样主张。本文只主张一件更弱的事:合户的对错目前无人负责裁定,因为裁定它需要一个跨账的位置,而那个位置空着。这是一个关于制度的判断,不是一个关于内容的判断。价值排序也随之改了:本文不主张"分账比合账好",也不主张反过来。
第二处,交通运输工程缩掉了本文的适用范围。
瓶颈在上游、排队在下游这条事实直接打在本文的表上:若几件已结之事之间存在真实的传播关系,那么把它们合成一户而不标方向,会把下游的显露误当作共同的原因。 一个家庭的裁员导致收入下降,收入下降导致就医延迟,就医延迟导致中风预后变差——这不是一个需要合户的情形,这是一条链,而链有方向。
如果没有这一处,本文原本会写下这句更强的话:"凡是跨账的多件已结之事,都需要一个合户才能被理解。" 现在本文把适用范围收到:成员之间不存在可指认的传播路径的场合。 一旦能指出 A 导致 B,那是因果链的问题,不是账户边界的问题,本文的读数不适用。这一收缩很重,它把大量真实的家庭困境排除在外——而那些困境恰恰是最常被拿来讲的。本文承认:在它们身上,合户很可能是一次误判,而误判的原因正是账本切断了链。
第三处,公共预算削掉了本文的处方。
本文最自然的处方是:设立一个跨账的账户,让"这几件事属于同一个持有者"这个判断有地方安放。或有负债的经验说明这条路的代价:一类东西一旦有了正式的统计口径与披露要求,它立刻会被用于扩大或收缩责任,而使用它的人不是原来那些需要它的人。跨账账户一旦建立,最先使用它的会是核保、征信、风控与一切需要给人打分的地方;那个账户会变成一份"这一家出过多少事"的可累计记录,而它的原始用途——让当事人的问题有地方问——反而最不可能被满足。
如果没有这一处,本文原本会写下这句更强的话:"应当建立以人或以户为单位的跨账账户。" 现在本文明确不主张建立跨账账户。本文只主张一件事:在做任何关于这类问题的研究与统计时,把"账内合并"与"跨账合并"分成两栏,不许合并计算。 这条主张不需要新建任何登记,因而不产生上面那种后果。
把别人的因果说法全部驳倒,仍可能只是换了个叫法。这一节管的是后者。下面十四位,每一位写四件:出处、它说到哪一步、分离线、判定形式。"更强调""更系统""视角不同"这类话在本节一律不算数。
其一 · 知觉的分组律(Wertheimer 1923,关于知觉组织的形式规律)。它说到哪一步:接近、相似、共同命运等规律使离散的刺激自动被知觉为一个整体。分离线:分组律是知觉层面的、自动的、无承办人的;合户是一次有人受雇去做的制度性动作,有付费、有规则、有从业者。判定形式:若这类合并在无人引导时自发出现且各人所合大致相同,则分组律足够;若不同的从业者按不同的门派规则合出不同的户,且当事人需要付费购买这次合并,则反之。
其二 · 虚假相关(Chapman & Chapman 1967,关于临床判断中虚假关联的经典实验)。它说到哪一步:观察者会在实际不相关的两类特征之间报告出稳定的相关,且这种报告受先有的语义联想驱动。分离线:虚假相关讲的是两类变量之间的关联判断;合户讲的是几个具体条目被记入同一账户,且这个账户此前不存在。判定形式:若把同一批事件随机重排后,被合并的仍是那些语义上相近的事件,则虚假相关覆盖;若被合并的取决于它们是否落在同一处宅、同一座坟、同一个空间单位,而与语义相近无关,则反之。
其三 · 代表性与合取(Tversky & Kahneman 关于启发式与偏差的工作)。它说到哪一步:人依据相似性判断概率,因而会把细节丰富、故事连贯的组合判为更可能。分离线:这一路解释的是为什么合起来的说法更可信;本文解释的是为什么必须有人去合、以及为什么那个人不在任何账本上。判定形式:若合并只发生在故事连贯的场合,则启发式覆盖;若在故事并不连贯时合并照样发生(当事人自己也说不出所以然,只说"都在这个宅子里"),则反之。
其四 · 失控引发的虚幻模式知觉(Whitson & Galinsky 2008,Science)。这是最危险的一位现代对手:它讲的正是"把几件不相干的事看成一个模式"。分离线有两处。其一,它操纵的是控制感,而本文说的场合里,每一件事都已经有了明确结论、当事人也接受了那些结论。其二,它测的是知觉与信念,本文测的是账本结构——本文的三个读数完全不涉及任何人的心理状态,可以在没有被试的情况下清点出来。判定形式:若在控制感未下降、且各条目结论明确并被接受的样本中,这类合并的发生率不高于对照,则该说法对而本判断错;若仍显著高于对照,且发生率随账本分割程度上升而上升,则反之。 本文承认这条尚未被检验,并把它列为最该做的那个实验。
其五 · 次级阐释(Evans-Pritchard 1937)。它说到哪一步:一套信念不被经验推翻,是因为体系内备有大量二次解释。分离线:那一路管的是一件事发生之后如何被吸收;本文管的是几件事如何被合成一件。判定形式:若被处理的对象始终是单一事件,则属次级阐释;若处理的产物是一个跨越多件已结之事的持有者,且各件的地位因此改变,则反之。
其六 · 分类与异常(Douglas 1966)。它说到哪一步:不洁与禁忌落在分类图式装不下的东西上。分离线:她讲的是一个条目落不进任何一类;本文讲的是每个条目都落进了某一类,而这些类之间没有连线。前者是格子不够,后者是格子太齐。判定形式:若被标记为危险的是那些无法归类的对象,则该说法覆盖;若被合并的恰恰是各自归类清楚、结论明确的对象,则反之。
其七 · 不确定性催生仪式(Malinowski 1948)。它说到哪一步:风险高、不可控的活动上仪式更多。分离线:它的自变量是不确定性的水平,本文的自变量是账本的分割程度。两者在同一批个案上可以被分开测量。判定形式:若在不确定性水平相当、而账本分割程度不同的两组之间,这类合并的发生率没有差别,则本判断错;若有差别且方向为分割越细越高,则反之。
其八 · 生态学谬误(Robinson 1950,关于个体行为与生态相关的经典论文)。它说到哪一步:在聚合层面成立的关系不能推到个体,反之亦然;单位一换,结论就换。分离线:这一路警告的是推论的错误,它假定正确的单位是已知的、只是被用错了;本文说的是正确的单位从来没有被指定过,因为没有一本账负责指定跨账的单位。判定形式:若争论的焦点是"该用哪一级单位"且各方都同意存在一个正确答案,则属生态学谬误的辖区;若各本账各自都对、而"合起来算不算一件事"没有任何一方有权回答,则反之。
其九 · 合并单位改变结论(Simpson 1951,关于列联表中关联反转的经典结果)。它说到哪一步:把子群合并或拆分,同一批数据可以给出方向相反的关联。分离线:那是一个关于统计推断的事实,它的前提是数据已经在同一张表里;本文的前提恰恰是数据从来不在同一张表里,因为两张表由不同机构维护、编号互不引用。判定形式:若两组数据可以被放进同一张列联表,则问题属于合并单位的选择;若把它们放进同一张表这件事本身没有任何岗位负责,则反之。
其十 · 记录链接(Fellegi & Sunter 1969,关于记录链接的理论)。这是方法学上最危险的一位:它正是"把分属不同账本的条目判定为同一实体"的成熟范式,且早于本文半个世纪。它说到哪一步:给定两组记录,可以在可控的错误率下判定哪些对指向同一实体。分离线只有一条,但它是硬的:记录链接的目标实体先于链接而存在——张三本来就是一个人,链接的对错原则上可查。合户的持有者不先于合并而存在,合出来的"这一家的运"没有一个独立的存在物可供比对,因而不存在"链接错了"这回事。做一次替换测试:把本文的"合户"整段换成"记录链接的结果",论证会在判据四处崩掉——链接不反定,链接之后张三还是张三。判定形式:若存在一个独立于本次合并的对象,可用来判定这次合并对不对,则属记录链接;若不存在这样的对象,而合并本身就确立了那个持有者,则反之。
其十一 · 认知副产品(Boyer 2001;及相关关于能动性探测与目的论倾向的工作)。它说到哪一步:超自然表征是一般认知装置的副产品,因而普遍、易学、易传。分离线:它解释表征为什么容易产生,不解释为什么这项工作被专业化、被付费、被制度性地交给账外的人。判定形式:若这类合并主要由当事人自己完成且不需要专门的从业者,则副产品说足够;若它稳定地形成一个受雇的行当,且该行当的工作内容正是账本不做的那一件,则反之。
其十二 · 宗族与地权竞争的说辞(Freedman 1969,《Proceedings of the Royal Anthropological Institute》;及其 1966 年著作中关于风水与祖先崇拜的部分)。它说到哪一步:风水是宗族之间争夺土地、正当化继嗣安排时可公开使用的话语。这是本领域用了半个多世纪的实务正主。分离线:这一路要求有一个在场的对手;本文说的场合里往往无人可争。判定形式:若这类合并在存在实际权益争端的个案中显著多于无争端个案,则该说法覆盖;若在无争端个案中同样密集,则反之。
其十三 · 技术体系与宇宙论的内部分析(Feuchtwang 1974;March 1968;Bruun 2003)。它说到哪一步:把罗盘、形势、理气的内部逻辑讲清楚,并把这套实践放回国家正统与民间信仰之间。分离线:这一路做的是内容的分析,本文做的是边界的清点。两者可以并存,但研究设计不同:内容分析取文本与操作,本文取编号规则与账户表。判定形式:若把同一套技术用在单一事件上与用在多件已结之事上的频率相当,则边界不是变量;若它压倒性地用于后者,则边界是变量。
其十四 · 社会分割线(Zerubavel 1991,《The Fine Line》)。它说到哪一步:人类通过在连续体上划线来制造离散的类别,而这些线是社会约定的、可争议的。分离线:这一路管的是线怎么划;本文管的是线划好之后,跨过线的那些关系归谁。承认后者会让前者塌一半:若线划得越清楚、跨线关系越无人负责,那么"划线"这件事就不只是分类,它同时生产了一类没有归属的关系。判定形式:若跨线关系总能由更高一级的分类体系收容,则划线理论足够;若各级分类体系的编号规则都明文禁止账户跨越单位,则反之。 本文第九节的那个零,正是对这一条的一次实测回答。
尚未交手,成文时指名请进的三位。 其一,Hacking 关于分类如何造出被分类者的工作,它与本文的判据四(反定)方向一致而层次不同,值得单独处理;其二,Yoon 关于朝鲜半岛风水的长期研究,它提供了一个中国之外的同类案例,可用来检验本文关于"账本分割程度"的预测;其三,Ze Hong 2025 对 Moore 1957 的重估,它把功能性解释放回文化演化框架,恰好可以问本文一个尖锐的问题:一个没有客观对错的合并,凭什么能被稳定地传下去。本文对第三个问题只有半条回答:它被传下去,不是因为它对,是因为分案这门手艺在每一代都会重新生产出那个空缺。
最近的邻居是第十位,记录链接。它离得最近,因为它与本文做的是同一个动作:把分属不同账本的条目放在一起。本文不能被它吸收,只有一条理由——它要找的那个实体本来就在,本文说的那个持有者是合出来才有的。
本栏此前几篇处理过形状相近的东西,读者极易混淆,逐篇给一条对照预测。
《闲位》(本栏风水同题第一篇)说的是:账关上之后仍然到达的追问,落到一个不承担后果、不留痕的位置上;它的驱动是关账的时刻,读数是覆盖跨度与追溯批量。本篇的驱动是分案的边界,读数是跨账共合率与跨单位合并数。两篇不是同一件事的两种说法,而是一件事的两个必要条件:前者说落点的性质,后者说被结算的那个东西是怎么被合出来的。 对照预测:取一批个案,只测时刻不测边界,会得到"关账之后有处置",却答不出"处置的对象为什么是这一批而不是那一批";只测边界不测时刻,会得到"这几件无户可归",却答不出"为什么是现在才有人来合"。两篇的读数在同一批个案上应当同时非平凡,且互不能相互推出。 若实测中一个读数可以由另一个读数线性预测,则两篇中必有一篇多余——这是本文愿意接受的裁决。此外还有一条最省事的分辨法:《闲位》的对象是一件事,本篇的对象是几件事。
《伏持》说的是过渡期在场、实际承担、两端名册都查不到的那一类单位。它与合户在"不在账上"这一点上相似,方向却相反:伏持是一个真实承担者没有被记,合户是一个不曾存在的持有者被造出来。对照预测:问那个东西在被指认之前做过什么。答"做了事而没被记",属伏持;答"它此前不作为一个东西存在",属合户。
《骑缝》处理的,是横跨一次变动两侧的那一份东西。它是一个时间上的跨,合户是一个账本上的跨。对照预测:骑缝在改变两侧的同一本账上都能找到;合户在同一时刻的两本账上都找不到共同账户。
《省位》说的是无人反对即通过的默认安排。它管判定如何作出,本篇管判定作出并结清之后,几件判定如何被合成一个持有者。对照预测:省位读的是一次判定的点头方数;本篇读的是几次判定之间有没有共同账户。二者可以同时为真而互不影响。
《同围》说的是对象的先在假定与围宽。它与本篇最容易混:都涉及"这算不算一个东西"。分离线是硬的:《同围》问的是一个对象的边界画在哪里,本篇问的是几个已经各自划定边界的对象要不要合成一个新的持有者。对照预测:前者的争论发生在划界之时,后者的争论发生在各自划界完成之后。
《递位》说的是一条去向链的下一端。合户不是链——它没有方向,它是一个共同的名下。对照预测:若几件事之间能指出传播路径,属递位一路(且按第十一节第二处反削,本篇的读数在此不适用);若指不出路径而它们被记在同一名下,属合户。
《起算约》说的是对接处的那一纸约定与重算。它管入口,本篇管边界。对照预测:起算约改变的是从哪一笔开始算,合户改变的是哪几笔算作一家的。
其一,成员之间存在可指认传播路径的场合。 见第十一节第二处反削。一旦能指出 A 导致 B,那是链的问题,不是账户的问题。这一条排除掉的场合很多,而且往往正是最真实的困境。
其二,同一本账内部的多件事。 一家医院把同一病人的三次住院合成一个主索引号,那是账内合并,不满足判据一。
其三,已经有可累计跨账账户的场合。 若某地确实建立了以人或以户为单位、可累计跨部门条目的记录,那么在那里合户不再需要由账外的人合成——本文的机制在那里不成立。本文乐见这样的反例,并在第十五节把它写成一条检验。
其四,一次性的列举。 年终总结、大事记、履历,都不反定,不满足判据四。
其五,把这套读数用于给人或给机构打分。 见附录三。
本文面对的最朴素、最难反驳的一句是:
"其实不就是人本来就爱把事情连起来想吗?"
也就是说:合并倾向是人的一般认知特性,与账本怎么分毫无关系。人在任何时代、任何制度下都会把接连发生的坏事串成一条,账本分不分案只是背景。这句话有大量实验支持(第十二节的前四位),而且它与本文的全部现象描述相容。
必须把它排除掉,本文才算成立。
本文机制独有的变量是账本的分割程度,而一般合并倾向预测不出它。
若控制个体的一般合并倾向(用任一成熟的模式知觉或联想倾向量表测得)之后,账本分割程度与合户发生率之间不存在剂量-反应关系,则本判断为伪。 届时这件事应归因于一般认知倾向,而不是归因于分案。
剂量的三档写死:(甲)单一机构统一编号、跨条目可累计;(乙)多机构各自编号、有互查通道但不可累计;(丙)多机构各自编号、无互查通道。 预测:从甲到丙,合户发生率单调上升,且在控制一般合并倾向之后仍成立。
样本纪律:至少 6 个同质单元,不许拿两个国家、两个地区充数。可行的做法是在同一个省内取多个统筹层次不同的县域,或在同一家医联体内取信息化整合程度不同的成员机构——制度环境同质,而分割程度有真实变异。
条款一(最便宜,已跑,见第九节)。 在两本互不隶属的公开账上,若跨账共合率不显著低于账内合并率,则本判断为伪。已跑:账内最大单条覆盖率中位 1.000,跨账共合率 0.0007,跨单位合并数 0。同时,预注册的原主读数(无户率)被判伪并已改写。
条款二(正向读数,轮次形态)。 本判断预测的是一个轮次结构:第一轮由账本先动——分案完成、各条结清;第二轮由账外的合并者先动——一个持有者被合出来,此后新发生的条目被自动收入该账户而不再需要论证;第三轮起,该账户会反过来影响当事人对新条目的送账选择(例如不再去医院而先去问)。若观察到发起处始终不换手——即在同一家庭连续三次同类结果中,合并动作每次都要重新论证、且从不预先吸收新条目——则本判断的第二段为伪。
条款三。 若在建立了以人或以户为单位、可累计跨部门条目的地区,这类账外合并的发生率不下降,则本文关于"合户由账户空缺生产"的判断为伪。这一条有现成的自然实验可用。
条款四。 若把"账内合并"与"跨账合并"分开清点之后,两者的比值在制度分割程度不同的样本间没有差异,则本文的三个读数没有鉴别力。
条款五。 若合并动作主要发生在成员之间存在明确传播路径的场合(即那些本文已声明不适用的场合),则本文划定的适用范围错了,构念需要重建。
条款六。 若在编号规则明文允许账户跨越登记单位的账本体系里,跨单位合并数仍然为零,则"边界是设计而非疏忽"这条判断为伪,届时应回到"没人想到要建"那一路。
条款七(最愿意押、也最没跑成的一条)。 在同一批对象上比较分账粒度不同的多组账本,跨账共合率随粒度变细而单调下降。本文没有跑这一条,因为公开数据里找不到粒度有真实变异的同质样本。这是本文交出去的第一个洞。
若条款三成立——建立了跨账账户之后,账外合并照样密集——那么本文的机制解释就错了,而错得很有价值:那将说明人们需要的不是一个能累计的账户,而是一个能给出说法的人;账户解决的是记录问题,而需求在解释一侧。那会把这道题推回认知与叙事的辖区,并且意味着第十一节第三处反削所担心的那种后果(跨账账户被风控与征信接管)纯属白白付出代价。
赌注:到 2034 年 12 月 31 日为止,在下列四类结案文书的国家级或行业级强制标准中,不会出现"本条目与其他机构已结条目的关联"这一强制记录栏,并保留历史值:居民死亡医学证明书与出院记录;人民法院裁判文书与结案通知的格式规范;生产安全事故调查报告的编写规范;保险理赔结论书的行业标准。
什么不算命中,写死四条:其一,机构之间的信息共享或互查接口不算——互查是查看,不是开户,不产生可累计的账户。其二,公民个人的电子健康档案或信用档案不算——那是以人为单位的同类条目汇集,本文要的是跨异类账本的关联栏。其三,只要求"必要时可注明"的软性条款不算,必须是强制栏位并保留历史值。其四,试点、地方规范性文件、单个机构的内部表格不算,须为国家级或行业级强制标准。
本文押"不会出现"。理由不是它不重要,而是第十一节第三处反削所说的那件事:这一栏一旦建立,它最先被使用的方式会使它偏离设立的目的,而制定标准的人有充分理由不去建立它。
假定有一天真有人采纳了本文,最省事的两条落地路径都会毁掉它要保住的东西。
第一条:把"跨账关联"做成一个字段。这个字段的第一批重度使用者不会是需要答案的当事人,而是需要给人打分的机构。它会变成一份"这一家出过多少事"的可累计记录,用于核保、征信、评级与各种资格审查。需要它的人得不到它,不需要它的人拿它去做别的事。
第二条:把跨账共合率 κ 拿去考核,把 κ 低读成"部门协同差"。那么最省事的达标办法是让两本账互相抄编号——A 账在自己的记录里写上 B 账的编号,κ 立刻上升,而两本账各自的合并逻辑一点没变。这个办法比真正建立协同便宜得多,也毫无用处。
我看不到出口。 一个读数进了考核,最省事的达标法总在文书上。本文能做的只有两件:把伦理四条写在附录三,并且不主张建立跨账账户——这是本文唯一能提供的防护,而它显然不够。
本文的判据要拿来问它自己。这里不问本文有没有局限,问一件更具体的事:本文自己有没有开过一个不属于任何账本的户。
有,而且开了两个。
第一个:本文与本栏同题的前一篇。 那一篇与这一篇分属两次独立的写作,各有各的三门取材、各有各的预注册与真跑,各自结清。可是本文在第十三节里把它们合成了一个持有者——"风水同题两篇"——并声称它们是"一件事的两个必要条件"。哪一本账为这个持有者开过户? 期刊不会,它们各是一篇;引文数据库不会,它们各有各的条目;本栏的目录也只是并列。这个持有者由本文合出来,而且一经合出,前一篇的地位就被重新指定了:它从"一篇关于关账的文章"变成了"两个必要条件中的一个"。判据四,反定,全中。
第二个:第十二节。 本文在那一节里把五十多年来关于这个题目的十四种说法排成一列,逐一给出分离线,并在末尾说出"最近的邻居是哪一位"。这次归堆没有任何人授权。那十四位各自发表在互不隶属的账本上——人类学的、心理学的、统计学的、方法学的——没有任何一本账把其中任意两位放在同一个账户下。 把它们放在一起的是本文,按的是本文自己定的规则。
照四条判据核对本文这两次动作:跨账(全中)、各自已结(全中)、无开户(全中)、反定(全中)。本文自己就是一次合户,而且是两次。
这有三个对本文不利的后果:
后果一:本文没有资格主张自己这次合并是对的。 按第十一节第一处反削,合户的对错目前无人负责裁定;本文自己也在那个位置上。本文能做的只有把规则写出来(第六节的三问、附录一的手册),让别人有办法说它错。
后果二:本文对前一篇的重新指定,前一篇无从抗辩。 那一篇已经写完、已经结清。它现在被称作"两个必要条件之一",而它自己从未这样主张过。这正是本文所描述的那种动作:一个已结条目的地位被一个此前不存在的持有者改写。
后果三:这一节本身不构成登记。 写下来不会使这两次合并变成账内动作。它只是把动作标了出来,而标注不改变账户。
最后要说清一句,免得这一节被读成场面话:本文并不因此作废。 第五节末尾已经写过,合户不是错误——它是分案的稳定产物,而不分案的账没法用。一次合户可以是空的,也可以是对的;使它可判的,不是它落在哪一格,而是它有没有留下让别人裁决的线。本文留了三条:第九节那次可复算的取数、第十五节那条写死日期的赌注、以及第十三节里那条"两篇的读数若可互相线性预测则必有一篇多余"的自撞条款。够不够,交给别人算。
读数一名称:账内合并率 符号:a
定义:在某一本账内,被该账合并到同一账户之下的事件对数,占该账所覆盖事件的全部配对数之比。N 的取法:以该账在考察期内实际登记的条目为全集,不做推定补齐。
读数二名称:跨账共合率 符号:κ
定义:κ =(既被账本 A 合并、又被账本 B 合并的事件对数)÷(被账本 A 合并的事件对数)。取值 0 到 1。本文主读数。 A 与 B 的指定须写明,因为 κ 不对称。
读数三名称:跨单位合并数 符号:z
定义:全部账户中,同时容纳分属两个不同登记单位之条目的账户个数。整数,通常预期为零。
粒度:一件"已结之事"=某本账自己发出的一份结案凭据。
边界例:一位老人先中风住院(出院小结一份),三个月后因肺炎再次住院并去世(出院小结一份、死亡证明一份)。这是三件,不是一件。若这家医院把三次就诊归入同一主索引号,那是账内合并,计入 a 而不计入 κ;只有当其中某一件同时出现在另一本账(如一起医疗纠纷的调解卷)上,且两本账把它与别的条目放进同一账户,才计入 κ。
编码规则(六条):
(1)两本账"互不隶属"的判据:不同主体维护、编号体系独立、正式记录中互不引用对方编号。第三条可直接量化(引用率)。
(2)只有跨两本及以上互不隶属的账的合并才计入 κ;账内合并单列。
(3)"合并"以出现同一账户编号为准,不以叙述上的相提并论为准。
(4)成员之间可指认传播路径的,整组剔除,单列一栏(本文不适用范围)。
(5)名字不等于账户:只有可累计的登记项才算账户;族谱的"支"、户籍的"户"若不累计条目,不算。
(6)不可判的配对单列,不摊入任何一侧。
表头(可直接拿去做一张空表):个案编号|条目序号|条目名称|结案凭据名称|凭据日期|所属账本|该账账户编号|是否与本案其他条目同账户|跨账同账户(是/否/不可判)|登记单位|是否存在可指认传播路径|合并者身份|合并所依规则|合并后地位是否被重新指定
不适用:同一本账内部的多件事;成员之间可指认传播路径的场合;已有可累计跨账账户的场合。
三处口径一致性自查:正文第七节的定义 = 第十五节条款一至条款四所用的定义 = 第十五节赌注所指的关联栏定义。阈值只出现在检验条款中,正文不另设阈值。✅
下面这份预注册,是在动手抓数之前落定的;名单与六个阈值此后一字未动。样本为事前写定的 25 个包:django、flask、requests、urllib3、jinja2、werkzeug、cryptography、pyyaml、pillow、numpy、scipy、pandas、lxml、sqlalchemy、tornado、aiohttp、celery、paramiko、twisted、ansible-core、notebook、jupyter-server、matplotlib、scrapy、boto3。
表三 真跑的完整读数一览
读数
实测值
版本条目总数 / 受公告影响 / 被撤回
1,444 / 1,057(73.2%)/ 25(1.73%)
公告条数 / 跨包公告条数
593 / 0
撤回理由条数 / 含漏洞编号者
34 / 2(0.0588)
被同一公告共同覆盖的版本对
27,707 对
其中两者同时被撤回
19 对(0.0007)
每包最大单条公告覆盖率:中位 / 达 1.000 的包数
预注册主读数(无户率):中位 / 均值 / 为零的包数
0.0000 / 0.0170 / 20 个
上游同源包组
pallets:flask、jinja2、werkzeug(索引无同组字段)
口径变更记录:无。取数一次成功,25 个包全部抓取,无失败重试,无名单替换。唯一的改动发生在读数定义上,且是被 H4 的判伪逼出来的:主读数由无户率改为跨账共合率 κ。改动的理由、原读数为何失效、以及它删掉了本文哪一句更强的话,全部写在第 9.4 节,未做事后美化。
事后追加(明标,均不用于任何假设的判定):(1)每包最大单条公告覆盖率的统计(中位 1.000,19/22 个包为 1.000);(2)公告是否跨包的清点(593 条,跨包 0 条);(3)上游组织归组(flask、jinja2、werkzeug 同源)与元数据字段清点。
复算方式:对每个包取包级 JSON 得全部版本与撤回标记,对最近至多 60 个正式版本取版本级 JSON 得公告列表,按附录一的编码规则统计。全部数据公开、免登录、可逐条复算。
本文的产物包含两个可以被拿去考核机构、并可能被拿去评价个人的数(κ 与 z),以及一件可以被用来识别人群实践的表。因此写死下面四条,缺一条本文不应被使用。
其一,这三个读数指的是账本,不是人,也不是家庭。 κ 低说明两本账的账户划分不重合,不说明任何人协同不力,更不说明任何家庭"迷信"。任何把 κ、z 或附录一那张表用于评价个人品格、信仰程度或理性水平的做法,都是误用。
其二,不得为了把这些数做好看而互抄编号或强行对齐口径。 第 15.6 节已说明互抄编号是最省事的达标法,而它毫无用处;强行对齐两本账的账户口径则会同时损害两本账各自的可用性——两本账的账户本来就是按各自的目的划的。
其三,附录一那张表不得用于建立以人或以户为单位的可累计记录。 这张表是为一次性的研究清点设计的,它的每一栏都指向账本结构,不指向个人。把它做成一个长期累计的档案,恰恰是第十一节第三处反削所警告的那个后果。已经这样做的机构,须公开编码规则、公开用途,并给出复核与删除通道。
其四,禁止拿它去辨认或者干预谁的信仰实践。 本文描述的是一个制度性的空缺,不是一份用来找出"谁在搞迷信"的方法。把第六节的三问用于排查、登记、上报个人或家庭,是对本文最直接的滥用,本文明确反对。
证据边界三句。 其一,本文对三门学科立场的排他表述,是本文为使三者互相顶撞所作的收紧,原作者未曾这样写过;可以核对的是所引的那些具体成果;那三句排他表述则不可核对。其二,本文不引用任何无法按作者与题名在公开数据库中检索到的文献,卷期页只给能够确证者。其三,第九节的全部数字来自一次可复算的公开取数,规则见附录一与附录二;除该节之外,本文不提供数据。
Boyer, P. (2001). Religion Explained: The Evolutionary Origins of Religious Thought. New York: Basic Books.
Bruun, O. (2003). Fengshui in China: Geomantic Divination between State Orthodoxy and Popular Religion. Copenhagen: NIAS Press.
Chapman, L. J., & Chapman, J. P. (1967). Genesis of popular but erroneous psychodiagnostic observations. Journal of Abnormal Psychology, 72(3), 193–204.
Douglas, M. (1966). Purity and Danger: An Analysis of Concepts of Pollution and Taboo. London: Routledge & Kegan Paul.
Evans-Pritchard, E. E. (1937). Witchcraft, Oracles and Magic among the Azande. Oxford: Clarendon Press.
Fellegi, I. P., & Sunter, A. B. (1969). A theory for record linkage. Journal of the American Statistical Association, 64(328), 1183–1210.
Feuchtwang, S. D. R. (1974). An Anthropological Analysis of Chinese Geomancy. Vientiane: Vithagna.
Freedman, M. (1966). Chinese Lineage and Society: Fukien and Kwangtung. London: Athlone Press.
Freedman, M. (1969). Geomancy (Presidential Address 1968). Proceedings of the Royal Anthropological Institute of Great Britain and Ireland, 1968–70, 5–15.
Hacking, I. (1995). The looping effects of human kinds. In D. Sperber, D. Premack & A. J. Premack (Eds.), Causal Cognition: A Multidisciplinary Debate. Oxford: Clarendon Press.
Hong, Z. (2025). Randomization, Ritual, and Cultural Evolution: Revisiting Omar Khayyam Moore's "Divination: A New Perspective". Nature & Anthropology.
Malinowski, B. (1948). Magic, Science and Religion and Other Essays. Glencoe, Ill.: Free Press.
March, A. L. (1968). An appreciation of Chinese geomancy. Journal of Asian Studies, 27(2), 253–267.
Moore, O. K. (1957). Divination: A new perspective. American Anthropologist, 59(1), 69–74.
Robinson, W. S. (1950). Ecological correlations and the behavior of individuals. American Sociological Review, 15(3), 351–357.
Simpson, E. H. (1951). The interpretation of interaction in contingency tables. Journal of the Royal Statistical Society, Series B, 13(2), 238–241.
Tversky, A., & Kahneman, D. (1974). Judgment under uncertainty: Heuristics and biases. Science, 185(4157), 1124–1131.
Wertheimer, M. (1923). Untersuchungen zur Lehre von der Gestalt II. Psychologische Forschung, 4, 301–350.
Whitson, J. A., & Galinsky, A. D. (2008). Lacking control increases illusory pattern perception. Science, 322(5898), 115–117.
Yoon, H.-K. (2018). P'ungsu: A Study of Geomancy in Korea. Albany: SUNY Press.
Zerubavel, E. (1991). The Fine Line: Making Distinctions in Everyday Life. New York: Free Press.
字数与分工
正文连同三个附录约 2.2 万汉字。题面、三门取材的要求、以及全部判断上的取舍由作者决定;文献检索、数据抓取、统计与初稿由语言模型辅助完成。第九节的数字出自一次可复算的公开取数,预注册在统计之前写定并存档;预注册的主读数被自己的数据判伪,改写过程写在正文而非附录。本文不为自己评分。