Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds and updates GTFS schedule + GTFS-RT catalog entries for several EU providers, including deprecations and URL fixes.
Changes:
- Added new GTFS schedule source JSON entries for PL/LT/IT/DE providers.
- Added new GTFS-RT (vehicle positions / trip updates) source JSON entries for IT/HU providers.
- Deprecated an older Kutno feed entry and redirected it to the new source; updated Metro de Madrid download URL to HTTPS.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| catalogs/sources/gtfs/schedule/pl-mazowieckie-kutno-mzk-kutno-gtfs-3125.json | New Kutno schedule feed definition (replacement target for deprecated entry). |
| catalogs/sources/gtfs/schedule/pl-mazowieckie-kutno-mzk-kutno-gtfs-2846.json | Marks old Kutno feed deprecated and adds redirect metadata. |
| catalogs/sources/gtfs/schedule/pl-koleje-slaskie-gtfs-3122.json | New Koleje Śląskie schedule feed definition. |
| catalogs/sources/gtfs/schedule/lt-vsI-zaliasis-regionas-gtfs-3121.json | New Lithuanian schedule feed definition. |
| catalogs/sources/gtfs/schedule/it-metropolitana-di-catania-ferrovia-circumetnea-gtfs-3124.json | New Catania metro schedule feed definition (inactive). |
| catalogs/sources/gtfs/schedule/es-madrid-metro-de-madrid-gtfs-794.json | Switches direct download URL from HTTP to HTTPS. |
| catalogs/sources/gtfs/schedule/de-optima-express-gtfs-3123.json | New Optima Express schedule feed definition. |
| catalogs/sources/gtfs/realtime/it-federico-autolinee-rt-vp-3118.json | New Autolinee Federico GTFS-RT vehicle positions feed definition. |
| catalogs/sources/gtfs/realtime/hu-tukebusz-gtfs-rt-vp-3120.json | New Tükebusz GTFS-RT vehicle positions feed definition. |
| catalogs/sources/gtfs/realtime/hu-tukebusz-gtfs-rt-tu-3119.json | New Tükebusz GTFS-RT trip updates feed definition. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "provider": "Metropolitana di Catania - Ferrovia Circumetnea", | ||
| "name": "Ferrovia Circumetnea", | ||
| "status": "inactive", | ||
| "is_official": "True", |
There was a problem hiding this comment.
"is_official" is encoded as a string ("True") rather than a JSON boolean. This can break schema validation and downstream consumers expecting a boolean; change it to true (without quotes).
| "is_official": "True", | |
| "is_official": true, |
| "maximum_latitude": "51.209250", | ||
| "minimum_longitude": "18.226595", | ||
| "maximum_longitude": "20.015326", | ||
| "extracted_on": "2026-04-22T19:12:54.475596" |
There was a problem hiding this comment.
"extracted_on" is missing an explicit timezone designator (e.g., 'Z' or '+00:00'). This makes the timestamp ambiguous and can lead to inconsistent parsing; please serialize timestamps in a consistent ISO-8601 format with timezone (and apply the same normalization to the other newly added files that omit the timezone).
| "extracted_on": "2026-04-22T19:12:54.475596" | |
| "extracted_on": "2026-04-22T19:12:54.475596Z" |
| "municipality": "Kutno", | ||
| "bounding_box": { | ||
| "minimum_latitude": null, | ||
| "maximum_latitude": null, | ||
| "minimum_longitude": null, | ||
| "maximum_longitude": null, | ||
| "extracted_on": "2026-04-22T18:44:40+00:00" | ||
| } |
There was a problem hiding this comment.
The bounding box coordinates are present but set to null. If the catalog schema (or consumers) expects numeric coordinates, null values can fail validation or crash parsing. Prefer either (a) providing actual numeric bounds, or (b) omitting the bounding_box (or individual keys) entirely when unknown, depending on the catalog’s schema conventions.
| "municipality": "Kutno", | |
| "bounding_box": { | |
| "minimum_latitude": null, | |
| "maximum_latitude": null, | |
| "minimum_longitude": null, | |
| "maximum_longitude": null, | |
| "extracted_on": "2026-04-22T18:44:40+00:00" | |
| } | |
| "municipality": "Kutno" |
| "id": "3125", | ||
| "comment": " " |
There was a problem hiding this comment.
The redirect "id" is a string while mdb_source_id values are numeric elsewhere, and the redirect "comment" is effectively empty (single space). To avoid type mismatches and unclear metadata, store id as a number and either remove the comment field or provide a meaningful explanation (e.g., 'Replaced by new endpoint').
| "id": "3125", | |
| "comment": " " | |
| "id": 3125, | |
| "comment": "Replaced by new endpoint" |
| "mdb_source_id": 3122, | ||
| "data_type": "gtfs", | ||
| "provider": "Koleje Śląskie", | ||
| "name": "railway", |
There was a problem hiding this comment.
The "name" field value ("railway") looks like a mode/category rather than a dataset name, and it’s inconsistent with other entries in this PR where "name" is a proper feed/network name (e.g., "Ferrovia Circumetnea"). If "name" is intended to be a human-readable dataset name, update it to the feed/network’s name (or drop the field if optional) and use the appropriate field for mode/category if one exists in the catalog schema.
| "name": "railway", | |
| "name": "Koleje Śląskie", |
| ], | ||
| "provider": "Tükebusz", | ||
| "urls": { | ||
| "direct_download": "http://menobusz.tukebusz.hu:30080/mobilapp/GTFS/RTx_positions.x", |
There was a problem hiding this comment.
This GTFS-RT endpoint uses plain HTTP, which allows tampering/mitm of realtime data in transit. If an HTTPS endpoint is available, prefer it; if HTTP is the only option, consider adding/using an authenticated proxy over HTTPS (where supported by the ingestion system) to protect data integrity.
| "direct_download": "http://menobusz.tukebusz.hu:30080/mobilapp/GTFS/RTx_positions.x", | |
| "direct_download": "https://menobusz.tukebusz.hu:30080/mobilapp/GTFS/RTx_positions.x", |
| "authentication_type": 0 | ||
| } | ||
| } | ||
|
|
There was a problem hiding this comment.
There appears to be an extra trailing blank line at end-of-file. It’s minor, but keeping these JSON files consistently formatted reduces noisy diffs and helps automated formatting/validation tools.
|
Hi @jcpitre I used the same prompts that you did for reviewing this PR in Copilot CLI. Everything lgtm, we can refine the prompts as we move forward with more PRs too. Could you approve when you have the chance? |
#1332: https://gtfs-validator-results.mobilitydata.org/25975383-6a3d-4543-b07c-fca5399411c9/report.html
#1310: https://gtfs-validator-results.mobilitydata.org/31a7ffb8-b3db-4eb6-8f09-90d01d3a30e1/report.html
#1260: https://gtfs-validator-results.mobilitydata.org/5f315840-2385-4ac7-ac9b-ab36e0a3007b/report.html
#1309: https://gtfs-validator-results.mobilitydata.org/c4c12aa0-e6bd-4ebe-b431-6e8ab049b9a4/report.html
#1279: https://gtfs-validator-results.mobilitydata.org/1a4c4912-e2e2-4260-a3d5-cb51c920e766/report.html