人为什么把疾病、破财、婚姻不谐、家道中落与死亡组织成方位、形势、禁忌与吉凶?以往三路回答分别诉诸不确定性、认知装置与宗族竞争。本文提出第四种。留意一件被忽略的语法事实:风水的核心词——地气、龙脉、祖荫、阴德、家底、气数——全部是存量词;而医疗、司法、事故调查、财务这些可用账本的记录单位全部是事件:某年某月某人做了什么、结果如何。本文主张,人长期依赖这套东西,是因为它是唯一一份为存量记的账。支撑这一主张的是一条由三门远学科互相顶出来的判断:一次显露所动用的东西,其形成时刻可以比这次显露早一到两个数量级,而以事件为单位的记录只能记触发,记不了来源。本文把被动用之物中形成于久远之前的那一份命名为老份,给出四条判据、一件装置(动用年龄谱)与两个读数(老份比 θ 与量级差 λ⁻¹)。在 6 个公开代码仓库、4,777 个被改动行上作了一次预注册检验:被改动之物在被改动时的年龄中位数 546.6 天,38.4% 超过三年,7.3% 超过十年,最老的一行已存在 5,847 天;而来源年龄是触发间隔的 10 到 127 倍,6 个仓库无一例外。预注册的"响应快"一条被自己的数据判伪,机制表述因此由"快响应配老来源"改写为"两者不同量级"。
关键词:老份;存量与事件;动用年龄谱;量级差;近因足够假定;触发与来源脱钩
先看一件很容易被跳过的事:词汇。
一个人去问风水,得到的说法里出现的是这样一些词:地气、龙脉、砂水、祖荫、阴德、家底、气数、根基、元气。 把它们放在一起看,它们有一个共同的语法性质——全部是存量词。它们说的都是"这里/这家积下了多少、还剩多少、厚不厚、薄不薄",没有一个是在说某年某月发生了什么。
再看这个人手上有的那些文件。病历写的是:某日入院,某日手术,某日出院,诊断如下。判决写的是:某日某人实施某行为,依据某条,判决如下。事故报告写的是:某时某分某处发生某事,直接原因如下。财务报表的核心是收入与费用的发生。这些记录也有一个共同的语法性质——全部是事件项:时间、行为、结果。
两套词汇不能互译。你没法把"家底薄"翻译成任何一份病历上的条目,也没法把"某日入院"翻译成任何一句关于气数的话。它们不是同一件事的两种说法,它们记的是两类不同的东西。
本文要主张的就是这件事:人之所以长期依赖这套东西,不是因为它能解释事件——它解释事件的能力很差,而且当事人往往自己也知道——而是因为它是唯一一份为存量记的账。
这句话听上去像是一个修辞观察,其实不是。它可以被推到一个可裁决的位置上,而推它的力来自一个更硬的判断:
一次显露所动用的东西,其形成时刻可以比这次显露早一到两个数量级;而以事件为单位的记录只能记住触发,记不住来源。
这句话的分量在于"数量级"三个字。它不是说"有时候有远因"——那是常识,谁都同意。它说的是:触发与来源之间的时间尺度,稳定地差一到两个数量级,而不是差一点。 本文在第九节用一份完全公开、可以逐行复算的记录,把这个倍数量了出来:6 个样本,无一例外,来源年龄是触发间隔的 10 到 127 倍。
一旦承认这一点,很多事情要重排。一个人五年里连遭四件事,去追问"为什么是现在",任何一本以事件为单位的账都只能把他指向最近的那件事——上个月的检查、去年的那次决定、前年的那笔投资。这些回答不是错的,它们是结构性地不够:真正被动用的那一份,形成于二十年前、三十年前,甚至上一代,而它在任何账上都没有条目。
本文把这一份命名为老份:一次显露所动用之物中,形成时刻远早于本次显露、且在任何以事件为单位的记录里没有对应条目的那一份。
本文的三层主张可以分开引用。第一层最强也最容易倒:老份是一类被系统性地不记录的东西,而不是一个已知概念的重新描述。第二层是一件工具:动用年龄谱——把一次显露所动用之物按形成时刻排成一条分布,读它的中位数与尾部,再与触发间隔相比。第三层最稳、最容易查:在医疗、司法、事故调查、财务这四类结案文书的标准必填项里,没有一项是存量项;所有必填项都是事件项。这是记录制度的语法,不是某一份文书的疏漏。
为了不让这三层停在纸面,本文向三门与风水毫不相干的学问各要了一条互不相容的主张——林学、水文学、食品科学——从它们打不通的地方取出一条谁也没说出口的共同假设;又在一份公开的、逐行可查的记录上,把最便宜的那条检验按预注册跑了一遍。预注册的六条里有一条被判伪,机制的表述因此改写,改写过程写在第九节,不在附录。
这道题的邻居——人类学、宗教学、地理学、建筑学、心理学——不进本文的取材;它们的位置留在第十二节,作为要正面处理的对手。本文取的三门,共同点只有一个:每一门都必须回答"一次显露所动用的东西由什么决定",而三门给出的答案互不相容。
一处规矩要先讲明:下文把每一门的立场收紧成"只有我这一条是决定性的"这种排他形式,是本文为使三者互相顶撞而作的收紧,原作者未曾这样写过。可核的是每条背后所引的具体工作;那三句收紧后的话不可核,也不应被当作引文。本文不引用任何无法按作者与题名在公开数据库中检索到的文献。
树木每年在茎干上加一圈,宽的年份与窄的年份连成一串,这串宽窄就是这株树的记录。要知道一段木头有多老、经历过哪些年份,把圈数出来即可。这门学问的排他主张是:每一株自己的记录是自足的——它的过去写在它自己身上,不需要外求。
这门学问自己知道这条主张站不住,而且知道得很清楚。
在极端年份,一株树可能根本不形成那一圈——干旱、虫害、机械损伤、遮蔽,都可能使某一年在这株树上完全不留痕迹。这叫缺轮。反过来,一年之内的两次生长中断,可能造出看上去像两圈的痕迹,这叫假轮。于是数圈得到的年数系统性地偏少或偏多,而偏差不可能从这一株自身查出来——你手上只有这串宽窄,没有别的东西可以拿来对照。
这门学问对付它的办法,是这门学问的核心工艺:把同一地区多株树的宽窄序列并排比对,靠共同的宽窄模式把年份对齐,从而定位出某一株上缺了哪一年。一株树记录里缺掉的那一年,只能由别的树的记录来指认。 不做这一步,树轮年代学不成立;它给出的一切年代都靠这一步。
时序读数:先动的是年轮的显露——数出来的圈数与已建立的年表对不上;于是这段木头赖以被定年的那套条件被改写:不再单靠自身,改用交叉比对,建立地区主年表;改完之后回写两处:某些"年轮"被重判为假轮,某些空缺被补上一个年份;而这株树在整个年表里的位置随之改变。下一轮由新的样本先动。
第二门的答案完全不同:显露不由对象自身决定,由流决定。一场雨落下,多久到达河道、峰值多高、退水多快,取决于坡面、河网、下渗与蓄滞。这门学问的排他主张是:显露出来的那条过程线,由路径与速度决定。
这门学问也有它自己人尽皆知的麻烦,而且这一件比缺轮更彻底。
把一条洪水过程线分成"这场雨带来的"与"原本就在流域里慢慢流出来的"两部分,是这门学问的日常动作。可是这个分法没有唯一解:换一种分割方法,得到的两部分完全不同,而没有任何独立的观测可以判定谁对。这门学问天天在做一件没有真值可校的分解。
更要紧的是同位素示踪带来的那个结果。用水中稳定同位素与溶质做标记去追,会发现一场暴雨的洪峰主要不是这场雨的水:被推出河道的,是暴雨之前就已经储存在流域里的水。而与此同时,河道的响应又非常快——雨下起来几小时,水位就涨了。
响应很快,而排出来的东西很老。 两件事同时成立,构成这门学问里一个被反复讨论的悖论。这不是某个流域的特例,它是这门学问的一个中心问题。
时序读数:先动的是路径的组织——一次改道、一次分洪、一次下垫面变化;它与流域当下的蓄水条件对不上;于是显露出来的过程线改变;改完之后回写两处:重新率定模型参数,以及重估流域的蓄水能力。下一轮仍由路径端先动。
第三门的答案又是另一套:既不由对象自身决定,也不由流的物理决定,而由链上的登记结构决定。
一批食品出了问题,要知道它从哪儿来、去了哪儿,靠的是可追溯体系。这门学问的排他主张是:一件产品的身份与去向,由它在链上的批次编号与上下游登记决定,而不由它的物理性质决定。 两袋外观完全一样、成分完全一样的面粉,若批次不同,处置就不同。
这门学问同样明文承认自己的边界,而且这一处承认是写进规则的。
其一,可追溯的通行要求是"向前一步、向后一步"——每个环节只需记住直接的上家与下家,不要求也不掌握全链。于是从终端往回追,必须一环一环地问,而任何一环断掉,整条链就到此为止。
其二,也是更彻底的一条:批次一经混合就不可分。 十家农户的原料倒进同一个料仓,出来的是一个新批次;此后无论怎么检测,都无法把某一粒还原到某一家。这不是技术不够,这是混合这个动作本身消灭了区分。
这两条合起来意味着:这门学问的追溯能力,随着每一次转移和每一次混合而逐级衰减,而衰减本身不被记录——记录上永远是完整的一环接一环,看不出已经丢了多少。
时序读数:先动的是现场的显露——一次检出、一次投诉、一次发病;它与链上登记的状况对不上;于是追溯与召回的路径组织被改写:扩大召回范围、加密抽检、改批次规则;改完之后回写两处:同一批产品被重新分类,以及对上游供应结构的评估被改写。下一轮由现场先动。
三条摆在一起,冲突是硬的。
林学与水文学不能同真。前者说,一个对象的过去写在它自己身上,只是有时候读不全。后者说,被排出来的东西根本不是这一轮进来的东西——对象此刻交出的,是它库里存的。若后者对,"过去写在自己身上"就得改写成"过去在库里,而库不按顺序出货";若前者对,水文那套"老水"就只是没把记录读全。
水文学与食品科学不能同真。水文说,混合是常态,而且正是混合使得当下的显露主要来自陈年的存量——这门学问接受混合,并发展出统计的办法去描述它。食品说,混合是追溯的终点:一旦混合,来源就永久失去。一个把混合当作可以被穿透的对象,一个把混合当作不可逆的丧失。
食品科学与林学不能同真。食品说,身份由登记结构给定,物理性质不算数;林学说,身份写在物理性质里——年轮就在那段木头上,不需要任何人给它编号。一个是先有登记后有身份,一个是先有身份后有登记。
三家争的是同一件事:一次显露所动用的东西由什么决定,以及凭什么可以被追到。 一个说靠对象自身的记录,一个说靠流的传播,一个说靠链上的登记。三条互不相让,失败定义也彼此翻译不过来——定年错、洪水漏报与水库失事、召回失败与中毒事件。
三家争得不可开交,脚下是同一块地。
把三条主张并排读,会发现它们争的是"靠什么追",而不是"追得到追不到"。林学说靠自身记录,那意味着记录里有;水文说靠路径与速度,那意味着沿着流可以推;食品说靠链上登记,那意味着一环一环走得回去。三家都预设着同一件事:
一次显露所动用的东西,来自可以沿着记录一步一步回溯到的那一段;因而只要不断链,来源就找得到。
把这句话念给三家听,三家都会说这还用说吗。它们会以为你在说一句方法上的常识:当然要追溯,当然记录要完整,当然断了就追不到。正因为三家都会这样反应,它才是共有的前提,而不是第四家的立场。
这条前提有一个更宽的形态,整个学界都站在上面。研究者面对一次显露时,标准动作是向前找不远处的输入:上一期的变量、前一阶段的暴露、最近的那次干预。回溯的深度由数据窗口决定,而数据窗口由研究设计决定,研究设计又默认"该找的东西就在窗口里"。窗口之外的东西被处理成基线、初始条件、固定效应——也就是说,被当作背景吸收掉,而不是当作这次显露的组成部分。
本文把这块地叫作近因足够假定:解释一次显露,只需回溯到不远的前因;更远的东西可以折进背景项。
风水研究的三条路全站在这块地上。不确定性那一路问的是"此刻的处境如何";认知副产品那一路问的是"这套念头怎么产生";隐语那一路问的是"当下有什么在争"。三条路问的都是当下与近旁,没有一条去问:这一次求问所处理的那个东西,是什么时候形成的。 三条路互相攻击,谁也不回头看这块地。
这块地一旦被承认可疑,三条路要同时让步。若被承受的那一份主要形成于很久以前,那么"人为什么在此刻求问"这个问题就问偏了:此刻只是触发,被处理的是存量。要问的变成:为什么承受存量的人,手上没有一份存量的账。
要推翻一条三家共有的前提,从外面搬理由没有用。唯一的办法,是从三门当中找出某一门早已白纸黑字写下、却始终派作别用的那件材料。
水文学有一件这样的东西,而且它不是边角材料,是这门学问反复讨论的中心问题之一:
流域对降雨的响应很快,而流域排出来的水很老。
这两句话都由观测支持,而且它们同时成立。水位在雨落下几小时之内就涨起来;而用同位素与溶质去标记,被推出河道的主要是这场雨之前就已经存在于流域里的水——它的平均滞留时间以月计、以年计,有的以更长计。
把这一件的性质逐条摆出来:
其一,触发与来源在时间尺度上相差一到两个数量级。响应以小时计,来源以月年计。这不是"有远因",是量级不同。
其二,触发不提供来源的信息。知道这场雨下了多少、下了多久,推不出被排出来的那部分水是哪一年存进去的。
其三,记录只记触发与结果。雨量站记降雨,水文站记流量,两头都有精确到分钟的时间序列;而"这一刻流出去的水是什么时候进来的"不是任何一个测站的输出,它必须靠额外的示踪手段专门去求。
其四,这门学问离不开它。把这一条拿掉,水质响应、溶质输出、污染物滞后这些问题全部解释不通——因为它们的时间尺度只能由存量的年龄给出,给不出的话,模型与观测对不上。
于是那条共有前提被自家人推翻了:
一次显露所动用的东西,可以不来自可回溯的那一段;触发与来源可以完全脱钩,而两者之间没有任何事件把它们连起来。
这句话在水文学自己那里回答的是另一个问题:为什么流域的水量响应与水质响应不同步。没有人拿它去问:一份只记事件的记录,能不能承载一个主要由存量决定的世界。可是这个问题就摆在那里。
推倒这条之后,随之而来的是一句三家各自都要反对、而把三家的证据并起来又只能承认的话:
以事件为单位的记录,在原理上不能记住存量;它能记住的只有存量被动用的那一刻,而那一刻不携带存量的年龄。
三家不会同意,各有各的道理。林学不会同意,因为它的定年工艺建立在"过去写在对象身上"这条上;承认存量不可从事件读出,等于承认它的主年表也只是另一组事件的排列。水文学不会同意——它其实已经承认了一半(它天天在测年龄),但它绝不会承认这一条可以推广到记录制度本身:那超出了它的辖区,而且它的整套工程实践仍然建立在事件时间序列上。食品科学最不会同意,因为它的全部合法性建立在"链不断就追得到";承认混合之后来源永久丧失,它其实也已经写进规则了,但它把这叫作技术边界,而不叫记录单位的性质——把它叫成后者,整个可追溯体系的正当性就要重新论证。
老份:一次显露所动用之物中,形成时刻远早于本次显露、且在任何以事件为单位的记录里没有对应条目的那一份。
四条判据,缺一条即不成立:
判据一 · 被动用。 它必须在这次显露里实际被拿出来用了或被改掉了,不是躺在旁边没动。一间老屋里三十年前砌的墙,若这次什么也没碰它,它不是老份;这次把它拆了、或者靠它承重了,它才是。这一条把"一切历史遗留"排除出去——历史遗留是背景,老份是本次动用的组成部分。
判据二 · 量级差。 它的形成时刻与本次显露之间的间隔,须比这次显露的触发间隔大一个数量级以上。这一条是硬的,也是本文最容易被证伪的地方。差一点不算;差十倍以上才算。
判据三 · 无条目。 在所有以事件为单位的记录里,没有一条能给出它的年龄。注意这不是说"记录里查不到这件东西"——往往查得到,只是查到的是它被使用的那一刻,不是它形成的那一刻。
判据四 · 不可由触发推出。 知道触发的一切细节,推不出被动用之物的年龄分布。若能推出,那属于正常的因果链,不属于老份。
四条合起来是一句更短的话:这次用掉的,多半不是这次进来的。
要说清四种"像而不是"的东西。
第一种:远因与潜伏期。 医学里有诱导期与潜伏期,暴露与发病之间可以隔几十年。这与老份很像,分别在判据三:潜伏期的那次暴露是一个有条目的事件——它有时间、有剂量、有记录,只是记录可能不全。老份不是一次未被记全的事件,它是一份没有事件形态的存量。石棉暴露是事件;"这块地的地气"不是任何一次暴露。
第二种:路径依赖与累积优势。 早期的小差别经由自我强化被放大,最终锁定——这一路描述的是过程的形状,它假定那条路径是可以被追出来的,而且研究它的方式正是把那条路径追出来。老份的要点恰恰是:那一份的来源在现行记录里追不出来,不是因为没人追,是因为记录的单位不是它。
第三种:存量与流量的建模。 系统动力学明文区分存量与流量,并把存量放在模型的中心。这是最容易与本文混起来的一位,第十二节会正面处理。这里先说分离线:那种建模里的存量总是被建模者指定的——它有名字、有单位、有初值。老份说的是在现行的记录制度里,存量没有条目,而指定它的那个位置空着。
第四种:一切旧东西。 老屋、祖坟、家谱、旧伤——它们只是旧,不必然是老份。判据一(被动用)与判据二(量级差)把大部分旧东西排除出去。老份不是"过去",是"这一次被拿出来用的过去"。
还有一件必须写清楚:老份不是坏东西,也不是隐患。 它是任何有存量的系统的常态:一座水库排出去的水本来就该是存的水,一片森林的当年生长本来就建在几十年的积累上,一段代码本来就该复用多年前写好的东西。老份的问题不在它存在,在于承受它的人手上没有它的账。
一个构念要能上手,须另配一件器具,用来把外观相同的两样东西分开。本文用的既不是一张表,也不是一条时间轴,是一条分布。
做法:取一次具体的显露——一次发病、一次破产、一次事故、一次改动——列出它实际动用或改掉的那些东西;给每一样标出它的形成时刻;把这些形成时刻与本次显露的间隔画成一条分布。这条分布就是动用年龄谱。
谱上要读四处:
其一 · 中位。 一半的被动用之物比它更老。这是这次显露的"来源年龄"。
其二 · 尾部。 超过某个年限(本文用三年与十年两档)的那一部分占多大。尾部厚,说明这次显露伸手伸得很远。
其三 · 触发间隔。 从"上一次碰这件事"到"这一次"之间隔了多久。它衡量的是显露的节奏,与来源年龄是两个东西。
其四 · 两者的比。 来源年龄的中位数是触发间隔中位数的多少倍。本文最要紧的读数就在这里。
这条谱与一张分类表、一条时间带的分别在于:它保留量级。 老份不是一个有无的问题——任何显露都会动用一些旧东西,问一句"有没有"必然得到"有"。要紧的是多老、以及比触发老多少。用有无去装它,会把这个问题变成一句空话;只有分布才装得下量级。
谱画出来之后,几乎总会看到同一个形状:一个偏在近处的小峰,加一条拖得很长的尾巴,而尾巴里装着大部分质量。 第九节把这个形状在真实记录上量了出来,并给出了它的倍数。
读数一 · 老份比 θ:本次显露所动用之物中,形成时刻早于某一界限者所占的份额。界限须写明,本文用两档:三年与十年。θ 无量纲,可事后清点,跨领域可比。
读数二 · 量级差 λ⁻¹:来源年龄的中位数除以触发间隔的中位数。它是一个纯数,说的是"被动用之物比这次显露的节奏老多少倍"。这是本文的主读数。
两个读数要一起用。θ 说尾巴有多重,λ⁻¹ 说尾巴伸得比节奏远多少。θ 高而 λ⁻¹ 小,说明这是一个本来就走得很慢的过程,老不是意外;θ 高而 λ⁻¹ 大,才是本文要打的那一格:节奏很密,而每一次都在动用很远的东西。
按本文的规矩,新读数造出来之后先做一件事:举一个"既有的主要指标最好看、而这个数最难看"的真实例子;举不出来,说明它只是既有指标的代理。
在这道题上,既有的主要指标是"记录完整度""随访率""数据可得性"。本文的读数与它正交,而且常常反向:一个记录做得极完整、每一次事件都有条目、时间戳精确到秒的体系,θ 与 λ⁻¹ 不会因此下降一分——因为把事件记全,与记住存量的年龄,是两件不同的事。第九节的实测正是这个形状:那是一份精确到秒、完全不丢事件的记录,而"被改掉的东西有多老"仍然不是它的任何一个字段,必须另行计算才能得到。
清点手册见附录一。这里只说三条最容易出错的:
其一,"被动用之物"的粒度要写死。 本文的规定:以被这次显露实际改变了状态的最小可指认单位为准。第九节里是一行代码;在一次疾病里可以是一处器质改变;在一次破产里可以是一笔早年形成的负债或一项早年签下的义务。附录一给了一个恰好在边界上的例子。
其二,"形成时刻"取的是最后一次成为现在这个样子的时刻,不是最初出现的时刻。这一条会系统性地低估年龄,方向保守,须在报告里写明。
其三,全篇一个口径。 正文、检验条款、赌注三处引用的 θ 与 λ⁻¹,用的是同一个定义、同一份编码规则。三处一致性自查写在附录一末尾。
衡量一件工具,要看它能否辨出这样一种情形:表面审查处处合格,毛病偏偏就出在这里。
本文要打的那一格:
每一次事件都被完整记下,时间精确,链条不断,追溯毫无障碍;而这一次显露所动用的东西,其年龄比事件的节奏大一到两个数量级,且这个年龄不是任何一条记录的输出。
这一格的形式审查全部通过:记录齐全、时间可查、责任清楚、没有任何一环缺失。从任何一本账上看,这件事被记得相当完整。
三条签名,各配一条误诊阻挡。
签名一 · 量级差稳定,而不是偶尔出现。 在同一类过程的多个独立样本上,λ⁻¹ 稳定地落在十倍以上,且不因样本而消失。若它只在某些样本上出现,那是这些样本的特殊性,不是记录制度的性质。
误诊阻挡甲: 不要用单个样本去认定这一格。λ⁻¹ 在单个样本上很容易被一次异常事件拉大或拉小——第九节里就有一个样本因为一次大规模重写,来源年龄的中位数从四年掉到四天。这一格要求的是多样本的一致性,不是单样本的极值。
签名二 · 追问必然指向近旁,而且指得很确定。 当事人向任何一本记录发问"为什么是现在",得到的回答一定是最近的那件事,而且这个回答在那本账的规则里完全正确、无可指摘。错的不是回答,是这本账只能给出这一类回答。
误诊阻挡乙: 不要把这一点读成"记录质量差"或"经办人敷衍"。恰恰相反,越是严谨的经办人,越会严格地只回答记录能支持的部分。把近因回答归给态度问题,会导致一个错误的处方(要求经办人多想一层),而那个处方既不可执行,也会破坏记录的可靠性。
签名三 · 存量的说法只在账外流通。 关于"这些年积下了什么"的说法一直存在,而且相当稳定、相当细致;它们出现在饭桌上、族里、同事私下的议论里,从不出现在任何一份正式文书上。
误诊阻挡丙: 不要把账外流通的说法直接当作老份的读数。那些说法是关于存量的,不是存量本身;它们的准确性未知,且极易被叙事塑造。本文的两个读数完全不依赖任何人的说法——它们从被动用之物的形成时刻算出来,不问任何人的意见。
三条签名合起来说明一件事:这一格越是把事件记好,越严重。 事件记得越全、时间越精确、链条越完整,人们就越有理由相信"该记的都记了",因而越不会去问那个记不下来的东西。这是本文全篇最反直觉的一句:完备的事件记录,会让存量的缺席看起来像不存在。
要量老份,需要一份同时满足三个条件的记录:每一次事件都有精确时刻;每一次事件所动用的对象可以被精确定位;每一个对象上一次成形的时刻可以被追出来。这三条同时满足的地方极少,而版本控制下的代码仓库恰好满足。
在那里,一次提交就是一次显露:它有精确到秒的时刻,它改掉了哪些行清清楚楚,而每一行上一次被写成现在这样的时刻可以逐行追出来。于是"事件的节奏"与"被动用之物的年龄"两个量可以在同一份公开记录上同时得到。
要紧的是第三个条件的实现方式:那个年龄不是任何一个字段。提交对象里存着树、父提交、作者、提交者、签名、说明——全是事件项。"这次改掉的东西有多老"必须另行计算,逐行回溯才能得到。这份记录是完备的事件记录,同时是一份零存量记录。 它正是本文第三层主张的一个可查实例。
必须先说清楚:本文不主张代码与祖坟是同一类东西。本文主张的是,"一次显露所动用之物的年龄,与事件节奏相差多少个数量级"这个结构,在这里可以被逐行量一次,而在别处量不到。
下面这份预注册,是在克隆任何仓库之前落定的;名单与六个阈值此后一字未动(全文见附录二)。样本是事前写定的 6 个公开仓库,按"历史长、体量适中、公开可克隆"选取,写定名单时未查看任何结果。取数规则也一并写死:每仓取最近 150 个非合并提交;只看后缀为 .py 的文件,每提交至多 3 个文件,每文件至多 60 个被删除行;被动用行的年龄=本次提交时刻减去该行在父提交上最后一次写入的时刻;触发间隔=本次提交时刻减去该文件在父提交上最近一次被提交的时刻。
H1(老份存在):被改动行在被改动时的年龄,中位 ≥ 90 天。
H2(响应快):触发间隔的中位 ≤ 30 天。
H3(触发与来源脱钩):λ = 触发间隔中位 ÷ 行龄中位,≤ 0.50。
H4(尾部厚):年龄 ≥ 3 年者占比 ≥ 0.15。
H5(有没有这个字段):提交对象自身是否含"本次改动所覆盖之物的年龄"字段。预期不存在。
H6(老份比):年龄大于该文件自身年龄一半者占比,跨仓中位 ≥ 0.30。
6 个仓库全部克隆成功,共取得 4,777 个被改动行。逐条结果如下。
表一 预注册六条假设的逐条结果(6 个公开仓库,各取最近 150 个非合并提交,共 4,777 个被改动行)
假设
阈值(预注册)
实测
判定
H1 老份存在
行龄中位 ≥ 90 天
546.6 天(n = 4,777 行)
通过
H2 响应快
触发间隔中位 ≤ 30 天
跨仓中位 31.60 天
判伪(已改写机制表述)
H3 触发与来源脱钩
λ ≤ 0.50
跨仓中位 0.0631,即来源年龄为触发间隔的 15.8 倍
通过(极强)
H4 尾部厚
年龄 ≥ 3 年占比 ≥ 0.15
通过(极强)
H5 年龄字段
预期不存在
提交对象仅有树、父提交、作者、提交者、签名、说明
字段不存在
H6 老份比
跨仓中位 ≥ 0.30
0.564
通过
H1 通过,且富余很大。 被改动行在被改动那一刻的年龄中位数是 546.6 天——一年半。阈值是 90 天。
H2 判伪。 触发间隔的跨仓中位数是 31.60 天,阈值是 30 天。差了 1.6 天。这是一次边缘判伪,但本文按预注册处理:不达阈值即判伪,不因差得少而改判。这一条改了什么,写在下一小节。
H3 通过,且极强。 λ 的跨仓中位数是 0.0631,阈值是 0.50。反过来看更清楚:来源年龄是触发间隔的 15.8 倍。
H4 通过,且极强。 年龄 ≥ 3 年者占 38.4%,阈值是 0.15。补充分位:中位 547 天,第 75 百分位 2,050 天,第 90 百分位 3,035 天,第 99 百分位 5,268 天,最老的一行在被改掉时已经存在了 5,847 天——十六年。年龄 ≥ 5 年者占 28.6%,≥ 10 年者占 7.3%。
H5 字段不存在。 提交对象的全部字段是:树、父提交、作者与时刻、提交者与时刻、签名、说明。没有一个字段与被改动之物的年龄有关。 这个数必须靠逐行回溯另算,而这一步不是任何日常操作的一部分。
H6 通过。 年龄大于该文件自身年龄一半者,跨仓中位数 0.564,阈值 0.30。也就是说,一次改动动到的行里,超过一半的行的年龄大于这个文件已有寿命的一半——动的往往是这个文件里最老的那一半。
把各仓的倍数单独列出来,形状比总体数字更说明问题:
表二 逐仓的量级差:节奏相差两个数量级,比值全部落在十倍以上
仓库
被改动行数
行龄中位(天)
触发间隔中位(天)
λ⁻¹(倍)
年龄≥3年占比
requests
285
1,372.1
10.83
127
0.526
flask
1,061
1,576.1
125.83
13
0.568
tqdm
959
1,356.0
17.16
79
0.555
attrs
522
770.2
46.03
17
0.469
gunicorn
1,299
4.4
0.46
10
0.045
urllib3
651
722.3
48.02
15
0.373
六个仓库,λ⁻¹ 分别是 127、13、79、17、10、15。全部落在 10 倍以上,无一例外。
这六个仓库的性质差别很大:有的每天都有提交,有的两三个月才动一次;有的近年在大规模重写,有的多年只做小修。它们的触发间隔从半天到四个月,相差两个数量级;它们的行龄从四天到四年多,也相差两个数量级。而两者的比值稳定地落在同一个区间。
这一点比任何单个数字都要紧。它说明本文要打的那一格不是某种项目风格的产物:无论节奏快慢,一次显露所动用的东西,稳定地比这个节奏老一到两个数量级。
这里必须点出那个离群样本,因为它恰好证明了签名一的误诊阻挡。gunicorn 这个仓库的行龄中位数只有 4.4 天,≥3 年占比只有 4.5%——看上去完全不符合本文的描述。查下去,原因是它最近这一段正在进行大规模重写:新写的代码在短期内被反复改动,于是"被改动之物"大多是几天前刚写的。一次大规模重写会把老份暂时清零。 而即便在这个样本上,λ⁻¹ 仍然是 10——因为它的触发间隔也同步缩短到了半天。比值活下来了,绝对值没有。 这正是本文把主读数定为比值而不是定为年龄的理由,而这个理由是数据给的,不是事先想到的。
事后追加一次敏感性分析(明标为事后追加,不进入任何判定):剔除 gunicorn 之后,触发间隔跨仓中位升至 46.03 天,行龄跨仓中位升至 1,356 天,λ 跨仓中位 0.0598,≥3 年占比跨仓中位 0.526。方向一致,量级不变。
这一处不利结果值钱,因为它推翻的不是一个数字,是本文原来的表述。
本文原本的机制表述是"快响应配老来源"——照搬了水文学那一对说法:响应以小时计,来源以年计。按这个说法,"响应快"是机制的一半,因而必须成立。
数据说它不普遍。六个样本里,flask 的触发间隔中位是 125.8 天,四个多月,谈不上快;attrs 是 46 天;urllib3 是 48 天。跨仓中位 31.6 天,压线未过。"响应快"这一半站不住。
而另一半非常稳:λ⁻¹ 六个样本全部在 10 倍以上。
据此,本文把机制的表述改写了:
要害不是速度,是量级差。 显露的节奏可以很慢——四个月才动一次,也可以很快——半天动一次;无论哪一种,被动用之物的年龄都比这个节奏大一到两个数量级。原来的表述把机制绑在"快"上,那是从水文学那里搬来的一个偶然特征,不是这件事的必要条件。
这次改写的收益不只是修一句话。它让本文的适用范围大了一圈,同时让主张更难做假:若本文仍主张"响应快",那么一切慢节奏的场合(家运、代际、地方兴衰——恰恰是这道题最关心的那些)都会被排除在外。 改写之后,慢节奏的场合照样在范围内,只要那里的量级差成立。而"量级差"是一个更容易被证伪的主张——它给出了一个具体的倍数下界。
若不做这次真跑,本文会写下一句更强、也更窄的话:"人求问的时刻紧跟在事件之后,而被处理的是陈年的存量。" 数据说前半句不必成立。
其一,这是结构的量度,不是关于风水的检验。 代码不是家运,提交不是丧事。它量的是"被动用之物的年龄与事件节奏之比"这个结构,量得干净、可复算;它不证明人在连遭变故后会去看坟。
其二,代理变量明写。 行的"上一次写入时刻"由逐行回溯得到,不区分实质修改与格式调整;一次格式化会把大量行的年龄重置为很近,方向为低估老份。
其三,系统性偏差明写。 只取 .py 文件、只取被删除行、每提交至多 3 个文件、每文件至多 60 行——这些上限会削掉大改动的尾部,方向未知;"形成时刻取最后一次成为现在这个样子的时刻"这一条则确定地低估年龄。
其四,最愿意押的那一条没跑成。 本文最想检验的是"事件记录越完备,存量的缺席越不被察觉"这条。它需要在记录完备程度不同的多组同质样本上比较人们的追问方向,而公开数据里没有这样的样本。这是本文交出去的第一个洞,写在第十五节。
一个判断要能用,得配一句可以拿去问记录、问台账、问文书的话,不含"应当""真正""充分""合理"这类词。
本文的问话是:
这一次动用或改掉的那些东西,各是什么时候形成的?把它们的年龄排开,中位是多少;这个中位,是"上一次碰这件事到这一次"之间隔的多少倍?
拿它到五个彼此不同的场合各问一次,五个答案须各不相同。下面五个里,第四与第五是查出来的,且都逼本文作了修改。
场合一 · 一次中风。 被动用之物:血管壁上几十年形成的斑块、几十年的血压负荷、更早形成的代谢习惯。触发间隔:上一次体检到这一次发病,也许一年。年龄中位:以十年计。λ⁻¹ 在十倍以上。病历上记的是入院时刻、影像所见、用药记录——全是事件项,没有一项是"这些年积下了多少"。
场合二 · 一次破产。 被动用之物:早年签下的担保、早年形成的股权结构、早年定下的分成办法。触发间隔:从上一次现金流紧张到这一次断裂,也许几个月。年龄中位:以年计。破产文书记的是债权债务的发生与到期,不记这些安排是哪一年埋下的。
场合三 · 一次婚姻破裂。 被动用之物:更早形成的相处方式、更早定下的财务安排、更早形成的两家关系。触发间隔:从上一次争执到这一次,也许几周。调解书记的是分歧事项与协议内容。
场合四 · 一次代码改动。(查出来的)行龄中位 546.6 天,触发间隔中位 31.6 天,λ⁻¹ = 15.8;≥3 年占 38.4%,最老一行 5,847 天。这一格反过来改了本文:它判伪了"响应快",把机制从"快响应配老来源"改成"两者不同量级"。
场合五 · 一次大规模重写之后的改动。(查出来的)行龄中位 4.4 天,≥3 年占比 4.5%——老份几乎清零;而 λ⁻¹ 仍然是 10,因为触发间隔同步缩短到 0.46 天。
这一格反过来改了本文,而且改得最重。 本文原本要写的一句更强的话是:"被动用之物的年龄,是这一格的读数。" 这一格证明不是。年龄的绝对值可以被一次重写清零,而比值活了下来。据此本文把主读数由老份的年龄改为量级差 λ⁻¹,并把老份比 θ 降为辅助读数。这一改还带出一条推论:一次彻底的重建会真的消掉老份——但它同时会把事件的节奏一起缩短,因而不改变这一格的性质。 换成本题的话:翻修、迁居、另立门户、从头再来,确实会让"积下来的东西"清零,可是紧接着的那一段日子里,人动用的仍然是刚刚形成不久的东西,而节奏也同步变密。这一格不因重建而消失,它只是换了尺度。
上列五答各不相同;其中两答由实查得来,也各自逼本文动了刀。
一 · 临床。 预测:结案文书的必填项里没有一项是存量项。可以直接查病案首页、出院记录、死亡证明的字段表——它们记诊断、记操作、记时间,不记"负荷积累了多少年"。
二 · 司法。 预测:裁判文书的事实认定部分以行为为单位组织,凡涉及长期状态的(长期不和、长期负债、长期占有)都必须被转写成若干具体行为才能进入认定。转写这个动作本身,就是把存量拆成事件。
三 · 事故调查。 预测:报告的"直接原因"必为事件,"间接原因"多为管理项,而"这套设备与这套习惯积累了多少年"极少作为独立条目出现,即便出现也不带年龄。
四 · 财务。 预测:资产负债表是少见的存量记录,但它记的是金额不是年龄——一笔资产的账面值有,形成年份要翻附注甚至翻不到。存量有了条目,年龄仍然没有。 这一处是本文的一个自我限制:存量与存量的年龄是两件事。
六 · 林学。 预测:一次采伐所动用的立木蓄积,其形成年份跨度远大于采伐周期;而采伐记录只记采伐时刻与蓄积量,不记年龄结构——年龄结构须另做样地调查才有。
七 · 水文学。 预测:水文站的输出序列里没有"水龄"这一列;要得到它必须另做同位素采样。这一条是本文推翻材料的来处,也是本文机制的一个直接读数。
九 · 流行病学。 预测:暴露与结局之间隔几十年的那些关系,只能靠专门设计的队列去追;常规就诊记录在原理上给不出它,因为就诊记录的单位是就诊。
十 · 组织。 预测:一次组织危机所动用的,多为多年前定下的规则、多年前形成的分工、多年前招进的人;而危机复盘的文档以近期决策为主,因为那是记录能支持的部分。
十一 · 学术。 预测:一篇论文所动用的,主要是很久以前形成的判断与材料;而论文的记录(投稿日、录用日、发表日)全是事件项。这一条本文在第十六节对自己做了实测。
十二 · 家庭。 预测:关于"这些年积下了什么"的说法在家庭内部稳定流通、代际传递,而它从不进入任何一份正式文书;家庭档案(户口、房产、病历、成绩)全是事件与状态的快照,没有一项是积累量。
十三 · 土地与不动产。 预测:产权登记记的是权属变更事件(何时买、何时卖、何时抵押),不记"这块地上积下了什么"。而风水恰恰给这块地开了一份积累账。 这一处最直接地说明为什么这套东西挂在空间上:空间是唯一一种可以跨越人的更替而持续积累的东西,而它的登记制度只记更替,不记积累。
第一处,食品科学削掉了本文的处方。
本文最自然的处方是:给存量建账——在结案文书里加上"累积负荷""形成年份"这类栏目。食品可追溯体系的经验说明这条路的代价。那套体系正是为了对付"来源丧失"而建的,它的实际效果是:追溯能力集中在有能力维护记录的大企业手上,而链条最末端、最需要保护的小生产者被排除或被吸收。 记录一旦成为准入条件,它就不再只是记录。
如果没有这一处,本文原本会写下这句更强的话:"应当在结案文书中增设存量与年龄栏目。" 现在本文不主张增设栏目。本文只主张一件更弱、也更容易做到的事:在做任何关于长期结果的研究与统计时,把"事件项"与"存量项"分成两栏,并对存量项标注其年龄的获取方式;获取不到的,写"不可得",不许用近期代理填充。 这条主张不需要新建任何登记。
第二处,林学缩掉了本文的适用范围。
缺轮那件事说得很清楚:一个单位自身的记录不可能自证完整,完整性只能由外部同类的记录来判定。 映射过来就是:本文的动用年龄谱,在只有单个样本可用的场合不可读。 一次中风、一次破产、一家人的十年——这些都是单样本,它们的谱可以画出来,但画出来的东西无法判断是否漏了年份、是否有假轮。签名一的误诊阻挡说的就是这件事。
如果没有这一处,本文原本会写下这句更强的话:"对任何一次显露,都可以读出它的动用年龄谱。" 现在本文把适用范围收到:存在至少六个同类独立样本、且可以互相比对的场合。 这一收缩很重:它把本文最想说的那些个案——某一家、某一次丧事、某一段家道中落——排除在读数之外。对它们,本文只能说话,不能读数。 这一条本文承认得很不情愿,但缺轮那件事不允许别的写法。
第三处,水文学动了本文的价值排序。
基流分割那件事:把一条过程线分成"这次来的"与"原来存的",方法不同结果不同,而没有独立观测可以判定谁对。这直接打在本文的判据一(被动用)上:"哪些东西算被这次动用了"这个判定,本身可能没有唯一解。
如果没有这一处,本文原本会写下这句更强的话:"被动用之物是可以客观圈定的。" 现在本文规定:动用范围的圈法必须写明,并且同一份材料至少用两种圈法各算一次,两次结果差异过大的,读数作废。这使本文的读数从一个数变成一对数,锐度下降,诚实度上升。价值排序也随之改了:本文不再主张"读出老份比读不出好"——在圈法不唯一的场合,一个精确的错数比一句"读不出"更有害。
纵使把旁人的因果解释一一驳倒,也可能不过是改了个称呼。这一节管的是后者。以下十四位,每位交代四样:来处、它推进到哪一步、分开的那条线、以及如何裁决。
其一 · 存量与流量的建模(Forrester 1961,《Industrial Dynamics》)。这是最危险的一位:它明文把存量与流量分开,并把存量放在模型的中心,比本文早六十多年。它说到哪一步:一个系统的行为由存量的积累与流量的进出决定,只看流量必然误判。分离线只有一条,但它是硬的:那种建模里的存量总是被建模者指定的——它有名字、有单位、有初值,建模的第一步就是画出存量框。本文说的不是"该把存量放进模型",而是在现行的记录制度里,存量没有条目,而指定它的那个位置空着。做一次替换测试:把"老份"整段换成"存量",论证会在判据三处崩掉——系统动力学的存量从不缺条目,它缺的只是数据。判定形式:若争论的焦点是"该给这个存量赋什么初值",则属系统动力学的辖区;若连"该不该有这个存量"都没有任何岗位负责回答,则反之。
其二 · 路径依赖(David 1985 关于键盘布局的论文;Arthur 1989 关于递增报酬与锁定的论文)。它说到哪一步:早期的偶然事件经由自我强化被放大并锁定,最终的格局不能由当下的效率解释。分离线:路径依赖的研究方式正是把那条路径追出来——它假定路径可追,并以追出来为成果。本文的要点是那一份在现行记录里追不出来,不是因为没人追,是因为记录的单位不是它。判定形式:若那条路径可以从现有记录中被重建,则属路径依赖;若被动用之物的年龄必须靠额外的、非常规的手段专门去测,则反之。
其三 · 累积优势(Merton 1968,关于科学奖励系统中马太效应的论文)。它说到哪一步:初始的微小优势经由反馈不断放大,形成巨大的最终差距。分离线:累积优势描述的是差距如何形成,它的自变量是初始优势与反馈强度;本文说的是当下这一次动用的东西有多老,与差距无关——一个毫无优势的人,其当下所动用之物同样很老。判定形式:若把样本按最终成就分层后,量级差随分层而变,则属累积优势;若量级差在各层间稳定,则反之。
其四 · 惯习(Bourdieu 1977,《Outline of a Theory of Practice》;及其关于资本形式的论文)。它说到哪一步:过去的经历以身体化的性情系统留存下来,成为当下实践的生成原则——过去在身体里。这是极危险的一位,因为它讲的正是"存量在起作用"。分离线有两处:其一,惯习在人身上,随人生随人灭;本文说的存量挂在可以跨越人的更替而持续的东西上——地、宅、坟、制度、代码。其二,惯习是不可交易、不可改动的;而这道题里被处理的那个存量恰恰可以被买卖、被继承、被改动(迁一次坟、改一次门)。判定形式:若被指为来源的那个东西随持有者的死亡而消失,则属惯习一路;若它可以易主并继续起作用,则反之。
其五 · 集体记忆(Halbwachs 1925,关于记忆社会框架的著作)。它说到哪一步:记忆由社会框架支撑,个体的过去经由群体的框架被保存与重构。分离线:集体记忆是关于过去的表征,本文说的老份是过去形成的实物或安排本身。前者会随框架变化而被重写,后者不会——那面三十年前砌的墙,不因任何人怎么记它而改变承重。判定形式:若把相关人群全部换掉之后,那个来源随之消失,则属集体记忆;若它照旧在场并照旧被动用,则反之。
其六 · 诱导期与潜伏期(Rothman 1981 关于诱导期概念的论文)。这是方法学上最贴的一位:它明文处理暴露与结局之间的长间隔,并给出估计办法。分离线:诱导期的那次暴露是一个有条目的事件——有时间、有剂量、原则上可记录;老份不是一次未被记全的暴露,它是没有事件形态的存量。判定形式:若可以指出一个具体的时点作为来源,则属潜伏期;若来源只能被描述为一个分布(多老、多厚),指不出时点,则反之。
其七 · 左截断与观测窗(生存分析中的左截断问题,及相关的不朽时间偏倚讨论)。它说到哪一步:过程在观测开始之前就已进行,若不校正会产生系统性偏倚;统计学为此发展了成熟的处理办法。分离线:左截断是一个被承认、被命名、被处理的问题,它假定那段未观测的时间是可以被建模补偿的;本文说的是记录的单位本身不是存量,因而不存在"补偿"这回事——你补偿的仍是事件。判定形式:若那段未观测期可以用同类样本的分布来补,则属左截断;若连"该补什么量"都没有定义,则反之。
其八 · 结构性暴力(Galtung 1969,关于暴力与和平研究的论文)。它说到哪一步:伤害可以由结构造成,不需要一个具体的施害者;这种伤害是持续的、弥散的。分离线:结构性暴力讲的是没有施害者,本文讲的是没有年龄。前者的问题在归责,后者的问题在计量。二者可以同时成立而互不蕴含。判定形式:若追问的焦点是"谁该负责",则属结构性暴力;若追问的焦点是"这是什么时候积下的",则反之。
其九 · 生命历程(Elder 1974,《Children of the Great Depression》)。它说到哪一步:早期经历的影响可以持续数十年,且依赖于经历发生时的年龄与历史位置。分离线:生命历程研究的做法是建长期队列,也就是承认现有记录不够,专门去造一份新记录。本文关心的正是没有队列可用时会发生什么——绝大多数人的绝大多数处境,没有任何队列在跟。判定形式:若存在一份专门为此建立的长期记录,则属生命历程;若不存在,且当事人只能靠账外的说法去处理,则反之。
其十 · 不确定性催生仪式(Malinowski 1948)。它说到哪一步:风险高、不可控的活动上仪式更多。分离线:它的自变量是当下的不确定性,本文的自变量是被动用之物的年龄结构。判定形式:若在不确定性相当而量级差不同的两组之间,这类求问的密度没有差别,则本判断错;若有差别且方向为量级差越大越密,则反之。
其十一 · 认知副产品(Boyer 2001;及相关关于能动性探测的工作)。它说到哪一步:超自然表征是一般认知装置的副产品。分离线:副产品说解释念头为什么容易产生,不解释为什么这套词汇全部是存量词。一个由能动性探测生成的表征,最自然的形态是"某个东西干了这件事"(施事+事件),而不是"这里积了多少"。词汇的语法形态是一个可数的证据。 判定形式:若这类说法的核心词以施事—事件结构为主,则副产品说足够;若以存量结构为主,则反之。
其十二 · 宗族与地权竞争的说辞(Freedman 1969;及其 1966 年著作)。它说到哪一步:这套话语是宗族争地与正当化继嗣安排时可公开使用的语言。分离线:隐语说要求有一个在场的对手;本文的机制不需要对手。判定形式:若这类求问在有争端个案中显著多于无争端个案,则该说法覆盖;若无争端个案同样密集,则反之。
其十三 · 技术体系与宇宙论的内部分析(Feuchtwang 1974;March 1968;Bruun 2003)。它说到哪一步:厘清罗盘、形势与理气各自的内部道理,再把这门实践安放回官方正统与民间信仰的夹缝之中。分离线:这一路做内容分析,本文做词汇语法与记录单位的清点。判定形式:若把这套技术的核心词按语法形态分类,存量词与事件词各占一半上下,则本文的观察不成立;若存量词压倒性居多,则成立。 这一条最便宜,任何人拿一本通书就能数。
其十四 · 慢暴力(Nixon 2011,《Slow Violence and the Environmentalism of the Poor》)。它说到哪一步:一类伤害因为发生得太慢、太分散而不被看作事件,因而在政治上不可见。这是与本文最接近的一位,而且方向一致。分离线:慢暴力的诊断是它太慢所以看不见,处方是把它叙述出来、让它变得可见;本文的诊断是记录的单位不是它,所以记不下,而本文明确不主张让它变得可见(见第十一节第一处反削)——因为一旦有了条目,它会先被别的人拿去用。判定形式:若把这类过程叙述出来之后,它进入了正式记录并被处置,则慢暴力的处方有效;若叙述之后仍无条目、或有了条目而被挪作他用,则反之。
尚未交手,成文时指名请进的三位。 其一,Graeber 关于债务的长时段研究,它处理的正是一种可以跨代传递的存量,与本文的判据四关系密切;其二,Yoon 关于朝鲜半岛风水的长期研究,它提供了一个中国之外的同类案例,可用来检验本文关于"词汇语法"的预测;其三,Ze Hong 2025 对占卜功能性解释的重估,它可以问本文一个尖锐的问题:一套没有校准手段的存量读数,凭什么能被稳定地传下去。本文对第三个问题只有半条回答:它被传下去,不是因为它准,是因为在事件记录之外,它是唯一一份账。
最近的邻居是第一位,存量与流量的建模。它离得最近,因为它与本文用的是同一对概念。本文不能被它吸收,只有一条理由——它教人在模型里画出存量框,本文说的是现实的记录制度里没有这个框,而画框的那个位置没有人站。
本栏此前几篇处理过形状相近的东西,逐篇给一条对照预测。
《闲位》(同题首篇)处理的是这样一件事:结论下定、账目封存之后,追问仍旧上门,最后停在一个既不赔偿也不留痕的位置上;它的驱动落在封账那一刻。《合户》(同题第二篇)说的是:分案使几件已结之事无处合看,于是一个此前不存在的持有者被合出来;驱动是账本的边界。本篇的驱动是记录的单位——账本记的是事件,人承受的是存量。三者可以这样分辨:第一篇问什么时候,第二篇问多大一块,第三篇问多老。 对照预测:把同一批个案分别用三套读数量一遍,若其中任意两套的结果可以互相线性预测,则那两篇中必有一篇多余。这是三篇共同接受的裁决,本篇也不例外。
还有一条最省事的分辨法:《闲位》的对象是一件事,《合户》的对象是几件事,本篇的对象是一件事里被动用的那些东西。
《伏持》说的是过渡期在场、实际承担、两端名册都查不到的单位。它与老份的相似在于"没有条目",分别在于承担的时段:伏持只在过渡期承担,老份在每一次显露里都被动用。对照预测:问那样东西在两端名册上有没有位置。答"两端都没有",属伏持;答"名册上有它,只是没有它的年龄",属老份。
《骑缝》讲的是横跨一次变动两端、两侧都算得上的那一份东西。它与老份最容易混,因为两者都跨时间。分离线是硬的:骑缝跨的是一次改变的两侧,它的存在与年龄无关;老份跨的是量级,一样东西可以是骑缝而完全不老。对照预测:骑缝问"两侧都有没有",老份问"有多老"。
《暗替》说的是通道被暗中换过而读数不变。它与本篇的分别:暗替管的是同一个读数的来源被换掉,本篇管的是同一个读数所动用之物的年龄不被记。对照预测:暗替读的是来路是否更换,本篇读的是来路的年龄。
《移基》说的是基线在滚动,因而参照本身在动。它与本篇的关系值得说清:移基描述的是参照的漂移,本篇描述的是存量的年龄。一个基线不动的体系照样有老份。对照预测:把参照固定住,移基的问题消失,本篇的读数不变。
《合虚》说的是分段承接导致的可加性失效。它与本篇的分别在维度:合虚问的是分段之和对不对,本篇问的是被加的那些东西各是什么时候形成的。
《歇龄》说的是停下之后接不接得上、等待时间依赖。它与老份方向相反:歇龄读的是停了多久,老份读的是用的东西存了多久。对照预测:一个从不停歇的过程没有歇龄,但它照样有老份。
其一,单样本的场合。 见第十一节第二处反削。缺轮那件事表明,一个单位自身的记录不能自证完整;因而在只有一个个案可用时,动用年龄谱可以画,不可读。这一条排除掉的正是本文最想说的那些个案。
其二,动用范围圈法不唯一且两法结果相差过大的场合。 见第十一节第三处反削。此时读数作废,不许择优取一。
其三,本来就以存量为记录单位的场合。 资产负债表、库存台账、水库蓄水量——这些地方存量有条目。但要注意本文第十一节第四处兑现所说的:存量有条目,不等于存量的年龄有条目。 只有当年龄也有条目时,本文的机制才不成立。
其四,量级差不足十倍的场合。 判据二写死了这个下界。差得不够,那属于普通的因果链,本文的读数没有鉴别力。
其五,把这套读数用于给人或给地方打分。 见附录三。
本文面对的最朴素、最难反驳的一句是:
"不就是人喜欢往远处找原因吗?"
也就是说:把当下的不幸归到很久以前的东西上,是人的一般倾向——它让事情显得有来历、有分量、有安排,与账本记什么毫无关系。这句话与本文的全部现象描述相容,而且它有大量关于叙事与因果推理的支持。
必须把它排除掉,本文才算成立。
本文机制独有的变量是记录单位,而一般远因偏好预测不出它。两者可以这样分开:
若在记录单位不同的两类场合之间——一类以事件为单位、一类同时记录存量及其年龄——这类账外求问的密度没有差别,则本判断为伪。 届时应归因于一般的远因偏好,而不是归因于记录单位。
剂量的三档写死:(甲)记录同时包含存量项与其年龄;(乙)记录包含存量项而无年龄;(丙)记录只有事件项。 预测:从甲到丙,账外求问的密度单调上升,且在控制个体的远因偏好之后仍成立。乙这一档尤其要紧——它把"存量"与"存量的年龄"分开,而一般远因偏好预测不出这两档之间会有差别。
样本纪律:至少 6 个同质单元。可行的做法是在同一个行业内取记录制度不同的多家机构(例如设有资产台账年龄字段与不设的),或在同一个医疗系统内取是否建有长期队列的多个专科。
条款一(最便宜,已跑,见第九节)。 在一份逐行可查的公开记录上,若被动用之物的年龄中位不显著大于触发间隔,则本判断为伪。已跑:546.6 天对 31.6 天,六个样本的倍数为 127、13、79、17、10、15,无一例外;同时,预注册的"响应快"一条被判伪并已改写。
条款二(正向读数,轮次形态)。 本判断预测一个三轮结构:第一轮由事件账本先动(记下触发与结果);第二轮由账外的存量读数先动(有人给出一份关于积累的说法),因为近因回答不住"为什么是现在";第三轮起发起处换手——存量读数被提前到事件之前使用(择地、看宅、积德),而它仍然处理着很老的东西。若观察到发起处始终不换手——即在同一家庭连续三次同类结果中,存量读数每次都只在事后出现、从不前置——则本判断的第二段为伪。
条款三。 若在同时记录存量与其年龄的场合,账外的存量说法照样密集,则本文关于"记录单位"的判断为伪。届时问题不在记录,在需求侧。
条款四。 若把这套说法的核心词按语法形态分类,存量词不占压倒多数,则本文第一节的那个观察不成立,全篇的出发点要重建。这一条任何人拿一本通书就能数,成本近乎为零。
条款五。 若量级差 λ⁻¹ 在多数同类过程上小于 10 倍,则判据二的下界定错了,构念需要重设。
条款六。 若一次彻底重建之后,量级差随之显著下降并长期维持,则第十节场合五的推论为伪,本文关于"这一格不因重建而消失"的判断要撤回。
条款七(最愿意押、也最没跑成的一条)。 在事件记录完备程度不同的多组同质样本上,追问指向近旁的比例随记录完备程度上升而上升。本文没有跑这一条,因为公开数据里没有这样的同质样本。这是本文交出去的第一个洞。
若条款三成立——存量与年龄都记全了,账外说法照样密集——那么本文的机制解释就错了,而错得有价值:那将说明人们要的不是一份存量的账,而是一份可以据以行动的存量的账。资产负债表记了存量,可是没有人能靠它改运;而改一扇门是可以做的。届时这道题要转到"可操作性"上去,而本文第十一节第一处反削所担心的那种后果(记录被挪作准入条件)就变成了白白付出的代价。
赌注:到 2035 年 12 月 31 日为止,在下列四类文书的国家级或行业级强制标准中,不会出现"累积量及其形成年限"这一强制记录栏,并保留历史值:出院记录与死亡医学证明书;生产安全事故调查报告的编写规范;不动产登记簿的记载事项;企业年度报告中关于长期资产的强制披露项。
什么不算命中,写死四条:其一,只记金额或数量而不记形成年限的存量项不算——第十一节第四处兑现已说明,存量与存量的年龄是两件事。其二,科研队列、专项调查、试点监测不算,必须是常规文书的强制栏位。其三,"可选填""必要时注明"这类软性条款不算。其四,地方性规范、行业协会指南、单个机构的内部表格不算,须为国家级或行业级强制标准。
本文押"不会出现"。理由不是它不重要,而是第十一节第一处反削所说的那件事:这一栏一旦建立,它最先被使用的方式会使它偏离设立的目的。
假定有一天真有人采纳了本文,两条最省事的落地路径都会毁掉它要保住的东西。
第一条:把"累积负荷"做成一个可填的数。它会立刻变成一个评分项——用于核保、用于风险分级、用于资格审查、用于决定谁排在后面。需要它的人得不到它,不需要它的人拿它去筛人。 而且这个数天然是不可核的(它的圈法不唯一,见第十一节第三处反削),因而特别适合被填成想要的样子。
第二条:把 λ⁻¹ 拿去考核,把它高读成"历史包袱重"。那么最省事的达标办法是缩短统计窗口——只统计近三年形成的东西,λ⁻¹ 立刻下降,而实际被动用的仍是三十年前的东西。这个办法比任何实际改善都便宜。
我看不到出口。 一个读数进了考核,最省事的达标法总在口径上。本文能做的只有两件:把伦理四条写在附录三,并且不主张增设栏目——这是本文唯一能提供的防护,而它显然不够。
本文的判据要拿来问它自己。这里不问本文有没有局限,问一件可以算的事:本文这一次显露,动用了多老的东西?
可以直接算。本文的参考文献共 22 条,以成文之年为基准,它们的年龄中位数是 47 年,均值 42.6 年,最老的一条 101 年,最新的一条 1 年。年龄三年以上者占 95.5%,十年以上者占 90.9%,三十年以上者占 63.6%。
再看触发间隔。本文与本栏同题前一篇之间隔了不到一天。取一天作触发间隔,本文的量级差 λ⁻¹ 是四位数——远远超过第九节里那六个样本中的任何一个。
本文自己就是一次极端的老份动用:节奏以小时计,来源以半个世纪计。
照四条判据核对:被动用(这些文献确实被拿来用了,不是列在旁边)、量级差(四位数)、无条目(本文的记录——写作时刻、字数、交付文件名——全是事件项,没有一项是"本文动用之物的年龄")、不可由触发推出(知道本文是哪一天写的,推不出它动用了什么年代的东西)。四条全中。
这有三个对本文不利的后果:
后果一:本文这次显露的价值,主要不由这次显露决定。 若那 22 条里的大部分被抽掉,本文剩不下什么。这一点适用于绝大多数学术产出,而学术产出的记录制度——投稿日、录用日、发表日、引用计数——全部是事件项,没有一项记录"这篇文章动用了多老的东西"。本文第十一节第十一处兑现,在本文自己身上兑现了。
后果二:本文关于"重建会把老份清零"的那条推论,对本文自己不利。 若有人把本文全部推倒重写,短期内新写的东西会被反复修改,老份看上去被清零——而这正是第十节场合五描述的那种假象。本文没有办法把自己排除在这个假象之外。
后果三:这一节的计算本身也是事件项。 算出"47 年"这个数并不使它进入任何记录。它只是被写在这里,而写在这里不等于有条目。
最后要说清一句:本文并不因此作废。 第五节末尾已经写过,老份不是坏东西——任何有积累的东西都靠它。一次老份动用可以是空的,也可以是有分量的;使它可判的,不是它有多老,是它有没有留下让别人算的口径。本文留了三条:第九节那次可逐行复算的取数、第十五节那条限期到日的赌注、以及第十三节里那条"三篇的读数若可互相线性预测则必有一篇多余"的自撞条款。
读数一名称:老份比 符号:θ
定义:本次显露所动用之物中,形成时刻早于某一界限者所占的份额。界限须写明;本文用三年与十年两档。
读数二名称:量级差 符号:λ⁻¹
定义:λ⁻¹ =(被动用之物年龄的中位数)÷(触发间隔的中位数)。纯数。本文主读数。
粒度:一件"被动用之物"=被这次显露实际改变了状态的最小可指认单位。第九节里是一行代码。
边界例:一次房屋改造中,工人拆掉了一面三十年前砌的墙,同时把墙上一幅五年前挂的画取下又挂回原处。墙算被动用之物,画不算——画的状态没有被改变,它只是被移开又放回。若那幅画被换了位置并从此不再挂回,则它算。这个例子说明判据一"被动用"要按状态是否改变来判,不按是否被碰过来判。
编码规则(六条):
(1)"形成时刻"取最后一次成为现在这个样子的时刻,不取最初出现的时刻。此规则确定地低估年龄,方向保守,须在报告中写明。
(2)动用范围的圈法必须写明,且同一份材料至少用两种圈法各算一次;两次的 λ⁻¹ 相差超过一个数量级的,读数作废。
(3)触发间隔取"上一次碰这件事到这一次"的间隔,与被动用之物的年龄分开统计,不得混算。
(4)θ 的界限须与 λ⁻¹ 的口径同时报告,单独报 θ 无意义。
(5)单样本不得读数(见第十四节第一条);至少六个同类独立样本方可读。
(6)不可判的对象单列,不摊入任何一侧。
表头(可直接拿去做一张空表):个案编号|显露名称|显露时刻|被动用之物编号|名称|状态是否被改变|形成时刻|年龄(天)|上一次碰这件事的时刻|触发间隔(天)|圈法一|圈法二|两法差|年龄是否可得|不可得原因
不适用:单样本;圈法不唯一且两法差过大;已同时记录存量与其年龄的场合;量级差不足十倍。
三处口径一致性自查:正文第七节的定义 = 第十五节条款一至条款五所用的定义 = 第十五节赌注所指的"累积量及其形成年限"栏定义。阈值只出现在检验条款与判据二中,正文不另设阈值。✅
预注册在克隆任何仓库之前写定并存档,阈值与名单事后未动。样本为事前写定的 6 个公开仓库:psf/requests、pallets/flask、tqdm/tqdm、python-attrs/attrs、benoitc/gunicorn、urllib3/urllib3。取数规则见第 9.2 节,与预注册文本一致。
表三 真跑与自检的完整读数一览
读数
实测值
样本
6 个公开仓库 × 最近 150 个非合并提交
被改动行总数
4,777
行龄:中位 / P75 / P90 / P99 / 最大
547 / 2,050 / 3,035 / 5,268 / 5,847 天
年龄 ≥3 年 / ≥5 年 / ≥10 年占比
0.384 / 0.286 / 0.073
触发间隔跨仓中位
λ⁻¹ 逐仓值
127、13、79、17、10、15(无一低于 10)
老份比(年龄大于文件自身寿命一半者)
跨仓中位 0.564
提交对象字段
树、父提交、作者及时刻、提交者及时刻、签名、说明——无年龄项
本文自身参考文献年龄谱(第十六节)
22 条;中位 47 年;≥3 年 95.5%;≥10 年 90.9%;≥30 年 63.6%
口径变更记录:无。取数一次成功,6 个仓库全部克隆,无失败重试,无名单替换。唯一的改动发生在机制的表述上,且是被 H2 的判伪逼出来的:由"快响应配老来源"改为"两者不同量级";同时主读数由老份的绝对年龄改为量级差 λ⁻¹。改动的理由、原表述为何失效、以及它删掉了本文哪一句更强的话,写在第 9.5 节与第十节场合五,未作事后美化。
事后追加(明标,均不用于任何假设的判定):(1)剔除 gunicorn 的敏感性分析;(2)年龄的分位数与 5 年、10 年两档占比;(3)逐仓 λ⁻¹ 的列举;(4)提交对象字段的清点;(5)第十六节对本文自身参考文献年龄谱的计算。
复算方式:克隆上述 6 个仓库,按第 9.2 节的规则逐提交、逐文件、逐行回溯。全部数据公开、免登录、可逐行复算。
本文的产物包含两个可以被拿去给人或给地方打分的数(θ 与 λ⁻¹),以及一件可以被用来把当下困境归到久远来源上的工具。因此写死下面四条,缺一条本文不应被使用。
其一,这两个读数指的是记录制度,不是人,也不是地方。 θ 高不说明谁"包袱重",λ⁻¹ 大不说明哪个地方"根基坏"。它们说的是被动用之物的年龄结构与事件节奏之比,与任何人的品性、任何地方的好坏无关。把它们用于评价个人、家族、村落或地区,是误用。
其二,不得用它把当下的处境归给不可改变的过去。 这是本文最危险的一处。一个说"你今天的困难来自三十年前"的读数,极容易被用来论证"因此无须改变现在"。本文明确反对这种使用:老份说的是被动用之物的年龄,它对"现在该做什么"不给任何指示,也不为任何不作为提供理由。
其三,不得靠缩短统计窗口来改善读数。 第 15.6 节已说明这是最省事的达标法。凡报告 θ 与 λ⁻¹ 的,须同时报告统计窗口的起止与选取理由;窗口变更须单列并说明。
其四,禁止拿它去辨认或者干预谁的信仰实践。 本文描述的是记录制度的一个语法性质,不是一份用来找出"谁在搞迷信"的方法。把第六节的问话与附录一的表用于排查、登记、上报个人或家庭,是对本文最直接的滥用。
证据边界三句。 其一,那三句「只有我这条决定性」的说法,出自本文为制造顶撞而作的压缩,并非任何原作者的原意;可以核对的是所引的那些具体成果,压缩后的那三句则无从核对。其二,凡在公开数据库里按作者与题名查不到的东西,本文一律不引;卷期页码只写有把握的那些。其三,第九节与第十六节的全部数字来自可复算的公开取数,规则见附录一与附录二;除这两节之外,本文不提供数据。
Arthur, W. B. (1989). Competing technologies, increasing returns, and lock-in by historical events. The Economic Journal, 99(394), 116–131.
Bourdieu, P. (1977). Outline of a Theory of Practice (R. Nice, Trans.). Cambridge: Cambridge University Press.
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.
David, P. A. (1985). Clio and the economics of QWERTY. The American Economic Review, 75(2), 332–337.
Elder, G. H., Jr. (1974). Children of the Great Depression: Social Change in Life Experience. Chicago: University of Chicago Press.
Feuchtwang, S. D. R. (1974). An Anthropological Analysis of Chinese Geomancy. Vientiane: Vithagna.
Forrester, J. W. (1961). Industrial Dynamics. Cambridge, Mass.: MIT Press.
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.
Galtung, J. (1969). Violence, peace, and peace research. Journal of Peace Research, 6(3), 167–191.
Graeber, D. (2011). Debt: The First 5,000 Years. Brooklyn: Melville House.
Halbwachs, M. (1925). Les cadres sociaux de la mémoire. Paris: Félix Alcan.
Hong, Z. (2025). Randomization, Ritual, and Cultural Evolution: Revisiting Omar Khayyam Moore's "Divination: A New Perspective". Nature & Anthropology.
Kirchner, J. W. (2003). A double paradox in catchment hydrology and geochemistry. Hydrological Processes, 17(4), 871–874.
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.
Merton, R. K. (1968). The Matthew effect in science. Science, 159(3810), 56–63.
Nixon, R. (2011). Slow Violence and the Environmentalism of the Poor. Cambridge, Mass.: Harvard University Press.
Rothman, K. J. (1981). Induction and latent periods. American Journal of Epidemiology, 114(2), 253–259.
Sklash, M. G., & Farvolden, R. N. (1979). The role of groundwater in storm runoff. Journal of Hydrology, 43(1–4), 45–65.
Yoon, H.-K. (2018). P'ungsu: A Study of Geomancy in Korea. Albany: SUNY Press.
字数与分工
正文连同三个附录约 2.2 万汉字。题面、三门取材的要求与全部判断上的取舍由作者决定;查文献、取数据、做统计与打初稿,则由语言模型协助。第九节与第十六节的数字出自可复算的公开取数,预注册在克隆与统计之前写定并存档;预注册的六条里有一条被判伪,机制表述与主读数因此改写,改写过程写在正文而非附录。本文不为自己评分。