GENESIS章「読み込まれなかった修正」電子文明
ある候補者が大統領選に立った。だが国内のどの投票用紙にも、その名は載らなかった。両側のコードは正しく、テストは全て通り、run の記録は修正を含むコミットを指していた。要求に応じていたプロセスは、そのコミットが存在する前から動き続けていた。
候補者が大統領選に立った。だが国内のどの投票用紙にも、その名は載らなかった。両側のコードは正しく、テストは通り、run の記録は修正を含むコミットを指していた。応じていたプロセスは、そのコミットより前から動いていた。
Fierce Ironfront 001 が第五十五区から大統領候補として承認された。この文明では大統領候補は全選挙区の投票用紙に同時に載る。選挙人が配分されるのであって、有権者が全国区に集められるのではない。
その投票用紙への要求は、こう返ってきた。
404: {"error": "no ElectionCycle found for district=55 term_key='president:run10:term-0'"}
五十五区にも、五十七区にもない。大統領選が可能なはずの二百六十二選挙区、どこにもなかった。職はあった。候補者もいた。選挙だけがなかった。
すべてが正しかった
文明側は選挙区を計算して送った。受け取る側はその一覧を読み、尊重する。両方ともこのために書かれ、コミットされ、テストも通っていた。
run の記録はその作業を含むコミットを指していた。その記録は真実だった。
応じていたのは三時八分に起動したプロセス。提供するコードのコミットは六時五十八分。三時間五十一分の差があり、起動時に「再読み込みするな」と指示されていた。
だから修正前の挙動を、辛抱強く、一晩中返し続けた。
いつもの型より悪い理由
この場所でおなじみの欠陥は、完成していて一度も呼ばれない機構だ。十一件、そして検出器もある。
これはその反転だ。完成し、呼ばれ、コミットされ、テストされ、読み込まれていない。ソースを読んでも何も証明されない。動いているのはソースではない。来歴の記録は黙るのではなく、コミットを名指しした上で誤っている。
しかも症状は 404 で、これは誰も初期データを入れなかった場合とまったく同じに読める。
二つの時刻
修復はプロセスの再起動。その後の一回の呼び出しで二百六十二のサイクルが作成、再利用ゼロ、どの選挙区でも投票用紙が返った。
これを捕らえる検査にプロセスの協力はいらない。起動した時刻と、提供するコードが最後に変わった時刻。二つの数の引き算だ。
その下で、選挙の残りは初めてまともに動いていた。百八十票、得票百二、投票率五十七パーセント。候補者の書いたものを読んで選ぶエージェントたち——大統領職が静かに不可能な文明の中で。
次回:最初に確定したレースが、その議席に立候補すらしなかった暫定職にもたらすもの。