From ca54a959406452bcec8ca42784bf3f0a737ec1a9 Mon Sep 17 00:00:00 2001 From: Pieter Viljoen Date: Fri, 14 Aug 2026 11:49:00 -0700 Subject: [PATCH 1/3] Add Python Tooling to CI and Move the Script Tests to scripts/tests CI carried no ruff, mypy, or coverage step, so the hub failed the zero-warnings bar it asks downstream Python for: 88 ruff findings and 5 mypy errors at the configured contract. This fixes every finding, adds the Python gates to validate-task.yml, moves the unit tests to scripts/tests/, documents the gate-versus-utility naming split, and amends the lint-only profile law to carry Python tooling in CI, coverage included. Closes #700 --- .agents/skills/python-codestyle/SKILL.md | 17 ++-- .agents/skills/shell-codestyle/SKILL.md | 2 +- .agents/skills/skill-lifecycle/SKILL.md | 2 +- .claude-plugin/fleet-skills/.source-digest | 2 +- .../skills/python-codestyle/SKILL.md | 17 ++-- .../skills/shell-codestyle/SKILL.md | 2 +- .../skills/skill-lifecycle/SKILL.md | 2 +- .editorconfig | 5 +- .gitattributes | 14 +-- .github/workflows/validate-task.yml | 29 +++--- CODESTYLE.md | 2 +- GOVERNANCE.md | 2 +- OPERATIONS.md | 15 ++- TODO.md | 2 +- docs/fleet-map.md | 8 +- host-setup/README.md | 4 +- host-setup/agent-safety/gh-write-guard.py | 23 +++-- host-setup/agent-safety/install.py | 9 +- host-setup/agent-safety/test_install.py | 6 +- host-setup/windows/README.md | 4 +- scripts/README.md | 17 ++-- scripts/host_gate.py | 10 +- scripts/pr_review.py | 24 ++--- scripts/prose_lint.py | 22 ++--- scripts/repo_gate.py | 6 +- scripts/skills_install.py | 6 +- scripts/{ => tests}/test_bootstrap.py | 6 +- scripts/{ => tests}/test_build_dist.py | 4 +- scripts/{ => tests}/test_host_gate.py | 2 +- scripts/{ => tests}/test_pr_review.py | 74 +++++++------- scripts/{ => tests}/test_prose_lint.py | 13 +-- scripts/{ => tests}/test_repo_gate.py | 5 +- scripts/{ => tests}/test_skills_install.py | 38 ++++---- spec/audit.py | 97 ++++++++++--------- spec/fidelity_honesty.py | 0 spec/host-tools.json | 4 +- spec/project-types.json | 2 +- spec/validate.py | 12 +-- 38 files changed, 272 insertions(+), 237 deletions(-) mode change 100644 => 100755 host-setup/agent-safety/gh-write-guard.py mode change 100644 => 100755 host-setup/agent-safety/install.py mode change 100644 => 100755 host-setup/agent-safety/test_install.py mode change 100644 => 100755 scripts/pr_review.py mode change 100644 => 100755 scripts/prose_lint.py mode change 100644 => 100755 scripts/repo_gate.py rename scripts/{ => tests}/test_bootstrap.py (99%) rename scripts/{ => tests}/test_build_dist.py (98%) rename scripts/{ => tests}/test_host_gate.py (99%) rename scripts/{ => tests}/test_pr_review.py (98%) mode change 100644 => 100755 rename scripts/{ => tests}/test_prose_lint.py (99%) mode change 100644 => 100755 rename scripts/{ => tests}/test_repo_gate.py (99%) mode change 100644 => 100755 rename scripts/{ => tests}/test_skills_install.py (92%) mode change 100644 => 100755 spec/audit.py mode change 100644 => 100755 spec/fidelity_honesty.py mode change 100644 => 100755 spec/validate.py diff --git a/.agents/skills/python-codestyle/SKILL.md b/.agents/skills/python-codestyle/SKILL.md index 34662c92..68aeaed9 100644 --- a/.agents/skills/python-codestyle/SKILL.md +++ b/.agents/skills/python-codestyle/SKILL.md @@ -73,12 +73,17 @@ whether the Python has third-party runtime dependencies, which shows up structur auto-updates (SHA-pinned actions, package deps) and otherwise run latest, so the VS Code tasks, README, and CI all run the unpinned latest here. `.py` files follow the repo's line-ending default (CRLF in a CRLF-default repo, and a shebang-executed script is LF-pinned by path, per - GOVERNANCE.md's "Line Endings" section). There is no pytest suite and no coverage gate. A script - that carries a gate still earns tests, written with the standard library's `unittest` so they - run under bare `python3` with nothing installed, as `test_