Files
flightplanner/crates/core
Alexandre 29c3f1c185 feat(rad): FRA engine phase 2b — mandatory arrival transitions + top-2 repair
Parse Annex 2B mandatory arrival routings and repair the best few
candidates (not just the lowest-error one):

- core::rad: MandatoryArr + RadData.mandatory_arr +
  mandatory_arr_transitions(ades) -> allowed point-sequences.
- rad crate: parse_mandatory_arr() (VIA-clauses in NOT-AVBL-EXC rows,
  scoped to ARR airports). via_sequences() now scans all parenthesised
  transition groups (contain DCT/airway), not just contiguous "VIA (",
  because sub-option markers separate them ("VIA i) (KARDU DCT KALMO)").
  rad-tool `manarr [ADES]`. LIML now yields KARDU KALMO etc.
- discover: "manarr" candidates route to the transition's on-airway
  anchor then splice the (often off-airway) transition points in via DCT.
- attempt_once repairs the top-2 candidates and keeps the best result:
  the lowest-raw-error candidate isn't always the most repairable (a
  mandate-satisfying route may carry more mechanical errors than a route
  stuck on an unfixable mandatory).

Collapses the dense-FRA near-misses: EGLL-EDDM 7->1 err, EDDF-LIRF 3->1
(mandatory PROF205 resolved; residual is a single ROUTE49). Coverage 6/10,
no regression (passing pairs short-circuit on accept). 49 tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-26 10:07:19 +02:00
..