HORIZON SHIELD / TSUGI (継) / 実事件 2 / 2026-09-20
継回復を証明する層を、あなたのブラウザで再計算する
この頁は 12 記録の連鎖を、この頁の中だけで検算する。hash の再計算も、運営者の署名の検証も、あなたのブラウザが今やる。HORIZON SHIELD を信用する必要は無い。JavaScript が動かん環境なら、下の JSON と検証器 (JavaScript と Python) で同じ事ができる。
何が起きたか
gate.horizonshield.dev の A2A agent card は version を持つ。運営者が版を 0.4.8、0.4.9 と 2 回上げ、2 回とも card に署名し直さずに撒いた。日次の証人 (drift witness) が初回の走りで、配られとる card が署名と合わんことを見つけた。規則 R3 が「署名し直せ (resign_agent_card)」を提案し、「撒き直せ (redeploy_pinned)」を「署名の無い本体をまた撒くだけ」と却下した。運営者が Ed25519 の運営者鍵で許可に署名し、署名し直して、門 (deploy_gate.sh) 経由で撒き直した。証人がもう一度測って 0 drift。以後、署名の合わん version は門で止まる (test/card_signature)。
外部の証人 (Agenstry) が 09-19 に見つけた 1 件目は、原因が別 (生 deploy) やった。今回は彼らの読み「変更のたびに署名し直せ」がそのまま当たっとる。両方とも記録に残しとる。
結果
12 記録
| # | 記録 | recorded_at | record_sha256 (焼いてある値 / 再計算) |
|---|
立証せんこと (verify 記録の does_not_establish、そのまま)
自分で確かめる
canonical bytes = JSON、鍵は全段でコードポイント順、区切りは , と :、非 ASCII は逃がさん、record_sha256 と署名 2 欄を除く。Python なら json.dumps(obj, ensure_ascii=False, sort_keys=True, separators=(",",":")) の UTF-8 の sha256。署名は Ed25519、同じ bytes の上。
- 連鎖の file: incident_20260920_resign_chain.json (commit 385c71e3、sha256 6d259ba9bfe2869fdc0830fb8d894ed52503da7d7e06454897cccc9f5c2d0efa)
- 検証器: recovery-v0 (recovery_verify.mjs 0.3.0 / recovery_verify.py、byte 一致)
- 運営者の公開鍵: gate.horizonshield.dev/keys/operator.json
- Bitcoin への錨: JIDEC entry 50 (claim sha256 2cbad76ca003b637… = 連鎖 file の sha256 と 12 記録の hash を書いた記録。OpenTimestamps 提出済み、Bitcoin のブロックに乗るまで数時間 pending。乗ったら、この 12 記録が 2026-09-20 に在ったことを HORIZON SHIELD 抜きで確かめられる)
- この頁の source に JSON を丸ごと埋めてある。network が無くても hash と署名は検算できる。本番の鍵と GitHub の bytes の照合だけ network が要る。