商栖岐真正以监察官身份走进专案组之前,先在西郊养护站犯了一个很像他的错。
后台第三次拒绝导出运行日志时,他看了一眼证书尾码,便断定有人克隆了监察权限。理由很充分:调用发生在昨夜,他本人当时站在北环站的旧管线井里;证书链干净得反常,连一次失败握手都没有;真正的内部人员不会把痕迹留得这么整齐。
“拔旧维护端。”他对养护站技术员说,“克隆证书要靠它回传。”
那名二十出头的维护员没有立刻动。他指着风机控制页右下角一枚几乎褪色的图标:“这个端口还挂着东侧商铺的压差校准。拔了以后,风机会回默认值。”
商栖岐扫了一眼:“默认值撑得住八分钟。”
维护员说:“上个月换过滤芯,默认值没重算。”
商栖岐已经伸手断开线路。
风机没有停,却在四十秒后把副厅残留空气推向商铺后门。现场警报随即响起,两家仍在等复检的店铺被再次清空,冷藏柜断电,药膳铺老板抱着一箱化开的半成品站在雨棚下骂人。没有人二次暴露,但养护站为这个判断多封了四十七分钟。
商栖岐没回嘴。他蹲回接口前,调出断线前最后一段本地缓存。缓存里没有克隆工具,只有一条由他三年前写过的诊断脚本留下的兼容桥。那时旧稳定云端正在迁移,脚本为避免监察终端掉线,允许系统在证书持有人离线时借用一段只读权限。后来版本更新了,桥没有被撤销,还被扩成了可组合的维护入口。
年轻维护员站在他身后,问:“还算克隆吗?”
“先不算。”商栖岐把刚才的判断从记录页上划掉,没撕纸,“算我把自己熟悉的东西当成了别人做的。”
这句话比他平日的玩笑难听,也更准确。
秦知月将监察名录投上屏幕。运行版证书链的持有人一栏清楚写着商栖岐的名字;断线造成的风门偏移、店铺损失和脚本兼容桥也被放在同一页。没有哪一项能替另一项消失。
商栖岐这才从风衣内袋取出正式证件,放到透明证物台中央。证件旁边还有离线终端、两枚只读盘和一张被雨水洇过的权限清单。半杯冷咖啡留在门外,杯盖上还压着药膳铺老板要求赔偿的号码牌。
“先说明。”他说,“这项权限挂在我名下,不等于每次调用都由我发起。但兼容桥是我写的,身份也是我拖到现在才披露。两件事都别替我合并成一句配合调查。”
陆衡砚没有接过证件。他请独立保管员逐项登记,让商栖岐站到镜头能完整拍到的位置。终端、袖口、随身存储和那张被划改的判断记录一起进入检查;店铺停业时间则由运营方另立损失单,不塞进技术附件里充作一句“过渡成本”。
闻溯安看着他:“你早可以亮这张证。”
“早亮,管制署会把我当内部代表;不亮,你们肯让我先拆设备。”
“所以你替所有人决定了什么时候该知道,也替维护员决定了什么时候该闭嘴。”
商栖岐看了一眼还站在风机旁的年轻人。刚才若对方更怕他一点,那句滤芯没重算就不会被说第二遍。
“是。”他把清单翻到背面,补上两行:未及时披露正式权限;在现场异议未复核前执行断线。“第二行造成的损失,先从我的现场判断里查,不要等模型替我分摊。”
闻溯安没有说这就算坦白,只让记录员把披露、异议、断线和风门偏移精确到分钟。商栖岐第一次站进专案组,不是因为他终于拿出了一张更高权限的证件,而是因为那张证件旁边摆着一个已经造成后果的错误。
管制署旧档合规库昨夜出现过一次异常外联。三号阅档终端在二十二点零七分调用S-07范式,签名使用的是陆衡砚六年前的旧密钥,读取证书却来自商栖岐名下的监察权限。两个人的名字被系统缝在同一条记录里,像故意准备好的责任链。
陆衡砚先提出回避签名真实性判断。商栖岐也没有亲自验证自己的证书,而是把原始哈希、审批路径和设备指纹交给另一名审计员。两名最懂这条链的人都被限制在解释事实,不能决定结论。
“麻烦。”秦知月看着两套回避表。
“麻烦才有用。”闻溯安说,“方便的结论已经够多了。”
第一轮比对很快证明,旧密钥没有完整启动。调用者只借用了其中一项“临时安全模型读取”,又借商栖岐的监察证书绕过二次复核。两份权限都是真的,组合起来的行为却没有任何一个真实持有人同意。
商栖岐盯着调用链,脸上的疲倦一点点收紧:“有人把权限拆成零件。每个人只背一小段,最后没人承认自己开过门。”
闻溯安问:“这扇门通向哪里?”
商栖岐没有直接给名字。他打开离线终端,只展示昨夜取得的目录层级:南港旧案、沉湾附属医疗站、□□适配训练库、稳定资源评估平台。目录最深处有一项灰色标记,标题是“运行版行为优先级”。
“公开白皮书里没有这一层。”他说,“公开版只给建议,运行版会改变工作人员先看见什么、后看见什么。它不需要替人按按钮,只要把一个选项放大,把另一个选项藏到第四页。”
秦知月问能不能复制完整目录。
“能。”商栖岐说,“里面也有儿童声纹、医疗记录和未公开属性推断。全拷最快,后果也最干净——我们拿到一切,他们失去一切边界。”
闻溯安把终端转回自己面前:“只取规则、调用账户和受影响终端编号。个人内容留在原库,由独立见证人核验存在,不带走。”
“这样可能少一条能定罪的证词。”
“那也不是你替他们交出来的理由。”
商栖岐沉默片刻,重新划定读取范围。他没有表现出被说服的轻松,只在申请里写明风险:证据可能不完整,后续需要本人逐项授权。取证因此从十分钟延长到一个小时,养护站的技术组不得不继续人工维持风机和消防联动。
人工值守很快出错。一个新来的维护员把副厅风门编号抄反,残留空气被推向商铺后门。现场没有再次暴露,但两家店被迫多停业四十分钟。商栖岐没有把错误归为“过渡成本”,而是把抄写人、发现时间和更正过程写进日志。
“你以前不这么慢。”陆衡砚说。
“以前我觉得慢就是无能。”商栖岐盯着那张更正单,“后来发现,太快的系统最擅长把人的犹豫删掉。”
运行版镜像进入离线终端后,蓝色指示灯亮了一次。屏幕没有执行模型,只展开字段索引:拒绝推荐记录、固定伴侣登记、公益药物使用、关系支持来源。每一项都与当前身体指标并列,像系统早已把生活经历当成另一套生理数据。
索引末端还有一个输出字段:公共监护建议。白苓问“公共监护”具体指谁,镜像没有给人名,只列出福利、医疗和婚恋平台三个可调用来源。系统不需要知道当事人信任谁,只需要找到一个能替流程继续签字的节点。
商栖岐提出用虚拟档案验证这些字段怎样改变结果。证据保管员没有立即同意:运行镜像仍可能连接附近终端,任何测试都必须先完成隔离,且不得导入真实伤者数据。
技术组于是当场写测试方案。三组档案只能使用虚构编号,生命体征保持一致,每次只改一个非医疗字段;输出分成观察结果与解释假设两栏;所有公共安抚终端先转入只读,模型不得写回训练库。白苓还要求出现异常时由医疗组而非技术员决定是否中止。
方案比直接点下运行多花了二十七分钟。商栖岐没有申请跳过。他在操作人一栏签名,旁边另留独立复核位。真正的测试被安排在证据托管完成之后,避免一边抢救日志、一边制造新的无法追责记录。
测试方案保存时,终端弹出黄色警告:非标准核验路径。秦知月看着那行字:“它连别人准备怎么怀疑它,都要先标记。”
商栖岐点开警告来源。提示并非本地程序生成,而是稳定资源评估平台在远端推送。平台已经知道他们正在测试运行版。
屏幕右上角出现自检倒计时:四分三十秒。
陆衡砚问:“断网?”
“现在断,只能留下结果,看不到它怎么改写结果。”商栖岐说,“继续跑,它会调用附近的公共安抚终端补齐训练环境。”
养护站外还有等待复诊的家庭和维持药品窗口的工作人员。继续意味着风险,立即关停意味着证据再次被包装成版本差异。没有哪一项是没有代价的正确答案。
白苓先提出把公共终端转入只读模式,由医疗组改用纸本叫号。纸本会拖慢问诊,也容易出现姓名错位。她要求第二人复核,并在大厅公开延迟原因。秦知月同意后,闻溯安才选择让自检继续九十秒,只观察调用,不允许模型写回任何个人档案。
商栖岐把自己的操作界面投到墙上。每一次点击、每一条命令、每一次犹豫都在所有见证人眼前。自检启动后,□□接口果然请求连接三处终端:公益车停车库、儿童体验区、保险局数据中心。
请求没有直接控制设备,只发送一段风险提示模板。模板会把“关闭可能扩大暴露”置顶,把“继续运行可能送达污染”折叠到详情页。北环站设备主管此前看到的,正是这一版本。
“它不逼人犯错。”闻溯安说,“它只让错误看起来更像负责。”
商栖岐没有接话。他正在追请求使用的维护证书。证书尾号并非他的个人权限,而是一张没有登记持有人的共享证书:R-A11。使用范围覆盖保险、医疗、宿舍和关系推荐,像一把没有主人、却能开遍城市的总钥匙。
共享证书出现后,他名下的监察权限开始被远程降级。先从正式监察变成协查,再变成外部访客,最后弹出“身份可信度待复核”。
权限降级还带来一个更现实的问题:刚取得的运行版记录可能无法进入次日听证。系统要求材料必须由“当前有效监察人”提交,商栖岐一旦变成外部访客,他之前的签名就会被标记为来源存疑。
秦知月建议由另一名监察官重新导出。商栖岐摇头:“重新导出只会拿到刷新后的版本。原来的变化过程只在摄像机和本地缓存里。”
养护站的设备主管一直站在门边。他参与了风机停运,也亲眼看见风险提示怎样把后果折叠起来,却迟迟没有进入证人名单。听见材料可能失效,他主动说自己可以签名,随即又提出条件:不公开家庭住址,不把他写成雾穹员工,也不允许单位以配合调查为由查看完整询问记录。
他不是英雄。刚才风机该不该停,他犹豫了九分钟;两家店铺的损失也与他的延误有关。可正因为如此,他的证言比一份漂亮的技术结论更难被替代。他可以说明自己看见了什么、为什么选错、系统把哪一条风险放到了最前面。
闻溯安没有让他为全部模型作证,只把范围压到三件事:屏幕显示内容、手动选择过程、停机后的实际后果。设备主管逐项确认,删掉一句“系统诱导我”,改成“我只在详情页看到另一种后果”。那句更弱,却是他能亲自证明的事实。
正式听证平台仍拒绝接收,因为证人所在单位被列为项目相关方。秦知月改走纸质紧急通道,由两名独立人员携带原始摄像卡和签名记录送往听证处。平台上传只作为索引,不作为唯一原件。送件车离开后,系统状态仍显示“等待合规来源”,像它从未承认有人已经把证据拿走。
商栖岐看着那行灰字:“以前我会想办法把状态变绿。”
“现在呢?”白苓问。
“现在先记住它为什么不肯变绿。”
设备主管签完后没有立即离开。他问停运损失是否都会算到自己头上。陆衡砚没有替机构许诺免责,只说明责任需要区分:错误判断、信息隐藏和最终损失分别核验。答案不够安慰人,却让他知道作证并不等于自动洗清,也不等于被挑成唯一替罪者。
商铺后门的人工排风还在发出断续噪声。冷藏柜重新通电时,一家店损失了整箱药膳材料,另一家店的老板要求在听证记录里保留赔偿申请。秦知月让运营方现场登记,没有用“大局需要”把账抹掉。调查越接近系统核心,越不能把沿路普通人的代价写成背景。
纸质送件回执在四十分钟后传回。听证处接受材料进入临时证据目录,但注明商栖岐不得作为唯一技术解释人。商栖岐在限制条款下签名,没有要求删除。他正式进入调查,也正式失去独占解释自己所带证据的资格。
离线终端里还剩一块未解密缓存。缓存只保存调用时间和路径,不含正文,却必须用商栖岐仍有效的监察证书才能打开。权限降级已经开始,窗口最多剩三分钟。有人建议先由他单独解锁,再把结果交给独立审计员;这样最快,也最可能保住完整链路。
商栖岐没有碰解锁键。他把缓存状态投到墙上,提出把证书拆成三段授权:本人只负责证明证书当前有效,医院保管员确认缓存未被替换,外部审计员决定读取范围。系统不支持三段授权,只接受单一持有人。
“那就不开。”他说。
技术组有人急了:“窗口过了,缓存可能再也解不出来。”
“也可能只是我们以后要多证明一道。”商栖岐把证件推到封存盒里,“如果证据只能靠我一个人越过边界才能成立,它和这套系统没有本质区别。”
三分钟结束,缓存状态从可解锁变成冻结。老式摄像机完整拍下倒计时、证书编号和他没有执行的命令。独立审计员随后提取缓存外层校验值,证明数据仍存在,但内容至少要等四十八小时后的司法拆分令。听证材料因此少了一段即时解释,也多了一项可复核的限制。
闻溯安在记录边上写下:证据延迟,不等于证据灭失;拒绝单人解锁,不得归类为拒绝配合。商栖岐看见后没有道谢,只把自己的利益冲突表翻到下一页。那是他进组后第一次主动放弃一项只有自己能使用的便利。
冻结同时切断了他查看弟弟旧资源表原件的快捷入口。商栖岐没有申请例外,只把需要核验的页码交给保管员,等同一套拆分令。私人理由没有替他打开侧门。
闻溯安把回执折进证物夹,没有因为“临时接受”四个字放松。临时意味着听证处仍可在明早以前要求补件,也意味着设备主管今晚可能再次受到单位施压。保护组因此没有把人送回原岗位,而是先询问他愿意去哪里。设备主管选择回家陪孩子,只接受夜间紧急联络;这一选择被写在证人安排的第一行,而不是附注。
秦知月让他停止操作。
商栖岐立即松开键盘,退到桌外。他没有抢在权限消失前多拷一份,也没有要求保留技术控制。远程删除开始后,由独立审计员接手镜像,老式摄像机对准屏幕,记录每一行日志怎样变灰。
“系统在删你。”白苓说。
“它在删一个用完的权限。”商栖岐看着自己的名字消失,“人只是顺带。”
闻溯安问:“你现在交这些,是因为终于怕轮到自己?”
“有一部分。”他承认,“另一部分更早。”
商栖岐从只读盘里调出沉湾旧资源表。七年前,□□适配还不叫算法,只是一套安抚资源分配模型。它根据属性、旧病历、适配率和风险评分决定谁先得到医疗支持。低敏Beta、无固定关系者和被标记为不配合的人,被系统排到最后。
表格里有一个与商栖岐同姓的名字。备注栏写:情绪稳定,无需优先干预。
“我弟弟。”他说,“他在沉湾排到最后。后来报告说不是资源不足,是他不需要。”
室内没人用这段经历替他洗清权限责任。私人痛苦不能证明运行版被谁调用,也不能让他未登记的临时操作自动合法。商栖岐自己先把这一点写进说明。
“我不拿他当证据。”他说,“我只承认,是这件事让我开始查。”
闻溯安看着那张旧资源表:“痛苦不是证据。但隐瞒痛苦,会让别人误以为你没有立场。”
商栖岐把利益冲突栏勾成“有”,并同意不参与沉湾旧案责任裁定。他仍可解释技术路径,却不能决定谁该承担什么后果。
自检倒计时剩下最后三十秒时,离线镜像里跳出一个内部简称:BL-Assist。
白苓立即翻开旧培训资料。□□辅助只是后来对外使用的名字,七年前的全称是“行为锁定辅助”。它允许维护人员单独借用“延长观察”权限,不需要获得完整门禁控制。患者试图离开时,系统便能把动作写成病情波动,把拒绝写成需要继续安抚。
对应的维修卡早已注销,却在过去半年被使用过三次:公益车停车库、儿童体验区、保险局数据中心。每次不超过六分钟,恰好避开常规巡检。
陆衡砚提出同时通知三处单位。商栖岐提醒,过早通知可能让复制卡切断日志;延后又会让旧设备继续影响患者。争论没有被一句命令结束。白苓先确认医院里还有三台同型号输注泵依赖旧门禁网络,消防组则评估人工接管需要十一分钟。
最终顺序被写得很具体:先停用同型号腕带,保证输注泵独立运行;再由消防接管门禁;最后向保险局发数据保全令。流程慢了十一分钟,却没有让三名患者因系统断开而中止治疗。
□□接口在倒计时归零前完成最后一次刷新。裂屏由蓝转白,行为锁定辅助的调用链停在一间已经封存的安抚室。
那间房二十分钟前刚被一张注销维修卡打开。
耗电曲线正在上升。
商栖岐的正式证件仍留在证物台上。他没有伸手取回,只把监察官身份冻结申请签完,换回那张权限更低的临时协查证。
闻溯安看了眼协查证:“现在才算进组?”
商栖岐扣好笔帽:“现在才算所有人都知道我带着什么进来。”
安抚室方向传来设备启动的低鸣。几个人同时起身,没有人把他的正式加入当成胜利。商栖岐只是终于站到屏幕同一侧,也站进了屏幕会反查的范围。
作者有话说
显示所有文的作话
第25章 商栖岐登场