{ "title": "Split _transcribe_diarize.py 356 -> 164 + 143 + 105", "objective": "_transcribe_diarize.py was the last Python file over the 250-line cap. Now that it sits at 100% line and branch coverage, split it three ways along its natural seams: media probing, clustering maths, and the diarization pipeline itself. Code moves verbatim; the tests predate the seam and are re-pointed, not rewritten.", "acceptance_criteria": [ "All three resulting modules are under 250 lines; the over-cap total falls 33 -> 32 and no Python file remains over the cap", "All 13 top-level definitions are AST-identical to the pre-split file", "The same 63 tests pass, with all three modules at 100% line and branch coverage", "python3 transcribe_fw.py /nonexistent.wav still exits 2, the code transcribe.sh branches on", "Import sites name the owning module - no re-export barrels", "No suppression of any kind" ], "out_of_scope": [ "Any behaviour change", "The 29 over-cap shell scripts, which are the remaining work", "Moving anything under python_pkg/" ], "verifier": "A throwaway ast.dump identity check against HEAD; pytest with --cov of all three modules --cov-branch; running transcribe_fw.py and reading $? directly; pre-commit run --files; bash ~/utils/scripts/check_file_length.sh --all." }