跳转至

第四十八章 · 决定

周二早上十点零六分,赵岩的工单批完,只读权限下来。扫描脚本挂上配置中心的全部命名空间,十一分钟跑完。

第一轮结果:静默兜底配置,全公司六十七处。失败不告警、不登记、静默吞掉的,六十七处。说明栏空白的,十一处。最老的一处写于二〇二四年三月,说明栏里只有一个字:暂。

他把六十七抄进记事本,后面一行:「比想的多。」

周一晚上他预估的是三十。多出来的三十七处里,有二十四处的配置人和他现在一样查得到名字——人已经离职,离职时间在系统里,配置本身两年没人动过。配置活得比人久,这六十七处里有二十四处在证明这件事。

中午前,他 review 了万征的兜底删除 MR。回滚预案补进去了:失败率超千分之十,恢复兜底,兜底挂告警。他批了,留言一条——缺失窗口的首尾时间,日志里两个都要写,开始一个,恢复一个。万征回:「改了。」

下午四点,文文的话术清单先到。她在工单里附了一张表:「建议商户自行核对」「或为正常波动」类表述,累计使用二百一十七次,最早一条二〇二五年十一月四日;其中事后证实系统有责的,六十三次。备注栏她写:「这些话术的平均响应时间,两小时。」

陈稳把这张表放进兜底清单的最后一页,另起一行对比:系统侧发现同类问题的平均时间,十一天。

话术比系统快一百三十倍。这句他没有写。数字放在一起,够了。


中午他给易文发消息,问她下午有没有空。她回了三个字:「五点半。」

五点半,二号楼旁边的咖啡店。她先到的,面前一杯茶,电脑合着。

「六十七处。」她说。

「消息传得比我走路快。」

「万钧那边的会纪衡也旁听。你那六页,昨天在我邮箱里。」易文把茶往边上挪了挪。「说说吧。回结算,为什么。」

「对账那条线没做完。推广方案交了,六条业务线,但底层的差异单处理还是 T+1 的逻辑。数据在我脑子里,不在我手里。」

「这不是原因,这是描述。」她说。「你走的时候,是谁让你走的。」

「纪衡推的。」

「现在要回去,回去给谁做。」

陈稳把杯子转了半圈。「他自己。」

易文没有接。她把电脑翻开,划了两下,转过来。屏幕上是一张组织图,交易结算部的框里,一组和二组的名字换了新颜色。

「十二月二十号,纪衡问过我一句话。」她说。「他问,陈稳走的时候,后不后悔。我说,这个你得问他自己。他说,他不会说的。」

「所以他知道。」

「他一直知道。他缺的不是你回去,是你开口。这一步从来都是你自己的。」

她把电脑合上。

「最后一个问题。」她说。「你想回去,是想把那条线做完,还是想让那条线替你说话。想清楚再开口。这两个,纪衡都接,但接法不一样。」

这个问题他没有答。她也没有等。

结账的时候他先扫了码。她也没有争,只说了一句:「下次你请。等你回去坐进那个工位。」


晚上,他把六十七处按系统排序,一处一处过。

跨境三个。其中一个在上周资源会那条链路上:fx.spread.fallback=last_good,点差兜底取上一个有效值。上周讲链路耗时的时候,这个配置就挂在那个服务的配置页上,他没扫到,因为它不失败——它只是安静地用错。

第四十一行,结算系统。settle.reconcile.auto_accept.enabled,值 true。他在文档里查了二十分钟才把作用拼完整:对账生成的差异单,双方差额在千分之三以内的,自动以结算侧金额核销,不生成异常单,不通知业务线。

静默兜底。差异进来,差异消失。

说明栏:空。

变更历史只有一行:2026-08-01 23:09:41,账号 root。配置中心的变更历史跟着配置库走,不过期——数据库的审计日志九十天就没了,配置库没有归档这回事。变更记录比数据库审计多一个字段,字段名叫「来源」。

来源那一栏:10.14.1.88。

八月一日 23:09:41 改配置。23:14:42 删索引。同一个 IP,中间隔五分钟零一秒。

他把两行并排抄进记事本。抄完,写:「八月查不到的东西,一月自己回来了。」

再一行:「那天夜里他在机房待了两个小时。不止删了索引。」

第三行他停了很久,写:「先让差异静默,再让对账跑不动。顺序不对。或者,删索引本来就不是为了静默。」

写完,他把这页折了个角。关掉配置中心之前,他把十一月四日那条「最后跟进」从工单附件里翻出来,对着看了一遍。最后跟进人那一栏,写的是他的名字。再跟一次,就不会归档。这半句他当时只写了一半,另一半今天补上了:跟一次,是他说服自己这事还是他的事。他换了楼,事没有换主。

