Mypy is now installed by CI and reports 15 type errors across 7 source files. Ruff is already clean; these are a separate type-safety baseline.
Groups:
- Optional Tkinter module typing in startup/selector.py.
- Dynamic logging handler metadata in logic/storage/sqlite_storage.py.
- Mixed settings value typing in ui/pyqt/settings_dialog.py.
- Optional Qt header and selection objects in ui/pyqt/task_list.py and calendar_view.py.
- Qt paintCell override annotations in calendar_view.py.
- Missing tkcalendar typing metadata in tkinter_ui.py.
- Optional startup selector result in startup/controller.py.
Acceptance criteria:
- python -m mypy src passes without globally disabling useful checks.
- Ruff lint and formatting remain green.
- Unit tests remain green.
- Narrow third-party or dynamic API exceptions are documented locally.
Mypy is now installed by CI and reports 15 type errors across 7 source files. Ruff is already clean; these are a separate type-safety baseline.
Groups:
Acceptance criteria: