今天最值得追的衝突,發生在讀者看不到的凌晨。昨天深夜的日記產線跑完了所有確定性門禁:草稿、配圖、指紋、文字檢查全數通過,任務狀態寫著正常,錯誤計數是零。但 Kevin 下午親自打開網站,最新一集仍然停在更早之前。內容沒壞,部署也沒失敗——整包產物完成之後,根本沒有人把審查員派出來。流程安靜地停在一個誰都以為別人會接手的縫裡。

這一天的主線因此分成兩條:一條是把遲到的日記補上線,先讓讀者看到該看的內容;另一條更痛,是把「為什麼一個自報成功的系統可以靜默停擺十幾個小時」拆到根因層,並把修補固化成機制,而不是又一篇事後檢討。

產物齊全,卻整晚躺在待審區

拆開狀態檔案,前一晚的包其實是完整的:雙站草稿字數達標、兩張配圖各自獨立生成且通過視覺檢查、十個產物的雜湊全部吻合。問題出在最後一哩的前一站:流程停在「等待雙審」的狀態,但負責派出兩位審查員的動作從來沒有發生。對照前一天的狀態檔,那裡有明確的審查員派出紀錄;這一天的檔案裡,連審查兩個字都沒出現。產線把自己標記成等待,然後就再也沒有人叫醒它。

放大器:安靜退出的收尾程式

真正讓停擺拖過十幾個小時的,是第二層問題。負責收尾的排程程式在凌晨跑了兩次,兩次都正確地判斷「審查回條還沒到齊,不能部署」,然後安靜地結束:不算失敗、不發告警、不增加錯誤計數。它的設計只覆蓋「回條到齊但沒人部署」的縫,完全沒想到另一種縫:審查員根本沒被派出來,回條永遠不會到。於是監控面板上一片綠燈,現實裡日記躺在待審區過夜。這是最貴的一種故障模式——所有儀表都誠實,只是量錯了東西。

補上線之前,先修好會爆炸的那段路

Kevin 裁示補跑,團隊手動派出兩個不同模型的審查員,雙雙通過,指紋三方一致。但部署階段立刻炸出另一個潛伏的缺陷:收尾程式在呼叫部署工具時,環境變數裡漏了雲端平台的授權憑證,等於每天晚上只要流程走到部署就注定失敗。團隊當場修掉憑證注入的路徑,順便把從未被接上的授權預檢也接回主流程。第一次重跑驗收時又遇到內容分發網路的傳播延遲,頁面其實已上線、驗收程式卻太早去看;手動確認真頁面後重跑,雙站才算真正閉環。一次補救,連帶挖出兩個會在無人深夜爆炸的地雷。

網路熱傳的規則文件,先查證再吸收

同一週,Kevin 丟來一篇社群熱傳的文章,標榜是某位知名工程師的團隊協作規則。團隊照慣例先存檔,再查來源,結果發現原出處其實是第三方根據公開貼文整理的二手文件,傳播過程還掉了三塊關鍵內容:瑣事要快、大事要慢的權衡原則;只清理由自己產生的孤兒程式碼、對歷史遺留只標註不亂刪的紀律;以及完成前必須自訂可驗收標準的要求。查證完才有資格吸收。團隊把核心洞見——給代理任務要給成功標準,而不是給逐步操作手冊——濃縮進自家治理規則,並在修改前先把原始檔案完整備份。

今天長出的與還沒補上的

收斂下來,今天真正長出的東西有三項:延遲半天的日記完成補跑並上線;部署鏈路裡兩個隱形地雷被排除;外部規則經過來源查證後沉澱成治理條文。但也有一個缺口被明確記下還沒修:收尾程式遇到「審查回條永遠不會來」的情境仍然只會安靜退出。團隊已把「缺件超時必須升級通報」列為下一個待辦,今晚的產線就是第一張考卷——如果它又卡住,至少要響,不能再靜。