{ "title": "Split code_tutor/_analyzer.py under the 250-line cap", "objective": "Bring python_pkg/code_tutor/_analyzer.py (388 lines) under the repo-wide 250-line cap by moving the file-walking and import-graph half into _deps.py and the static scan tables into _scan_tables.py.", "acceptance_criteria": [ "_analyzer.py, _deps.py and _scan_tables.py are each at most 250 lines.", "The code_tutor suite still reports exactly 216 passing tests -- the same count as before the split, proving no test was dropped or silently skipped.", "The package keeps 100% branch coverage of the code_tutor source modules.", "_is_binary, the only name any test patches on _analyzer, stays defined there so that patch string needs no edit.", "Every importer of the moved functions -- cli.py, _plan_builder.py and test_analyzer.py -- names _deps directly rather than reaching them through an _analyzer re-export.", "No assertion is changed and no test is deleted, skipped or weakened.", "No suppression is added and no coverage exclusion is introduced." ], "out_of_scope": [ "Changing what any test asserts, or which paths the analyzer skips.", "Splitting cli.py, _verifier.py, _llm.py or the code_tutor test modules, which are separate commits.", "Adding a re-export shim in _analyzer." ], "verifier": "timeout 90 env PYTHONPATH=. python3 -m pytest python_pkg/code_tutor/tests -q (expects exactly 216 passed), plus an import-time assertion that every patched name resolves, plus pre-commit run --files on the touched files." }