fix(bifrost): scope Solana RPC wait to mocknet
Problem
build/scripts/bifrost.sh performs an unbounded Solana getSlot readiness loop before executing Bifrost whenever the Solana RPC is configured. The production node-launcher uses this same entrypoint, so one unavailable Solana endpoint can prevent Bifrost and every otherwise healthy chain client from starting.
The gate was introduced with the XMR integration CI hardening to avoid a mocknet Solana-validator startup race. It is useful for deterministic simulation startup, but it should not apply to deployed networks.
Fix
Run the Solana readiness gate only when NET=mocknet.
- Mainnet, stagenet, and chainnet start Bifrost without contacting the Solana RPC.
- Mocknet retains the readiness wait that prevents churn/keygen simulation races.
- No Solana chain-client or protocol behavior changes.
Regression coverage
A standalone entrypoint test executes the real script with stubbed dependencies and verifies both sides of the boundary:
- mainnet completes without invoking an unavailable Solana RPC;
- mocknet still invokes and waits for the Solana RPC.
Local validation
go test -tags=mocknet ./build/scripts -count=1bash -n build/scripts/bifrost.sh- targeted
golangci-lintandshellcheckthrough Trunk git diff --check
Full repository lint remains dependent on access to tss-lib-private/v3; the org pipeline is the authoritative full check.