GENESIS章「正しいデータベース、正しい時計、間違った run」電子文明
一万五千の agent からなる文明が今朝生まれ、自分のすることのすべてを、その前身である文明の名前で記録しはじめた。何も壊れてはいなかった。データベースは正しく、時計は正しく、十九のフラグもすべて正しかった。間違っていたのは名前だけであり、名前こそ、データから再構築できない唯一のものである。
一万五千の agent からなる文明が今朝生まれ、自分のすることのすべてを、その前身である文明の名前で記録しはじめた。何も壊れてはいなかった。データベースは正しく、時計は正しく、十九のフラグもすべて正しかった。間違っていたのは名前だけであり、名前こそ、データから再構築できない唯一のものである。
OKAGI の run にはそれぞれ launch script がある。記憶から打ち込むコマンドではなく commit された成果物であり、なぜ存在するかといえば、以前の三つの run が手作業で開始され、その結果 ledger が崩れたからだ。そのうち一つは古いデータベースに対して二度開かれ、二つの run はデータベースが同じサーバー上にありながら記録から完全に消えた。
だから十四回目の run のスクリプトは、十三回目のものから run13 をすべて run14 に置換して作られた。
それはデータベース名を書き換えた。clock key も、run key も、ログファイルのパスも、watcher の引数も、見出しも書き換えた。すべて正しい。
二つだけ、手つかずで残った。
run_marker --open 13 --start
driveloop --apply-queue 13
裸の数字である。run13 ではなく、ただの 13。読む人間にとっては「十三回目の run」を意味し、find-and-replace にとっては何も意味しない。
それが生んだもの
loop は起動した。十四回目の run のデータベースに接続した。十四回目の run の時計を進めた。憲法上の資格ゲートを初めて有効にした十九のフラグを、十四回目の run のものとして携えた。
そして、正確に、平明な言葉でこう宣言した。
opened : run 13
started : run 13
二十分前に、意図的に、理由を書き添えて閉じられたはずの run である。
この新しい文明が生むすべての行が、その名の下に綴じられるところだった。選挙も、任命も、命令も、所有も——すべてが、終わった run に帰属させられ、しかもその run の記録を持たないデータベースの中で。データの中にそれを告げるものは何一つなかっただろう。データの中に誤りは一つもないからだ。どの数字も実在のものの実在の測定であり、ただ間違った名前が貼られている。
六秒間走った。
もっと悪くなりかけていた部分
同じ二桁が、もう一箇所に現れていた。四つの変更が前の run から保留されていた。agent に許されることを変えるものであり、run の途中で適用すれば、境界を示すもののない二つの実験ができてしまうからだ。それらは新しい run のために queue に入れられていた。
launch はその四つすべてを「適用済み」と記録した——十三回目の run に対して。閉じられており、一つも携えたことのない run に対して。
その記録こそ、この文明が後から再構築できない唯一のものだ。行は数え直せる。持分は追跡できる。だが、ある run がある変更を携えて起動されたかどうかは、そう述べる一行の中にしか存在せず、間違ったことを述べる一行は、正しいことを述べる一行と見分けがつかない。
どちらも訂正され、訂正は置き換えではなく、そのかたわらに書き残された。
これが「複製」について語ること
find-and-replace は文字列を照合する。13 と run13 が同じものを意味するとは知らない。両者が同じものを意味するのは、読み手にとってだけだからだ。
スクリプトは今、すべての index を一つの変数から導く。置換すべきものはもう残っていない。その上のコメントは何が起きたかを述べている——十五回目の run のスクリプトは、これから作られるからだ。