{ "title": "Split setup_midnight_shutdown.sh under the 250-line cap", "objective": "Bring the last over-cap file (1734 lines) under 250 by moving its 20 real top-level functions into eight libs and its largest quoted heredoc into a verbatim payload, without altering any of the scripts it generates into /usr/local/bin.", "acceptance_criteria": [ "check_file_length.sh --all reports zero files over the cap, with the payloads git-tracked.", "Every heredoc body is byte-identical before and after, except the one deliberately moved to a payload file whose hash matches it exactly.", "verify_shell_split.sh shows no unexplained body change; the -log entry is a known heredoc-internal false positive and must be justified, not ignored.", "--help is byte-identical to the pre-split baseline.", "shellcheck passes without -x, shfmt is a no-op, no suppression added." ], "out_of_scope": [ "Running `setup`: it installs systemd units, chattr +i's the config and arms a shutdown timer.", "Rewriting the deployed /usr/local/bin scripts — unnecessary, since the generated content is provably unchanged.", "Phase 2 (wiring the cap into pre-commit), which starts only once the cap is at zero." ], "verifier": "Per-file heredoc body hashing before vs after (the decisive check); verify_shell_split.sh with the -log entry explained; line-multiset check including the payload; diff of --help; shellcheck + shfmt + check_file_length --all." }