{ "intent": "Split two more linux_configuration scripts, one of which could finally be verified by actually running it.", "scope": [ "single_use/features/raspberry_pi_flash_sd.sh (661 -> 166) + pi_flash_remote, pi_flash_image, pi_flash_exec", "boot_recovery/tests/test_boot_repair.sh (315 -> 104) + boot_repair_cases.sh", "Non-goal: raspberry_pi_flash_sd.sh not executed" ], "changes": [ "Both scripts were checked for heredoc positions BEFORE choosing seams, after the enforce_vbox_hosts split cut inside one. raspberry_pi_flash_sd.sh has heredocs at lines 68 and 609; the three cut points (134, 273, 460) sit clear of both.", "test_boot_repair.sh's fixtures and repair cases moved to boot_repair_cases.sh, leaving the assertions and the runner in the entry." ], "verification": [ { "command": "bash linux_configuration/scripts/boot_recovery/tests/test_boot_repair.sh", "result": "pass", "evidence": "31 passed, 0 failed. This is the first linux_configuration script in the whole effort that could be RUN as verification rather than statically checked: its header documents that every case builds a throwaway root in a temp dir and passes --root, so nothing on the machine is touched." }, { "command": "same script from a detached worktree at HEAD", "result": "pass", "evidence": "31 passed, 0 failed - the identical count, so the split neither lost nor duplicated a case. Establishing the baseline from a clean worktree rather than trusting the post-split number is the shell equivalent of the pass-count rule used throughout python_pkg." }, { "command": "meta/scripts/verify_shell_split.sh for both scripts", "result": "pass", "evidence": "Both report 'libs sourced, functions defined' on the first attempt - no chained libs, no SCRIPT_DIR collision, no heredoc cut." }, { "command": "pre-commit run --files <6 changed files>", "result": "pass", "evidence": "Clean, including shellcheck over each lib in isolation." } ], "risks": [ "raspberry_pi_flash_sd.sh writes partition tables to an SD card and was not run; only the stubbed run and the static checks cover it.", "Checking heredoc positions before choosing a seam is currently a manual step. The verifier catches the failure afterwards via bash -n, but the splitter still has no heredoc awareness." ], "rollback": [ "git revert the commit; both scripts return to 661 and 315 lines and the four libs disappear.", "After rollback, re-run test_boot_repair.sh and expect 31 passed." ] }