Follow-up to #46, continuing after #48 (Phases 1-3: setup, implicit-Optional
fixes, StoreProtocol, and the gently.app.tools.* context-typing cleanup).
Current state (after #48)
With [[tool.mypy.overrides]] stripped, mypy . reports 369 errors across
79 of 300 source files (down from 3002 errors / 225 files at the start of
#46). Breakdown by error code:
| Code |
Count |
union-attr |
117 |
assignment |
69 |
var-annotated |
42 |
attr-defined |
40 |
arg-type |
31 |
return-value |
24 |
index |
11 |
operator |
10 |
misc |
9 |
dict-item |
8 |
other (no-redef, name-defined, valid-type, type-var, override, list-item) |
8 |
By subsystem (top-level package, error count / file count):
| Package |
Errors |
Files |
scripts |
68 |
7 |
gently/hardware |
58 |
9 |
gently/app |
51 |
6 |
gently/dataset |
47 |
3 |
gently/harness |
39 |
16 |
(remaining: diagnostics, gently top-level, gently/eval, tests, launch_gently.py, gently/ml, gently/organisms, examples) |
39 |
19 |
gently/core |
21 |
5 |
gently/mesh |
15 |
3 |
benchmarks/perception |
15 |
3 |
gently/ui |
12 |
6 |
gently/analysis |
4 |
2 |
(Total: 369 / 79, verified — replaces an earlier version of this table whose
rows summed to ~439 and significantly overstated gently/harness,
gently/app, gently/ui, gently/analysis, and gently/mesh.)
Candidate next targets
Per #46's "follow-up issues per subsystem" approach, a few concentrated
clusters look like good single-PR phases (each needs its own root-cause pass
like #48's Phase 3 did for the context dict pattern):
gently/dataset/* (3 modules, 47 errors) — aggregator.py (31),
explorer_server.py (11), embryo_dataset.py (5). The densest cluster:
47 errors in just 3 files.
gently/hardware/dispim/* (8 modules, 56 errors) — the device-control
layer: device_layer.py (14), client.py (14), sam_detection.py (10),
device_factory.py (10), plus 4 smaller devices//plans/ modules
(3 + 2 + 2 + 1).
gently/app/agent.py + gently/app/orchestration/timelapse.py
(28 + 10 = 38 errors) — the core agent/timelapse loop; may share a root
cause the way gently.app.tools.* did.
gently/mesh/* (3 modules, 15 errors) — peer_client.py (13) +
discovery.py (1) + capability_provider.py (1).
Carried over from #48
gently/harness/detection/queue.py — 2 of its errors match the Phase 3
context.get(...) pattern, but it also has 3 unrelated errors
(var-annotated, an "object" attribute access, and an unsupported
indexed assignment) that need separate investigation.
Tasks
🤖 Generated with Claude Code
Follow-up to #46, continuing after #48 (Phases 1-3: setup, implicit-Optional
fixes,
StoreProtocol, and thegently.app.tools.*context-typing cleanup).Current state (after #48)
With
[[tool.mypy.overrides]]stripped,mypy .reports 369 errors across79 of 300 source files (down from 3002 errors / 225 files at the start of
#46). Breakdown by error code:
union-attrassignmentvar-annotatedattr-definedarg-typereturn-valueindexoperatormiscdict-itemno-redef,name-defined,valid-type,type-var,override,list-item)By subsystem (top-level package, error count / file count):
scriptsgently/hardwaregently/appgently/datasetgently/harnessdiagnostics,gentlytop-level,gently/eval,tests,launch_gently.py,gently/ml,gently/organisms,examples)gently/coregently/meshbenchmarks/perceptiongently/uigently/analysis(Total: 369 / 79, verified — replaces an earlier version of this table whose
rows summed to ~439 and significantly overstated
gently/harness,gently/app,gently/ui,gently/analysis, andgently/mesh.)Candidate next targets
Per #46's "follow-up issues per subsystem" approach, a few concentrated
clusters look like good single-PR phases (each needs its own root-cause pass
like #48's Phase 3 did for the
contextdict pattern):gently/dataset/*(3 modules, 47 errors) —aggregator.py(31),explorer_server.py(11),embryo_dataset.py(5). The densest cluster:47 errors in just 3 files.
gently/hardware/dispim/*(8 modules, 56 errors) — the device-controllayer:
device_layer.py(14),client.py(14),sam_detection.py(10),device_factory.py(10), plus 4 smallerdevices//plans/modules(3 + 2 + 2 + 1).
gently/app/agent.py+gently/app/orchestration/timelapse.py(28 + 10 = 38 errors) — the core agent/timelapse loop; may share a root
cause the way
gently.app.tools.*did.gently/mesh/*(3 modules, 15 errors) —peer_client.py(13) +discovery.py(1) +capability_provider.py(1).Carried over from #48
gently/harness/detection/queue.py— 2 of its errors match the Phase 3context.get(...)pattern, but it also has 3 unrelated errors(
var-annotated, an"object"attribute access, and an unsupportedindexed assignment) that need separate investigation.
Tasks
[[tool.mypy.overrides]]empty
🤖 Generated with Claude Code