发给万钧的那版清单,没有来源这一栏。他本子上有。


周三上午,走廊上碰到蒋辉。蒋辉夹着电脑,像刚从会议室出来。

「讲完了。」蒋辉说。「排班规则,二十分钟。王磊问了一个问题:以前的那些例外,算什么。我说,算废案。」

「通过了吗。」

「没有不通过的道理。」蒋辉把电脑换到另一只手。「听说你在扫全公司的静默兜底。」

「六十七处。」

「你周五讲的时候,第一页第一行打算放什么。」

「数量。」

「那万钧出去就会说,我们发现六十七个隐患。」蒋辉说。「他讲东西只取第一页第一行。你想清楚,他要替你讲的那一句,是不是你想让人听到的那一句。」

陈稳说了另一件事:「跨境那三个里,有一个在我们自己的链路上。」

蒋辉的脚步慢下来。

「放第一页。」

「为什么。」

「你自己的问题,你压着不发,哪天从别人嘴里出来,就不是清单了。」蒋辉说。「是事故。」


周四上午,超时阈值架构评审,三十分钟。决议两条:EUR/CNY 阈值按链路实测十一小时上浮百分之二十取整;独立失败码的合作方接口适配,排期三周。决议归档,链接发到群里,没有人有异议。

下午三点二十,M-B-2214 在客诉工单里回:「补差已到账,确认无异议。」工单关单。从进线到关单六天,第一版话术在工单上停了三天,第二版三天。客服一组在关单记录里留了两个字:已结。

晚上,他打了名片背面的电话。

三声接通。

「哪位。」

「我是做 settle.guard 的那个人。」

电话那头静了两秒。

「恒澜的。」对面说。「guard 那个拦截器的文章我读过。说事。」

陈稳说了十二月十五日合作方两小时的批量异常,说了 CSV 推送延迟,说了商务的口径:对方财务系统改版,窗口只有一次。

「改版没错,但那次不是改版,是搬家。」对面说。「他们把对账系统换了供应商,新旧两套并跑了一个星期。两套都在写,文件当然堵。你要证真,去数他们十二月十六号和二十号的推送文件——旧系统十六号还在推,新系统二十号接管。中间那几天,两家都以为对方在推。」

「商务说恢复时间是对的。」

「商务说的是恢复,我说的是原因。两件事都对,不冲突。」

陈稳把这句抄下来。对面等了两秒,又开口。

「你在扫配置。扫出来多少。」

「六十七。」

「配置能扫。」对面说。「人兜底的那种,扫不出来。谁说了一句『这个我盯着』,表里没有这一栏。这句话你记不记,随你。」

电话挂了。通话四分零六秒。

他登进合作方门户,数推送文件:十二月十六日,四个;十七日,两个;十八日,一个;十九日,一个;二十日,五个。堵的形状和对面说的对上了。

他把名片收进抽屉,跟新开的胃药并排,背面的字朝下。然后给蒋辉发了一条:「名片用了。人很清楚。」

蒋辉回得很快:「好使就行。」

隔了一分钟,又来一条:「你在扫配置的事,我周三就听说了。六十七这个数,你打算在结算那边讲一次吗。」

「讲什么。」

「讲『你们组的配置库里躺着一个八月的变更,来源我没核实完』。」蒋辉说。「你回去要是还要管那条线,这个话早晚要说。晚说,就是你进了组之后再『发现』的,那时候性质就变了。」

陈稳把这条消息读了第二遍。蒋辉不知道来源是 10.14.1.88——他只当是一个普通的陈年变更。但「早说」这个判断,跟他自己昨天补的那半句,是同一句话的两个写法。

他回:「收到。周四之前。」


周三下午,他回了一趟老楼,交接最后一批值班文档。一楼大厅的闸机换过了,人脸识别,他站在机器前面愣了两秒才想起低头对准。二楼走廊尽头,老梁原来的那个工位,现在坐着一个戴耳机的年轻人,屏幕上是密流的日志,桌角一杯咖啡,杯壁上凝着水珠。打印机搬到老位置旁边,指示灯闪了一下,吐出一张纸,没人去取。

结算组的门牌换了字:交易结算部·一组。王磊在里面带着两个新人过周报,声音从门缝里出来:「这个周报你写的是做了什么,不是做成了什么。回去改。」

他在门口站了三秒,没有进去。值班文档发进群里,附一句:「有看不懂的来找我,我在五楼。」

王磊隔着门抬手挥了一下。他也抬了一下。

