Skip to content

Report gitignored test suites instead of silently skipping them #50

Description

@ckrough

Follow-up to #41 (PR #48).

Problem

scripts/gates/structure.sh Stages C and D now build two lists: --cached (executes) and --others --exclude-standard (refused with a FAIL). --exclude-standard drops gitignored files, and --cached never had them, so a gitignored */skills/*/scripts/test_*.py or scripts/gates/test_*.sh lands in neither list. It is not executed, which is correct, and not reported, which is not.

Confirmed empirically during the #41 security review: with a suite added to .gitignore and a deliberately failing assertion in it, the gate printed NOTE no python test suites found, skipping Stage C and exited 0.

Why this is worth fixing

#41 chose to refuse rather than skip precisely so an unstaged suite fails loudly instead of silently not running. The gitignore path is exactly the silent skip that reasoning rejects, and it is reachable by adding one line to .gitignore in the same change that introduces a defect. The gate stays green with no diagnostic.

Acceptance Criteria

  • A gitignored suite matching either executing glob is reported (not executed, and not silently dropped).
  • A gate self-test covers it for both Stage C and Stage D.
  • Whether a gitignored match is a FAIL or a NOTE is a deliberate decision recorded in the script, since it is a different case from an untracked one: gitignoring a suite can be intentional.
  • Stage B behavior is unchanged. Its gitignored-manifest escape is deliberate and covered by Stage E re-validating the marketplace manifest directly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions