The public entry point is already mhcflurry train pan-allele-release, but it delegates to a roughly 2,400-line shell orchestration engine. The shell currently owns traps, background telemetry, SSH/Brev lifecycle, rsync, and legacy shell training stages, which makes validation and structured error handling harder.\n\nTrack a staged migration of orchestration into Python while retaining compatibility for the lower-level shell training recipes. This should be a separate foundational change from the integrity fixes in #318.
The public entry point is already mhcflurry train pan-allele-release, but it delegates to a roughly 2,400-line shell orchestration engine. The shell currently owns traps, background telemetry, SSH/Brev lifecycle, rsync, and legacy shell training stages, which makes validation and structured error handling harder.\n\nTrack a staged migration of orchestration into Python while retaining compatibility for the lower-level shell training recipes. This should be a separate foundational change from the integrity fixes in #318.