Repository navigation
test: declare the files 22 suites read that the selector missed - #15479
Conversation
The daily selection audit has failed every scheduled run since 2026-10-26. Replaying the gap rows of the last seven shards against main left 413 reads in 23 suites whose one-file diff does not select the suite that read the file. Each suite now declares those files in a `# test-scope:` header, as #8617 did; the selector logic is unchanged. The largest class is test_check_matchers.py reading every eval case's case.yaml, matchers.json and samples (332 rows). The audit also stops counting a .gitignore or .gitattributes read in any directory: git reads them when a suite walks the tree, as it does the root copies the audit already skipped. The shard 3 run of 2026-11-08 failed on a 503 downloading shfmt. The workflow's shfmt and DuckDB downloads now retry like the other pinned-tool downloads (--retry 7 --retry-all-errors, #14378). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review reviewed Security review: PR #15479I found no security issues in this change. This lane already reviewed an earlier head ( What I read: every hunk of all 34 changed files. The 9 changelog fragments are identical What changed:
Instruction surface: the PR removes no standing instruction, rule, hook block list or allowlist. The only comment it rewrites, in Plugin manifests: the PR changes no Spend: a few more suites may run on diffs that touch the newly declared files, and downloads may retry. Both use Actions minutes the plan already covers. This is not a hold and not a finding. The PR context contains no embedded instructions aimed at this lane. critical-findings: 0 |
|
claude-review reviewed Code review: PR #15479, test-scope declarations for the selection audit (blocking only)This lane already reviewed an earlier head ( I read every hunk of all 34 changed files. The nine Since the last review
Not verified by me: the 413-row replay, the PASS counts, the actionlint result and the changelog check are what the author reports. I had no shell, so I ran nothing. Spend (not a finding): more pull requests will now select No plugin manifests changed. No path-scoped rule applies to these header-only edits, and the PR context contains no embedded instructions. |
selector-live requires some .github YAML to stay a recorded no-suite class, and `.github/*.yml .github/*.yaml` covered all of it. The graphql suite now declares only the config and fixture files the audit traced it reading. The trace fixture now has the suite read data/.gitignore and data/.gitattributes, so anchoring the skip back on the root copies fails selection-audit.test.sh (checked: PASS=18 FAIL=2 with a root-only pattern). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe
No related issue: owner decision Q14 (failing workflows). The owner decided to investigate and fix each failing scheduled workflow; this PR covers the daily test-selection audit, which has failed every scheduled run since 2026-10-26.
Summary
maintenance-audit-test-selection.ymlfails its scheduled run whenever the day's shard finds a gap: a file a suite read whose one-file diff does not select that suite. The monitoring lane's signal 6 reads that red as findings and keeps its bot-filed incident (issue 14294) open, so the red is the intended signal and the fix is to close the gaps, not to silence the run. One run (shard 3, 42472875440) failed on a different cause:curl: (22) The requested URL returned error: 503downloading shfmt.Fix
# test-scope:header, as test: declare test scopes the selector missed #8617 did; the selector logic is unchanged. The largest class istest_check_matchers.pyreading every eval case'scase.yaml,matchers.jsonandsamples/(332 rows).graphql-operations.test.shnow declares the.github/config and fixture YAML the audit traced it reading; other.githubYAML stays a no-suite class, asscripts/affected-tests-live.shrequires.selection-audit.shskips a.gitignoreor.gitattributesread in any directory, as it already skipped the root copies: git reads them when a suite walks the tree. That clears the one unmapped row (identity-domains.test.shreadingplugins/ai-briefing/.gitignore).scripts/selection-audit.test.sh's trace fixture reads nested.gitignore/.gitattributes, so anchoring the skip back on the root fails it (PASS=18 FAIL=2 with a root-only pattern).--retry 7 --retry-all-errors, matching the other pinned-tool downloads (ci: retry pinned tool downloads 7 times so a short 504 window passes #14378).Done when
scripts/affected-tests-live.shandscripts/selection-audit.test.shpass.Verification
.gitignoreread the audit now skips.scripts/selection-audit.test.sh: PASS=20 FAIL=0.scripts/affected-tests-live.sh: PASS=39 FAIL=0.scripts/affected-tests.test.sh: PASS=147 FAIL=0.scripts/check-affected.sh --tests: 15 passed, 39 skipped.actionlinton the workflow: clean. Changelog fragments:--check-requiredpasses for the 9 plugins touched.suites:input naming the fixed suites, then each shard's next scheduled run.Related
curllines in its steps.Follow-ups
🤖 Generated with Claude Code
https://claude.ai/code/session_01VQb9Q2ceZLXhTR4d1vkTCe