29c3f1c185
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>