Repeatability
Medium
The structural pattern—annotate methods, run mypy, fix errors—is consistent, but each legacy codebase has unique quirks: custom managers, dynamic model fields, mixed ORM patterns. The agent must make fresh judgment calls on every ambiguous signature.
Ambiguity Tolerance
Medium
Mypy strict mode gives a concrete pass/fail signal, which is good. But 'most critical type errors' is subjective, and what counts as a correct annotation for complex Django ORM return types (e.g., QuerySet generics, Optional fields) is genuinely debatable.
Data & Tool Availability
High
The agent needs read/write access to the codebase and the ability to run mypy in a sandboxed environment—both are achievable with a standard code agent setup. Django-stubs and third-party type stubs may need to be installed but are publicly available.
Error Cost
Medium
Incorrect annotations can introduce subtle runtime bugs or mask real type errors, but the work is reversible via version control. The bigger risk is a false sense of type safety if the agent annotates incorrectly and mypy passes due to overly broad types like Any.
Human Judgment Required
Medium
Choosing between Optional, Union, and overloaded signatures for ambiguous Django patterns requires developer intuition. The editorial judgment needed to identify and explain the 5–10 'most critical' errors also benefits from domain knowledge about the application's risk surface.