Gate nested projects in bash-guard instead of passing them ungated
The build-and-test gate searched for marker files only two levels below the repo root. This repo keeps its python projects at plugins/<name>/skills/<skill>/, four levels down, so every push reported "no recognized project layout" and pushed without running a single test. A gate that announces it did nothing is worse than no gate, because the announcement scrolls past and the push still succeeds. Walk to depth 4, and resolve python tooling properly. A bare `ruff` or `pytest` is usually absent from PATH, and run() treats ENOENT as a pass, so an unresolved tool would have skipped the check just as silently. Resolution now tries the project's own .venv, then uv (which needs a [project] table that audit-terraform does not have), then the interpreter's -m form. A tool that is genuinely not installed is reported as an advisory note rather than blocking. Its absence is a gap in coverage, not a defect in the change being pushed. Silence is the one outcome that is never acceptable. Verified by injecting a failing test into each skill and confirming the guard blocks: audit-code resolves through its .venv, audit-terraform through python -m pytest. The new regression tests fail against the old depth-2 walk and pass against this one. Tests: 8 passing (bash-guard), 197 (audit-code), 106 (audit-terraform).
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "guards",
|
||||
"version": "1.0.2",
|
||||
"version": "1.1.0",
|
||||
"description": "Personal enforcement hooks: jj-only version control, no Claude attribution, build+test gate on push, and secret scrubbing on file writes.",
|
||||
"author": {
|
||||
"name": "Malcolm Roberts"
|
||||
|
||||
Reference in New Issue
Block a user