Completes the route-DB pipeline that is the realistic path to 100% under
the prose-only / independent constraint (pure RAD-prose synthesis can't
guarantee 100% on arbitrary pairs):
- discover: synthesize -> oracle-validate -> store if no-error -> reuse
instantly next time (verified: 2nd LFPG-EDDF returns via "reused stored
IFPS-valid route", 0 IFPUV calls).
- learn --from --to --route --fl: validate a user-supplied route against
IFPUV and, if no-error, record it (source=ifps, ifps_ok=1) so discover
reuses it forever. --force keeps a still-erroring route for review
(source=manual, not reused). This is how a real ops route DB grows and
how the pairs the generator can't yet crack reach 100% (seed once).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Clean-room reproduction of PFPX: route generation + IFPS validation + OFP.
Independent design — official ICAO/EUROCONTROL data only (RAD, FRA points,
IFPUV oracle); no community FPL sources.
Workspace crates: core (routing/discover/rad/navdata/perf/export),
cli, server, rad (Annex parser), gui (Tauri v2 + React + MapLibre).
Route discovery: oracle-in-the-loop repair against Eurocontrol IFPUV.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>