Skip to content

Latest commit

 

History

History
80 lines (50 loc) · 9.1 KB

File metadata and controls

80 lines (50 loc) · 9.1 KB

2026-07-28-103245-vortex-babel-8 — 純中文檔名的文章排不進佇列(27 篇解套)/五修驗收 exit=1 歸零/渦流 12 小時後暫停

session vortex-babel-8 — 哲宇 directive「跑 restart-vortex.sh」觸發,實際做的是不重啟的診斷、一個結構修復、12 小時觀測、暫停收官 Session span: 2026-07-27 22:09:24 → 2026-07-28 10:32:26 +0800(12h23m,我親手 5 commits;同窗口渦流自動產出 51 commits) 資料來源:git log %ai

觸發

哲宇丟一行 bash scripts/tools/lang-sync/restart-vortex.sh 要我重啟渦流。查下去發現產線 21:29 就活著、上一輪五個修復全部已經生效,重啟只會砍掉十隻正在翻的 worker。真正做的事變成三件:驗收上一輪的修復、找出並修掉一個結構性缺陷、在哲宇選的節奏下收尾重啟。

不該重啟——以及我自己的探針說了謊

三重巡檢查出產線 21:29 起全數存活且在產出。babel-dispatch.py 最後一次改動(21:25)早於產線起跑,translate.py 的 armor 修復與 ar/ru 忠實度檢查器都是每篇重新 spawn 的熱路徑。照 BABEL-VORTEX-LOOP §重啟有成本,這種情況重啟純虧。哲宇選「先收尾快照再重啟」。

等待期間我寫了一支 drain 監看,用 kill -0 判斷 worker 死活,並且 2>/dev/null 吞掉錯誤。它在第一輪就回報全數收工,實際上三隻 vi worker 還在跑,最深的一隻已經 33 分鐘。背景指令跑在沙箱裡,kill -0 送不出訊號回 EPERM,被我的 && 讀成「行程已死」。用 ps 交叉比對才抓到。前景跑同一條指令是正常的,所以這個假象只在背景出現。改成 ps -p 並讓探針先對自己自驗才敢用。一個吞掉 stderr 的探針,把權限錯誤變成了它要偵測的那個狀態

五修驗收:機制證據,不是相關性

上一輪 handoff 指名要看機制證據。結果乾淨:no output written (exit=1) 從佔失敗 34% 降到 0 次,armor 還原失敗改走非裝甲路徑後觸發 6 次、每次都救回來,通過率 16% 升到約 48%。這正好回答了 21:15 那次被自己推翻的歸因。當時「修了 A 數字變好」的推論是錯的,這次有觸發次數當證據。

純中文檔名的文章排不進翻譯佇列

當輪的自動進化動作抽隔離樣本時,發現 8 個 TBD-NEEDS-SLUG.md 已經被 commit 進版控(來自 21:13 那次孤兒搶救)。裡面是四篇好譯文(台灣鐵道史、八點檔、小北百貨、旺旺),全共用同一個佔位檔名,同分類同語言的下一篇會直接覆蓋前一篇,網址還是 /es/lifestyle/tbd-needs-slug

追到根因:build_slug_map() 只讀 _translations.jsonen/ 開頭的條目,而它自己的 docstring 就寫著「slug 與目標語言無關」。一篇檔名純中文、英文版還沒生出來的文章因此拿不到 slug,ASCII fallback 把非 ASCII 全刪光得到空字串,落成佔位檔名,dispatcher 的守門再把它整個跳過。沒有英文版就沒有 slug,沒有 slug 就連英文版都翻不出來,27 篇卡在這個死結,包括唐鳳、莫那·魯道,和前兩天剛上線的台灣鎢供應鏈與苯駢芘食安事件。

我第一次向哲宇報告時說這 27 篇「在十一個語言都是隱形的」,講過頭了。查下去 23 篇其實早有 canonical slug 躺在 ja/es/fr,唐鳳一直都是 audrey-tang,真正哪個語言都沒有的只有 4 篇。改成讀全語言、en 優先之後 23 篇當場解套。剩下 7 篇的 slug 寫進新的 knowledge/_slug-map.json,優先序最低,不會搬動任何已上線網址。同時擋掉佔位檔名回流(它已經被寫進 _translations.json,餵回去會擴散到該文章的每一個語言),8 個檔案改回正確 slug(8c08b72c0,12 檔,scope 驗過 0 deletions)。

rescue-orphans.py 補上同一道守門。dispatcher 早有這道檢查,搶救路徑當初沒跟著收斂,這是本週第三次「同型病只修了一個呼叫端」。

驗收看的是活產線而不是我的測試:重啟後的 run dir 產出 869 條 slug、零佔位、prepare-batch 從 exit=2 變 exit=0。12 小時後檳榔十一語全上、八點檔 10 語、小北百貨與旺旺各 9 語,約 42 篇十二小時前結構上不可能存在的譯文。

