来电显示是他自己。
陈序左手握着张惟安的旧手机,右手从口袋里取出自己的。两块屏幕亮度不同,震动的间隔却完全一致,像同一通电话在相隔十多年的机身里同时发生。
姑姑从厨房出来。“谁的电话?”
陈序没有回答。他按下接听。
最先传来的是车辆转向灯的声音。规律的嗒、嗒、嗒,间隔比正常慢一点。随后是儿童座椅的提示音、雨刷摩擦玻璃,以及许多孩子在车厢里说话。声音很近,却没有一句能听清。
一个电子女声说:“路线调整完成。预计风险下降百分之十七。”
四秒后,轮胎急促压过积水。有人喊停车。金属在远处撞上护栏,车厢里的声音被猛地推向一边。
通话没有断。
背景安静下来以后,陈序听见一个女人呼吸。她离收音口很近,像正躲在一扇门后。
“不要查我的名字。”她说。
声音有轻微的沙哑。张惟安立刻抬头。
“妈妈。”
女人继续说:“查他们对号码做了什么。”
“你是张慧宁?”陈序问。
另一端响起两次短促蜂鸣。一个男人的声音盖过她:“伤者身份确认。紧急联系人——”
电子女声回答:“空白。”
女人最后说:“不是空白。”
电话断了。
陈序的手机显示通话九秒。墙上时钟的秒针却走过四十七格。张惟安手里的旧手机已经黑屏,电量耗尽。
通话记录没有新增。来电页也恢复成空白,像刚才响过的只是一段从未写入系统的声音。
“那是她。”张惟安说。
姑姑看着黑掉的旧手机。她脸上短暂出现一种要承认什么的神情,随后转向陈序。“你事先放进去的录音?”
合理答案仍然来得很快。只是这一次,她的声音比答案慢了半拍。
陈序取出纸,写下女人的原话、车辆声音顺序和通话时长。他问张惟安:“你坐过这辆车?”
男孩点头。“上个星期五。妈妈叫我不要上,可是老师说系统已经换了安全路线。”
“你最后上了吗?”
“上了。后来车撞到东西,我的手这里青了。”他指着右臂内侧。皮肤上仍有一道快褪完的黄紫色压痕,形状像安全带边缘。
姑姑立刻说:“那是体育课撞的。学校没有通知校车事故。”
“因为没人接到通知。”陈序说。
他把旧手机装进证物袋。姑姑伸手阻止,张惟安却先把透明袋口压住。
“妈妈给他的。”男孩说。
这不是事实,却是选择。陈序没有纠正。
他离开8-05时是上午九点零一分。电梯停在八楼,门外显示屏却有一瞬亮着九。陈序走进去,回头看见张惟安仍站在门内。姑姑的手搭在孩子肩上,姿势像安抚,也像确保他不会再交出别的东西。
门合上以前,男孩说:“她知道你的号码。”
陈序当然知道。真正的问题是,一个已从所有系统中消失的女人,为什么在多年以前就把他的号码放进一部旧手机。
他的高权限仍被暂停。个人终端可以检索公开交通通报,却无法打开事故原始资料。过去七天,全市登记两宗校车事件:一宗倒车擦碰,一宗雨天撞上高架入口护栏。两宗都无人受伤。
第二宗发生在上星期五下午四点十三分。路线编号、学校区域与电话录音相符。乘客名单显示二十一人,张惟安标记为缺席。
陈序把男孩手臂的压痕画在纸上。缺席儿童不会留下安全带造成的瘀青。
他拨给周启明。
“你回来了?”周启明问。
“还没有。我要查一宗交通事故。”
“用你的权限。”
“停了。”
电话另一端安静两秒。“多久?”
“二十四小时。”
“为什么?”
“我在工单里写了一个不存在的人。”
“谁?”
陈序看着纸上的名字。“张慧宁。”
周启明把名字重复了一遍。然后他说:“发事故编号。”
“会留下你的访问记录。”
“所以你才先说明。”
陈序没有立刻发送。中心的交叉复核允许一名审计员为另一名暂停权限的同事承担临时责任。它原本用于医疗休假与设备故障。请求一旦建立,所有访问风险都会记在发起人的员工档案上。
“我可以等权限恢复。”陈序说。
“到明天,这宗事故也许会像昨晚的工单一样没有发生。”
周启明说得对。陈序仍停了三秒,才把编号传过去。
三秒不足以让选择变得干净。
十点二十六分,陈序回到天衡主塔。灰色胸卡只能让他进入一楼公共区。周启明在访客复核室等他,桌上放着一台临时终端和两杯已经凉下来的咖啡。
“我替你开十五分钟。”周启明说,“系统里,这宗案现在算我的。”
他把临时复核邀请推过来。责任人一栏是周启明,观察员才是陈序。页面底部有一行不显眼的说明:异常关联风险将承接至责任人。
“你可以撤回。”陈序说。
“你也可以少浪费一分钟。”
陈序点击接受。倒计时从十五分开始。
校车事故档案在第三秒打开。现场照片显示一辆白色小巴斜停在高架入口,左前轮陷进排水沟,右侧车身有一条长擦痕。护栏没有严重变形。官方结论是雨天低速失控,零伤者,车辆当天拖离。
乘客感应数据却记录二十二条安全带张力曲线。
名单只有二十一人。
多出的曲线来自第三排左侧,峰值与九岁儿童体重相符。撞击后的二十七秒,那条安全带被解开。车门记录显示同一时间没有开启。
“传感器重复。”周启明说。
“系统已经做过排重。”
事故结论页把第二十二条曲线归入“环境震动”,置信度百分之百。陈序展开原始值。该座位在出发后持续承重三十六分钟,不可能是一次震动。
他打开学校乘客名单的版本历史。张惟安最初登记上车,下午四点零五分被改为缺席。修改来源不是学校,而是城市路线服务。
四点零六分,校车收到新路径。系统放弃原本的主干道,把车辆引向高架入口。四点十三分,事故发生。
冰箱便条写着四点十分接惟安。
张慧宁至少提前三分钟知道一条尚未发生的路线会出问题。或者,她知道系统准备把车带到哪里。
陈序点击学生资料里的紧急联系人。页面看起来与学校所见相同:父亲、姑姑,第三栏空白。
他没有看显示文字,而是查看字段状态。
第三栏的资料长度是十一位。校验码有效,号码类型为移动电话,关系类型为母亲。只有显示值是空。
“不是缺失。”周启明说。
“是被遮住。”
普通删除会把字段状态变成不存在,也会留下资料保留原因。这个字段仍然占据位置、参与校验,只是在输出时被强制替换成空值。
陈序展开操作日志。下午四点零五分零九秒,一条高权限指令把显示值设为NULL。十一秒后,乘客名单把张惟安改成缺席。再过五十二秒,校车路径更新。
三项操作共用同一个账号:TH-TP-0507。
账号所属单位是天衡交通试点组。权限等级高于学校,也高于城市资料一致性中心的一般审计。
“一个交通试点为什么能改家庭关系?”周启明问。
陈序看着0507中间的5。它不在任何员工编号的标准位置,更像被插进原有序列的转接标记。
“因为他们不是在改家属。”他说,“他们在改出事以后,风险会找到谁。”
如果紧急联系人保持有效,事故会生成通知、通话、医院登记和监护人到场记录。每一项都会让张慧宁与孩子重新连接。把号码遮住,事故就只剩一辆无伤者的车。
页面右上角的倒计时还剩八分四十一秒。
周启明点击账号资料。员工目录弹出一张灰色头像、入职日期与岗位:路线完整性操作员。姓名栏正在载入。
陈序按下本地打印。
纸张刚从出口露出,页面刷新。
灰色头像消失。岗位、日期与所属团队依次变成短横线。账号编号最后变成“未分配”。
周启明立即退回员工目录,搜索TH-TP-0507。结果为零。
“刚才还在。”他说。
陈序拿起打印页。页面上保留了账号、岗位和团队,姓名位置是一块尚未冷却的空白。不是员工先离职、账号才被清除。操作完成以后,系统才把操作的人从组织里移走。
“你记得头像吗?”陈序问。
“男,四十岁左右,戴眼镜。”
“衣服?”
周启明闭了一下眼。“我刚才看见了吗?”
记忆已经从边缘开始失去细节。
陈序在纸上写:男,约四十,眼镜。周启明在旁边签名。两人的笔迹第一次共同证明一个系统已不承认的人。
倒计时剩六分。
“把紧急联系人导出来。”周启明说。
“显示层只有空值。”
“原始层呢?”
陈序尝试调用加密封包。权限拒绝。即使周启明作为责任人,也只能确认号码存在,不能读出内容。申请更高权限至少需要两名主管批准。
旧手机在证物袋里。屏幕已经黑了,透明壳里的水皱纸片却露出一个角。陈序把纸抽出来。上面不是留言,而是一串手写校验码。
前八位与紧急联系人字段的加密摘要相同,最后三位被水泡掉。
“她留下的不是号码。”陈序说,“是旧版本的钥匙。”
他在版本历史中输入八位校验码。系统自动补出三个可能结果,全部标记失效。陈序没有选置信度最高的第一项,而是选择时间最早、排序最后的一项。
临时终端发出警告:旧资料可能与当前现实不一致。
“继续吗?”周启明问。
倒计时四分十二秒。继续会把这次越权尝试记在周启明名下。陈序的手停在确认键上。
他想起自己在学校说过,选择只决定代价先落在谁身上。现在代价不在他自己的权限里。
“我来承担不了这条记录。”他说。
周启明看着他。“但你可以决定要不要用我。”
这句话没有让事情变得公平。
陈序按下确认。
终端切换到事故前一秒的缓存。所有字段先变成乱码,随后逐列恢复。紧急联系人第三栏闪出一串完整号码。
陈序只看清最后四位。
页面维持不到一秒,便重新变成空白。倒计时同时跳掉整整一分钟。系统弹出提示:无效关系已校正。
“你看见了吗?”周启明问。
陈序没有回答。他拿出自己的手机,打开个人资料,滑到号码末端。
张惟安那名被置空的紧急联系人,最后四位与陈序完全相同。