第十一月最后一个星期一,程久来了。
她比预定时间早了二十分钟。门卫打电话到项目组时,顾远正在备用机房核对回波日志的第五版附录。他放下电话,没有通知其他人,自己走到一楼大厅。
程久站在门外,背着一个黑色的双肩包,穿深灰色外套,手里拿着一个牛皮纸文件袋。门外风大,她的头发被吹得有些乱,但她没有整理。她看起来不像三十二岁。她看起来像是已经把三十二岁之前的大部分东西都处理干净了。
“顾老师。”她先开口,声音不高,刚好压过风声。
“程久。”
“数据合规审查组。之前通过宋协调员和您的团队有过一次非正式技术沟通。”
“我记得。”顾远说。“十七行。没问第十八行。”
程久没有接这句话。她把文件袋换到左手,腾出右手推了一下眼镜。眼镜框很细,银灰色的。手指在镜框边缘停了一瞬,然后放下。
“今天想当面看几样东西。”她说。“不是非正式的。今天是正式访问,会有记录。”
顾远侧身让她进门。走廊里的日光灯管还是那根在频闪的,整流器的震颤声在早晨的安静里格外清晰。程久抬头看了一眼灯管,没有说什么。她的鞋跟敲在水磨石地面上,声音很轻,每一步间隔完全一致。
他们经过茶水间时,伊琳正在往墙上钉一张照片。钉锤敲了两下,声音短促。她转过头,和程久对视了一眼。程久的目光在伊琳身后的地图上停了一瞬——五处断层的图钉,昨天地图上还没有那根绷直的细线。细线从灰白色小楼的位置延伸到中东管线事故地点,在日光灯下像一道被拉长的伤口。
程久没有问那根线是什么意思。她继续往前走。伊琳把钉锤放在桌上,锤柄磕到杯沿,发出瓷器轻颤的声音。
陈路从茶水间出来时正好看见程久的背影。他站住了,手里端着刚倒的热水,杯子举在半空。他认出那个走路的姿态——肩膀微微前倾,步子不快但每一步都踩实,像是在默算什么。那次非正式沟通时她也是这样走的。杯口的热气扑在他下巴上,他没有低头喝。
周启明在档案室门口碰见了他们。档案室的门半开着,里面传出打印机预热的声音。他向程久点了点头,没有握手。
“合规审查组。”他说。“上次宋协调员带来的那位技术协调员。”
“是我。”程久说。
“今天不用三不原则了吧。”
“不用。今天是正式的。”
“有议程吗?”
程久从文件袋里抽出一张对折的纸递给他。纸上是打印的访问清单,三行,宋体,行间距很宽。纸张边缘有折痕,不是新的。
一、静默预警库数据存档的合规性核验
二、内部回测摘要传播路径的追溯
三、待定期数据环境变化的评估依据
周启明看完,把纸还给她。他的手指在第三行停了一下。从国际能源署上周发布的秋季评估报告,到中东管线事故的技术调查结论,再到联合委员会对GcS待定期数据完整性的内部质询函——这些外部事件在一周内接连发生,而清单上只有三行字。他没有说这些。
“清单写得简单。”
“正式访问的清单都写得简单。”程久说。“复杂的是看的过程。”
顾远把他们带进了备用机房。这是项目组能找到的最中性的房间——不是主控室,不是会议室,不是任何人的独立办公室。白板还在墙角,上面顾远画的时间线和那个写着“锁”字的圈还在。标记的墨迹已经有些干了,边缘微微发灰。程久进门时扫了一眼白板,目光在那个圈上停了不到一秒,没有问。
她在第三排终端前坐下,打开背包,取出一台便携终端、一个硬壳笔记本、一支钢笔。三样东西在桌面上摆成一条直线,终端在左,笔记本在中,钢笔在右。摆好之后,她抬头看了一圈房间里的人。
顾远靠在窗台边。窗外是灰色的天,楼下的树光秃秃的,枝杈在风里晃。远处有一条输电线从城郊方向延伸过来,架空地线上停着一排鸟。周启明坐在斜对面的椅子上,椅子的气柱往下沉了一截,发出很轻的泄气声。他刚从档案室出来,手里还捏着那份咨询章程修订草案的打印件,纸边被手指捏出两道褶皱。陈路站在门口,杯子里的热水还在冒气,水面微微晃动。林序坐在最后排,笔记本摊在膝盖上,笔帽已经摘下来了。
“第一项。”程久说。“静默预警库的数据存档。”
陈路把纸板从墙上取下来,放在程久面前的桌上。纸板边角有些卷了,上面有反复擦写的痕迹。第七期更新的数字还留在上面——二十一项偏差,方向一致概率降至千分之一以下。最下面那行后加的字还在:他们知道我们在看什么。
程久低头看纸板,看了大约两分钟。她的视线从左往右移动,一行一行,最后停在最下面那行字上。她没有问这行字是谁写的。
“这个纸板不是系统生成的。”
“不是。”陈路说。“手写的。”
“数据来源是系统实时流?”
“是。被有限输出模板过滤掉的微小偏差,按节点和方向手动记录。”
“为什么要手动记录?”
陈路看了顾远一眼。顾远没说话,窗外的风把窗框吹得轻轻响了一下。
“因为模板过滤掉的东西系统不会自动存档。”陈路说。“不手动记,就没了。”
程久在笔记本上写了两行字。钢笔尖在纸上刮出很轻的沙沙声,写到第二行末尾时笔尖停顿了,然后继续写完。
“数据合规的角度。”她写完之后抬起头,没有看笔记本。“手动存档本身不违规,但存档内容如果包含了被模板标记为不应外传的数据,就进入了合规审查的范围。”
“什么是‘不应外传’?”周启明问。他的声音比平时低。
“模板的设计是为了让系统在有限输出期间只发出必要信息。被过滤掉的部分,在模板的设计逻辑里,是不需要被外部接收的。”
“不需要被外部接收。”周启明重复了前半句。“不等于不需要被内部记录。”
“对。”程久说。“所以我不是来判定违规。我是来核验存档内容与模板过滤标准之间的边界。”
她转向陈路。“我能看最近一期的原始数据缓存吗?系统自动过滤前的数据流。”
陈路走到终端前,手指在键盘上敲了几下。屏幕上出现了密密麻麻的数据行,二十一项偏差被系统自动标记为灰色,旁边有过滤时间戳,精确到秒。没有被过滤的数据是绿色的,只有三行,夹杂在灰色的数据行之间。这些灰色行如果被单独看,每一项偏差都微不足道——第七处断层应力监测点漂移0.03%,天然气管道压力波动0.01%,电网频率偏移不到0.005赫兹。但二十一项叠在一起指向同一个方向。方向是中东管线事故地点的地质应力集中带。伊琳昨天在茶水间钉下的那根细线,在地图上绷直的距离不到四十公里,而屏幕上这些被标记为“未达统计显着性阈值”的数据点,在事故前七十二小时就已经开始漂移。系统每一项都看见了。每一项都过滤掉了。
程久看着屏幕,钢笔又在本子上写了两行。写完之后她用笔尖点了一下屏幕上的灰色数据行,但没有碰到屏幕。
“系统在过滤这些数据时,给出的理由是什么?”
陈路点开其中一条灰色数据的标记备注。弹窗出现在屏幕右侧,理由栏里的字是等宽字体:偏差幅度未达统计显着性阈值,依据有限输出模板第4.2条自动过滤。
“未达统计显着性阈值。”程久念了一遍,语气是平铺直叙的,没有上扬也没有下沉。“这二十一项都有这个标记吗?”
“都有。”
“但你们手动记录时判断它们是连续趋势。”
“单个看不显着。”陈路说。他放在键盘上的手指蜷起来,又伸直。“二十一项排在一起方向完全一致。单独过滤每一项,都是对的。合在一起,趋势被拆碎了。”
碎到什么程度——他在心里想,但没有说出来——碎到可以合法地不被看见。
程久在本子上写了第三行字。写完之后她合上笔帽,笔帽套上去时发出很轻的咔嗒声。她把笔放在本子旁边,和本子的边缘完全平行。
“第一项核验暂时没有合规结论。”她说。“因为边界本身存在矛盾——过滤标准是单项阈值,但风险识别需要趋势判定。这两个东西撞在一起了。”
房间里没有人接话。排风扇还在低频嗡鸣,声音闷在墙壁里,像是某种持续的低音和弦。墙角的白板上,那个“锁”字下面的箭头被日光灯照得若隐若现。窗外的输电线上,那群鸟飞走了一只,剩下几只收紧了爪子。
程久喝了一口自己带来的水,拧上瓶盖。瓶盖拧到底时,她的手指多加了一圈力。
“第二项。内部回测摘要的传播路径。”
顾远从窗台边走到终端前。他的步子不快,鞋底在地面上擦出轻微的摩擦声。他调出那份三天前发出的内部回测摘要的传播记录。屏幕上出现了一条链路,用箭头连接,每个节点旁边有时间戳和接收方名称:项目组发至三家法定听到机构,其中一家在同一天转发给联合委员会秘书处,转发时加了一句备注——“项目组主动提交的补充材料”。备注栏的底色是浅灰的,字是黑色的。
程久盯着屏幕上的备注栏看了很久。她的眼睛没有动,瞳孔在日光灯下微微收缩。屏幕上那行备注像一个句号——不是项目组的句号,是信息的句号。信息一旦离开发送方,句号就变成了引号。谁来引用它,就用谁的口径。
“这份摘要是你们主动发的?”
“是我们发的。”顾远说。“发给三家机构,供评估参考。不是发给委员会。”
“但委员会收到了。”
“收到了。加上了‘主动提交’的标记。”
“那行备注是谁加的?”
顾远把光标移到备注的来源字段。光标在屏幕上闪烁,字段显示:接收机构A,转发时添加。
“A机构。”程久说。“不是你们。”
“不是我们。”
程久在本子上又写了两行。这次写得比之前慢,笔尖停顿的时间更长。第一行写完时她抬了一下笔,在空中悬了半秒,然后继续写第二行。周启明注意到她抬笔的位置——正是“主动提交”和“被动提供”这两个词之间的空白。她在标记信息性质的转变点。
“这也不是合规问题。”她说。“至少不是你们的合规问题。信息接收方对信息重新标记并转发,不在项目组控制范围内。”
“但标记改变了信息的性质。”周启明说。“从‘被动提供’变成了‘主动提交’。”
“对。这属于接收方的行为,但后果由发送方承担。”
“所以如果我们不发,就不会被标记。如果我们发了,标记权不是我们的。”
程久没有直接回答。她把笔放在手指间转了一下,笔掉在桌上,在终端旁边弹了一下,滚到笔记本边缘。她捡起来,继续写。写的时候她的肩膀微微向前收紧。她想起三天前在联合委员会走廊里无意间听到的一句话——一个她不能确定是谁的声音,说“项目组主动提交的补充材料”这个措辞在正式函件里已经使用了两次。两次。函件是今天才转给她的。措辞在三天前就已经存在了。
“第二项也暂时没有合规结论。”她写完最后一个字,笔尖在纸上按了一下,留下一个很小的墨点。“不是因为没有问题,而是因为问题不在清单覆盖的范围里。清单上写的是‘追溯传播路径’。路径清楚了。标记权的问题清单没列。”
她从文件袋里抽出一张空白纸。纸是普通的A4纸,没有抬头,没有编号。她在那张纸上写了一行字,用手指按着纸边折了一下,夹进笔记本的最后一页。夹进去之后她又用手指按了一下,确认纸不会掉出来。林序注意到这个动作——她把没被列入清单但核验中发现的问题记在了单独的地方。不是遗漏。是归类。合规审查组没有授权她记录清单外的问题,所以她记在清单外的地方。
周启明也看到了这个动作。他手里那份咨询章程修订草案里,“信息对等原则”的定义是评估方掌握多少项目组才知道多少。而现在程久正在成为“信息对等”的一个活的反例——她看到了合规框架内部的空白,她把空白记在框架之外的地方。框架之外不在“信息对等”的覆盖范围内。周启明的手指把打印件捏出了第三道褶皱。
“第三项。”程久说。她把清单翻到第三行的位置,虽然清单只有一张纸,她不需要翻。“待定期数据环境变化的评估依据。”
顾远调出全量量化分析报告的副本。屏幕亮起的瞬间,他的眼镜片上映出报告首页的标题。报告的第七页展开——两条曲线的拐点还叠在一起,没有标注。精度衰减曲线从第七周开始加速下行,斜率越来越陡。外部偏差累积曲线在同一点开始加速上行,两条线在拐点处交叉,像一把没合拢的剪刀。
程久看得很慢。她把报告从头翻到尾,页面向下滚动时发出均匀的键盘敲击声。翻到底,她又从尾翻回第七页。翻到第三遍时她停住了,手指悬在翻页键上方。国际能源署上周发布的秋季评估报告里有一张全球地质应力监测覆盖率分布图,第七处断层的位置上标着“数据不足”。联合委员会对GcS待定期数据完整性的内部质询函引用了那张图。图上的“数据不足”和屏幕上的拐点曲线指向同一个时间窗口——第十一月的第一个星期。那个星期严工被换掉的锁,被搬走的机箱,未上传的七处断层应力监测数据,都在这个窗口里。
“这份报告发给委员会了。”
“发了。”顾远说。
“周几发的?”
“周四下午四点十二分。四点五十分预备会推迟的通知就来了。”
“报告的结论是什么?”
“待定期正在改变系统本身。”顾远说。他的声音没有加重,每一个字都是同样重量。“数据环境风化导致精度衰减无可逆趋势。持续缺乏新鲜数据输入,系统推演能力已经显着下降。”
“这个结论在报告里写了吗?”
“写了。在第十四页结论部分。”
程久翻到第十四页。那一页上只有四段话,段落之间有空行。第一段就是顾远说的内容,用宋体排着,字距很紧。她读了两遍。第一遍从头到尾,第二遍从中间某一句开始往回读。
“预备会推迟的原因是这份报告?”
“没有明确说。”周启明说。“但从时间来看,报告发出的同一天,推迟通知就到了。如果巧合,这个巧合太精确。”
程久在本子上写了很长一段。林序从后排能看到她的笔尖在纸上快速移动,偶尔停顿,像是在核实某个措辞。写到一半时她翻回前面看过一眼之前写的字,然后翻回来继续写。笔尖划过纸面的声音连续而均匀。她在记录的不仅是这份报告的内容,更是报告被接收的时间、接收后采取的行动、行动与报告之间未被证明但客观上存在的因果链条。合规审查可以承认巧合。她不能否认的是时间线上两个事件的间距——三十八分钟。
写完之后她合上本子。合本子的动作很慢,封面和封底碰到一起时几乎没有声音。她站起来,椅子腿在地面上轻轻刮了一下。她走到白板前。
她看着顾远画的那些线和圈。时间线从左往右延伸,每个节点上都有简短的标注——宋协调员会议、三不原则、信息对等原则、修订草案。箭头在末端汇集到一个圆圈,圆圈里写着“锁”字。字迹是马克笔写的,边缘有些晕染。
“顾老师。”她说。她没有回头,还在看着白板。“这个图能解释一下吗?”
顾远走到白板前。他的步子比之前快了一点。他伸出手,用手指沿着时间线从左往右划,指尖没有碰到白板表面。
“非正式信息提取。”他点到宋协调员那场会的位置,指尖悬在标注上方。“外部用非正式渠道拿到我们的回答。再用这些回答替代正式评估会上的专项陈述。我们的解释被回收,重新包装,变成要求我们提供更多解释的依据。”
“然后呢?”
“然后形成一个环。”他的手指沿着箭头移动,最后停在那个圆圈上。“每一次主动输出都被吸收,每一次被动沉默都被利用。待定期不是静止期,是外部工具完备期。”
程久沉默了一会儿。备用机房里的排风扇声音在这个沉默里格外清晰,低沉的嗡鸣中夹杂着叶片转动的节奏。她伸出手指,点在“锁”字旁边,没有碰到白板,只是悬在那里。她的手指很稳,没有晃动。
“这个字是你写的。”
“是。”
“你是技术派。”
“我是。”
“但你在分析制度工具。”
顾远把手从白板上收回来,放进外套口袋里。口袋的布料被手指撑起一个轮廓。
“技术派不代表看不见工具。”
程久没有继续问。她放下手,手指在空中停了一瞬,然后垂到身侧。她走回座位,把笔记本翻到最后一页——就是她刚才夹了一张空白纸的那一页。她在那张纸上写了三个字,笔速很快,写完就合上本子,收进背包。本子放进背包时碰到终端的边缘,发出一声轻响。
“三项目的核验都做完了。”她说。“都没有合规结论。”
“都需要委员会进一步讨论?”
“不是需要讨论。”程久把背包拉链拉上。拉链的声音从一头滑到另一头,顺滑得没有一次卡顿。“是清单上的项目在设计清单时就没有预留结论空间。”
周启明从椅子上站起来。椅子在他起身时向后滑了一小段,轮子在水泥地面上滚出沉闷的声音。他想起来刚才程久看全量量化分析报告第七页时翻了三遍。报告发了,预备会推迟了,国际能源署说数据不足,质询函引用了那张图,图上的时间窗口和严工的锁同时出现。这些事件之间的连线不在任何一张清单上。合规审查可以逐项核验三行宋体字,但连在一起的东西不会被核验。因为“连在一起”不在清单上。因为清单本身就是用来防止它们连在一起的。
“程久。”他说。他的声音比之前重了一些。“你这句话,算正式记录的一部分吗?”
程久背好背包,拿起文件袋。她没有回答周启明的问题,而是看了他一眼。那个眼神很短,不到两秒,但里面有一种东西不是来自合规审查组的——是来自那个三十二岁、应用数学背景、三年联合研究机构经历的程久本人。合规审查组只审查。不补充意见。不指出框架外的问题。但她在空白纸上写了字。她把纸夹在笔记本里。她没有把它放进正式记录。
“我说的是核验结果。”她说。声音和进门时一样平稳。“正式记录上会写‘三项核验均无合规结论’。下面那一句不写了。”
她走到门口时停下来,回头看了一眼陈路的纸板。纸板还放在桌上,上面的数字在日光灯下泛着灰白。最下面那行字——他们知道我们在看什么——墨迹比其他字都要新一些。七处断层的数据存于被换锁的机箱。中东管线事故。国际能源署说数据不足。质询函引用了数据不足。合规审查组来查手动存档。这些事都在同一个星期发生,但她只能逐项写进正式记录。逐项。每一项都不违规。连在一起没有正式结论。
“千分之一。”她念了一遍最下面的数字。声音很低,像是念给自己听的。
然后她走了。
走廊里的脚步声渐渐远去,鞋跟敲在水磨石地面上,间隔始终相同。备用机房的门开着,排风扇的声音涌进走廊,和脚步声混在一起。没有人说话。
顾远走到桌前,拿起陈路的纸板翻过来。背面是空白的,只有角落里有一小块之前蹭到的粉笔灰,灰白色的,在纸板上形成模糊的印迹。他把纸板放回去。
“她写了三个字。”周启明说。“走前最后写的。”
林序从后排站起来,合上笔记本。笔记本合上时发出轻微的拍击声。
“‘清楚了’。”他说。
伊琳在中午收到了严工的第十封信。信封和之前一样,白色的,没有落款,只有收件人地址。她撕开封口,里面只有一张照片,五寸的,普通的相纸。照片拍的是那栋灰白色小楼的正门。门上的锁还是新的,金属锁身在日光下反着白光。但门缝里塞着一个信封,露出一角,纸质泛黄。信封上写着一行字,被门缝夹住,只露出前半截:应力带监测数据的备份存于——
后面被门缝挡住了。
伊琳把照片翻过来。背面没有日期,只有三个铅笔字,笔迹很轻,几乎要被相纸的纹理吞掉:还在等。
她把照片钉在茶水间的墙上,和那五处断层的图钉排在一起。钉完之后她退后一步看了一会儿。然后从抽屉里拿出一根细线,在地图旁边用图钉钉住一端,另一端从灰白小楼的位置连到中东管线事故地点。细线拉得很直,绷在墙面上。线的两端相距不到四十公里。程久在备用机房里看到的灰色数据行——被过滤掉的二十一项偏差——那些偏差指向的应力集中带,就在这条线的中点。
她在细线旁边站了一会儿。热水器在墙角发出保温的嗡嗡声,红灯亮着。
下午四点,女分析师发来一条信息。不是加密信道,是内部消息系统,用词很正式,每一个术语都规范使用:联合委员会数据合规审查组程久提交了正式访问记录。三项核验均无合规结论。另附一份补充说明,标记为“非正式建议”,不在正式记录内。
非正式建议的内容只有一条,一行字,没有任何修饰语:建议委员会在下次评估会上将静默预警库的数据列入正式评估范围。
周启明把这条建议看了三遍。第一遍从头到尾。第二遍倒过来,从“正式评估范围”往前看。第三遍他只看中间五个字:列入正式评估范围。咨询章程修订草案里的“信息对等原则”说评估方掌握多少项目组才知道多少。但现在程久在非正式建议里主动把静默预警库推向了正式评估范围。这意味着项目组之前手动记录的东西,将在委员会的正式议程中被公开讨论。不再是陈路纸板上的手写字。不再是“不应外传”的数据缓存。而是正式评估会上被列入议程的第二项。从纸板到议程——这一步不是项目组走的。是程久走的。
“她要把它公开。”他说。他的手指在桌面上轻轻敲了一下,然后停住。“不是查它,是让它进入正式议程。”
顾远站在窗边,看着外面的天色。十一月的白天短得很快,四点钟太阳已经偏西,楼下的树影子拉得很长,从人行道一直伸到马路中间。天色从灰白变成灰蓝,西边有一小片云被染成暗橙色。远处的输电线被铁塔架起,横跨城郊方向,架空地线上那些鸟已经飞走了。
“她从内部看到了边界。”顾远说。他没有转身,继续看着窗外。“边界本身有矛盾,她说清楚了。但怎么解决这个矛盾,她没有说不能公开。”
陈路拿起纸板,从笔筒里抽出一支笔。他把最下面那行“他们知道我们在看什么”擦掉了,擦的时候用了力,纸板上留下了一片灰黑色的擦痕。他在原来的位置写上了新的字,笔尖在纸板上压出轻微的凹痕:他们问我们在看什么。
然后他在下面又加了一行。引擎故障。动力室。中东管线事故的两个关键词。伊琳昨天说过这两个词。严工的信里提过。程久在屏幕上看到的二十一项偏差指向的方向,在不到四十公里外的应力集中带上——那里有三台燃气轮机的轴承出现了同样的磨损模式。“数据环境风化”在第十四页上是一个技术术语。在现实里是轴承上的金属碎屑。
林序当晚更新了认知困境文档。他的台灯打在桌面上,光圈只够照到笔记本和双手。他把程久来访的全部过程按时间顺序记录下来——她早到二十分钟、文件袋里的三行清单、纸板上手写的数字被她看了两分钟、原始数据缓存里的灰色标记和绿色数据、备注栏里“主动提交”的字样被她的视线反复扫过、全量量化分析报告的第七页被她翻了三遍、白板前悬空的手指停在“锁”字旁边、被夹入笔记本最后一页的空白纸上的未列入清单的问题、补充说明中那条让静默预警库进入正式议程的建议。
记录完所有细节之后,他在末尾加了一段注释,笔速比记录过程更慢:程久不是第三合作者,也不是第五纵队。她是在合规审查框架内,以核验的名义,完成了一次事实上的信息交换——她用专业身份看到了边界,用非正式建议指出了边界的存在。不是打破规则,是让规则本身暴露出它无法处理的区域。核验的目的不是给出结论,而是让不能得出结论的东西被记录下来。合规审查组本意是来核查待定期数据环境的合规性。但她在核查过程中发现的问题,超出了清单上三行的覆盖范围。空白纸上写的那些字不是秘密报告,是归入“暂不处理”的文件。但“暂不处理”不是“不存在”。她留下了记录。
然后他翻到新的一页,纸页翻动的声音在安静的房间里很轻。他在顶端写下第二十一章的标题:三项无结论。
标题下面只写了一行字。墨水在第一个字落笔时微微洇开,他等了一下,让墨水吃进去,然后继续写。写完之后他没有立刻合上本子,而是看着那行字晾了一会儿。
墨水干透了。他合上本子。
第三个解释者出现了。她用合规工具测量了系统的沉默,然后给出了测量数据。没有结论,但也没有收回数据。她把这个矛盾从灰色数据行里挖出来,摊在正式和非正式的边界上。委员会可以无视非正式建议。但无法否认正式记录上写了“三项核验均无合规结论”。“无合规结论”本身就是一个结论——规则覆盖不到的地方,已经大到了可以被正式核验确认的程度。