{ "title": "Split transcribe_helpers.py 289 -> 177 + 142", "objective": "transcribe_helpers.py was 289 lines against the 250-line cap. Now that it sits at 100% line and branch coverage, split it along its natural seam: the dependency probes and audio/model operations move to _transcribe_probes.py, while transcribe_helpers.py keeps the CLI dispatch that transcribe.sh invokes by path. Code moves verbatim; the tests predate the seam and are re-pointed, not rewritten.", "acceptance_criteria": [ "Both resulting modules are under 250 lines; the over-cap total falls 35 -> 34", "All 18 top-level definitions are AST-identical to the pre-split file", "The same 41 tests pass, with both modules at 100% line and branch coverage", "Every CLI subcommand returns the same exit code as before the split, since transcribe.sh branches on them", "transcribe.sh needs no change: tools/transcribe_helpers.py still exists at the same path with its executable bit", "No suppression of any kind" ], "out_of_scope": [ "transcribe_fw.py (302) and _transcribe_diarize.py (356), which are separate targets", "Removing the unreachable dispatch guard, a behaviour change", "Moving anything under python_pkg/" ], "verifier": "A throwaway ast.dump identity check against HEAD for the verbatim claim; pytest with --cov=transcribe_helpers --cov=_transcribe_probes --cov-branch; running each CLI subcommand and reading $? directly; bash -n transcribe.sh; bash ~/utils/scripts/check_file_length.sh --all." }