ci: count migration-gate tests via nextest JSON, not human-format indentation
The count-floor guard (#4673) parsed nextest's human list format with
grep -c '^ '. CI's newer nextest emits a different indentation, so the
count collapsed to 0 and the gate failed on every PR based on current
main (first observed on #4683, then #4674/#4677/#4680). Count via
--message-format json + jq instead, which is stable across versions, and
fail loudly if the JSON shape ever changes.