电梯里他算了算,从这栋楼到五楼西区,走路六分钟。这六分钟的路,他今天第一次走。


周五下午两点,万钧的办公室。

清单六页。第一页第一行:六十七。

「怎么扫的。」万钧问。

「配置中心全命名空间。静默兜底、静默失败、静默重试,三类。口径在第二页。」

「跨境多少。」

「三个。」陈稳把第二页翻过去。「其中一个在上周资源会那条链路上。」

万钧把那一行重新读了一遍,笔放下了。

「上周你怎么没说。」

「上周查的是超时。兜底是这周扫到的。」

万钧把笔又拿起来。

「什么时候修。」

「回滚预案同款:失败即告警,失败期间停止折算。下周三之前提 MR。」

「六十七处全修。」

「不全修。」陈稳说。「十一处说明栏空白的,先补说明——谁在用,错了会怎么样。说明写不出来的,才停用。剩下的按影响排期。」

万钧在本子上记了三行,合上。

「Q2 你排什么。」

「我来跟您说个事。」陈稳说。「我想回结算那边。把对账那条线做完。」

万钧的笔停在半空。

「结算不是我的盘。」

「我知道。所以先跟您说。」

「纪衡找你了。」

「还没有。今晚我跟他约。」

万钧把本子放进抽屉,上了锁。

「走可以。跨境那三个,修完再走。」

「下周三之前。」

「行。」万钧说。「刘铮那边我去讲。你的考核停到你走的那个周五。」

陈稳起身的时候,万钧又叫住他。

「结算系统那条。变更时间八月一号,周六,晚上十一点零九。」万钧说。「谁改的。」

「账号 root。变更来源我拿到了,还没核实完。」

「核实完补进清单。」万钧说。「下个周五之前。」

「好。」


周五晚上到周日,他把说明栏空白的十一处一处一处补。补到第九处,发现那个配置挂在两年前下线的服务上,没有任何进程在读。删了,没有人会知道;留着,每天跟着别人跑一遍心跳检查。

他在那一行后面标了两个字:僵尸。没有删。

周一,跨境三个兜底的修复方案写完,发刘铮过目。刘铮回:「方案没意见。走的事我听说了。」隔一分钟又来一条:「你第一天来,说三天上手。现在 Go 写顺手了吗。」

「顺手了。」

「顺手就好。」刘铮说。「接口适配那三周,接手的人我带。你回去之后,缺的不是会写的人。」

后面半句他没写完。陈稳也没问。


周二晚上九点,他给何晚发消息:「票退了吧。两张一起。」

她回得很快:「好。」

隔了两分钟:「退款到账是你卡,不用转我。」

「好。」

又过了一会儿,最后一条进来:「冰箱那半罐辣酱是我买的。要吃就吃,别放到过期。」

「好。」

对话框往上翻,那六个字还停在原地。「今天的鱼很好」,一月十八号晚上九点四十七分发的,下面一直空着。事务性的消息,她三分钟就回。这六个字,沉在最底下,六天了。

他把背包从柜顶取下来,拉开最里层的夹层。橡皮筋还捆着,两张票抽出来,并排放在桌上:K1074,一月二十七日,下铺两张,打印体的日期。他拿手机对着票拍了一张,没有发给任何人。然后把票放进明天要背的包的外袋。夹层里剩下的东西不多了:顾源的打印件,结算组的便利贴。

打印件他抽出来,最后一次翻开。顾源的字在页边:这份东西的纸,机房里有。他把这一页折好,放回去,橡皮筋在外面绕了两圈。哪天真相用得上了,纸在。用不上,纸也老化不了。这两句他都没有写。

十点半,他给纪衡发消息:「纪总,想约您个时间。有个事,当面说。」

发出去,他把手机放在键盘旁边。十一点,对话框没有动。他打开 IDE,把一个参数校验补完,跑了一遍单测,绿的。十一点二十,还没有动。他想起易文说,他缺的不是你回去,是你开口。也想起她最后那个问题。把那条线做完,和让那条线替你说话——他把这两个答案在心里各放了一天,今天晚上,他分不出哪一个在前面。能分出来的只有一个:回去,这两个答案都还在。

十一点四十,还没有动。

新办公楼的窗外没有那扇窗,只有对面楼一面墙的空调外机,排成七列。

他关掉对话框,打开文件管理,找到那个叫「申请」的文件夹,里面是 DB-20261028-0047 的附件。在旁边,他新建了一个文件夹。

命名框里,他打了两个字。

回去。


← 第四十七章 一整夜 · 目录 · 第四十九章 回来 →