b4ef0107e9
Parse Annex 3A DEP "COMPULSORY FOR TFC" rows into structured mandatory departure routings and satisfy PROF205 "… ANNEX3A DEP … MANDATORY ROUTE" by offering the allowed transitions as discovery candidates: - core::rad: MandatoryDep + RadData.mandatory_dep + mandatory_dep_transitions(adep) -> allowed point-sequences. - rad crate: parse_mandatory_dep() extracts the VIA(...) clauses, expands nested "(A, B)" alternatives into separate branches, and chains sub-fragments into full sequences from an entry point (46 rules; LFPG = 20 transitions incl. NURMO CMB VEKIN ADUTO, OPALE KESAX DIMAL ALESO). rad-tool `mandep [ADEP]` to inspect. - discover: for the departure airport, inject "mandep" candidates that fly the allowed transitions nearest the destination (additive — the oracle still picks best, so no regression risk). Cracks LFPG-EDDF (Paris-Frankfurt): coverage 5/10 -> 6/10 on the batch, no regression. 49 tests green. Phase 2b (mandatory arrivals) is next. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>