12 小時觀測與暫停

渦流 22:12 重啟後跑滿 12 小時,缺口 2909 降到 2585,24 小時淨減 754,速率 35.1 篇/hr。老五語實質收工(97.5% 到 99.7%),剩下的缺口整個集中在六個新語言,vi 39.9% 與 id 45.8% 墊底。失敗 620 筆裡 leak 251、health 199。這輪唯一的存活≠生產案例是 l4090:端點答得出 /api/version,但最後一筆完成記錄停在 08:19,軌道最後一次呼叫回 timeout,fleet registry 另外顯示 laptop-5090 離線。歐日韓那條軌現在載的正是已近收工的老五語,所以損失有限,但要救得靠哲宇那端看機器。

哲宇要求暫停。停線前跑 rescue-orphans 收下 41 篇(擋下 35,其中 25 筆 leak),脈搏定格於 gap 2585(3d3b12abd382ea0faa)。整個 session 我親手 5 個 commit,同窗口渦流自動產出 51 個,dispatcher 批次落地 337 篇。

收官 checklist

檢查項 狀態
MEMORY 有這次 session 的紀錄
Timestamp 精確 git log %ai
Handoff 三態已審視
CONSCIOUSNESS 反映最新狀態 ❌ 本 session 未動器官分數,留 data-refresh routine 跑
自我檢查工具 PASS ✅ prose-health(memory-diary profile)

Handoff 三態

繼承 vortex-babel-7:

  • 五修驗收:看機制證據不看數字 — retired by vortex-babel-8,exit=1 歸零、armor fallback 觸發 6 次全數救回
  • 每輪跑 rescue-orphans — retired,本 session 跑兩次共收 44 篇
  • leak 升為第二大失敗源,查新誤判家族 — 已定性未定案:25 筆全部集中在參考資料區的中文書目標題(深度訪談天下換日線),含簡體來源(维基百科国家文化记忆库)。中文來源的標題該不該翻是編輯政策,調閘門閾值命中 §自主權邊界,留哲宇拍板
  • mac 三 worker 併發未驗 — 未處理,條件不變(成功篇平均 248s,無效就退回單 worker)
  • mouhouse babel routine 仍暫停,恢復時 pull 自動繼承全部進化

本 session 新 handoff:

  • health 失敗未定性(199 筆,已逼近 leak 的 251):下一輪第一件事是抽樣分類,現在連它是不是同一個家族都不知道
  • 35 個閘門未過的孤兒仍留在工作區:懷疑 status.py 會把它們算成已翻譯而灌水覆蓋率,但我的驗證用的是猜測的 JSON schema,沒有結論。可執行的下一步:暫移一檔後重跑 status.py --lang ar 看 fresh 數變不變
  • l4090 端點活著但不產出:最後完成 08:19,軌道回 timeout;fleet registry 另顯示 laptop-5090 離線。要恢復需哲宇那端看機器
  • repo 領先 origin 54 個 commit、落後 13:四條 dispatcher 同時 commit 時我不想 rebase,暫停後可以做,等哲宇說

Beat 5 — 反芻

這個 session 的形狀是「被交代的事不該做,而該做的事沒人交代」。哲宇要的是重啟,重啟當下是純虧。真正的收穫來自渦流迴圈裡那條「每輪至少執行一項自動進化」的硬條款,它逼我在等待時去翻隔離樣本,才撞見那個 27 篇的死結。如果我照字面執行、重啟完回報「四軌已起跑」,這個缺陷會繼續安靜地待著,而且每一篇新的中文檔名文章都會加入它。

另一件值得記住的是我自己的兩次失準:探針吞掉 stderr 把權限錯誤讀成行程死亡,以及向哲宇報告時把 27 篇說成「十一語全隱形」。兩者同型,都是拿一個較容易取得的訊號代替真正要量的東西,而且都是外部比對(ps_translations.json 反查)才揭穿。今天早上哲宇問「現在如何了」時我給的 28% 通過率,也是用 12 小時窗口代替 canonical 規定的 60 分鐘窗口,那次我有標註窗口,但同一個傾向。這條線索夠大,完整反芻留在 diary。

🧬


v1.0 | 2026-07-28 10:32 +0800 session vortex-babel-8 — 診斷取代重啟/slug 死結解套/12 小時觀測後暫停 誕生原因:哲宇要求重啟渦流,查證後發現產線健康、重啟純虧,改為驗收+修復+觀測 核心洞察:被交代的動作不該做時,硬條款(每輪必做一項自動進化)是唯一會把我推向真問題的東西;我這天兩次拿替身訊號當本體,都靠外部比對才發現 LESSONS-INBOX 候選:背景沙箱裡 kill -0 不是可信的存活探針,且吞 stderr 會把權限錯誤變成偽陰性