mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-11 20:34:02 +01:00
412 lines -> 135, with the nine functions in lib/music_detect.sh (133), lib/music_monitor.sh (91) and lib/music_status.sh (85). find_music_services and kill_music_services stay together: the first writes MUSIC_FOUND_PROCESS/MUSIC_FOUND_WINDOW and the second reads them, so splitting between them would thread mutable state across files. The test suite caught what the static checks could not. The harness copies the script into a temp worktree to stub common.sh, and copied exactly one file -- so after the split every source line failed and the script died before any behaviour under test ran. Teaching it to copy lib/ too is a harness fix under decision 8: no assertion changed, the same five checks run, exit 0 before and after. bash -n also earned its keep: the first splice dropped notify_user's closing brace, and shellcheck reported that only as SC1094 "parsing of sourced file failed" against the entry. One rename, not a suppression: monitor_loop's local `music_services` became `active_services` after shellcheck flagged SC2153 against the MUSIC_SERVICES config array now visible in the same file. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011w2Pj4Ek3ZNMQVYcFHgXDY
21 lines
2.1 KiB
JSON
21 lines
2.1 KiB
JSON
{
|
|
"title": "Split music_parallelism.sh (412 lines) into an entry script and three libs",
|
|
"objective": "Bring linux_configuration/scripts/periodic_background/digital_wellbeing/music_parallelism.sh under the repo-wide 250-line cap by moving its nine functions into lib/music_{detect,monitor,status}.sh, with the existing regression test proving behaviour is unchanged.",
|
|
"acceptance_criteria": [
|
|
"music_parallelism.sh and each new lib/music_*.sh file is at most 250 lines.",
|
|
"shellcheck reports zero findings across the entry script and all three libs, at the repo's no-severity-filter setting, with no suppression added.",
|
|
"linux_configuration/tests/test_music_parallelism.sh exits 0 and runs the same five named checks as before the split.",
|
|
"The set of functions defined across the entry and the libs is identical to the nine defined at HEAD, each defined exactly once.",
|
|
"Every executable line of the original survives, except the three carrying the deliberate music_services -> active_services rename.",
|
|
"MUSIC_FOUND_PROCESS and MUSIC_FOUND_WINDOW, which find_music_services writes and kill_music_services reads, do not cross a file boundary.",
|
|
"No lib sources another lib; the entry sources all three, after the configuration arrays they read.",
|
|
"No assertion in the test is changed, deleted, skipped or weakened; the only permitted test edit is making the libs reachable from the temp worktree."
|
|
],
|
|
"out_of_scope": [
|
|
"Changing any detection pattern, interval, or the set of monitored music services or focus apps.",
|
|
"Converting the $0-based SCRIPT_DIR to ${BASH_SOURCE[0]}; nothing sources this script, so the existing form is correct here.",
|
|
"Touching the common.sh dual-path source or the /usr/local/lib fallback."
|
|
],
|
|
"verifier": "bash linux_configuration/tests/test_music_parallelism.sh (expects exit 0 and the same five checks), shellcheck over the entry plus all three libs (expects zero findings), bash -n on each, bash ~/utils/scripts/check_file_length.sh over the four files (expects none listed), and a sorted line-set diff of the original against entry+libs showing only the deliberate rename."
|
|
}
|