v0.5.0 — Authority-based classification + CLI
Scores are not comparable to 0.4.0. This release continues the authority-based reclassification started in 0.4.0: more rules moved between classes, so a feed's Overall and Publication scores can shift even though the feed is unchanged and detection is identical. Re-baseline any Golden snapshots after upgrading.
Added
- Command-line interface. A new
gtfs-clicrate ships thegtfs-analyzerbinary:gtfs-analyzer validate feed.zipwith--json,--summary,--rule <ID>,--severity <level>,--config <file>,--today <YYYYMMDD>. Exit codes:0no notices,1notices present,2fatal / config error. It runs the same validation core as the web app — no separate logic.
Changed
- Authority-based classification completed. Every
Specrule card must now cite an explicitgtfs.orgfield anchor, enforced by a test gate. Rules lacking an explicit GTFS Schedule normative basis were reclassified offSpec/Interop:XFL_020/XFL_021(transfers cross-file consistency):Spec→Quality.TRP_017(frequencies trip missingstop_times):Interop→Quality(MobilityData'sunused_tripis a different condition — no exact-notice parity).- Google Transit checks grouped under a dedicated
GoogleTransitInteropauthority. - Detection is unchanged — the same issues are still reported; only class labels and scoring weights moved.
ATR_009was mislabelled "attribution_phone invalid"; it actually flags rows where more than one ofagency_id/route_id/trip_idis set. Title, message, and en/tr/ja locales corrected (no behaviour change).- Interop rules no longer appear in the R1 publishability report.
Fixed
- On the file map, shape geometry for trip-context rules (e.g. STM_014, OPR_007, STM_017) is now fetched on demand in deferred (large-shape) mode, so the route line renders alongside the stop pins.
Full changelog: https://github.com/ttezer/gtfs-analyzer/blob/main/CHANGELOG.md