Phase 4: haos-vm.sh
- Inline recovery in error_handler with RETRY_DOWNLOAD option (cache clearing)
- VM creation wrapped in create_vm() for bounded recursive retry
- Supports max 2 retries with whiptail recovery menu
Phase 5: debian-13-vm.sh, ubuntu2204/2404/2504-vm.sh
- Inline recovery with RETRY/KEEP/ABORT options
- debian-13-vm.sh: SKIP_CUSTOMIZE option to bypass virt-customize failures
- All scripts wrapped in create_vm() with phase flag pattern
Phase 6: openwrt-vm.sh
- Limited recovery for download/import phase
- Preserves set -Eeo pipefail, disables pipefail during recovery menu
- sendkey/network config phase included in create_vm but not specifically retryable
Architecture: Inline recovery pattern (no vm-core.func dependency)
- Consistent with docker-vm.sh's recursive retry via error_handler
- Bounded by VM_MAX_RETRIES=2
- ERR trap disabled during recovery menu, restored before retry