Fix estimateRound fuzzy name lookup for Squad/GK signals
After rounds 6 + 7 unlocked Big-5 squad-history data, coverage jumped to 93/182 but still missed 9 Championship bets. Not a reader bug — the new resolveTeamTmId handles all the fuzzy name variants. It was estimateRound
After rounds 6 + 7 unlocked Big-5 squad-history data, coverage jumped to 93/182 but still missed 9 Championship bets. Not a reader bug — the new resolveTeamTmId handles all the fuzzy name variants. It was estimateRound (the earlier gate in the backfill loop) doing an exact-match lookup.
estimateRound counts matches for a team in football-data-cache. If it can't find the team, it returns null, and the backfill skips the squad + gk signals for that bet entirely. Championship bets with FotMob full names ("Preston North End", "Coventry City", "Queens Park Rangers") never matched the cache's MI short names ("Preston", "Coventry", "QPR"), so estimateRound returned null even though the squad-history data was there.
Added the same 3-way fuzzy resolution (exact → canonicalToMI → miToCanonicalName → stripped suffix) that findTeamInMap uses. Expected: Squad/GK 93/182 → ~105/182 on the next backfill run.
Also added the full smoke-test case set (Preston North End, Coventry City, Birmingham City, etc.) so this regression is caught next time.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>