mkl-fix-type-errors · git:20261015.46e41d9 · 2026-10-15 · sha256 39e487a43ef97dc1
mkl-fix-type-errors git:20261015.46e41d9A
Immutable. This exact content never changes and is served at /api/v1/blob/39e487a43ef97dc1.
---
name: "mkl-fix-type-errors"
description: "Resolve static type checker errors (mypy, pyright) using localized symbol-level diagnostics without whole-file rewrites. Use when type checks fail on candidate patches."
---
# Fix static type checker errors
Resolve type checker errors (`mypy`, `pyright`) by diagnosing the failing symbol and applying minimal, surgical repairs. Never feed whole source files into context or rewrite entire modules to fix isolated type mismatches.
## 1. Extract Localized Diagnostics
Run the compact diagnostic extractor to isolate only the failing symbol, line numbers, and error codes:
```bash
# Mypy text output
mypy --show-error-codes path/to/file.py | python3 tools/extract_type_diagnostics.py
# Pyright JSON output
pyright --outputjson path/to/file.py | python3 tools/extract_type_diagnostics.py --format pyright
```
Inspect the returned `<type_error>` block:
- Note the exact error code (for example `union-attr`, `arg-type`, `return-value`).
- Focus only on the enclosing symbol (`<symbol>`) and localized line context (`<context>`).
- If multiple cascading errors stem from one symbol, fix the root symbol first.
## 2. Select Minimal Repair Strategy
Choose the least invasive repair that satisfies the type checker without altering runtime behavior:
1. **Type Narrowing (`[union-attr]` / `Optional`)**:
Add an early return or guard clause before member access:
```python
if val is None:
return default_value
```
2. **Signature Widening (`[arg-type]`)**:
If a function accepts multiple collection types, widen the parameter annotation from concrete `list[T]` to abstract `Sequence[T]` or `Iterable[T]`, or `dict[K, V]` to `Mapping[K, V]`.
3. **Return Type Adjustment (`[return-value]`)**:
If a function can return `None` on failure or fallback branches, widen the return annotation to `T | None`. If `None` should not be returned, ensure all code paths return a valid instance.
4. **Variable Annotation (`[var-annotated]` / `[assignment]`)**:
Provide an explicit type annotation on initialization (`items: list[str] = []`) or use `typing.cast(TargetType, expr)` where dynamic behavior cannot be expressed in standard type syntax.
## 3. Apply Surgical Patch
Modify only the affected signature, variable annotation, or guard line. Do not reformat unrelated functions, invent new abstractions, or replace working standard library calls.
## 4. Verify Resolution
Re-run the type checker strictly on the modified file:
```bash
mypy --show-error-codes path/to/file.py
```
Confirm that the target error is eliminated, error count dropped to zero, and existing regression tests continue to pass without behavioral drift.