Problem
src/github/backfill.ts:1852 builds the login set from pr.authorLogin and pr.user?.login then filters with case-sensitive ===. Same user with different casing across payload representations → two ContributorRepoStatRecord rows (the #746 class).
Fix
Normalize to a canonical lowercase key when building/filtering (the codebase's sameLogin helper exists in 7 places).
Acceptance
- One user = one stat row regardless of casing.
Problem
src/github/backfill.ts:1852 builds the login set from pr.authorLogin and pr.user?.login then filters with case-sensitive ===. Same user with different casing across payload representations → two ContributorRepoStatRecord rows (the #746 class).
Fix
Normalize to a canonical lowercase key when building/filtering (the codebase's sameLogin helper exists in 7 places).
Acceptance