Internal mypy debt has grown past its recorded budget: 108 errors in 36 files against 106 in 35
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
Research direction
Start by running ./.venv/bin/python -m mypy --ignore-missing-imports forgelm/ to list the 108 errors across 36 files, and read the deferral row at docs/roadmap/risks-and-decisions.md:262. Choose between fixing enough errors to get back to 106 or below, or re-baselining with a written reason. Done means the count is within budget, a CI step fails on growth past the budget, and the row is removed with its ID named in the CHANGELOG.
Written by the indexing model from the issue text.
Description
Deferred work ·
F-W20260729-OPS-23-internal· severity Low · cost ~1-2 days · recorded indocs/roadmap/risks-and-decisions.md:262
Summary
Phase 16 S1 wired the public-surface mypy --strict gate and recorded the package-wide typing debt as a budget instead of a blocker: 106 errors across 35 files, measured with mypy 1.20.2 and ./.venv/bin/python -m mypy --ignore-missing-imports forgelm/, with growth past 106 named as the signal to act. That signal has fired, and nothing in CI enforces the budget, which is why the growth went unnoticed.
Condition or budget
"Growth past 106 is the signal to act" — met: the recorded command reports 108 errors in 36 files on 2026-10-09.
State today (re-checked 2026-10-09)
Re-measured on development with the recorded command and mypy 1.20.2: Found 108 errors in 36 files (checked 104 source files).
Related
#748 corrects the stale "47" in the Phase 16 plan (documentation only).
Acceptance criteria
- The count is back to 106 or below, or the budget is re-baselined with a written reason.
- Growth past the budget fails CI (a ratchet), so the next increase is caught when it happens.
- The row is removed from the deferral table and the CHANGELOG names its ID (the table's removal contract).
Recorded in docs/roadmap/risks-and-decisions.md (read at f94595f) and re-checked against the code on 2026-10-09. The row leaves that table only when the fix is on main, the CHANGELOG names its ID and any promised guard exists.
- Dominant language
- Python
- Stars
- 9
- Forks
- 1
- Avg merge
- 8h 10m
- Merged PRs (30d)
- 5
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from HodeTech/ForgeLM
-
area: dev-tooling bug severity: low source: roadmap wave: 4
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
area: site bug good first issue severity: low source: review-2026-09 wave: 4
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
-
documentation good first issue severity: medium source: review-2026-09 wave: 3
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
documentation good first issue severity: low source: review-2026-09 wave: 4
Difficulty 1/5 1-3 hours Newbie friendliness 80/100
-
documentation severity: medium source: review-2026-09 wave: 3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
All issues in HodeTech/ForgeLM
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 1/5 Under an hour Newbie friendliness 62/100
-
Difficulty 1/5 Under an hour Newbie friendliness 70/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
topoteretes/cognee#5773 ·
Maintainers usually reply within 1 day
-
MiKTeX: a failed build reports no errors because texify --quiet switches the log to file:line: styleOpen
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
SublimeText/LaTeXTools#1718 ·