← 没有那一栏 德麦国际专著第 99 号 · 高鹏
一句话发出之后,还有多久它的撤除不留痕
收得回的那一段 一句话发出之后,还有多久它的撤除不留痕——论言论自由的分界不在”能不能说” 摘要 关于言论自由,通行的问法是”什么话可以说、什么话不可以说”。本章认为这个问法遗漏了一件在公共记录时代更要紧的事:一句已经发出的话,在其后的一段时间里,它的撤除本身在公共记录中不留下任何可判读的痕迹;过了这段时间,撤除仍然可能,但撤除这件事会被记下来。本章把前一段时间称为隐撤期,把落在这一段里被取消的表达称为隐撤物,并主张:言论自由的实际边界不在表达的可发生性、不在表达的可容忍性、也不在表达的可存续性,而在隐撤期的长度以及这段时间由谁掌握。本章用一份三段序列取代通常的二分格,用一份公开数据的清点取代纸面论证:对 npm 与 PyPI 两个公共记录体系各三十个软件包共一万八千余个在册版本做逐条清点,得到三档撤除痕迹——留档撤回、名在而物无、以及序列缺号;其中最后一档在原理上无法与”从未发生”分辨。清点结果同时推翻了本章最初的两处主张,修订已写入正文。本章提出的检验问话不含任何程度词:这句话发出之后,在多长时间内撤掉它,公开记录里不会出现”这里曾经有过一句话”?结论是:一个体系可以在不禁止任何一句话的前提下,通过把隐撤期收到零,或通过把它放到无穷长而不设任何字段,同样有效地改变人们说什么。 关键词 隐撤 隐撤期 撤除痕迹 公共记录 表达自由 The Silent-Withdrawal Interval Free speech bounded not by what may be said, but by how long it can be unsaid without trace Abstract The standard question about free speech asks what may and may not be said. This paper argues that the question omits something that matters more under conditions of public recording: for some interval after an utterance is made, its withdrawal leaves no readable trace in the public record; after that interval, withdrawal remains possible but the act of withdrawing is itself recorded. This paper names the former the silent-withdrawal interval and the utterances removed within it silently-withdrawn items, and argues that the operative boundary of free speech lies neither in whether an utterance can occur, nor in whether it is tolerated, nor in whether it persists, but in the length of the silent-withdrawal interval and in who controls it. In place of the usual two-by-two, the paper offers a three-stage sequence; in place of paper argument, an audit of public data: across thirty packages each on npm and PyPI, comprising over eighteen thousand listed versions, withdrawal leaves three distinct grades of trace—flagged yank, name-without-object, and sequence gap—of which the last is in principle indistinguishable from never-having-occurred. The audit refuted two of the paper’s own initial claims; the revisions are recorded in the text. The paper’s diagnostic question contains no modal terms: after this was said, for how long can it be removed without the public record showing that something was once here? Keywords silent withdrawal; withdrawal interval; trace of removal; public record; freedom of expression
二〇二二年一月,一个名叫 colors 的软件包发布了一个新版本。这个包本身平淡无奇,作用是让程序在终端里输出彩色文字,全世界大约有几百万个项目在用它。新版本发布之后,所有使用它的程序开始在屏幕上无限打印乱码。作者是故意的。他在自己的项目页面上写下了一段话,大意是他不再愿意无偿为大公司维护代码。这是一次表达,它的载体不是文章也不是演讲,是一个版本号。 同年三月,另一个名叫 node-ipc 的包发布了几个新版本,其中一个会检查运行它的机器的网络位置,如果落在特定的两个国家,就把用户桌面上的文件覆盖成一个心形符号。作者随后公开说明了他的政治立场。这同样是一次表达,同样以版本号为载体。 这两件事在当时都引起了很大的争论,争论的内容是熟悉的:这算不算表达,这样的表达该不该被容忍,平台该不该介入。但有一件事当时几乎没有人讨论,而它在四年之后仍然可以被清点出来——那几个版本现在怎么样了。 本章写作时做了一次清点。在 npm 的公开接口上,colors 这个包列出了二十六个可以取到的版本,而它的时间表里有二十九个版本号带着发布时间戳。也就是说,有三个版本号,系统记得它们在某年某月某日被发布过,但你已经取不到它们的内容。node-ipc 的这个数字是七十五对八十二,差七个。它们不是被删干净了,它们留下了一样东西:一个时间戳。 时间戳是一件很小的东西。它不告诉你那个版本里有什么,不告诉你谁删的,也不告诉你为什么。但它告诉你一件在别处常常得不到的事:这里曾经有过一样东西。 第三件小事发生在另一个体系里。美国国会的议事记录被称为”实质上逐字的记录”,只作技术性、语法性与排印性的更正。但议员在发言之后,通常可以在若干个立法日之内请求”修订并扩充”自己的发言,这项请求以全体一致同意的方式给出,是每天议事的常规动作。也就是说,一段已经说出口的话,在此后的几天里仍然处于可改的状态,而改动之后印出来的那一份就是正式记录。 这个体系后来做了一件事,值得注意。参议院用一个特定的符号标记那些并未在议场上说出、而是被插入进来的发言;众议院则把插入而非说出的文字排成另一种字体。也就是说,这个体系在某个时点上决定:修改可以继续,但修改要开始留痕。 三件小事,三个不同的世界:一个包管理器、另一个包管理器、一国的议事记录。它们的共同之处不在于”什么话可以说”,而在于另一件几乎从未被单独命名的事——一句话说出之后,还有多久,它的收回不会被人看见。
要问”言论自由是什么”,眼下有三种成熟的答法,它们各自都很有力,而且各自都有一整套判据。为避免把它们写成稻草人,下面尽量用它们自己的说法。 第一种答法看结果。 它主张:要知道一个地方的言论是否自由,去看实际被说出来、被记录下来的那一份。有多少种意见出现在公共记录里,出现的比例如何,有没有整类整类的意见完全不出现。这一答法有一个很硬的方法学传统作后盾。天文学在一百年前就系统地处理过一个几乎同构的问题:当你只能观测到亮度超过某个限的天体时,你手上的样本不是”真实分布少了一些”,而是系统性地不是那个分布。爱丁顿在一九一四年、马尔姆奎斯特在一九二〇与一九二二年分别给出了改正式:在流量受限的样本里,任一距离处随机散入样本的暗天体,总多于散出的亮天体,因此该处的平均绝对星等系统性地偏亮。这一整套工作的立足点是:只要选择函数已知,真实分布可以反推。 目录不完备不是本体问题,是仪器问题,而仪器问题可以校正。 第二种答法看路径。 它主张:要知道一句话是否自由,去看它是经由哪条工序被留下来的——谁先看到、谁先决定、哪一步可以卡住它。这一答法在铸造这门古老的工艺里有一个精确的对应物。一块铸件的缺陷落在哪里,通常不由金属本身决定,而由凝固的次序决定。契沃里诺夫在一九四〇年给出的规则把凝固时间与体积和表面积之比联系起来,此后整个补缩系统的设计都建立在一件事上:热节收缩的时候,如果邻近的薄壁先凝固并在颈部搭桥,补缩的通道就被卡断,缩孔便落在被隔断的那一处。教科书上有一个著名的例子:一只保龄球瓶形状的铸件,正着浇有缩孔,倒过来浇就没有——同一副模、同一炉金属,只改了凝固推进的方向。这一答法的立足点是:缺陷是次序的产物,不是材料的属性;而且缺陷最危险的时候恰恰是它不在表面的时候。 无损检测这一整个行业存在的理由,就是不能从表面推断内部。 第三种答法看条件。 它主张:一句话是否成立,取决于它所处的条件场是否兑现——听众在不在、场合对不对、这个人有没有说这句话的位置。这一答法在植物生理学里有一个漂亮的模型。许多冬性作物不经过一段足够长的低温就不开花,这段低温积累被称为春化。加斯纳在一九一八年给出了最早的系统描述,舒阿尔在一九六〇年的综述把它整理成一门学问。这一答法的立足点是:开花不是植物的内在属性,是条件兑现之后才成立的事;撤掉低温,同一株永不开花。 三种答法各有硬证据,也各有一整套内部分歧——天文学里对偏差的分类与改正方法至少有三派并存;铸造里”顺序凝固”与”同时凝固”两条补缩原则长期对立;植物生理学里关于低温如何被”计数”的机制模型也不止一种。它们不是三种含糊的印象,是三套成熟的判据体系。 现在把一件具体的事摆到它们面前,看它们各自怎么判。 这件事是:某人在家里对配偶说了一句反对某项政策的话。没有第二个听众,没有留下任何记录,此后他也没有再说过。 第一种答法说:这不算入目录,但它照样在。它落在探测限之下,属于选择效应;不完备是记录方的问题,是可校正的偏差。目录之外的存在不受目录影响。 第二种答法说:这算,而且正是要害。缺陷的定义位置恰在看不见的地方——补缩通道被隔断的那一块从表面看不出来,那恰恰是它危险的原因。要看它,必须另开一条通道,不能从表面推断。 第三种答法说:这不算,而且不是”未测到”。条件场没有兑现,这件事根本不构成一个事件——不是它在而我们没看见,是它不在。 三个判断互不相容,而且不能靠”判谁对”化解。表面上前两家都说”在”,但第一家把”看不见”当作待校正的噪声,第二家把”看不见”当作缺陷的本质属性;一个是噪声,一个是本质,两者不能同真。第三家则直接取消了那个”在”。 更要紧的是,三家在另一件事上出奇地一致,而这件事它们谁也没有说出口。
把三家的判断并排放,会看到它们争的是同一件事:阈之下的那一份,该算在哪一栏。 第一家说算在”待校正”栏,第二家说算在”要害”栏,第三家说算在”不存在”栏。三家为此可以吵很久,而它们吵得起来,正是因为它们共享一个前提: 缺席的背后有一个”本来的那一份”,当下读到的东西是它的一次不完全呈现。 第一家有一个真实的光度函数在背后,改正式就是往那个函数上靠;第二家有一个理想的凝固过程在背后,工艺设计就是往那个过程上靠;第三家有一份完整的春化需求在背后,栽培管理就是往那份需求上靠。三家都在做同一件事——用手上不完整的读数去逼近一个假定存在的完整原状态。 把这句话念给三家听,三家都会说:这还用说吗。 这就是它是共有前提的标志。会引起争论的东西不是共有前提,是第四种立场。 而这个前提一旦被摆出来,就会发现它在言论这件事上有一个非常具体的后果。如果缺席背后总有一个”本来的那一份”,那么一切关于言论自由的清点就都是有意义的:没说出来的话是被压住的话,被删掉的帖子是曾经存在的帖子,我们只要想办法把清点做得更全,就能更接近真相。整个关于言论环境的量化研究,几乎都建立在这个前提上。 它是对的吗?
推翻它的材料不需要从外面找。它就在第三家自己手里,而且是一条被引用了将近八十年的常识。 一九四五年,珀维斯与格雷戈里在《自然》上报告:已经获得的春化状态,可以被高温取消。他们把这个现象称为去春化。三年之后,格雷戈里与珀维斯在同一份刊物上报告了一件更要紧的事:冬黑麦春化六周之后,给它三天三十五摄氏度的处理,开花会被推迟,即春化状态被部分逆转;而春化十二周之后,同样的高温处理完全不再起作用,状态已经稳定。他们由此得出的结论是:低温处理的时间越长,已获得的状态越难逆转,最终完全不可逆。 七十年后,分子层面的工作复核了同一件事,而且给出了一个更精确的细节。二〇一五年布歇、德特里与佩里约报告:春化结束后直接给一周三十摄氏度,会使控制开花的那个基因位点上的抑制性表观标记减少、该基因重新活跃;但如果先给两周二十摄氏度的”稳定期”,同样的高温处理毫无效果。 把这三件事叠起来,得到的东西非常锋利: 第一,抹除是可能的。 一段已经完成的积累,可以被后来的条件取消。 第二,抹除之后不留读数。 一株被去春化的植物回到了未春化状态。没有任何测量能把”从未经历过低温”与”经历过而被抹掉”分开。它不是变得难测,是在这套读数里根本不存在这个区分。 第三,也是最要紧的一条——抹得掉抹不掉,取决于抹之前那段谁也没在记录的时期。 六周与十二周之间的差别,不在于外观,不在于任何当下可测的量,而在于那株植物在被高温处理之前经历了多长的一段安静时间。而在整个栽培实践里,这段时间是不被单独记录的:农艺记录记的是播期、低温处理时长、开花期,没有一栏叫”距离不可逆还有多久”。 这一条材料在植物生理学里回答的是另一个问题。它回答的是”花期怎么调控”“春化记忆怎么维持”。没有人把它拿来当作关于”缺席背后有没有一个原状态”的证据。但它恰恰是。 因为它说的正是:没有那个可供回溯的”本来的那一份”。 被抹掉的那一份不是”记录得少”,它在这套账目里压根不算一样东西;而它能不能被抹掉,由一段没有任何账目在记的时间决定。 三家的共有前提在这里断了。
把上面这条材料搬回言论这件事上,会立刻看到一个从来没有被单独命名的东西。 一句话被说出来,进入某个记录体系。此后有一段时间,在这段时间里把它撤掉,公共记录中不会留下任何可判读的痕迹——不是痕迹很淡,是没有字段。过了这段时间,撤除仍然可能,但撤除本身会被记下来:一个”已编辑”的标记,一个”此版本已撤回”的标签,一处不同的字体,一个仍然留着的时间戳。 本章把前一段时间称为隐撤期,记作 τ;把落在这段时间里被取消的表达称为隐撤物。 需要立刻分清三件容易混起来的事。 隐撤不是不能说。 一个体系可以完全不禁止任何一句话,而把 τ 设得非常长。在那样的体系里,人们照样开口,只是他们说过的话随时可以在无人知晓的情况下消失——包括他们自己也无法证明自己说过。 隐撤不是被删。 删除是一个动作,隐撤说的是这个动作留不留痕。一份被公开撤回、加了水印、原文照旧可读的撤稿论文,删除的程度远大于一条被悄悄改掉一个字的记录,但前者的 τ 是零,后者不是。 隐撤不是遗忘。 遗忘发生在人的一侧,隐撤发生在记录的一侧。一个人可以清楚地记得自己说过什么,而记录里查不到;也可以谁都不记得,而记录一笔不落。 关键在于最后这一层。隐撤物在现行的各种账目上都不设字段。 一个平台可以报告它删了多少内容,那是它自己的统计;但对于任何一个外部的人,一份被无痕撤除的表达在记录中留下的东西,和”从未发生过”完全一样。这不是记录得少,是它不算一样东西。 把它写成一句可以拿去检验的判断: 言论自由不是”能不能说”,不是”说了会不会被处理”,也不是”说的东西留不留得下”,而是一句已经发出的话在多长时间内它的撤除不留痕——即隐撤期的长度,以及这段时间由谁掌握。 三个被否掉的选项,分别对应第二节那三种答法所用的划界标准:第一种数的是留下来的那一份有多丰盈,第二种看的是成形的通道有没有被卡断,第三种问的是说话的条件齐没齐。三者都可以在 τ 完全不变的情况下改善或恶化,因此三者都不是分界。 而 τ 有一个三家都没有的性质:它同时管住了说与不说。 一个 τ 很长的体系,说话的成本低(反正收得回),而说过的话不构成任何东西(反正查不到);一个 τ 为零的体系,说话的成本高(一字不改地跟你一辈子),而说过的话是硬的。这两种体系可以在”什么话不许说”这一栏上完全相同。
通常这种地方会给一张二维的格子。本章不给。因为 τ 本身是一段时间,把时间切成格会丢掉它最要紧的性质——它是有次序的,而且次序不可逆。 一次表达从发出到固定,经过三段: 三段之间有两个转变点。第一个转变点是 τ 的终点:过了它,撤除开始留痕。第二个转变点区分”留痕而无内容”与”留痕且有内容”,本章称之为固存点。 这张表要连着两条纪律读,否则会被误用。 第一条:段的划分是就一个具体的记录体系而言的,不是就一句话而言的。 同一句话可以同时存在于多个记录体系里,各自的 τ 不同。一条在内部聊天软件里被撤回的消息,在那个体系里进入了第二段,而在收信人的截图里可能已经进入第三段。本章的读数因此永远要带上”在哪个体系里”这个限定。这一条后面还会回来,因为它是本章最脆弱的地方。 第二条:第一段的长度不能靠清点第一段本身来估计。 这是本章从天文学那一侧借来的约束,而且是一条真的约束,不是修辞。当选择函数依赖于被测量本身时,反演在原理上失败。落在第一段里的东西,其定义就是”在这个体系里与从未发生不可分辨”,因此任何试图直接清点隐撤物的努力都必然只能数到第二段和第三段。τ 只能从两侧夹估:从制度规则给出的上界,和从第二段的最早留痕给出的下界。 这一条听上去像是本章的弱点,实际上是本章最有用的一段。因为它立刻给出了一个可以拿去问任何一个记录体系的问题,而这个问题不需要任何程度词。 六之二 这段时间由谁掌握 上一节只说了隐撤期有多长。承重命题里还有半句同样要紧:这段时间由谁掌握。 同一个长度的隐撤期,握在不同的人手里,是两种完全不同的制度。这一点在现行的讨论里几乎完全没有位置,因为通行的问法只区分”删了没有”,不区分”谁有权无痕地删”。 第一种:由表达者本人掌握。 议员在发言之后的若干个立法日内请求修订并扩充自己的发言,这是一项授予表达者的权利。软件包的维护者可以撤下自己发布的版本,也是同一类。这一类的实质是反悔权——我说过的话,在一段时间内还归我处置。 第二种:由记录体系的运营方掌握。 平台可以移除他人的内容,而移除留不留痕、留多少痕,由平台自己决定。这一类的实质是抹除权——你说过的话,在一段时间内归我处置。 第三种:不由任何一方掌握。 一条被转引、被截图、被写进他人依赖清单的表达,其痕迹落在了与撤除者无关的第三方手里。这一类没有实质权利,只有事实:痕迹被别人替你留下了。 三者的差别可以写成一张三格表,逐个体系去填,填法机械: 这张表读下来会发现一件事:在多数体系里,第二列比第一列更宽。 也就是说,运营方对他人表达的无痕撤除能力,普遍大于表达者对自己表达的无痕撤除能力。这个不对称从来没有被单独讨论过,因为讨论”删除”时人们只关心内容该不该被删,不关心删这件事本身归谁记账。 不对称的实际后果有两个,都可查。 其一,它决定了争议的形态。 第一列宽的体系,争议多半是”他改口了”;第二列宽的体系,争议多半是”我说过的话不见了而我无法证明”。前一种争议有材料可吵,后一种争议在原理上吵不起来——因为主张自己说过的那个人,拿不出任何东西。 其二,它决定了第三列的重要性。 当第一列窄而第二列宽时,表达者唯一的保护来自第三列——来自那些替他留下痕迹的、与他无关的第三方。这解释了一个常被误读的现象:人们习惯性地截图、转存、备份自己已经公开发表的东西。通行的解释是”担心被删”。按本章的框架,更准确的说法是:他们在自己制造第三列,因为第一列不归他们。 由此得到本章对这一层的判断:一个体系关于言论的实际安排,可以由这张表读出来,而这张表的填写不需要任何关于内容的判断。两个在”什么话不许说”上完全相同的体系,可以在这张表上完全不同;而它们的表达实况会因此完全不同。
本章的检验问话是这一句: 这句话发出之后,在多长时间内撤掉它,公开记录里不会出现”这里曾经有过一句话”? 这句话里没有”应当”,没有”充分”,没有”真正”,没有”实质性”。它不是拿去问人的判断,是拿去问文件的——问平台的接口文档,问档案的保管期限表,问议事规则,问日志的字段定义。它的答案是一个时长,或者一个”不适用”。 这一点很要紧。关于言论环境的讨论长期困在一类问题上:“这样的限制是否合理”“这个平台是否真正开放”“这种氛围是否健康”。这些问题的答案取决于回答者的立场,因此它们永远不会收敛。而上面那一句的答案不取决于立场:五个立法日就是五个立法日,时间戳留着就是留着。两个立场完全相反的人,在同一个体系上问这句话,会得到同一个答案。 下面把它在六个场景里各跑一遍。要求是六个答案互不相同,且其中至少有两个不能从本章的判断直接推出来——它们是查出来的,不是想出来的。
场景一:一次没有记录的私下交谈。 τ 是无穷。任何时候否认都不留痕,因为根本没有承载痕迹的东西。注意这不是”最自由”,它同时意味着任何人都无法证明自己说过什么。这一档在本章的框架里不是好也不是坏,它是分界的一端。 场景二:npm 上的一个软件包版本。 τ 接近零。作者可以在发布后的一段时间内撤下一个版本,但撤下之后,这个包的时间表里仍然留着这个版本号和它的发布时间——内容取不到,时间戳还在。本章清点的三十个包里,有十九个包出现了这种”有时间戳而取不到内容”的版本。这一条是查出来的,而且它推翻了本章最初的一个想法:动手之前,本章预期数字平台是隐撤期最长的地方——删得快、删得干净、没人知道。实际上恰恰相反,这类平台里 τ 常常是零,因为它们出于技术原因必须保留一份不可变的时间表。技术上的不可变,无意中做成了一份留痕机制。 场景三:PyPI 上的一个软件包版本。 τ 是无穷。一个版本被删除之后,公开接口里它彻底不在了;唯一的残迹是版本序列里的一个断口,而断口不能与”跳号”分辨——一个项目完全可以从 1.4.0 直接发到 1.4.2 而中间什么都没有过。本章清点的三十个包里,修正掉一种技术性误判之后仍有十一个包存在这类断口,共五十一处。每一处都无法判断它是不是一次撤除。 这也是查出来的,而它构成了第一段最干净的一个实例。 场景四:美国国会的议事记录。 τ 是若干个立法日,通常是五个。议员在发言之后可以请求”修订并扩充”自己的发言,这项请求是每天议事的常规动作,通过全体一致同意给出。也就是说,一段已经说出口的话,在此后几天里仍处于可改状态,而定稿印出来的那一份就是正式记录。这一条是查出来的,而且它同样修订了本章:本章最初以为 τ 是一个技术参数,是记录系统的属性。国会记录说明它可以是一条议事规则,由说话的人自己申请,并由全体默许——τ 可以被公开地授予。 场景五:同一个国会记录体系的另一层。 τ 在某个时点上被制度性地缩短了。参议院用一个专门的符号标记那些并未在议场上说出、而是被插入进来的发言;众议院把插入而非说出的文字排成另一种字体。这是一次明确的改革:修改照旧允许,但修改开始留痕。这一档的意思是——同一个体系里,第一段与第二段的边界是可以被移动的,而移动它不需要禁止任何一句话。 场景六:一篇已经出版的学术论文。 τ 是零,而且第二个转变点也被写死了。按通行的出版伦理指南,撤稿必须保留原文,加盖撤稿标记,说明理由。也就是说,这个体系不但不允许无痕撤除,连”留痕而无内容”这一档也不允许——它直接跳到第三段。 六个答案:无穷、接近零、无穷、五个立法日、被制度缩短、零且直接进入第三段。互不相同。其中第二、三、四三个是查出来的,而且第二和第四各自反过来改了本章的一处主张。 这里要停一下,说清一件事。上面第二、三两个场景的数字不是引来的,是本章自己跑出来的,跑法与结果都放在下一节。这样做不是为了显得严谨,是因为本章最初的两条主张里有一条在跑完之后不成立了,而如果不跑,它会以一个很顺的样子留在正文里。
选它们有三个理由,没有一个是”因为它们重要”。 第一,它们的记录完全公开,任何人可以用一个不需要账号的接口把本章跑过的数据重跑一遍。第二,它们承载的确实是表达——软件包的版本是一种被广泛使用的公共发言形式,本章开头那两个例子就是明证。第三,也是最要紧的:这两个体系在功能上几乎完全相同,而在撤除留不留痕这件事上做了相反的选择。 这构成了一组同质对照,而不是拿两个国家来比。
统计之前,本章先把假设、变量和判定阈值写死存档,此后不再改动。摘要如下: 假设:两个功能相同的公共记录体系,对”一次已发布的表达被撤除”给出的痕迹不同——一个保留”它曾经在过”的证据,另一个不保留;而不保留的那一个,其撤除在记录里与”从未发布”不可分辨。 读数:npm 侧,取每个包的时间表键集合 T(去掉 created 与 modified)与可取回版本集合 V,令 d = |T V|,即”有时间戳而取不到内容”的版本数。PyPI 侧,取三档:撤回而留档的版本数、版本号在册而文件全无的版本数、以及版本序列中的缺号数。 判定阈值:其一,若 npm 侧 d 恒为零,假设的前半为伪;其二,若 PyPI 侧能从公开接口区分”被删除”与”从未发布”,假设的后半为伪;其三,若 d 大于零的包不足百分之五,则该现象罕见,本章须缩窄适用范围。 粒度:一个版本号计作一次表达。样本:两平台各三十个常用包,包名在脚本里写死,跑完不许更换。 还有一条事先就该说清的:本章原本打算跑的不是这一条。原计划是清点某个代码托管平台上被编辑过的评论,读数是”编辑发生的时间分布”。这一条在实际执行时跑不动——未经认证的接口访问额度由出口地址共享,本章运行时该额度已被耗尽。按本章自己的纪律,跑不动就如实记下跑不动,并说明原因,而不是换一个数字填上去。这一条留待有认证访问权的人补跑,本章在第十六节把它列为可以让本章翻车的观测之一。
npm 侧。 三十个包,共一万二千一百零二个可取回的版本。其中十九个包(百分之六十三点三)存在”有时间戳而取不到内容”的版本,这类版本共九十个。分布极不均匀:express 一个包就占了三十个,都是早期的测试版与候选版;glob 有十六个,是整段的 1.0.x;babel-core 与 node-ipc 各七个;bower 六个;webpack 四个;moment、typescript、colors 各三个;axios 两个;vue 与 chalk 各一个。 三个名字值得单独说。colors 的三个、node-ipc 的七个,正是本章开头那两次表达的下场。chalk 的那一个是 5.6.1,二〇二五年那次针对软件供应链的攻击留下的。这三处的共同点是:它们都是公共事件,当时有大量报道,而四年之后在这个体系里能查到的,只是一个时间戳。 不是没有痕迹,是痕迹里没有内容。 PyPI 侧。 三十个包,共六千一百八十八个在册版本。三档分别是: 撤回而留档(版本仍在、文件仍在、带撤回标记):四十一个,出现在十九个包里。requests 的 2.32.0 与 2.32.1、numpy 的 2.4.0、django 的 4.2.12 与 5.0.5、setuptools 的十个,都属这一档。 版本号在册而文件全无:七十五个,出现在十二个包里。matplotlib 一个包就有二十八个,numpy 十四个,django 七个。这一档等价于 npm 的”有时间戳而无内容”——名字在,东西不在。 版本序列缺号:修正后共五十一处,出现在十一个包里。celery 二十四处最多,setuptools、matplotlib、tqdm 各五处。 第三档是本章要的那一档,而它的性质是:不可判定。 一个缺号可能是一次删除,也可能是这个项目当初就跳过了那个号。公开接口里没有任何字段能把两者分开。本章尝试过几种间接办法——查同期的发布公告、查依赖它的包的锁文件——都只能覆盖极少数情形,而且覆盖到的那些恰恰是留下了别的痕迹的那些,正是第二段而不是第一段。
三条阈值逐条回填: 其一,npm 侧 d 恒为零?否,共九十个。假设前半未被证伪。 其二,PyPI 侧能区分被删除与从未发布?否。假设后半未被证伪。 其三,d 大于零的包占比不足百分之五?否,是百分之六十三点三。不缩窄适用范围。
这一节写的是不利结果,以及它们各自改了本章的什么。放在这里不是为了显得诚实,是因为这三处修订改变了本章的概念本身,不写清楚,后面的划界就没有意义。 修订一:不是”越数字化越无痕”,而是相反。 本章最初的想法是:越是新的、自动化的记录体系,撤除越干净,隐撤期越长。清点结果把这条推翻了。npm 与 PyPI 都是彻底自动化的体系,而 npm 的 τ 接近零——不是因为它有意保护记录,是因为它的时间表出于依赖解析的技术需要必须保持只增不减。留痕在这里是一个副产品,不是一项政策。 反过来,PyPI 的无痕也不是一项政策,它同样是技术选择的副产品。 这一处修订的后果不小:本章因此不能主张”τ 由制度意图决定”。τ 常常由技术副产品决定,而技术副产品不受任何关于言论的规范约束。 这句话比本章原来那句更弱,也更难反驳。 修订二:按包看普遍,按次数看罕见——读数因此不能是比率。 九十个”有时间戳而无内容”的版本,落在一万二千一百零二个在册版本里,占百分之零点七四。而按包算,六成三的包有。这两个数字都对,指向的却是不同的东西:隐撤是一个低频而结构性的事件,不是一个高频现象。 这一条直接改了本章的读数形式。本章原本打算给一个比率——“隐撤物占全部表达的比例”。清点之后这个想法必须放弃:分母永远取不到(第一段的定义就是不可清点),而分子在版本层面小到没有统计意义。本章因此把读数改为两样东西:一个时长(τ),和一份清单(可判定的那两段里的隐撤物名录)。 时长可以两侧夹估,清单可以逐条核。比率不行。 这一处修订也说明了为什么本章用三段序列而不用格子:格子要填比例,序列只要定次序。 修订三:一处代理变量的误判,把一半的读数吃掉了。 版本序列缺号这个读数,第一次跑出来是一百零一处。检查之后发现其中五十处来自同一个包 certifi,而这个包用日期作版本号(形如 2022.5.18)。日期的”日”当然不连续,本章的解析把每一个没用到的日子都算成了一处缺号。排除掉日期式版本号之后,缺号数从一百零一降到五十一。 这一处不影响结论的方向,但它值得留在正文里,因为它示范了本章全部读数的一个共同弱点:τ 与隐撤清单都依赖于”什么算一个版本位”这类编码判断,而这类判断在不同体系里不通用。 本章在附录里给出了完整的清点手册,包括定义、粒度、边界例子和编码规则;凡是引用本章这两个读数的,必须连编码规则一起引,否则得到的数不可比。
上一节是数据对本章的削减,这一节是三个领域各自的判据对本章的削减。三处都是本章原本打算主张而现在不再主张的东西。 第一处,来自铸造:本章放弃”隐撤期越短越好”。 本章最初的价值排序很自然:无痕撤除是坏的,因此 τ 越短越好,最好为零。铸造学的两条补缩原则把这个排序毁掉了。 顺序凝固原则的做法,是让整个铸件从远端向冒口逐步凝固,把所有的收缩缺陷都赶到冒口里去,最后切掉冒口即得健全件。同时凝固原则的做法相反,让各部分尽量同时凝固,缺陷分散成微小的缩松。两条原则长期并存而对立,原因很实在:顺序凝固得到的是致密件,但代价是巨大的温度梯度,因而残余应力大、变形大、开裂风险高;同时凝固残余应力小,但内部有分散的疏松。 把这条搬到言论上:把 τ 收到零,等于要求所有的撤除都在一处显形。这确实让记录变得致密,但它同时在”撤除”这个动作上制造出一个巨大的应力集中点。人会绕开应力点,而绕法是现成的:不撤,改口;不删,续发一条把前一条的意思盖过去;不修改记录,修改对记录的引用。这些绕法在任何以 τ 为指标的考核里都表现为改善。 因此本章的适用范围必须缩窄。本章不主张”τ 越短越好”,只主张”τ 的长度与它由谁掌握,是这个体系关于言论的实际安排,而通常没有人在管它”。适用范围从”一切表达环境”缩到”已经决定要保留公共记录的体系”——在不保留记录的地方,本章整套读数不适用,而且不是”暂时测不了”,是无对象。 第二处,来自春化:本章放弃”τ 是一个可由规则设定的常数”。 去春化那条材料里最狠的不是”可以被抹掉”,是”抹得掉抹不掉取决于抹之前那段没人在记的时间”。六周与十二周之间的差别不在外观,不在任何当下可测的量。 搬到言论上:τ 不是一个由规则写死的常数,它是路径依赖的。同一条平台规则下,一条被大量转引的发言与一条无人理会的发言,实际的 τ 完全不同——前者在被转引的那一刻起就已经进入了第二段甚至第三段,尽管平台规则一个字没变。规则设定的只是 τ 的上界;实际值由一段没有任何账目在记的时间决定,即这条发言在被撤除之前经历了什么。 本章原本会写”τ 可由平台规则设定,因此可以被政策改变”。现在只能写”τ 的上界可由规则设定,实际值不可由规则设定”。这一削减动了本章最想主张的那一句。 第三处,来自天文观测:本章放弃”隐撤物可以被估计”。 选择效应有一整套改正式,条件是选择函数已知。而当选择函数依赖于被测量本身时,反演在原理上失败——这是那门学问自己承认的失效区。 隐撤恰好落在这个失效区里。一份表达是否落进第一段,取决于它是否被转引、是否被截图、是否触发了别的记录——而这些恰恰与它的内容和影响力相关。也就是说,选择函数依赖于被测量本身,而且依赖的方向是固定的:越是重要的表达,越不容易被无痕撤除。 因此对隐撤物的任何直接估计,都会系统性地低估那些不重要的、无人转引的表达,而那一类恰恰是数量最大的一类。 本章因此不给任何关于”有多少表达被无痕撤除”的估计,一个也不给。本章能给的只有 τ 的两侧夹估和第二、三段的清单。这一条削掉了本章原本最有传播力的那种说法——一个数字。
一个概念如果只能在提出它的那个场合里用,它就只是一个说法。下面十二处不是类比,每一处都要求:在那个领域里能据此预测一件具体的事。 一、版本管理系统。 一次强制覆盖推送之后,被覆盖的提交在垃圾回收执行之前仍然可以按哈希取到,之后不可达且不留记录。预测:任何以”历史不可变”为卖点的系统,其真实 τ 等于垃圾回收周期,而不是零;把这个周期公开的系统与不公开的系统,在争议性改动上的行为会不同。 二、企业内部通讯。 多数即时通讯软件的”撤回”有一个时限,超时不能撤。预测:这类系统的 τ 等于该时限,而在时限之后留下的”某人撤回了一条消息”是第二段。可查的推论:一个组织如果延长撤回时限,其内部的敏感讨论会从”少说”转向”先说后撤”,而这个转变在消息总量上表现为上升。 三、学术出版。 撤稿必须保留原文并加标记,τ 被写死为零。预测:τ 为零的领域,问题会转移到 τ 尚未开始的那一段——投稿前的内部审读与预印本撤下。可查:预印本平台允许撤下的窗口长度,与该领域争议性论文的预印本撤下率相关。 四、公共档案。 档案学的鉴定与销毁制度要求销毁必须造册,即销毁本身留痕。预测:这类体系的问题不在销毁环节,而在”入册之前”——一份文件在被登记为档案之前的那段时间,是这个体系里 τ 最长的一段。可查:各国档案条例中”移交期限”的长度,与该体系中最常被指控的缺失类型相关。 五、司法证据。 证据保管链要求每一次交接留痕,τ 在链条建立之后为零。预测:争议集中在链条建立之前,即现场到入库之间;且该段时长在不同司法辖区差异很大。 六、医疗记录。 电子病历系统普遍不允许删除,只允许追加更正,且保留修改痕迹。预测:τ 为零的系统里,回避会前移到”不记录”——即某些内容根本不进入病历,而这在记录里同样不留痕。 七、会计。 复式记账的红字冲销要求冲销分录本身入账,τ 为零。预测:问题转移到入账之前的原始凭证阶段,且该阶段的时长与舞弊类型相关。 八、选举。 选票一旦投入即不可撤回,τ 为零;而在投票之前的表态可以无痕改变。预测:允许提前投票且允许更改的地区,与不允许更改的地区,在最后阶段的舆论波动上表现不同。 九、体育判罚。 视频回放引入之后,判罚的撤销由不留痕变为全程留痕。预测:τ 从正变零之后,裁判的初判会变得更保守,而这在初判的分布上可查。 十、软件依赖。 一个被删除的版本会使所有锁定该版本的构建失败,这构成了一个外部的痕迹持有者。预测:依赖越广的包,其实际 τ 越短——不是因为规则不同,是因为别人替它留了痕。这一条可以在本章的数据上直接检验,且它解释了为什么本章清点到的隐撤物集中在早期版本与冷门版本。 十一、口述历史。 受访者可以要求在成稿前删去某段话,这是一个明确授予的隐撤期。预测:明确规定该期限的项目,其受访者在录音中的自我审查程度低于不规定的项目。 十二、议事记录。 已在第八节展开:τ 是若干个立法日,而插入内容用不同字体标记,说明第一段与第二段的边界曾被有意移动过。预测:不设修订期的议事体系,其发言的书面化程度更高——即人们更倾向于照稿念。 十二处里,第十处可以在本章已有的数据上直接检验,第二、三、四、九、十一处所需的数据在多数机构的既有记录里已经存在。
本章提出的东西容易与好几种成熟的说法混起来。下面逐条分开,每一条都给出一个可以判定的观察:看到什么,本章对而那个说法错;看到什么,反过来。 一、被遗忘权(Google Spain 案,二〇一四,法学)。 它说到哪一步:个人在特定条件下可以要求搜索引擎不再关联某些关于自己的信息。分离线:被遗忘权管的是”能不能要求删除”,本章管的是”删除之后留不留痕”。事实上被遗忘权的执行普遍留痕——搜索结果页会提示某些结果依欧洲法被移除,即它把处理放在了第三段。判定:若观察到某个体系在扩大删除权的同时缩短了 τ,则本章对而”删除权即言论收缩”这一读法错;若删除权的扩大总是伴随留痕机制的加强,则反之。 二、寒蝉效应(Schauer,一九七八,法学)。 它说到哪一步:法律的不确定性会使人在合法与违法的边界之外自我抑制。分离线:寒蝉效应管发出之前,本章管发出之后。两者可以反向变动——一个 τ 很长的体系恰恰降低了发出前的抑制(反正收得回),却使已发出的一切不构成任何东西。判定:若观察到某个平台延长撤回时限之后,发言总量上升而争议性发言的留存率下降,则本章对而”抑制只发生在发出前”这一读法错。 三、沉默的螺旋(Noelle-Neumann,一九七四,传播学)。 它说到哪一步:对意见气候的感知使少数意见持有者趋于沉默。分离线:它解释的是不说,本章解释的是说过之后的消失,且本章的机制不需要任何关于感知的假定——一个完全不在意气候的人,其表达同样会落进第一段。判定:若在意见气候高度一致的场合观察到 τ 与撤除率无关,则本章对而”撤除是气候压力的表现”这一读法错。 四、记忆洞(Orwell,一九四九,文学)。 这是最像的一位,必须说清。记忆洞里的旧报纸被销毁并以新版替换,读者看到的永远是一份自洽的记录。分离线有两处:其一,记忆洞假定有一个中央行为者在做替换,本章的第一段不需要任何行为者——PyPI 上的缺号是几万个互不相识的维护者各自的动作;其二,记忆洞是替换,本章是撤除,替换必然要生产新内容,撤除不必。判定:若观察到大量隐撤物的撤除者彼此无关联且无共同动机,则本章对而”这只是分布式的记忆洞”错;若隐撤物在时间上集中并指向同一批发起者,则反之。 五、档案学的鉴定与销毁(Schellenberg,一九五六;外圈学科)。 这是本章最锋利的一条分界,因为两边对同一份材料给出相反的评价。档案学的整门学问建立在一件事上:销毁必须依据保管期限表进行,并且销毁行为本身要造册。一份按销毁清册合规销毁的文件,在档案学看来是健康的——程序完备,痕迹齐全。本章看同一份材料,判的是:这个体系的 τ 已经被消灭,因此撤除必然转移到造册之前的那一段,即文件从产生到被登记为档案之间。判定:若观察到某档案体系在收紧销毁程序之后,“未移交”或”移交遗失”类问题上升,则本章对而”程序完备即无隐患”错;若两者无关,则反之。这一条本章认为是最可能翻车的一条,因为”未移交”的统计本身也落在第一段。 六、消融实验(机器学习的标准范式)。 这是一个方法学上的近邻,容易被整批漏掉。消融的做法是逐项移除、看剩下的还行不行;本章的做法形式上也是移除,但看的不是剩下什么,而是移除这件事本身留不留痕。分离线:消融关心系统的性能,本章关心记录的可判读性;一次不改变任何性能的移除,在消融里读数为零,在本章里可能是最要紧的一次。判定:若某个操作在消融读数上为零而在本章的清单上有条目,则两者确非同一件事。 七、只增日志与不可变账本(计算机科学)。 它说到哪一步:把记录设计成只能追加不能删除,从而保证历史不可篡改。分离线:只增只保证”写进去的还在”,不保证”写这件事被记下”。一次从未被写入的表达,在只增日志里与从未发生完全一样;而一次强制覆盖之后,旧提交在垃圾回收前可达、之后不可达且无记录。判定:若观察到某只增系统的争议内容集中在写入之前的暂存区,则本章对而”只增即解决”错。 八、史翠珊效应(Rogers,二〇〇五)。 它说到哪一步:试图压制信息的行为本身会放大它。分离线:史翠珊效应描述的正是 τ 为零时的后果——撤除留痕,痕迹成为线索。它是本章框架里的一个特例,而不是竞争者。本章据此预测它的适用边界:在 τ 很长的体系里不会出现史翠珊效应,因为没有可供放大的痕迹。判定:若在低留痕体系中观察到同等强度的史翠珊效应,则本章对该效应的定位错。 九、言语行为的适切条件(Austin,一九六二,哲学)。 它说到哪一步:一句施行性话语要真正做成某事,需要一系列条件得到满足,否则它是不成功的。分离线必须说得很硬,因为这一位与本章的第三种答法几乎贴在一起:适切条件管的是”条件不满足则不成事”,本章管的是”已经成事之后能否被无痕取消”。适切条件里没有时间维度,而本章的全部内容都在时间维度上。判定:取一次条件完全满足、无可争议地成事的表达,若它此后仍可被无痕撤除,则本章说的是适切条件说不到的东西。本章清点到的每一个隐撤物都是这样的例子。 十、撤稿与更正制度(出版伦理指南)。 它说到哪一步:已发表的论文若有问题应予撤回,撤回须保留原文并说明理由。分离线:它把 τ 直接设为零,因此它是本章框架的一个端点实例,而不是一个竞争解释。判定见第十二节第三条的预测。 最像的一位是第五位。档案学与本章谈的是同一件事的两面,用的判据几乎重合,而它的结论与本章相反:它认为程序完备的销毁是健康的。本章之所以仍不能被它吸收,是因为它的整套判据从”文件已经入册”开始起算——在册之前的那一段,它的判据体系里没有位置,而那一段正是本章的第一段。
(本节所指的篇目分两类:凡标有章次的,即本书各章;凡只有篇名而无章次的,是本书之外、同一时期处理相邻问题的若干篇文字,它们不收入本书。此处一并保留,是因为分界本身可查,删去反而使读者无从核对。) 本章与本书其他各章、以及书外若干篇有交叠,须逐一指名,并各给一条可以分出对错的观察。 与《留弧》。 那一篇处理的是退出与被淘汰之间的关系,读数是”返窗比”,关心的是一个退出者还有多久能回来。两篇的形状相近——都在数一段时间——但方向相反:那一篇数的是回来的窗口,本章数的是消失的窗口。判定:取一个既有退出记录又有撤除记录的体系,若两个读数的变动方向不一致,则两篇确非同一件事的两种说法。本章预测它们不一致,因为返窗比由制度对回归的态度决定,而 τ 常常由技术副产品决定。 与《回刻》。 那一篇处理的是同一份材料在不同尺度下被重新归类的问题,读数是”换尺率”。交叠处在于两篇都关心”记录变了而事实没变”。分离线:换尺关心的是同一样东西被改了名目,本章关心的是同一样东西整个不在了。判定:一次撤除若同时伴随对同类内容的重新归类,两篇都能读到;若只有撤除而无归类变动,只有本章能读到。 与《过料》。 那一篇处理的是过程中被造出又被拆掉的临时结构,读数是”去向四分”。交叠处在于两篇都在追问”被拆掉的东西去哪儿了”。分离线:那一篇要求追踪去向,本章的第一段的定义就是无去向可追。判定:本章的第一段在那一篇的四分法里没有对应格——若能为它找到一格,本章的第一段就不成立。这是两篇之间最直接的一条对照。
本章不适用于以下五类情形,逐条说明是”暂时测不了”还是”无对象”。 一、不保留任何公共记录的表达。 无对象。私下交谈的 τ 是无穷,但这个无穷不构成本章所说的问题,因为不存在一个会被误读的记录。本章的全部读数以”存在一份可被第三方查阅的记录”为前提。 二、痕迹由多方独立持有的表达。 暂时测不了。一条同时存在于平台、截图、转引和第三方存档里的发言,其实际 τ 是所有持有者中最短的那一个,而本章给不出这个最小值——因为无法枚举持有者。本章的单一 τ 在这类情形下会系统性地高估。这是本章最脆弱的一处。 三、记录本身即惩罚材料的体系。 无对象,且缩短 τ 有害。在一个说过的话会被直接用作追究依据的体系里,把 τ 收到零不是改善,是加重。本章在第十七节把这一条写进使用限制。 四、非文本载体的表达。 暂时测不了。一次沉默、一个手势、一次缺席,同样是表达,而本章的清点手册只能处理有版本位或条目位的记录。这不是原则性障碍,是编码规则尚未写出来。 五、“该不该撤”的规范问题。 无对象。本章全篇不处理任何一次撤除是否正当。一个正当的撤除与一个不正当的撤除,在本章的读数上可以完全相同,这是有意为之——本章提供的是一把尺,不是一份判决。
以下每一条都写成”看到什么,本章为伪”。至少有一条只需一个人一周内即可完成,且所需数据在多数机构的既有记录里已经存在。 在给出条件之前,先写出最强的那个竞争解释——那句最朴素、最难反驳的”其实不就是审查强度吗”。一个体系里撤除多、痕迹少,最自然的解释是这个体系管得严;τ 只是审查强度的一个代理。若这个解释成立,本章就是一个多余的名字。因此下面每一条证伪条件都必须在控制掉审查强度之后仍然要求成立。 条件一(正交性检验,最要紧的一条)。 取同一制度环境内至少六个自变量有真实变异的记录体系——例如同一平台下的六个分区、同一行业的六家企业、同一高校的六个院系。控制掉各体系的内容管理强度(以公开的管理规则条目数与处理量计)之后,若 τ 与内容管理强度的相关系数仍高于零点七,则 τ 只是管理强度的代理,本章白造。 条件二(剂量-反应,机制层)。 同上样本。控制内容管理强度与体量之后,若”τ 的长度”与”事后撤除发生率”之间不存在剂量-反应关系,则本章的机制为伪——届时撤除应归因于绝对的管理压力,而非可撤区间的长度。 条件三(顺序预测,正向读数)。 取一个正在改动撤回规则的体系,观察两件事的先后:τ 的缩短与”改口”类行为的增加。本章预测 τ 的缩短早于改口的增加出现,而不是同时。若观察到改口的增加早于或同步于 τ 的缩短,则本章的因果方向错。顺序比相关难被巧合满足得多,这一条是本章最愿意押的。 条件四(字段检验)。 若某个体系增设”此版本号曾被使用后删除”这样的字段,本章预测该字段被填的比例显著低于同类体系中已有留痕机制的那一个——因为长期不留痕已经改变了行为本身。若两者相当,则本章关于”留痕机制反过来塑造行为”的主张为伪。 条件五(低成本可实做,一周内可完成)。 任取一个组织的即时通讯记录导出,统计三件事:撤回功能的时限、撤回后的可恢复率、以及”撤回了一条消息”这一提示的保留时长。若可恢复率大于零,本章关于第二段”留痕而无内容”的划分为伪。这三个字段在多数企业通讯系统的合规导出里已经存在。 条件六(补跑第一条)。 本章原计划清点某代码托管平台上被编辑评论的时间分布,因接口额度而未能执行。若补跑之后发现编辑发生的时间分布中,距发布二十四小时以上的部分不足一成,则该场景中的”事后抹除”绝大多数是即时笔误修正,本章不得再以该场景作为支撑,须在正文降格。 若本章被证伪,会学到什么。 如果条件一翻了,说明公共记录的撤除机制并不独立于内容管理,那么改善言论环境的着力点应当仍在管理规则一侧,本章所指的方向是错的。这个结果本身是有用的,因为目前没有人验证过这一点。
按本章的判据,本章自己落在哪一段? 写作阶段:第一段。 本章的草稿、被删掉的整节、以及一处在跑完数据之后被推翻的主张,都在写作阶段被无痕撤除了。没有任何公开记录会显示本章曾经打算主张”越数字化越无痕”,除了本章自己在第十节写下的那一段。换句话说,本章的第一段之所以留下了痕迹,唯一的原因是本章自己选择把它写出来——而这恰恰说明第一段的痕迹不可能来自体系,只能来自自陈。 一个不愿自陈的作者,其写作阶段的隐撤在任何外部读数上都是零。 发表之后:第二段。 本章一旦发表,撤回会留痕,但撤回的版本内容未必仍可读。 这个定位有两个具体后果,本章认账。 其一,本章关于第一段的全部说法,都建立在第二、三段的证据上。 这不是一个可以靠更努力的清点解决的问题,第五节和第十一节第三处都说明了它是原理性的。因此本章所有关于”隐撤有多普遍”的表述都必须读作”在可判定的那两段里有多普遍”,而这两段按定义是隐撤最不容易发生的地方。本章很可能系统性地低估了自己所说的现象——这是一个对本章有利的偏差方向,读者应当据此打折。 其二,本章自己不能靠被发表来证明它说的东西存在。 一份被无痕撤除的稿子不会来反驳本章,因为它不在了。本章因此处在一个尴尬的位置:它主张存在一类没有账目为其设栏的东西,而它自己也拿不出那个栏。它能做的只有一件事——把两侧的栏做出来,让中间那一段以缺口的形式被看见。第九节的五十一处版本序列缺号,就是本章能拿出的全部。五十一处里没有一处能被确认是一次撤除。这正是本章要说的那件事,也正是本章无法证明它的原因。
隐撤期是一个时长,隐撤清单是一份名录。时长和名录都很容易被拿去考核人。本章因此必须写死三条,缺一条本章不应被引用。 其一,τ 指的是一个记录体系里的位置,不是持有这个位置的人。 一个部门的 τ 很长,说的是这个部门的记录规则允许无痕撤除,不是说这个部门的人在藏东西。把 τ 读成个人指标是误用。 其二,不得为了把 τ 做小,而在与人身安全相关的通道里强制留痕。 举报、求助、匿名咨询这一类通道的 τ 必须很长,因为在这些通道里,“曾经有过一句话”这一事实本身就足以造成伤害。任何以缩短 τ 为目标的一刀切改造,都会首先毁掉这几条通道,而它们恰恰是最需要保护的。 其三,已经依据 τ 或隐撤清单做出过不利安排的机构,必须公开其编码规则,并提供复核通道。 本章第十节第三处已经示范了编码规则的杀伤力:一处代理变量的误判就把读数吃掉一半。不公开编码规则的排名,读者无法判断它数的是什么。 最后照直说一句反噬。这个读数一旦进入考核,最省事的达标方式不是缩短 τ,是让记录里少一些可撤的东西——即让人少说。一个把 τ 做到零的机构,很可能同时是一个没有人愿意在记录里留下任何实质意见的机构,而它在本章的读数上会表现为满分。本章看不到这个出口。 能做的只有把这句话写在这里,并要求任何使用 τ 的地方同时报告表达总量。
关于言论自由的通行问法是”什么话可以说”。本章认为,在一个几乎一切表达都进入某种记录的时代,这个问法遗漏了一件更靠前的事。 一句话说出之后,它并不立刻成为一件确定的东西。它先经过一段可以被无痕收回的时间,再经过一段收回会留痕但内容不存的时间,最后才固定下来。第一段的长度,以及这段时间由谁掌握,决定了这个体系里的表达究竟是什么性质的东西——是一件可以随时不算数的事,还是一件说出口就跟一辈子的事。这两种体系可以在”什么话不许说”这一栏上完全相同。 本章把第一段称为隐撤期,把落在这段里的表达称为隐撤物,并指出一件在本章看来最要紧的事:隐撤物在现行的一切账目上都不设字段。 它不是被记录得少,是压根不算一样东西。删掉本章提出的这段时间,那一类表达不是变得难测,是不存在——因为没有任何账目为它设过一栏。 本章的清点表明,这不是一个思辨的构造。两个功能几乎相同的公共记录体系,一个把撤除留成时间戳,一个把撤除留成不可判读的序列断口,而这个差别不来自任何关于言论的政策,来自技术副产品。清点同时推翻了本章最初的两处主张,并把本章的读数从一个比率改成了一个时长加一份清单。 本章不主张 τ 越短越好,也不主张越长越好。本章主张的只有一句:这一段现在没有人在管,而管它不需要禁止任何一句话。
读数名一:隐撤期 符号:τ 定义:自一次表达进入某记录体系之时起,至该体系中”撤除此表达”这一动作必然在公开可查处留下至少一项可判读痕迹之时止,其间的时长。N 的取法:以该体系公开文档或接口行为为准,不以个案推断。 粒度:什么算一次”表达”,随体系而定,须逐体系写死。软件包体系取一个版本号;议事记录取一次发言;通讯系统取一条消息。边界例子:一个软件包在同一天发布 1.0.0 与 1.0.1,其中 1.0.1 只改了一个字符——算两次表达。理由:该体系为它们各分配了一个不可重用的位。若某体系允许原地覆盖而不分配新位,则覆盖不计为新表达,而计为一次撤除加一次表达,且该体系的 τ 判为零以上。 编码规则: 1. 只计公开接口可得的信息,不计需要授权才能取得的信息。 2. “可判读痕迹”须满足:不依赖对该体系的先验知识即可辨认。仅凭序列断口推断的,不计为痕迹。 3. 日期式版本号(形如 2022.5.18,主号大于等于一千)一律排除出序列断口的统计。 4. 同一表达在多个体系中出现时,逐体系分别计,不合并。 5. 撤除者的身份不计入,本读数不区分自撤与他撤。 6. 时限以体系公布的规则为上界,以实测到的最早留痕为下界,二者之间以区间报告,不取中点。 表头(可直接拿去做一张空表):体系名|表达单位|规则上界|实测下界|第二段痕迹类型|第三段是否存在|取数日期|编码规则版本 不适用:不产生可清点条目的表达;记录不公开的体系;痕迹持有者不可枚举的情形。 读数名二:隐撤清单 定义:在某记录体系中,落在第二段与第三段、可被逐条核对的已撤除表达的名录。本清单在原理上不包含第一段。 引用本清单得出的任何比例,都必须同时声明分母不可得。 本章三处引用一致性自查:第九节的三档划分、附录一的编码规则、第十六节条件一至六所用的读数定义,为同一套。三处均以”公开接口可得”为口径,以”不依赖先验知识即可辨认”为痕迹判据。
取数日期:二〇二六年八月十八日。 数据源:npm 公共登记接口与 PyPI 公共 JSON 接口,均无需授权。 样本:两平台各三十个包,包名在取数脚本中写死,取数完成后未作更换。npm 侧共一万二千一百零二个可取回版本;PyPI 侧共六千一百八十八个在册版本。 预注册:假设、变量与三条判定阈值于取数之前写死存档,此后未作修改。原计划清点的第一条(某代码托管平台被编辑评论的时间分布)因未授权访问额度耗尽而未能执行,如实记录,未以他数替代。 已知的方法学缺陷两处:其一,版本序列断口的解析对日期式版本号会产生大量假阳性,本章排除该类版本后重算,断口数由一百零一降为五十一,两个数字均列出;其二,“有时间戳而取不到内容”这一读数无法区分”发布后删除”与”登记后从未成功上传”,本章未作区分,故该读数为上界。 复算所需:两个公开接口地址、三十加三十个包名、以及附录一的编码规则。不需要任何授权凭证。 参考文献(择要) Eddington, A. S. Stellar Movements and the Structure of the Universe. Macmillan, 1914. Malmquist, K. G. On some relations in stellar statistics. Meddelanden från Lunds Astronomiska Observatorium, Ser. I, No. 100, 1922. Teerikorpi, P. Observational selection bias affecting the determination of the extragalactic distance scale. Annual Review of Astronomy and Astrophysics, 35: 101–136, 1997. Teerikorpi, P. Eddington–Malmquist bias in a cosmological context. Astronomy & Astrophysics, 576: A75, 2015. Chvorinov, N. Theorie der Erstarrung von Gussstücken. Die Gießerei, 27, 1940. Campbell, J. Castings. 2nd ed. Butterworth-Heinemann, 2003. Gassner, G. Beiträge zur physiologischen Charakteristik sommer- und winterannueller Gewächse. Zeitschrift für Botanik, 10, 1918. Purvis, O. N. & Gregory, F. G. Devernalization by high temperature. Nature, 155: 113–114, 1945. Gregory, F. G. & Purvis, O. N. Reversal of vernalization by high temperature. Nature, 161: 859–860, 1948. Chouard, P. Vernalization and its relations to dormancy. Annual Review of Plant Physiology, 11: 191–238, 1960. Bouché, F., Detry, N. & Périlleux, C. Heat can erase epigenetic marks of vernalization in Arabidopsis. Plant Signaling & Behavior, 10: e990799, 2015. Austin, J. L. How to Do Things with Words. Oxford University Press, 1962. Noelle-Neumann, E. The spiral of silence: a theory of public opinion. Journal of Communication, 24(2): 43–51, 1974. Schauer, F. Fear, risk and the First Amendment: unraveling the chilling effect. Boston University Law Review, 58, 1978. Schellenberg, T. R. Modern Archives: Principles and Techniques. University of Chicago Press, 1956. Orwell, G. Nineteen Eighty-Four. Secker & Warburg, 1949. Court of Justice of the European Union, Case C-131/12 (Google Spain SL v. AEPD), 2014. Congressional Research Service. A User’s Guide to the Congressional Record. Report 98-265 GOV. U.S. Government Publishing Office. Congressional Record, Extensions of Remarks, 说明栏(关于插入而非说出内容的排印标记)。 U.S. House of Representatives. House Practice: A Guide to the Rules, Precedents and Procedures of the House, ch. on the Congressional Record. 字数与版本 正文约一万九千汉字(不含附录与
本章成文在先,本书第四编成于其后。以下两处按「以今日为准」补入:正文一字未删,凡与本补记冲突之处,以本补记为准。本章原有的伦理三条,以第十二章 12.4 的全书三条为准;本章读数的验收,依第十二章 12.5 的「栏的验收」——一栏是否真的开出来了,不看它在模板上有没有,看它的取值在同一体系内跨时间有没有变化。
一 · 与其他各章的分界
与第八章(退出栏)。 那一章讲的是条目因不再被触及而退出、清单上仍列着它。分离线:问那一次消失有没有一个执行者与一个时刻。有,属本章;没有、而它仍在清单上,属第八章。两者可以先后发生于同一对象:先被撤除得干干净净,再由无人提起而彻底退出。
与第七章(余量栏)。 那一章数的是从可被外人看见到不可撤回还剩多久,本章数的是发出之后多久收得回而不留痕。二者可以反向共存:一个人有充裕的时间收回自己的话(本章读数极好),同时没有时间对别人的决定发出一次可被记录的异议(那一章读数极差)。判定形式:分别量这两段时长,若变动方向不一致,两章确非同一件事。
与第一章(条件栏)。 见第一章补记之一。
二 · 一处修订:隐撤期的决定项
数据库工程里有两种现成做法:软删除只给记录打一个删除标记而不真正移除,墓碑把「删除」这一事件本身记下来。二者恰恰是把隐撤期压到零的手段——它们是本章的样板,不是本章的对象。
由此本章原来那句「隐撤期常由技术副产品决定」应当写得更强,也更难反驳:
隐撤期既可被技术副产品拉长(如依赖解析所需的只增时间表),也可被技术选择直接清零(如墓碑);制度意图在两侧都不是决定项。
这一改使本章的适用范围缩小,同时使预测变硬:凡宣称以保护表达为由延长或缩短撤回时限的体系,本章预测其实际隐撤期主要由其存储与解析结构决定,与该宣称无关。
另须与引用腐烂分开:被引用的网络资源随时间失效,那里没有人做过撤除动作,是链路两端各自演化的结果,不属本章。
参考文献)。本稿为第一版,取数日期二〇二六年八月十八日。若本章的任何读数被后续取数推翻,以后取者为准,本章不作辩护。 人机分工声明 选题、判断与全部主张由作者确定。文献检索、公开接口取数、统计脚本编写与两处方法学缺陷的排查由人工智能助手协助完成;预注册在取数之前由作者写定。全部数据可按附录二复算,复算不需要任何授权凭证。第十节所记的三处修订,均由取数结果推翻作者原有主张后写入,非事后追加。 [TABLE] 段 | 名称 | 撤除还可不可能 | 撤除留不留痕 | 外部的人能不能知道”这里曾经有过一句话” | 典型实例 一 | 隐撤段 | 可能 | 不留 | 不能——与”从未发生”不可分辨 | PyPI 上被删除的版本号(只在序列里留下一个断口,而断口不能与跳号区分);无记录的口头交谈;发行前的报纸清样 二 | 显撤段 | 可能 | 留痕,但痕迹里没有内容 | 能知道有过,不能知道是什么 | npm 上被 unpublish 的版本(时间表里留时间戳,内容取不到);PyPI 上文件全被移除而版本号仍在册的版本;聊天软件的”撤回了一条消息” 三 | 固存段 | 可能 | 留痕,且原物照旧可读 | 能知道有过,也能知道是什么 | 加水印的撤稿论文;标记为已撤回而文件仍在的软件版本;议事记录中用不同字体标出的插入内容 [TABLE] 体系 | 表达者能否无痕撤除自己的 | 运营方能否无痕撤除他人的 | 第三方是否独立持有痕迹 npm 软件包 | 部分能(时限内),但时间表仍留时间戳 | 能 | 是(依赖锁文件) PyPI 软件包 | 能,且完全无痕 | 能 | 弱(镜像站与缓存,覆盖不全) 美国国会议事记录 | 能(若干立法日内,须经全体一致同意),插入内容留排印标记 | 否(除名须经院会决议,本身留痕) | 是(当日速记与转播) 学术出版 | 否(撤稿须保留原文) | 否 | 是(预印本与引用网) 即时通讯 | 部分能(时限内,撤回留提示) | 通常能且无痕 | 是(截图与本地缓存)