Routing the x86_64-unknown-linux-musl link through Ubuntu's musl-gcc
wrapper overrode Rust's crt-static default and produced a dynamic
binary with an interpreter of /lib/ld-musl-x86_64.so.1. That path
exists on approximately no machine outside Alpine, so the shipped
binary died at exec time with "required file not found" everywhere —
the opposite of what a musl build is for. aarch64-unknown-linux-musl
never used musl-gcc and was static all along; only x86_64 was broken.
Drop musl-tools and the linker override and let Rust link with its
own bundled musl libc.a, which yields a static-pie executable.
Add a post-build check that fails the release if a musl binary has an
INTERP segment, so this can't silently ship again.
Also correct the asset-URL comment: Gitea serves
/releases/download/latest/<name>, not GitHub's
/releases/latest/download/<name>.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011J8C6eRmWEZsh28vkEMD9H