CI / build + unit + e2e (pull_request) Successful in 13m18s
Greedy sparse selection replaces the blanket 1000km-from-large filter that over-filled central Australia / Canada edges with dozens of tiny strips: candidates sorted by scheduled service, type rank (medium < small < seaplane), numeric id; accepted only if >= REMOTE_RADIUS_KM from every already-accepted special. CSV: 1483 -> 1161 rows (1119 large unchanged, specials 364 -> 42). New unit test pins the pairwise-sparsity invariant on the committed dataset.