pre-1.0: coverage + dead-code audit after the #83 seams #185

Open
opened 2026-08-27 21:05:37 -04:00 by mysticalsoap · 0 comments
Owner

Pre-1.0 gate, deliberately sequenced after the #83 decomposition seams (#123, #127–#131): most of what these tools would flag today is monolith code already scheduled to be carved, and gui/widgets coverage numbers only mean something once the per-tab modules exist.

Current baseline (2026-08-27): 439 tests over ~10.9k LOC. Density tracks the decomposition — extracted Qt-free modules are dense (update+providers 68, catalog 37, launcher 42, dns_manager 35), the monoliths are thin (gui 2509 LOC / 57 tests, widgets 1127/10) and two modules have no test file at all: aqomui_cli.py (cli tests ride with the #180 overhaul rather than testing code #180 replaces) and profiles.py.

The audit, once the seams are in:

  • Coverage (python-pytest-cov, pacman): one report-only run, triage dark branches per module. Known suspects: tunnel.py's SSL/SSH/WireGuard paths (32 tests over 722 lines). No CI threshold — line coverage on Qt slot plumbing measures little; the per-seam question "did this extraction's tests cover the moved code" is the useful form.
  • Dead code (python-vulture, AUR): one pass, triage the report. A fork that has deleted this many features likely carries orphans, and grep-by-feature-name provably misses (the #144 PKGBUILD case).
  • Lint widening: extend ruff's selection beyond the CI minimum (E9,F63,F7,F82) — F401 first (~7 known unused imports in gui/cli), then the bugbear B family and C901 complexity. Ruff subsumes pylint/flake8; no new lint deps.

Interim rule that already applies: every new seam extraction ships with tests for the moved surface, and profiles.py picks up a test file whenever it's next touched.

Pre-1.0 gate, deliberately sequenced **after** the #83 decomposition seams (#123, #127–#131): most of what these tools would flag today is monolith code already scheduled to be carved, and gui/widgets coverage numbers only mean something once the per-tab modules exist. Current baseline (2026-08-27): 439 tests over ~10.9k LOC. Density tracks the decomposition — extracted Qt-free modules are dense (update+providers 68, catalog 37, launcher 42, dns_manager 35), the monoliths are thin (gui 2509 LOC / 57 tests, widgets 1127/10) and two modules have no test file at all: `aqomui_cli.py` (cli tests ride with the #180 overhaul rather than testing code #180 replaces) and `profiles.py`. The audit, once the seams are in: - **Coverage** (`python-pytest-cov`, pacman): one report-only run, triage dark branches per module. Known suspects: tunnel.py's SSL/SSH/WireGuard paths (32 tests over 722 lines). No CI threshold — line coverage on Qt slot plumbing measures little; the per-seam question "did this extraction's tests cover the moved code" is the useful form. - **Dead code** (`python-vulture`, AUR): one pass, triage the report. A fork that has deleted this many features likely carries orphans, and grep-by-feature-name provably misses (the #144 PKGBUILD case). - **Lint widening**: extend ruff's selection beyond the CI minimum (E9,F63,F7,F82) — F401 first (~7 known unused imports in gui/cli), then the bugbear `B` family and `C901` complexity. Ruff subsumes pylint/flake8; no new lint deps. Interim rule that already applies: every new seam extraction ships with tests for the moved surface, and `profiles.py` picks up a test file whenever it's next touched.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mysticalsoap/aqomui#185
No description provided.