語源英単語コースの挿絵洗い直しを完走した記録 - Codex週次リミットの切り分けからR2全数検証まで
語源英単語コースの挿絵を全語洗い直しした記録の続きである。前日の夜23:36にCodexのクォータが尽き、挿絵の再生成は1,037/1,576枚(66%)で止まった。眠る前に決めたのは、毎時の監視だけ残して手を引くことだった。望みは5時間枠のリミット、読みは週次のリミット。5時間枠なら古い消費分が枠から外れて深夜のうちに少しずつ流れ始めるはずで、週次なら朝になっても一枚も増えない。
増分ゼロの報告が六つ並ぶ
朝、ログをさかのぼると、0:53から5:53まで増分ゼロの報告が六つ並んでいた。2:53の行には「3時間以上まったく回復しないなら、5時間枠ではなく週次リミット」という判定が書き込まれ、4:53の行では「枯渇から5時間が経過、週次確定」に変わっていた。読みのとおり、悪いほうが当たった。それでも30分おきに再試行するresume-loop 25本は、空振りを続けながら全部生き残っていて、リセットさえ来れば勝手に流れ始める態勢は保たれていた。
朝いちばんの仕事は現在地の確認だった。積み残しは語源英単語の「全語洗い直し」Phase 3。抽象・境界と判定された1,384語、重複込みで1,576枚の再生成が、あと539枚を残して止まっている。
流す前に検品する
クォータが戻り次第、残りをそのまま流してしまいたい、とは思った。ただ、前日の記事に書いたばかりだった。原因は最初の100件をレビューした時点で見えていたはずだった、と。大量に流す前の検収を省いた代償が前日の一日だったのだから、今日は逆をやる。生成済みの1,037枚を先に検品する。
以前からのやり方に倣って、中間レビュー用のBefore/Afterビューアーを作らせ、Chromeで開いた。見られるのは生成済みの844語(抽象419・境界425)。concernの挿絵は、Beforeが例文と無関係な洪水の街並みだった。Afterは図書館の場面に変わり、規則の掲示が利用者全員に結びつく構図になっている。例文は「この規則は図書館を利用するすべての人に関係する。」。絵と文がかみ合っていた。データ側もword-info-all.jsonが4,000語・meaningJa欠落0で無傷。問題なし。続行を決めた。
539が0になるまで
続行を決めた頃合いに、クォータのほうも息を吹き返した。ランナー20本を再起動し、20本とも生存を確認。進捗を見張るMonitorも置かせた。通知が来るのは完走・ランナー全滅・100件刻みの進捗・レートリミット停滞の四つの場面だけで、あとは数字が減るのを見送ればいい。539、457、366、287、183——約9枚/分のペースで、通知のたびに残りが削れていく。この速度なら07:35頃に完走という見込みも出たが、前ラウンドでは途中でレートリミットに当たった実績があるので、半分は信用しないでおいた。
途中で一度だけ手が止まった。レビュー用の静的サーバー(ポート8787)が落とされたという表示が出たのだ。立て直す前に叩いてみると、HTTP 200が返ってきた。表示上はkilledでもnodeの子プロセスが生き残る、前にも見たパターンだった。見た目の死と実際の死は別物で、確かめてから動けば空振りが減る。
残り99、残り75。その10分後に完走の通知が来た。done=4,212、完走判定値ちょうどだった。恐れていた二度目の枯渇は、最後まで来なかった。
全数を突き合わせてから閉じる
完走の勢いのまま、そのまま検証に入らせた。R2へのアップロードは1,837/1,837枚・失敗0、21分で終わった。続けてローカルとR2の全数バイト突き合わせ。不一致0で、引っかかったのは既知の偽陽性2件だけだった。前日に「1件失敗」の表示で血の気が引いた身としては、バイト単位の突き合わせを最後の関門に置いておいてよかったと思う。待ち時間にはid=45のDB name異常の恒久修正を入れさせ、前日から書き足し続けているhandoffメモにも今日の進捗と事故記録を追記させた。コミットして、Round5「全語洗い直し」の全工程が終わった。
前日の記事の末尾に「続きは残り539枚が終わってから考える」と書いた。その539枚が終わった。仕分けから数えて1,724語の洗い直しは、誤診断と枯渇を挟みながら、最後の一日だけは「流す前に検品する」「全数を突き合わせてから閉じる」の二つで進んだ。前日のもったいなさを、そのまま裏返した形である。4,000語の挿絵が本当に例文と手をつないだかどうかは、これから一語ずつめくり直しながら確かめていく。