Follow-up to #480 and #487; tracker #416. Program.loadImportClosure currently runs full per-file checking in every discovery round. Early files retain results produced before later declarations are known; conformance compensates with recompileAll, reparsing and rebinding the complete graph. The CLI replays the early results. This is an incorrect scheduling boundary for source-owner integration and unnecessary repeated work.
Implement a retained parse/bind stage and a one-shot semantic/emit stage. Discover the complete closure using bound sources, then check against final program facts without replacing HIR, tokens, or binder owners. Preserve parser recovery spans and diagnostics after parser destruction; ensure failure cleanup and explicit invalidation/recompile behavior. Exercise serial, parallel, streaming, late-discovered declarations, and syntax recovery paths. Keep imported-type correctness gates unchanged: this scheduling work alone is not graph benchmark readmission. Record exact tests and untimed admission results, with a brief README link.