程载春在复核开始前,主动交出两样没有被封存的东西。
一枚随身校时片,一本只记个人试算的旧册。
校时片不在公共设备清单里,旧册也没有用于正式验收。他若不说,事故席未必立刻知道。可昨夜排序轮经过他的手,任何可能解释时标的材料都不该由他自己判断有无关系。
两样东西入匣后,他才坐到证人席。
事故席先问设计目标。机械排序轮接收十个节点的类别、期限、当前状态与随机号,再把它们转换成旧衡灯系统能读取的顺序。白班每三息重排,夜班因旧系统把一刻压成更短的内部标度,转换公式会更换。
“谁写的夜班公式?”
“我。”
“是否验过十节点同时交接?”
“只做过单点和空载,没有做过十个匿名槽同时压缩。”
“为何仍留待机?”
程载春把自己写过的风险栏摆出来:“我标了待验,建议留三处。调度席认为人力已经退出、设备空载,十处都留也没有实际输出。我没有坚持停用。”
他的责任没有被一句“我提醒过”抹掉。设计者知道未验,却仍让设备具备进入待机的能力;调度席看见提醒后作出继续决定;旧系统又在夜班执行了没有公开的同级压缩。三段都要查。
阵工将排序轮拆成七层。
拆解前先称重、显纹和拓印,七层连接销各自编号。程载春只能隔着只读屏指出哪个部件负责什么,不能伸手纠正摆放。若他发现记录错误,需提出异议,由两名独立阵工共同改。
第一处异议发生得很快。记录员把第六层写成“生成随机号”,程载春指出它只验证随机号,真正生成在个人端与设备端。两字差别会决定故障归谁。复核后修正,原错误仍留痕,不假装从未写错。
第七层回传片上有一道过热色。长垣阵工认为是昨夜全灭造成,衡灯院技师说可能早已存在。材料记录显示回传片三日前新换,过热只可能发生在试验期间,却仍无法单凭颜色确认子时那一息。证据只缩小时间,不替大家讲完故事。
前六层无损。水轮、储能、聚光与人力空槽进入时,类别和状态都清楚。第七层连接旧主轮,十个独立随机号在子时那一息被取整为同一个数。机械轮没有删除信息,却接受了旧系统回传的同级值,再把它当成有效确认。
“所以是旧系统改的?”有人问。
“还不能确定。”独立阵工答,“也可能是转换公式在压缩时丢了差。”
要分清两种可能,必须离开主轮复现。
复现装置搭在一间无公共接口的空仓。十个节点全部是假负荷,哪怕再次全灭也不会影响居民。此前为了赶首轮夜班,他们没有搭这间空仓;省下的半日和十时票,如今换来一百三十时票损失。这笔差额被写进以后所有并网预算,测试环境不再列为可删的准备项。
三只鸣片也各有误差。铜片响应最快,竹片容易受湿度,石英片稳定却慢半息。程载春提出将三者时间换到同一基准,周砚秋要求保留原声,防止换算公式再次吃掉差别。最后屏上同时展示原时与换算时,谁都能复核。
程载春提出用三只鸣片。一只记录输入原时标,一只记录机械轮输出,一只放在旧系统回传端。三只材料不同,声音频率也不同,哪一段先改变,听得见。
他不能亲手装。陆小满在旁听区看着两名独立阵工照他的公开图安装,第三名长垣阵工复核。所有人都可能犯错,因此每一步由居民观察员随机抽一人复述,不靠“专业的人都懂”略过。
第一次空载,三只鸣片依次发出高、中、低三声,顺序正常。
第二次加入十个不同随机号,前两只仍保持间隔,第三只在子时压缩点骤然发出一声重叠的闷响。回传以后,第二只也跟着重叠。
错误先发生在旧系统回传,机械轮随后接受。
程载春闭了一下眼。不是他最害怕的公式算错,却也不意味着他无责。他本可以把回传同级当成异常拒绝,而不是照单全收。
第三次复现切断旧回传,机械轮按自己的公式运行,十个号没有归同。第四次恢复回传但增加差值保护,只要十个不同输入收到同一回传,设备便停止交接并转备用库,不再全灭。
第五次故意让两只水轮真的同级,差值保护不应把合法相同误认成异常。机械轮检查的不只是数值是否一样,还看输入是否本就同级。两只水轮正常通过,另外八个保持各自顺序。
第六次模拟一个节点断联。旧程序会重算全部十槽,新保护只移除断联者,其余顺序保持。第七次模拟人力源到期,空槽直接退出,不进入夜班待机。七次结果一起证明,修正不是简单禁止相同数字,而是要求回传能解释自己为何相同。
岑照微看完旧系统底层说明,确认夜班压缩原本服务于实名优先序。姓名等级相同的人会由机构权重继续细分,匿名槽没有机构权重,便被压成同级。过去这个缺陷很少暴露,因为个人姓名本身替系统提供了排序。
“能不能给设备固定权重?”居民席问。
“可以,但固定久了,某一处水轮或某一片街区会永远先承担。”程载春答,“需要随机错峰,同时保留公共硬线与历史补偿。”
随机不是随便。
医舱、水路和夜间安全灯始终先于高耗服务;同一层级内,水轮、储能、聚光和居民降载按当前成本、可用时长、过去承担次数轮换。人力源只在本次授权范围内参与,已经到期的空槽直接移出排序,不再以待机名义占位。
为了避免十个节点再次同时换序,交接被错开为三批。第一批硬设备,第二批可撤公共选择,第三批当前有效的人力源。每批间隔半息,储能覆盖。任何一批失败,后两批不跟着全部归零。
代价是储能需求增加两成,机械轮多出三层保护,值守工时也会上升。现有风险金正在赔昨夜损失,未必够下一次改造。
事故席给出初步责任,不做最终金额。
程载春申请在责任记录中加入“未坚持停用”的具体行为。他担心只写技术判断会让人误以为他完全不知风险。事故席接受,却也补上“已在交接栏明确标注待验并建议三处”的事实。责任说明既不能替他美化,也不能删掉他做过的提醒。
调度席同样提交说明。当夜值守者不是为了赶成绩,而是认为无人力输出便没有伤害。这个判断忽略设备全灭对公共硬线的影响,动机不恶仍可能构成错误。后续培训新增一项:空载与待机也会影响承接,不能只看是否正在抽取。
旧衡灯接口方要求等内部调查后再公开底层缺陷。公议所拒绝延迟居民安全相关事实,只遮住可用于破坏的接口位置。机构有时间核自己的人员,不拥有让全城继续不知道夜班压缩的权力。
旧衡灯系统未公开匿名同级压缩,承担底层缺陷与资料不全;程载春的设计没有拒绝异常回传,且在未完成十槽夜班测试时允许待机,承担技术判断部分;公议调度看见风险栏仍决定全留,承担运行决定;供应与经营方的宣传、预约和商户通知另核。
没有一个人可以用“不是我先错”退出责任,也没有一个人要替所有环节背完。
程载春听完,只问:“我能参加修正吗?”
事故席允许他作为被复核设计者提交建议,不能独自改机、验收或销毁旧件。每次操作由第二人执行,他的工时照付,后续责任金额另算,不能用免费劳动换轻判。
散席后,他没有离开机械轮。
陆小满把饭盒递过去:“先吃。”
“我想把三层保护画完。”
“你已经两夜没睡。”
“睡不着。”
“那也先选。”
她没有夺他的笔,只摆出三张纸:继续,但换班后再画;暂停一天;申请第二名阵工立即接手复核,他睡四个时辰后回来。
程载春看着三张纸,迟迟没有伸手。
他问陆小满:“若我选继续,你会生气吗?”
“会担心,也可能生气。”
“那还是我的选择?”
“是。然后我可以决定要不要继续坐在这里看你把自己熬坏。”
陆小满没有把爱护包装成无条件守候。她也有退出照护的边界,正因为如此,留下才是选择,不是义务。
他总觉得一旦离开机器,便像把自己造成的黑夜丢给别人。
陆小满也没有替他选。她只把已经冷掉的饭打开,放在他能闻见的位置。
“你可以负责。”她说,“不能拿不睡觉当赔偿。”