You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Session Handoff [python-contract]: Mypy-Only Build Directories Settled and Released as 2.0.737 #2008
This round finished #1941 with the maintainer's decision. A build-profile Python directory may use mypy as its only CI type checker, and whichever checker CI runs is held to strict. The change landed in #2005 and #2007, promoted in #2006, and was released as 2.0.737.
Next steps, in priority order
Re-read each issue rather than trusting these summaries.
PlexCleaner adopts the gate. This happens in PlexCleaner's own session and is unchanged from earlier links. It is first in the adoption order the maintainer set on Gate Every Repository's Python on Its Code, Not on Its Config #1800. Pin the validator to 2.0.737 or later and pass python-directories: RegressionTests on both callers. RegressionTests/ needs a tests/ suite and a mypy config first, and that config now owes mypy's strict flags if mypy is its only CI checker (python.pyright.config). Done looks like: CI is green and the (python.directories.declared) driftNote is deleted.
Worktrees: this round's two worktrees and their branches are removed, locally and on the remote. The base clone is on develop and clean. This machine's skills are refreshed from main at the release.
No open issue carries decision. Both questions this round raised were asked and answered in-session: mypy strict for a mypy-only build directory, and fixing one more open finding after the review budget ran out.
What the last round did
Allow Mypy Strict as a Build Directory's Only Type Checker #2005: relaxed python.pyright.config and python.mypy.allowed to allow mypy-only, held each CI checker to strict, named mypy's standalone configs in python.config.placement, and stated the same rule in AUDIT.md, README.md, and the python-codestyle skill.
Missing a surface that states the rule. The first diff edited the spec alone. Local review then found the skill, README.md, and finally AUDIT.md each still stating the old rule, one round per surface. Grep every surface for the rule's claim, AUDIT.md included, before the first push.
Writing a strictness demand without its profile scope. The first AUDIT.md wording demanded strict of lint-only directories too, which the spec does not. Copy the scope from the spec rule (minProfile) along with its text.
Naming strict = true for mypy. That key is global, so a test tree can't be relaxed with it the way pyright's path-scoped strict = ["src"] allows. Say "mypy's strict flags".
Scripted multi-line replacements ending mid-line. Twice, an old string that stopped before the end of a source line glued the rest of that line onto the new text's last line. End a replaced span at a newline.
New learnings
None beyond the entries above, which describe this round's attempts rather than general lessons.
This round finished #1941 with the maintainer's decision. A build-profile Python directory may use mypy as its only CI type checker, and whichever checker CI runs is held to strict. The change landed in #2005 and #2007, promoted in #2006, and was released as 2.0.737.
Next steps, in priority order
Re-read each issue rather than trusting these summaries.
python-directories: RegressionTestson both callers.RegressionTests/needs atests/suite and a mypy config first, and that config now owes mypy's strict flags if mypy is its only CI checker (python.pyright.config). Done looks like: CI is green and the(python.directories.declared)driftNote is deleted.[[tool.mypy.overrides]],# type: ignore[code]) beside the pyright ones inpython-codestyle. This touches the sameSKILL.mdtheauto-1947lane is editing, so check that lane's state first.External blockers
Internal dependencies
.agents/skills/python-codestyle/SKILL.mdnear the type-checking paragraph. Theauto-1947lane (handoff Session Handoff [auto-1947]: State the Python Build Profile by Its Trait, Not One of Its Forms #1981) has an unmerged branch rewriting that file's profile and local-loop sections. Land Name the Mypy Suppression Mechanisms Beside Pyright's in python-codestyle #2004 after that lane merges, or coordinate the rebase.setup.cfg[mypy]section as a declared directory's checker) now sits besidepython.config.placement, which calls a standalone mypy config drift outside a Home Assistant integration. Re-read both before starting it.State
Re-derive each of these at resume.
developand clean. This machine's skills are refreshed from main at the release.default(Session Handoff [default]: Audit Report Authorship Settled, Unattended Loop Live-Tested, 2.0.680 Released #1828), plus theauto-*lanes.The parked decision queue
No open issue carries
decision. Both questions this round raised were asked and answered in-session: mypy strict for a mypy-only build directory, and fixing one more open finding after the review budget ran out.What the last round did
python.pyright.configandpython.mypy.allowedto allow mypy-only, held each CI checker to strict, named mypy's standalone configs inpython.config.placement, and stated the same rule inAUDIT.md,README.md, and thepython-codestyleskill.uv run pyrightline. That line predates this change, and the paragraph after it namesuv run mypy src.What not to repeat
README.md, and finallyAUDIT.mdeach still stating the old rule, one round per surface. Grep every surface for the rule's claim,AUDIT.mdincluded, before the first push.AUDIT.mdwording demanded strict of lint-only directories too, which the spec does not. Copy the scope from the spec rule (minProfile) along with its text.strict = truefor mypy. That key is global, so a test tree can't be relaxed with it the way pyright's path-scopedstrict = ["src"]allows. Say "mypy's strict flags".New learnings
None beyond the entries above, which describe this round's attempts rather than general lessons.