diff --git a/.gitignore b/.gitignore index 77e6850..078442a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,13 @@ -# reference data +# reference data (downloaded airports, etc.) /data/* +# curated MCT starter dataset (checked in — see data/reference/mct/) +!/data/reference/ +!/data/reference/.gitkeep +!/data/reference/mct/ +!/data/reference/mct/** +/data/reference/airports.json +/data/reference/metro-areas.json +/data/reference/decommissioned.json # OTAIP run/gate traces (durable JSONL written by @otaip/integration) traces/ diff --git a/data/reference/mct/README.md b/data/reference/mct/README.md new file mode 100644 index 0000000..aaf1c7a --- /dev/null +++ b/data/reference/mct/README.md @@ -0,0 +1,26 @@ +# MCT reference data (`data/reference/mct/`) + +Curated Minimum Connecting Time rows for Agent 1.3 Connection Builder. + +**Authority:** IATA SSIM Chapter 8 + PSC Resolution 765. See `docs/knowledge-base/mct.md`. + +## Hierarchy (most specific → fail-closed) + +| Priority | Level | File / field | When used | +| -------- | ------------------ | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| 1 | Carrier override | `carrier-overrides.json` | Matching arriving/departing carriers (+ connection status) at airport; optional terminals | +| 2 | Airport + terminal | `airport-rules.json` (`terminal_change` or terminal pair set) | No carrier match; terminal change known | +| 3 | Airport | `airport-rules.json` (station default for status) | No carrier/terminal match | +| 4 | Fail-closed | — | **No invented IATA global table.** MCT unresolved → connection invalid | + +## Rules for adding rows + +- Cite a source (`source` field): SSIM/aggregator extract, public doc URL, or `already-in-code:…`. +- Do **not** add airport-constant guesses or a global 60/90 table. +- Do **not** derive MCT from haversine / great-circle distance. +- Interline / unpublished carrier exceptions → leave as `DOMAIN_QUESTION` in the KB; do not invent. + +## Files + +- `carrier-overrides.json` — carrier@airport starter rows +- `airport-rules.json` — station/terminal rows (empty until a real extract is available) diff --git a/data/reference/mct/airport-rules.json b/data/reference/mct/airport-rules.json new file mode 100644 index 0000000..8f99907 --- /dev/null +++ b/data/reference/mct/airport-rules.json @@ -0,0 +1,7 @@ +{ + "version": "0.1.0", + "description": "Airport / airport+terminal MCT rules from SSIM station filings. Empty until a real extract is curated — do not invent airport constants.", + "authority": ["IATA SSIM Chapter 8", "IATA PSC Resolution 765"], + "hierarchy_levels": ["airport_terminal", "airport"], + "rules": [] +} diff --git a/data/reference/mct/carrier-overrides.json b/data/reference/mct/carrier-overrides.json new file mode 100644 index 0000000..020630b --- /dev/null +++ b/data/reference/mct/carrier-overrides.json @@ -0,0 +1,25 @@ +{ + "version": "0.1.0", + "description": "Carrier-specific MCT overrides (SSIM Ch.8 / PSC Res 765). Starter set only — not a full industry extract.", + "authority": [ + "IATA SSIM Chapter 8", + "IATA PSC Resolution 765", + "https://www.iata.org/contentassets/638f0938b3dd451b872a1d8357755421/minimum-connecting-time-user-guide_version-1.1.pdf" + ], + "hierarchy_level": "carrier_override", + "overrides": [ + { + "airport": "ORD", + "arriving_carrier": "UA", + "departing_carrier": "UA", + "connection_status": "DD", + "connection_type": "domestic", + "scope": "online", + "minutes": 50, + "arrival_terminal": null, + "departure_terminal": null, + "source": "already-in-code: packages/agents/search/src/connection-builder/mct-data.ts carrier_rules (pre-#141)", + "notes": "Online same-carrier domestic at ORD. Not validated against a public SSIM/OAG extract." + } + ] +} diff --git a/docs/agent-map.html b/docs/agent-map.html index be7c8e4..cca978a 100644 --- a/docs/agent-map.html +++ b/docs/agent-map.html @@ -1897,7 +1897,7 @@