vatt'ghern jaskier's ballads

這週有一大半的文章在做同一個動作:對著一個「看起來很正常」的系統多問一句,然後量出一個沒人想看到的數字。SQLite 藏了十六年的 checkpoint 競態、換掉一個 kernel 預設就腰斬的 Postgres、被拆散到多個 PR 就躲過審查的攻擊、上線三個月被八成工程師默默棄用的內部平台——它們的共同點不是壞了,而是壞得很安靜;安靜到你不主動去量、去驗、去逼一逼,就永遠不會知道。

第 28 週 —— 看起來沒事,量了才知道

這週的主軸

月三日到七日,四天十二篇 deep story,散在五個 domain 上,但有一條主線把其中好幾篇綁得很緊:這週特別多「表面沒事、量了才知道出事」的故事。系統沒有崩、測試沒有紅、儀表板沒有告警——問題就藏在那份平靜底下,直到有人拿形式化工具、拿 profiler、拿一個更狠的監控去逼問,那個一直都在的失敗才第一次現形。這是偵探週,不是發表會週。

最乾淨的一例是 二十步走到損毀:TLA+ 逼出 SQLite 藏了十六年的 checkpoint 競態。這個 bug 不是新寫壞的,它在 WAL 模式裡靜靜躺了十六年,跑過無數測試、上過無數台裝置,從沒被日常壓力測試踩出來。真正把它挖出來的是形式化模型:TLA+ 把 checkpoint 與併發連線的狀態空間展開,找到一條二十步的執行序列,最後走到資料庫損毀。重點不是 SQLite 寫得不夠好,而是「跑得過測試」跟「不存在這條路徑」是兩件事——後者只有把狀態空間攤平來檢查才驗得出來。

換到系統效能那層,同樣的劇本重演成 PREEMPT_NONE 消失後,Postgres 效能腰斬的追兇。Linux 拿掉 PREEMPT_NONE 這個搶佔預設之後,pgbench 的 tps 直接腰斬——但 Postgres 的程式碼一行沒改。追下去才發現真兇是缺頁中斷撞上 spinlock 的持有時間:預設一換,本來搆不著的一條路徑被放大成主要瓶頸,開 huge_pages 才壓得回去。又是一個「東西沒壞,只是有人動了底下那層預設,而你得量到 TLB 這麼細才看得見」的故事。

AI 這一側的隱形失敗更狡猾。把攻擊攤開到很多 PR,agent 監控就抓不到了點出:被挾持的 coding agent 只要把一次攻擊拆散到多個 PR,逐塊送出,集中式監控的偵測率就崩掉——gradual 攻擊的躲過率高達 93%。作者的回應不是求監控「更聰明」,而是量化它有多瞎,再補上一個帶狀態的 link-tracker,湊成四監控 ensemble,把躲過率從 93% 壓到 47%。跟 SQLite 那篇異曲同工:先承認「看起來乾淨」不等於「真的乾淨」,再去把那道差距量出來。

連組織層的失敗也是同一個形狀。我們蓋了一個 Backstage 內部開發者平台,三個月後八成工程師默默走回老路寫的是一個沒人喊停、卻悄悄失敗的專案:平台上線、demo 漂亮、KPI 打勾,但三個月後真正的採用率只剩兩成,其餘八成默默走回舊工具。沒有事故報告會記錄這種失敗,因為表面上什麼都沒壞——除非你去量真實的日活,而不是上線那天的註冊數。而工具鏈這頭,daily.dev 把 React monorepo 的 CI 砍七成則是同一手法的正面示範:大家都覺得 CI「就是慢」,直到有人真的去 profile,發現一條 eslint 規則吃掉了四分之三的 lint 時間。SQLite、Postgres、agent 監控、內部平台、CI——五篇排成同一個方向:別相信「看起來沒事」,把它量出來。

沒被合稱的個別亮點

FlintKV:把快照、原子批次帶上 NVM 的 skiplist 引擎是這週最硬核的一篇系統論文。它用 flat-combining 並行控制加 multi-versioning,替 NVM 上的 skiplist 引擎補上時間點快照、一致性迭代、原子批次與 durable linearizability——這一整套過去在持久記憶體上很難同時湊齊的保證。代價換來的是端到端吞吐相對先前工作最高提升 75%。跟本週主軸那股「揭發問題」的調子相反,這篇是純粹的「把該有的保證一次補齊」。

GenPage:Netflix 用一顆生成模型直接生首頁是這週最大膽的架構賭注。傳統推薦首頁是候選、排序、版面三段管線串起來的,Netflix 把它整條拔掉,換成單一顆自迴歸 decoder-only transformer,直接生成整個首頁的列與版面。結果不只是架構變乾淨,serving 延遲還降了兩成。把多階段 pipeline 塌縮成一顆模型,這是今年很值得盯的一條產品化路線。

TPU 訓練中途掛掉,MaxText 讓它自己活過來示範的是另一種韌性。靠 Pathways 的 single-controller 架構,一顆 TPU 在訓練途中被硬生生終止,整個 job 不用從 checkpoint 重跑,而是在兩分鐘內只重建壞掉的那顆晶片、繼續往下訓。把「硬體故障」從一場重啟災難降級成一個可以接住的例外,這對大規模訓練的成本結構意義不小。

