This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow-steward.git
The following commit(s) were added to refs/heads/main by this push:
new 764cdb89 feat(validator): add dev dependency-group and close
asf-coupling-lint known gap (#538)
764cdb89 is described below
commit 764cdb89fda0bcd62b039bbb96543aab017ba704
Author: Justin Mclean <[email protected]>
AuthorDate: Sat Jun 27 10:44:33 2026 +1000
feat(validator): add dev dependency-group and close asf-coupling-lint known
gap (#538)
* lint to make sure skills are ASF-agnostic
* feat(validator): add dev dependency-group and close asf-coupling-lint
known gap
Add the missing [dependency-groups] dev section to
tools/skill-and-tool-validator/pyproject.toml so that the spec's
validation command (uv run --project ... --group dev pytest) works.
The validate_asf_coupling check (SOFT check #10), its patterns, and
the full TestValidateAsfCoupling test class were already present in
the source; 258 tests pass, and skill-and-tool-validate surfaces 86
advisory asf-coupling warnings on the live repo with no hard failures.
Update specs/project-agnosticism.md Known-gaps to replace "No automated
ASF-coupling lint exists" with the current state: the lint is live and
advisory, and the remaining work is acting on the flagged coupling hits.
Generated-by: Claude (Opus 4.7)
---
tools/skill-and-tool-validator/pyproject.toml | 7 +++++++
tools/spec-loop/specs/project-agnosticism.md | 11 +++++++----
uv.lock | 16 ++++++++++++++++
3 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/tools/skill-and-tool-validator/pyproject.toml
b/tools/skill-and-tool-validator/pyproject.toml
index fd96c73a..e2d39a1e 100644
--- a/tools/skill-and-tool-validator/pyproject.toml
+++ b/tools/skill-and-tool-validator/pyproject.toml
@@ -80,3 +80,10 @@ disallow_incomplete_defs = false
minversion = "8.0"
addopts = "-ra -q"
testpaths = ["tests"]
+
+[dependency-groups]
+dev = [
+ "pytest>=8.0",
+ "ruff>=0.6",
+ "mypy>=1.11",
+]
diff --git a/tools/spec-loop/specs/project-agnosticism.md
b/tools/spec-loop/specs/project-agnosticism.md
index cb4bbedd..906ac6ef 100644
--- a/tools/spec-loop/specs/project-agnosticism.md
+++ b/tools/spec-loop/specs/project-agnosticism.md
@@ -124,10 +124,13 @@ uv run --project tools/skill-and-tool-validator --group
dev skill-and-tool-valid
## Known gaps
-- **No automated ASF-coupling lint exists.** The sweep above is a manual
- grep; a deterministic advisory check (analogous to the
- `skill-and-tool-validator` warnings, with an allowlist for legitimate
- ASF-default strings) is a candidate work item.
+- **ASF-coupling lint is advisory only.** Check #10 in
+ `tools/skill-and-tool-validator` (SOFT category `asf_coupling`) now
+ surfaces coupled tokens automatically on every validator run. The 86
+ advisory hits in the current catalogue are real candidates for
+ generalisation (mostly bare `PMC` and a few `[email protected]` /
+ `dist/dev/` hits); a human judges which warrant a placeholder or
+ capability-flag change. No remaining tooling gap — the lint exists.
- **No non-ASF adopter profile fixture exists** to run the catalogue
against. A `projects/_template` non-ASF profile plus a smoke eval that
drives a representative skill through it would turn acceptance #3 into a
diff --git a/uv.lock b/uv.lock
index 2b82e2b7..7f36bfc1 100644
--- a/uv.lock
+++ b/uv.lock
@@ -804,6 +804,22 @@ name = "skill-and-tool-validator"
version = "0.1.0"
source = { editable = "tools/skill-and-tool-validator" }
+[package.dev-dependencies]
+dev = [
+ { name = "mypy" },
+ { name = "pytest" },
+ { name = "ruff" },
+]
+
+[package.metadata]
+
+[package.metadata.requires-dev]
+dev = [
+ { name = "mypy", specifier = ">=1.11" },
+ { name = "pytest", specifier = ">=8.0" },
+ { name = "ruff", specifier = ">=0.6" },
+]
+
[[package]]
name = "skill-evals"
version = "0.1.0"