`make check` ran as one sequential recipe, so a full run took about seven minutes at 8% CPU on a 16-core machine: most `tests/test_*.py` modules start their own qmltestrunner, and they waited for each other. Every check is now its own target, the Python suite is one target per module, and `make check` opts into `-j$(JOBS)` with `--output-sync=target`. The same suite now finishes in 138s locally. Each target is also usable on its own for a narrow iteration loop, which AGENTS.md already asked for without providing a command. Add two checks that report findings without reformatting anything: `check-workflows` runs actionlint over `.github/workflows`, and `check-python-lint` runs pyflakes over `scripts` and `tests`. Both are clean on the current tree. Both skip with a message when their tool is absent, matching the existing appstream behavior, and CI installs both: pyflakes from the pinned APT indexes, actionlint from its official release pinned by version and SHA-256 because Ubuntu 24.04 has no package for it. `tests/test_check_targets.py` keeps the new target list honest: a check script or a defined target that never reaches CHECK_TARGETS now fails the suite. qmlformat stays out: 45 of 48 QML files predate it, so adopting it would rewrite the tree and invalidate the literal source fragments that the parity and security checks assert. Documentation impact: updated AGENTS.md, CONTRIBUTING.md, the development guide (checkout requirements, regression checks, CI dependency pinning), and the changelog under Unreleased, since contributors' supported workflow changes. TODO.md tracks no check-suite work and is unaffected. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
7 files changedLine totals unavailable