第二十三章 重演
重演用了三天。
松枝给自己定的规矩只有一条:不许用清洗后的数据集。五份原始导出件,三百多条记录,他从头建了一份属于自己的库。去重,补全,统一格式,这些工序他四月份隔着一张桌子看早川做过三天,现在他自己做,做得慢,做得笨,每一步都在纸上记下依据。他不赶时间。这一次他做的东西不需要快,只需要是他自己的。
第一天,他把雏形理论对着这份自建库重推。主键,整除条件。输出:四个人。白川,林,小島,佐藤。名单和六月十日上午投影在白幕上的那份一模一样,第四行是佐藤実。排序键,学术日程升序,四个日期一个不差。
第二天,他把精化理论对着自建库重推。那条轨道,模一百九十九,一行一行过。林的编号落进第五格,小島的落进第六格。过到佐藤那一行,编号 215,除法,余数 16。第四格。他把三浦填进去的那一格,落进去的是佐藤。
他停笔。
四个人里,一个没少。用原始数据,精化后的目标集合里有佐藤実。他的名字从四月起就躺在那里,满足每一个条件,从来没有出局过。出局发生在另一份数据集里,发生在「以现属系统为准」那六个字里。
第三天,他做了第三遍,从头到尾,换一个次序。结果不变。
他把三份重演稿并排摆在桌上。三天前他问「理论哪儿漏了」,现在他可以回答自己了。理论没有漏。规则那一侧,从雏形到精化,对着干净的输入,每一次输出都复现。错的那一行不在他的推导里,在推导的脚底下。他把一个被改动过的数当成事实读了四个月,用它预测,用它排除,用它在一间会议室里说:这个人安全。
他想起自己誊清存档版草稿的那个下午,誊到「剔除」那一页,笔没有停。剔除,曲线上没有他的点。他写下那两个字的时候,笔迹和记其他行的时候一样,没有重,也没有轻。一个人从所有眼睛底下被挪走,用的就是他笔下那两个字。
他把重演稿钉好,收起来。收起来之前,他还做了一项检验,检验的是那次改动本身。
他把四月那条日志放在数据的规矩面前过了一遍。以现属系统为准,这条规矩本身无可指摘,做数据的人都会这么定,他自己当时也这么认为。215 和 216,两个数都不是假的,各有一个系统替它们背书。旧系统里躺着 215,现属系统里躺着 216,转岗的时候编号迁移,末位错了一位,这种事每一座大学的人事档案里都翻得出来。改动的人不需要伪造任何东西。他只需要在两个真值之间做一次选择,然后把这次选择写进日志,理由齐全,留痕完整,等着任何一次抽查来验收。
这就是那次改动的外衣:它不依赖谎言,它依赖的是规矩本身。谁去问这条改动对不对,数据都会回答对。它唯一的痕迹不在数据里,在数里。第四格是 215 的余数,无点的那一处是 216 的余数——这条曲线是围着这一对数造出来的。知道它们将来会在同一条曲线上碰头的人,名单很短。而选择发生在四月,含义到八月才显形:做出这次选择的人,还得知道这对数将来会有用。
然后他在白板上写下新的题目。这是这次重做剩下的最后一问,也是最冷的一问:谁。
数据集 D,从四月到现在,谁的手碰过它。
他把可能接触的人一个一个写在白板上,写一个,验一个。他做数学几十年,排除法是他的本行。只是这一回本行的对象是人。
第一类,流程内的持有人。伊达持有打印件和清洗日志的纸本,本部物证系统里封着原始导出件。打印件改不了库,纸本日志改不了字段,物证系统的出入库全部登记,四条调阅记录,每一条他都验了去向。这一类人碰得到数据的形,碰不到数据的值。而且改打印件没有意义,理论跑在电子库上。就算放开接触这一条,还有能力那一条:那条曲线,伊达造不出来。他把这一类写上白板,验完,划掉。这一笔划得快。
他把笔放下了。先不急着往下。
他替那个人找的第一条路是:无心。转岗造成的,这种事很常见。两个数都不是假的,各有一个系统替它们背书,以现属系统为准,做数据的人都会这么定,他自己当时也这么认为。他把这条解释扶起来,扶正,放在规矩面前。规矩没有错。可是方向是选的:另一个方向同样合法,同样留痕,同样通过校验,而另一个方向会把佐藤留在第四格。选 216 不选 215,不需要伪造任何东西,只需要在两个真值之间做一次选择。三百多条记录,四个月,改动只有这一处。录入错误是散的,这一处是孤立的。孤立不是错误,是选择。
他想起四月那间会议室,自己点过的头。
第二天他去了本部机房。这条他不当场划掉,他要亲眼验。值班的管理员调出四个月变更日志,清洗期一批,全部进了那册日志;清洗期之后十几条,日程字段的更新,格式的修补,每一条都有时间、账号、事由,逐条对得上周报。佐藤那条编号字段,四个月里只被碰过一次。
"这个字段,服务器这边只有清洗期碰过。"管理员说,"清洗是外面顾问做的。顾问要动库都是走会议室投影,不碰服务器。"
他无意中说出了那个架构:能改这个字段又不触发任何警报的,只有当着所有人的面在会议室里改那一条路。
"四月会议室那回,你们几个人都在场的那回。"管理员翻了翻登记,"那人是谁啊?"
"我认识。"松枝说。
"哦。"
离开机房前,他还要了一份东西:四月十日那晚的进出登记。那一页四月就验过,问询在册,核查栏盖着「对上」。他一行一行重新看下来,没有一行多出什么,也没有一行少掉什么。他把登记还了回去。
他比任何一次核查都希望这一次能查出东西。没有。链外的人要动电子库,得先过这道门,门上的记录是干净的。他把那叠记录理齐,还回去,道了谢。回研究室的路上他把第二类也划掉了。
第三类,理论上唯一完全读懂三键结构的人:他自己。松枝把自己的名字写上去,看着,然后划掉。划掉不是因为他是自己,是因为时间。四月那次改动发生时,他自己也不知道那个字段会被读到。那条轨道是他八月五日夜里才想出来的,标记点和判别式的读法是他对着白板熬了六个星期才熬出来的。四月就动手的人,不是读懂了他的理论的人,是比他的理论先走的人。他写过很多名字,这是第一次把自己写上去,又划掉。
划掉之后,白板上空着一块。
他没有往那块空里写。他先替那个人找最后一条路:他不是那种人。十几年讨论班,收白板笔,多备两支。地下一层的那些晚上,便当一人一半。一个连"评"都避嫌的人——我不评理论,我越过这个界,就是害你。六月六日夜里那通电话,是他自己拨出去的,整个东京,那一刻最适合接这个电话的人就是他。
他想起那阵沉默。十一点半,被电话叫醒的人,听完三个数,沉默了更长的一阵,然后说出了那个序列的名字。他当时把那阵沉默读成思考。今夜他读得出那阵沉默的时长:够决定给多少,不多不少,一个名字,够他自己走完剩下的路。
六月末那句"机器看着呢",他今夜先没有翻开。
挂上来的东西,这四个月里攒下的,今夜一件一件自己走回来。
白川案白板的笔迹。行距太平,长横的起收笔,书写者站在离板面一步开外,正对整块板。板书,不是草稿,做给别人看的。他把这件事从「待解释」里取出来,和四月那枚结并排:祖母结,照着教具仿打,只在其中一个交叉上换了手,只留认得原件的人才看得出的差别。两起案子,两件物,中间隔着三个月,结构上是同一个动作:布置的人站在作品的对面。结是打给认得教具的人看的,白板是写给松枝看的。
这个观察他只对一个人完整讲过。六月底,地下一层,他讲完,那个人说,挂起来是对的,一个例外撑不起结论。今夜他重听这句话。每一次他接近真异常,递上搁置理由的,都是同一个人。
市场为叙事付的钱。那句话写在排除意见的同一个星期,他当时在心里替它签了个到。签收的每一句话,都是收据。
「接缝那半页您留着是对的。」他夸的是他的诚实。保的是他自己的投喂通道。
还有 165 见报的时机,恰好替那张纸铺好了模仿犯的读法。这一条他标了存疑,没有往下推。
那张纸。判词两个字,下等。他写的时候,以为在说别人。
他给那个人找的每一条路,都断在他自己四个月里亲手签过的字上。他把「希望它停在别处」这个愿望单独记下来,记在心里那页专门登记偏好的纸上,然后接着往下写。偏好登记过了,就不许再进推导。
还有共享名单上挂着的其余顾问。他一栏一栏查过去,其余顾问的协作范围都不经过数据集 D,碰这份数据的顾问职务只有数据顾问一个。这一类,实际上只有一个人。
白板上还剩一个名字。
早川渉。顾问。数据的清洗者,维护者,每一次会议列席栏上那个瘦长的签名。名单是他跑的,字段是他管的,每一次「数据侧核对过两轮,无矛盾项」是他说的。合法接触,这一条他比谁都充分,充分到四个月里没有任何一个人需要问他为什么碰数据,碰数据就是他的职务。
能力那一条,松枝一项一项验。知道 215 这个被压掉的旧值:原始件的副本是他洗的,日志是他写的,这一条他站在源头。看懂三键结构:名单的规则他六月十日就读到了,精化的条件他八月六日在会议室里听到了,每一次他都坐在数据最近的位子上。最小精确编辑:三百多条记录是他亲手清洗的,每个字段的校验规则是他亲手定的,哪一处能动、动多少不触发任何警报,这间屋子里,这个警视厅里,只有他一个人知道。
他想起六月末那个晚上,地下一层,他说出自己的编号不在名单上、担心有一天规则算到自己头上的时候,那个人答的是:数据每日校验,日程每周复核,变动留痕。机器看着呢。他当时把这句话收下了,收得很踏实,因为早川从来不用「我」字担保,他用流程担保。今夜他重新读这句话,一个字都没有批注。
合法接触。能力。两条都摆上去,操作上只剩这一个名字。
松枝放下笔,没有立刻去碰那个名字。他先把这套排除从头验了一遍,像验别人的证明那样验。排除法有一个死穴:名单不全。会不会有第五类人,他不知道的手。他把数据的流通过了一遍:五个系统进,早川清洗,清洗版进电子库,原始件封物证系统,打印件进卷宗。从四月到八月,这条链上每一个环节都有登记,每一个环节的手他都点过了。链外的人要改动电子库,得先过技术人员那道门,而技术人员那道门的出入记录是干净的。
名单之外,他给自己留了一个反方。排除法最危险的时刻,是答案来得太顺。他把小島摆上桌面,认认真真当了一回小島的辩护律师。
论数学,小島够格,那条曲线他看得懂,那条轨道他也算得出,也有本事在曲线的参数里藏一套给松枝准备的东西。论往来,筹备纪念讲座这两个月,他向研究室调过几次数据,走的都是正规申请,调阅单一张不缺。这两条立起来,小島看上去是成立的。松枝把它们立完,再一条一条亲手拆掉。调阅单他翻出来验了:小島经手的是旧档扫描件,出版年,讲义目录,历届名单,编号字段不在其中任何一张表里。四月清洗的那三天,会议室的登记上没有小島的名字,一天都没有。他又把小島从四月到八月的公开日程对了一遍,学会,讲义,答辩,系里的例会,每一天都有去处,没有一个日子对得上任何一次动手或布设的窗口。215 和 216 这一对数,从四月的会议室到八月的白板,他没有一条合法的来路。小島的名字,松枝也慢慢划掉了。
排除法结束的时候,屋子里很静。
排除法能给他的,到此为止。它给不出「是他」,它只给得出:操作上只剩这一个名字,他必须去验证他。
松枝在白板前站着,看着那个名字。四月,会议室,投影,黄色的离群行。早川把两个窗口并排调出来,说,转岗造成的,这种事很常见。他敲了几个键,215 变成了 216。他在日志里敲了一行字,保存。多停了一秒。
那一秒松枝当时看见了。他还替那一秒找了解释:认真的人都有这种习惯,他自己改完论文也会回看一遍。四个月后他坐在同一条逻辑的下游,重新看那一秒。那一秒是一个人在确认自己的作品落位。改动完成了,校验通过了,屋子里两个见证人,一个警察,一个数学家,两个人都点了头。策展在他眼皮底下进行,用的道具是他最信任的东西:流程。
他想起五月里那个星期三,他把「太干净」三个字写上白板角的那个晚上,他复查过数据的底座,他当时的结论是:这份底座是他经手过的案件材料里最结实的一块。现在那句话回来了,一个字都没有变,只是意思翻了个面。底座结实,因为造底座的人不允许它不结实。一份要被数学家信赖四个月的数据,不能有一处毛边。
松枝在抽屉里找出那份复印件。聘任记录,中村的课题文书里来的,四月份伊达登记过的那一份。受聘人:早川渉。所属栏写着一家量化基金的名字。联系人签名是中村,受聘人签名那一栏,字迹横平竖直。
他把这份记录从头到尾又读了一遍。中村签的。老师信任这个人的方式,是不去检查他。
松枝想起十几年前那间小讨论室。教室被占了那一次,十几个人抱着书站在走廊里,早川打了三个电话,跑了两栋楼,半小时之后把众人领进一间空会议室,白板笔多备了两支。中村到得晚,进门看见一切照常,什么也没问。他后来才明白,不问就是最大的信任。这条信任从讨论班铺到课题,从课题铺到警方的顾问聘任,每一环都是上一环的信誉作保。最后一环是他松枝作保的。伊达在电话里问,他说,人可靠。他把这条通道亲手接到了案子上,用的是他自己的名义。
聘任的合法性没有一处假。真的信任,真的手续,真的履历,签名横平竖直。他拿着这份记录,找不出一处可以向任何人指证的缝隙。它证明不了任何一桩罪,它只证明一件事:那个人站在所有门里面,而门是一扇一扇合法地开的。
他把聘任记录放回桌上,压平。
他把那叠工作记录又拿起来,翻到第一份。四月十一日。今晚他不是读内容,是读时间。那一份里有鉴识级的数字:纤维的拉伸形变,风速。这些数字什么时候进入顾问渠道的,他记得——渠道是他自己接通的,在那之后好些天。而这份记录的日期是第一天。写它的人,在第一天就站在数据流的最上游。排除法给他的是「只可能是他」。这一页给他的,是不需要排除的那一种。
窗外天黑了。他没有开灯,在黑暗里坐着,坐到天黑透了。三份重演稿在抽屉里,白板上的排除法在黑暗里站着。他需要明天把这一切说给伊达听,他需要想怎么说,说什么,说到哪一步。他的脑子却没有往明天走。它停在那个名字上。
手机在桌角亮了。例行推送,监测脚本,无变动。附件,顾问工作记录的本周存档。
过去这个星期,这样的存档他都是扫一眼就关掉。今天他点开了,从头读。
格式和过去二十几个星期一样。名单字段,林条目,特级执行中,监测脚本运行中。旧档清理的归档条目,调阅登记,连他自己这三天调取原始件的记录都在里面,时间,用途,归还,一项不缺。他一行一行往下读,读到最末。
最末一栏,不是字段。
他读了一遍。又读了一遍。二十几个星期,这份记录从头到尾都是字段、日期、次数,一行一行平得没有一处可停。今晚这两行不是字段。他把屏幕按灭,又按亮,停在那两行上。
他想起几天前的那份存档。那份他扫了一眼就关掉了。他把邮箱往回翻,调出那份存档,这一次从头读到尾。调阅登记,出库复核,留痕核对,然后在最末,他看见了那一行他几天前滑过去的字:他开始重算了。
他重算的第一天夜里,这句话就已经写好,发出。它随下一次推送到了他的邮箱里,躺了三天。他演算的每一步,对面都看见了。不是猜到的,是看着他做的,调阅记录一行一行,都是他自己签的。他要验证的那个名字,写这两行的人替他验完了。
他坐在黑暗里,握着手机,很久没有动。屏幕的光灭了,他也没有再按亮它。
那句话他记住了。他坐了半晌,然后起身,开了灯。
灯光下他先做活人的那一侧。监测脚本,林条目,特级执行中,无变动。小島条目,加密维持,无变动。活着的人都在格子里。
然后他收拾桌面。三份重演稿钉好。二十几份工作记录,他按日期排好,钉成一册,装订的时候数了数,从四月到今天,一份不少。聘任记录他拿起来,没有读,纸面朝下,扣在桌角。
他拿起手机。给伊达写:明天验完最后一道,之后我要当面问一个人。发送。
他把手机扣在桌上,屏幕朝下。像盖住一只眼睛。
〔顾问工作记录 · 22〕 本周数据侧整理。 名单字段无变动。林条目正常,特级执行中。原始库出库复核完毕,调阅记录三项已归档。清洗日志旧档封存。 监测脚本运行中。本周推送次数:0。 如果他重推到这里,他会看见我。 我等这一步,比等任何一笔成交都久。