We combine on-time performance, frequency, crowding, and reliability into one score (0–100), then sort lines into S (best) through D (worst).
D tier means worse than peers on these stats — not that the line is shut down. S tier means top of the pack.
Full methodology: see docs/methodology.md in the project repo.