Round-trip, with receipts.
The repo ships a small authored demo project. Compile it on VFP9, decompile it with the CLI, recompile the output: statement frames and symbol tables come back byte-identical. Exit codes, hashes, and per-section verdicts are committed alongside it.
On the development corpus — one vendor's estate of real forms and class libraries — 10,514 of 10,514 method sections lift, none blocked, none silently dropped. On repositories never used to infer schemas, 95.1% of validation sections and 94.9% of held-out sections lift. Of the 286 sections whose emission changed in the latest round, 215 recompile byte-identical against the original bytecode on a real VFP9.
Some things provably cannot come back: comments are never compiled, DECLARE parameter names are discarded, WAIT WINDOW clause order is canonicalised by the compiler, and some identifiers are blanked by the compiler itself. FoxLift proves what is unrecoverable and never invents it.
See the demo receipts