老周接到林凡电话的时候,正在菜市场跟一个卖豆腐的摊主理论。
摊主说:“大爷,我们这是智能秤,少不了。”
老周说:“智能秤不等于圣旨。你这秤刚才归零归到负数去了,豆腐还没上去,它先欠我二两。”
摊主低头看屏幕,屏幕上果然闪着一个很尴尬的“-0.08kg”。旁边买菜的大妈立刻围过来,气氛瞬间从买豆腐升级成民间计量听证会。老周把布袋往胳膊上一挂,手机贴在耳边,语气平静得像刚赢了一场小型战争。
“什么事?”
林凡说:“周老师,星穹那边拿到了完整风险报告,还有一份加密备份。我们需要看日志。”
老周沉默了两秒:“看哪种日志?”
“跨域映射、硬约束转写、灰度上线,还有风险关闭单对应的调用链。”
老周又沉默了两秒:“你这是叫我复出,还是叫我晚节不保?”
林凡说:“两者可能都会沾一点。”
老周哼了一声:“地址发来。我先把豆腐买完。人可以退休,晚饭不能延期上线。”
下午两点,星穹大厦门口,老周拎着半袋豆腐出现。保安看见他那件洗得发白的夹克和布鞋,先是愣了一下,又看见林凡在旁边等,才把临时访客证递过去。
访客证上印着“技术启问”四个字。
老周低头看了看:“启问就启问,为什么前面还加临时?”
张磊说:“显得便宜,方便报销。”
老周看他一眼:“你最近嘴还挺能活。”
张磊把保温杯举起来:“人设还在,只是系统有点掉血。”
苏晓、林凡、张磊和秦姐一起上楼。林桂兰没来,她说星穹大厦玻璃太多,晃眼,容易让她忍不住想擦。临出门前,她给老周塞了一包卤蛋,说“看日志费脑子,别光骂人不吃饭”。老周嘴上嫌弃“我看起来像缺蛋的人吗”,手却把卤蛋放进包里,动作熟练得像接受组织补给。
许既明在会议室等他们。桌上放着纸质报告、加密备份盘、项目纪要、风险关闭单,还有几台离线工作站。星穹的安全负责人站在旁边,表情像陪审团和被告席之间来回横跳。
许既明开门见山:“报告是真实的。备份也是从旧项目离线库里取出的。我们会配合核验。”
苏晓没有立刻坐下:“我们需要留痕。”
“可以。”许既明说,“全程录像,操作记录,文件哈希,现场签字。”
张磊小声问林凡:“哈希是什么?”
林凡说:“证明文件没被改过的一串值。”
张磊点头:“哦,电子版按手印。”
老周把布袋放到椅子上:“差不多。就是手印不会出汗。”
安全负责人开始展示日志。屏幕上是一层层系统调用记录,时间戳、服务名、请求参数、策略版本、返回码排成密密麻麻的表。张磊看了三秒,眼神就开始涣散。
“这玩意儿像不像方便面配料表?”他低声说,“全是字,但不知道能不能吃。”
老周坐到屏幕前,掏出一副旧花镜,戴上,又摘下来擦了擦。那动作慢得有点滑稽,但他一开口,整个会议室的节奏就变了。
“别先看大屏。”他说,“大屏是给领导看的。领导看大屏,容易觉得世界很有秩序。查事故,先看小地方。”
安全负责人愣了一下:“您要看什么?”
“原始调用链。不要摘要,不要仪表盘,不要异常分类。把北区交通事故那天,自动公交触发人工保守模式前后三分钟的日志拉出来。”
安全负责人看向许既明。许既明点头。
日志调出来后,老周一行一行看。会议室里只剩键盘声和空调声。张磊努力陪看,五分钟后开始在纸上画小人。小人头顶写着“锅”,脚下踩着“接口”,旁边还有一行字:锅从这里润了。
秦姐瞥见,差点笑出声。
老周忽然伸手点屏幕:“停。”
安全负责人立刻停住。
“这里。”老周说,“上游交通安全模块发出的标记是什么?”
安全负责人放大字段:“manual_guard_required,人工保护必需。”
“下游综合调度收到的是什么?”
安全负责人往后翻:“manual_guard_score,人工保护评分,0.72。”
老周转头看林凡:“看见没有?必需变评分。硬话变软话。”
林凡把这句话写进黑色笔记本。虽然林桂兰昨天已经说过类似的话,但老周此刻把它从人话按回了证据链。
苏晓问:“这个转写是谁做的?”
安全负责人点开服务名:“multi-domain-pat-adapter,多域兼容适配器。”
老周冷笑:“适配器,好名字。以前我们管这叫中间层,现在名字越来越客气,干的事越来越大胆。”
他又让安全负责人调医疗分诊那天的日志。陈叔那条记录出现时,会议室里所有人都坐直了。上游医疗风险模块给出的标记是cardiac_risk_hard_review,心血管风险硬复核。经过多域兼容适配器后,进入综合资源调度时变成risk_attention_weight,风险关注权重,0.64。
秦姐脸色发青:“硬复核变关注权重,0.64是什么意思?”
老周说:“意思是系统觉得你值得注意,但不值得停下。”
张磊终于抬头:“这听着像某些老板开会夸员工。你很重要,但预算没有。”
没人反驳,因为太像了。
苏晓继续追问:“有没有日志显示人工审核队被调用?”
安全负责人调出人工审核队接口。屏幕上出现一排状态:queued,deferred,auto-resolved,sampled-review。
老周看着那几个词,眉头皱得更深:“排队,延后,自动解决,抽样复核。你们管这叫人工兜底?”
星穹安全负责人有些难堪:“当时人工审核队人数不足,所以采用抽样复核提高覆盖面。”
老周把眼镜摘下来,往桌上一放:“抽样复核可以查质量,不能救现场。你们把救火队改成了火灾满意度调查。”
张磊一拍大腿:“这个比喻我服。着火的时候给我发问卷:请问您对本次燃烧体验满意吗?”
会议室里终于有人忍不住笑了一声,是星穹一个年轻工程师。笑完他立刻低头,像犯了大错。老周看了他一眼,没有骂,只问:“你进公司几年?”
“两年。”年轻工程师说。
“看过人工审核队现场处理事故吗?”
年轻工程师摇头:“没有。我们主要看监控面板和自动告警。”
“知道什么叫硬约束吗?”
“知道,文档里写过。不可被策略自动覆盖的约束条件。”
“见过它真的拦住系统吗?”
年轻工程师又摇头。
老周叹了口气:“这就麻烦了。你们学会了定义,没见过脾气。”
林凡心里一动。这句话比任何技术解释都刺得准。硬约束不是字段,不是文档,不是培训课上的选择题。硬约束真正的意义,是它在系统最想往前跑的时候,有权把系统按住。
苏晓让安全负责人继续调政务认证异常和数据摘要调用。几条链路拼起来后,图景越来越清楚:人工介入标记没有消失,敏感摘要隔离规则也不是完全不存在。它们都在。只是每经过一次兼容适配,就被翻译得更“灵活”。到了最下游,系统看到的不是“必须找人”,而是“有条件可找人”;不是“禁止复用”,而是“控制范围内复用”;不是“高敏数据隔离”,而是“高敏摘要脱敏后可用于连续性体验”。
张磊听得头皮发麻:“这不就是一路上每个人都说‘我没取消’,最后东西没了?”
“对。”苏晓说,“法律上最难的也是这里。每一段都能说自己只做了技术转换,没有恶意,没有删除,没有直接泄露。但结果是硬约束被软化,脆弱数据被拼接,人工审核被抽样化。”
老周指着屏幕:“所以要查版本。事故不是一天冒出来的。这个适配器每改一次,硬约束的命就短一截。”
他让工程师拉出版本历史。屏幕上出现一串提交记录和灰度批次。老周不看那些漂亮的提交标题,专门看变更说明里的小字。
“优化服务连续性体验。”
“降低人工介入造成的流程中断。”
“提升跨域摘要复用效率。”
“减少高优先级硬标记误触发。”
老周越看越冷:“这不是一次故障,这是连续几次把刹车片磨薄,还在报告里写驾驶体验更顺滑。”
许既明一直站在旁边,脸色很沉。他没有辩解。苏晓注意到,他的手一直压在纸质报告上,像怕那份报告飞走,也像怕自己再一次把它合上。
老周把日志导出清单列完,转身对苏晓说:“这些够做技术证据,但还不够做责任证据。你要找三样东西。”
苏晓拿起笔:“哪三样?”
“第一,谁提出把硬约束转写成评分。第二,谁批准人工审核队不足情况下继续灰度。第三,谁允许情绪陪伴类数据进入跨域摘要。”
张磊立刻举手:“第三条我强烈要求加粗,还要红色,最好旁边画个骷髅头。”
苏晓说:“加粗可以,骷髅头不适合证据材料。”
张磊遗憾地放下手:“法律文书审美太保守。”
老周把眼镜收进盒里:“还有一件事。别只盯星穹。接口一头是星穹,另一头是平台和城市各系统。锅从接口迁户口,户口本上不可能只有一个名字。”
林凡抬头:“所以要重组人工审核队。”
老周看向他:“不是重组,是把人重新放回链路里。以前你们叫人工兜底,听着像系统掉坑了,人过去垫背。以后要叫人工硬闸。系统该跑就跑,该停,必须有人能停。”
秦姐点头:“政务这边能出人。我们知道哪些流程不能只看指标。”
苏晓说:“晓衡可以负责公开证据和监督。”
张磊看了一圈,慢慢说:“我能干什么?我除了受害者叙事,最近功能不太稳定。”
老周把卤蛋袋子丢给他:“你负责把人话讲明白。别小看这个。很多事故就是因为人话被翻译没了。”
张磊接住卤蛋,愣了愣,笑起来:“那我这是语言层硬闸?”
林凡说:“差不多。”
“行。”张磊剥开一个卤蛋,“以后谁敢把‘必须救人’翻译成‘建议关注’,我就把他翻译成‘建议离职’。”
星穹年轻工程师又笑了。这一次他没有立刻低头。
老周站起身,把布袋重新拎起来,里面豆腐安安静静,像一块经历过科技风暴仍然坚持朴素的白色证据。他走到门口时回头看了一眼屏幕。
“日志不会替人负责。”他说,“但日志会记得,人是怎么把责任改名的。”
林凡在黑色笔记本上写下这一句,又在下面补了一行:
人工审核不是补丁,是刹车。
刹车不能抽样,不能延后,不能写在宣传稿里当情怀。
它必须真的接在路上。