846f681b9a
- crates/horizon-release-sign/legacy-releases.txt pins the SHA-256 of every archive of the 131 releases published before signing (GitHub's upload digests, written by tools/ci/legacy_releases.py). The launcher and horizon-server update install those releases only with exactly those files, so rolling back to one works and nobody can swap its files later; every other release needs its signed SHA256SUMS. - the_launcher_ships_with_a_release_key and horizon_server_ships_with_a_release_key fail while release-keys.txt lists no key, so this can't ship refusing everything. - Test tags moved to v2099.* so they never collide with a pinned release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>