配水技師は源が涸れるたび善意で「一刻あたりの汲み上限」を設けた。どの刻も帳簿はきっちり上限で止まる。一度も超えていない。なのに街は渇く——決まって、刻の変わり目に。固定窓は窓ごとにカウンタを0へ戻す。その「0に戻す」一瞬が前の刻をまるごと忘れさせ、継ぎ目をまたいだ手は忘れられた帳簿で二度、上限まで汲む。上限の2倍が源を干す。窓で刻むのをやめ経過ぶん雫を連続で溜める器(Token Bucket)に差し替えれば、継ぎ目そのものが消える。境界バーストを注入時計の模擬戦で決定的に再現し、同時数(門番)とは別の物差し=時間あたり流量を律するTypeScriptの契約の物語。
二つの自動錬金釜は、単体ではどちらも完璧だった。なのに同時に動かすと、片方が水の鍵を握って火の鍵を待ち、もう片方が火の鍵を握って水の鍵を待ち——互いの一手を見つめ合ったまま石になる。データは壊れない。ただ、永久に止まる。JSはシングルスレッドでもデッドロックは無縁ではない。鍵を拾う順を全アプリで一つに揃え、循環の待ち合いを構造から断つLock Orderingと、復旧策のTimeoutの代償を、永久ハングを決定的に可視化した模擬戦で確かめるTypeScriptの契約の物語。
採れ高を上げようと、監督官は使い魔を一斉に坑道へ放った。群れは宝の通路を同時に塞ぎ、坑道ごと圧し潰す。鍵は総数でも投入の間隔でもなく、同時に通路を占める数だった。入口に門番を立て、同時に通すのをN体に絞り、溢れた群れは行列で待たせる——同時占有ピークを物差しにした模擬戦で、有界並行こそ最速の持続採掘だと確かめるTypeScriptの契約の物語。
魔力嵐で本塔が黙るたび、通信士は雷鳥を連発した。だが連発するほど届かない——焦りの雷鳥は、嵐が去る前に羽を使い果たす。失敗ごとに待ちを倍へ伸ばす指数バックオフと、群れを散らすFull Jitterの契約を、sleepを論理時計に変えた模擬戦で検証する物語。
夕暮れになると図書館の魔力が漏れる。打ち直して閉じたはずの検索が、裏で書庫を潜り、鍵を握り続けていた。AbortSignalを潜行前・潜行後・待機中の三つの刻にhonorさせ、残影を霧散させるTypeScriptの契約を、同時保持カーソル数の模擬戦で検証する物語。
祭りの夜、住民が転送印を連打すると同じ荷が二度送られ、片方が次元の狭間へ消えた。鍵は実行中フラグを置く"位置"だった。awaitの中断点に滑り込む二重送信を、再入ガードで締め出すTypeScriptの契約を、模擬戦で検証する物語。
キャンセル機能を足したら、同じ確認メールが客に二通届いた。在庫・課金・通知・配送は綺麗に分けたのに、繋ぎ方だけが直結のN対Nで、通知を出す係が配線に散っていた。部品同士の直結をやめ、仲介役に連絡を集約するMediatorの整備記録。
ログ・認証・recover・処理時間の計測といった同じ前置きが、30個のハンドラーにコピペされていた。リクエストIDの形式を一行変えるだけで30ファイルを直す羽目になる。先頭で呼ぶ共通関数では後処理とrecoverが括れない理由を解き、ハンドラーを包む func(http.Handler) http.Handler の層に横断処理を集約するMiddlewareの整備記録。
共通関数に抽出しても、引数に http.ResponseWriter を握っている限りHTTPの外からは呼べない。物件登録のロジックを Execute(ctx) error だけで話すCommandに切り出し、HTTPハンドラーからもフィード取り込みワーカーからも、同じ部品を組み立てて実行できるようにした整備記録。
夜間バッチ3本が骨格ごとコピペで動いていた。共通のエラー処理改修が一本だけ当てられず、接続断の朝、そのバッチだけ黙って正常終了——在庫が昨日のまま荷主に渡る。骨格を一本に固定し工程だけ差し込むTemplate Methodの整備記録。
1年前に長期保管した取引証跡が、いざ復元すると末尾が欠けて開かない。圧縮・暗号化・バッファを組み合わせごとの型で抱え、最も複雑な型の閉じ処理を落としたのが原因。同じio.Writerを一枚ずつ被せるDecoratorで、掛け算で増える型を積み重ねに解く整備記録。
通知を一本足しただけで、ポイント付与が止まった。注文確定の本体に反応が直書きされ、施策のたびに急所を開ける——散弾銃手術をObserverパターンで解き、発生側は「起きた」と知らせるだけにする整備記録。
寄付額の引数に支援者IDを渡しても、両方intでコンパイルが通り、桁違いの受領証明書が届いた。意味の違う値を別の型に分けて取り違えをコンパイルで止め、散らばったメール検証を生成の一点に集約する整備記録。
キャンセル済みの注文が、エラーも出さず発送されていた。状態を文字列で持ち遷移の判断を各所のswitchに散らしたのが原因。状態を型にして次に進める先を状態自身に持たせ、新しい状態の抜けをコンパイルで止める整備記録。
配送料の見積りにテストを書こうにも、関数の奥で本物のDBと運送業者APIを直接呼んでいて一行も書けない。依存を内部で作るのをやめ外から受け取り、mainで組み立てて、本物に繋がず試験台で回せるようにする整備記録。