diff --git a/.github/workflows/pr-require-checks.yml b/.github/workflows/pr-require-checks.yml index 57a065f70ad..4cba0c3765b 100644 --- a/.github/workflows/pr-require-checks.yml +++ b/.github/workflows/pr-require-checks.yml @@ -1064,11 +1064,11 @@ jobs: with: filter: blob:none # THE DIFF BASE, RESOLVED ONCE. A pull request diffs against its base - # branch, and a merge group against the queue's base commit, unless its - # diff touches a plugin or marketplace manifest, as a release does. A schedule - # or dispatch run gets no base: the whole tree, the net for what a diff - # cannot show. scripts/resolve-diff-base.sh holds the rules and logs why - # it chose. + # branch, and a merge group against the queue's base commit, a release + # group included, so a manifest change selects only the suites that + # declare they read it (test-scope). A schedule or dispatch run gets no + # base: the whole tree, the net for what a diff cannot show. + # scripts/resolve-diff-base.sh holds the rules and logs why it chose. - name: Resolve the diff base id: base env: diff --git a/lib/view-settings.test.sh b/lib/view-settings.test.sh index a8a973da2c8..4e67b8d8e1b 100755 --- a/lib/view-settings.test.sh +++ b/lib/view-settings.test.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash # Owns view-settings.test.mjs; run-plugin-tests.sh discovers only .test.sh files. +# test-scope: plugins/*/.claude-plugin/plugin.json set -euo pipefail exec node --test "$(dirname "${BASH_SOURCE[0]}")/view-settings.test.mjs" diff --git a/scripts/affected-tests-live.sh b/scripts/affected-tests-live.sh index c966cfaa090..b38e4e25638 100755 --- a/scripts/affected-tests-live.sh +++ b/scripts/affected-tests-live.sh @@ -255,6 +255,9 @@ read_pairs=( "plugins/biome-format/hooks/biome-format-end-of-turn.test.sh|plugins/biome-format/hooks/exec-bash.mjs" "plugins/code-metrics/skills/audit/scripts/audit-complexity.test.sh|plugins/code-metrics/scripts/yaml_subset.py" "plugins/instruction-placement/git-hooks/index-check.test.sh|plugins/instruction-placement/.claude-plugin/plugin.json" + # Suites that read every plugin's manifest through a path built from parts. + "lib/view-settings.test.sh|plugins/architecture/.claude-plugin/plugin.json" + "scripts/check-data-root.test.sh|plugins/architecture/.claude-plugin/plugin.json" ) for fixture in events-v1 invalid-device-scope-on-prototype invalid-reaction-agree \ invalid-recommendation-on-choice state-full state-v7-live wire-heartbeat wire-presence; do diff --git a/scripts/check-data-root.test.sh b/scripts/check-data-root.test.sh index 7a587aed79b..3f312a9e01b 100755 --- a/scripts/check-data-root.test.sh +++ b/scripts/check-data-root.test.sh @@ -9,6 +9,7 @@ # Each case runs the real script against a fixture tree. This repository's own # tree passes all four checks, so a script that ignored the variable would exit # 0 on the failing fixture. +# test-scope: plugins/*/.claude-plugin/plugin.json plugins/*/README.md # shellcheck disable=SC2016 set -uo pipefail