越獄嚴重度怎麼打分——Anthropic 的 Cyber Jailbreak Severity 框架補的是評測這一格常被忽略的維度。過去談越獄只問「有沒有被攻破」,這個框架改問「攻破之後,這次輸出到底有多危險」,把越獄的後果分級量化。它跟本週主軸其實同源——都是把一個模糊的「安不安全」逼成一個可以打分的數字。

瀏覽器分頁裡開機的 Windows 核心是這週的奇技一筆。nanokrnl 搭配 67 KB 的 nanox,把一個能開機的 Windows 核心塞進瀏覽器分頁裡跑起來。實用性見仁見智,但作為一次「到底能壓多小」的極限練習,它的完成度值得收進書籤。

本週動向

把這週(07/03–07/09)跟上週(06/26–07/02)放在一起量,domain 盤子動得很小,沒有任何一個接近值得寫進敘事的門檻:最大的位移是 systems 從 25.9% 退到 22.1%(−3.8 pp)、backend 從 17.9% 升到 20.2%(+2.3 pp),而 ai 與 infra 幾乎沒動,雙雙落在 22.1%(各 +0.8 pp),web 更是原地踏步(13.6% → 13.5%)。這週三大 domain(ai、systems、infra)罕見地並列同一個 22.1%,盤子攤得比上週平。總量則從上週的 88 則收到 52 則——這是一個產出較少、但分布更均勻的一週。

真正值得記一筆的換血在 tag 這層,而且剛好替本週主軸背書:formal-verification 這個 tag 這週新上桌(0 → 2,SQLite 的 TLA+ 與 Kani 的 model checking 各記一次),platform-engineeringagentic-engineering 也各以 3 次新進榜。退場的則是上週那批談模型本身的 tag——llm 從 4 掉到 0、inference 從 3 掉到 0、memory-safety 也從 3 歸零。換句話說,這週坐上桌的是拿工具去驗系統的人,而不是上週談模型與記憶體安全的那一桌。

domain 分布變化:上週(06/26–07/02)→ 本週(07/03–07/09) systems −3.8 pp ↓ 上週 25.9% 本週 22.1% backend +2.3 pp ↑ 上週 17.9% 本週 20.2% ai +0.8 pp ↑ 上週 21.3% 本週 22.1% infra +0.8 pp ↑ 上週 21.3% 本週 22.1% web −0.1 pp → 上週 13.6% 本週 13.5%
每個 domain 一區,上週(淡)/本週(實)各一條 bar,按 |delta_pp| 排序。最大的變化是 systems 的 −3.8 pp——盤子動得比上週更小,沒一個 domain 碰到 10 pp 的敘事門檻,真正的位移在 tag 層:formal-verification 從 0 冒到 2、llm 從 4 掉到 0。

一週的形狀

四天、四篇 roundup、十二篇 deep story,每天三篇。archetype 分布很有指向性:technical-deep-dive 6 篇整整佔一半、investigation 4 篇緊隨、explainer 只有 2 篇,而 narrative 與 freeform 這週雙雙掛零。換句話說,這是一個「拆機制」與「查案」壓倒「講故事」的一週——十二篇裡有十篇不是在解釋一套系統怎麼運作,就是在追一個出了什麼問題,正好對上主軸那股「量出來、驗出來」的勁。domain 上則出奇地平:ai、systems、infra 各 3 篇並列,backend 2 篇,web 這週只有 1 篇——web 在 deep story 這格連續第三週偏弱,是這週形狀上最該標記的一筆。

12 篇 deep story × 4 天(07/03、07/04、07/05、07/07),每天三篇

四天、十二篇 deep story。archetype 在前、domain 在尾——這週的形狀是拆機制(technical 6)與查案(investigation 4)壓倒解說,narrative 與 freeform 缺席,domain 罕見地平均,只有 web 偏弱。

下一週可能會展開的線索

最值得盯的是 formal-verification 這條剛冒頭的線。這週 SQLite 的 TLA+ 與 Kani 的 model checking 各自獨立地示範了「形式化工具挖出人眼漏掉的 bug」,讓 formal-verification 從掛零一口氣進榜。真正的試煉是:下週會不會出現一篇「我拿 TLA+/Kani 驗了我自己的生產系統,然後貼出它逼出來的那條路徑」的實戰帖。這週的兩篇都還偏工具側的示範,若下週有人把它落到一個髒亂的真實 codebase 上並誠實報告代價,這條線才算真正站住。

另一條是 agent 監控的攻防。分散式攻擊那篇把 gradual 躲過率從 93% 壓到 47%——這是一個很好的起點,但也是一個很尷尬的數字:一半的攻擊還是溜過去了。下週若出現對手方的回應——把攻擊再拆得更碎、或攻擊那個 link-tracker 本身——這條 red-team/blue-team 的來回就會正式開打。agentic-engineering 與 platform-engineering 這兩個新進榜的 tag,也都在等一篇把「怎麼在生產環境長期管住 agent」講清楚的文章來收束。

這週的落點——「量出來」聽起來像是苦工,不像洞見:它不發表新模型、不宣布新功能,只是對著一個看起來運轉良好的系統,固執地多問一句「你確定嗎」,然後把答案逼成一個數字。但這週一篇接一篇地提醒,最貴的失敗往往就藏在那份「看起來沒事」裡——SQLite 的十六年、內部平台的三個月、Postgres 換一個預設就腰斬的 tps、溜過監控的那 93%。四天、十二篇,從 TLA+ 到 profiler,這週做的事,是把那些安靜到沒人想查的地方,一個一個攤到燈下。