Files
rob 4daf21cb27 haqq: drop truncated dteam peer, stop feeding the Polkachu addrbook JSON to ct_merge_seeds; cometbft-common: validate peer entries
- haqq/scripts/init.sh: 7c153a83@peer.haqq.mainnet.dteam.tech:28656 is not a 40-hex node id;
  haqqd refuses to start with it in seeds/persistent_peers. Removed from both defaults.
- haqq/scripts/init.sh: ct_merge_seeds was given ADDRBOOK_URL (a JSON addrbook, hundreds of KB)
  as the official seed list; the resulting sed argument exceeded ARG_MAX on Alpine. The
  addrbook is already installed by ct_set_addrbook; pass no seeds URL.
- scripts/cometbft-common.sh (+ per-chain copies via update.sh sync): ct_valid_peers filters
  seeds and persistent_peers to <40-hex>@host:port and logs what it drops, so a bad upstream
  entry can never block startup again.

Replaces the runtime override /root/onsite-overrides/haqq-mainnet-skip-addrbook-as-seeds.yml
that the onsite agent left on rpc-de-31 on 2026-09-07.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjqejYycVyVvrxV9aTDhgX
2026-09-09 06:43:08 +00:00
..

Cosmos Hub (gaiad) — CometBFT bootstrap notes

Operator guidance for fresh provisioning of the cosmos-hub gaiad node. See also the shared family-C reference at rpc/scripts/README.cometbft.md.

Fresh bootstrap: use a Polkachu FULL snapshot

For a wasm chain like cosmos-hub, prefer seeding from a Polkachu FULL snapshot over state-sync. The full archive includes everything on disk — application state, wasm/, and data/08-light-client/ (IBC 08-wasm bytecode) — so gaia does not panic with wasmlckeeper failed initialize pinned codes / Error opening Wasm file on first start.

Snapshot URL pattern:

https://snapshots.polkachu.com/snapshots/cosmos/cosmos_<HEIGHT>.tar.lz4

Replace <HEIGHT> with the height published on the Polkachu cosmos snapshot page. Extract into the node data volume (/root/.gaia) before docker compose up.

CL_VERSION must match the live chain

Cosmos chains upgrade via governance; an old binary halts at the upgrade height or panics upgrade handler is missing for vX.Y.Z. Before pinning CL_VERSION / COSMOS_MAINNET_GAIAD_VERSION, check the live app version on Polkachu RPC:

curl -s https://cosmos-rpc.polkachu.com/abci_info | jq .result.response.version

The Docker image tag must match that version (verify pullability with a manifest HEAD, not only the ghcr tags list — it can lag).

Traefik WebSocket routing

The split-WS router uses HeadersRegexp('Upgrade','(?i)websocket') (case-insensitive). Clients sending Upgrade: WebSocket (e.g. python websocket-client) require this — a case-sensitive Headers('Upgrade','websocket') matcher falls through to the RPC router (400/200 instead of 101).