Skip to content

ci(test-lanes): run lane-transcripts on any workflow change - #13658

Merged
kyle-sexton merged 1 commit into
mainfrom
ci/select-lane-transcripts-on-workflows
Nov 6, 2026
Merged

kyle-sexton merged 1 commit into
mainfrom
ci/select-lane-transcripts-on-workflows

Conversation

@kyle-sexton

Copy link
Copy Markdown
Member

No related issue: hub follow-up L377 from #13642's Follow-ups (the select-tests gap behind the 2026-11-06 red main).

Summary

scripts/lane-transcripts/pull.test.mjs reads every workflow's upload-lane-transcript calls (pull.test.mjs:189-214), but plan-test-lanes.sh selected the package only for files under scripts/lane-transcripts/. #13632's merge-group run 42147317467 changed only .github/workflows/, skipped the suite, and main went red (fixed by #13642).

Fix

  • scripts/plan-test-lanes.sh: scripts/lane-transcripts declares .github/workflows/ as a trigger in OUTSIDE_TRIGGERS, the existing map pr-verify and lane-run-report use to name the workflows their tests read.
  • scripts/plan-test-lanes.test.sh: the fixture lists the package; new cases assert any workflow change selects it and a change outside .github/workflows/ does not; two package counts move from 7 to 8.

Verification

  • bash scripts/plan-test-lanes.test.sh: PASS=60 FAIL=0.
  • Live planner, bash scripts/plan-test-lanes.sh -- .github/workflows/post-merge-test-mutation.yml: node_packages now ends with scripts/lane-transcripts, unmapped=0.

Related

🤖 Generated with Claude Code

scripts/lane-transcripts/pull.test.mjs reads every workflow's
upload-lane-transcript calls, but the planner selected the package only
for files under its own directory. #13632's merge group changed only
.github/workflows/ and skipped the suite, and main went red. The package
now declares .github/workflows/ as a trigger in OUTSIDE_TRIGGERS, the
same map pr-verify and lane-run-report use.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton marked this pull request as ready for review November 6, 2026 04:55
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-11-06T04:55:36.357744Z
We couldn’t complete this review. Comment @codex review to try again.
e3f8d88 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

claude-security-review reviewed e3f8d88f8693bb6e4b60f7e98f267ced6af4dbdd: read 2 of 2 changed file(s); 0 finding(s), 0 as inline comments.

Security review: PR #13658 found no security issues

I read every hunk of both changed files: scripts/plan-test-lanes.sh and scripts/plan-test-lanes.test.sh. Neither file matches a trusted-path glob.

What the change does: it adds one entry to the test planner's OUTSIDE_TRIGGERS map ([scripts/lane-transcripts]=".github/workflows/"). With it, any change under .github/workflows/ also selects the scripts/lane-transcripts Node test package. The rest of the PR updates the planner's own test fixture and assertions: one new case for a workflow change, one negative case, and two package counts that move from 7 to 8.

Security assessment:

  • The change only makes the planner select more tests. It skips none and doesn't touch a merge hold, the trusted-trigger check, token scope, the kill switch, or untrusted-text handling.
  • No new input reaches a shell. The map value is a fixed literal, and changed file paths are matched against it the same way the existing pr-verify and lane-run-report entries already work.
  • It doesn't delete or loosen any instruction, and it doesn't touch a plugin manifest.
  • The PR description contains no embedded instructions aimed at the review lane.

Spend: pull requests and merge-group runs that change .github/workflows/ now also run the scripts/lane-transcripts Node test suite. That is a small amount of extra standard-runner Actions time, not a billed resource or plan change.

critical-findings: 0

@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

claude-review reviewed e3f8d88f8693bb6e4b60f7e98f267ced6af4dbdd: read 2 of 2 changed file(s); 0 finding(s), 0 as inline comments.

Code review: no findings

I read every hunk of both changed files: scripts/plan-test-lanes.sh and scripts/plan-test-lanes.test.sh.

What changed. scripts/lane-transcripts now lists .github/workflows/ as a trigger in OUTSIDE_TRIGGERS. Before this, a change to .github/workflows/ alone did not select that package, even though its pull.test.mjs reads every workflow's upload-lane-transcript calls.

Correctness. I checked the change against the code it feeds:

  • Trigger matching (plan-test-lanes.sh#L326-L333). A trigger that ends in / matches by prefix. So .github/workflows/ selects the package for any workflow file and for nothing outside that directory, which is what the PR intends.
  • Real package list. scripts/lane-transcripts is already on scripts/outside-node-packages.txt (line 46). The new map entry therefore takes effect through plan-test-lanes.sh#L235.
  • Test fixture and assertions. The fixture adds the package to the list. The updated pr-verify.yml assertion, the new any-workflow case (it reuses the pr-unblock.yml plan) and the two count changes from 7 to 8 all follow from the change.
  • Negative case. The new test plans .github/actions/check-kill-switch/action.yml. That path is not one of the paths that make the planner run everything (only pr-require-checks.yml and download-full-history/* do, at L151-L159). So the case does test that a change outside the directory leaves the package out.

Closing issue. None. The PR says it is a follow-up to #13642 and states no acceptance criteria, so there is nothing to check against an issue.

Verification. I had no shell, so I did not run anything. The author reports PASS=60 FAIL=0 for bash scripts/plan-test-lanes.test.sh; that result is unverified.

Spend. Every PR that touches .github/workflows/ now also runs the scripts/lane-transcripts Node test suite. That uses standard CI minutes and is not a hold.

@kyle-sexton
kyle-sexton added this pull request to the merge queue Nov 6, 2026
Merged via the queue into main with commit 7dda1cb Nov 6, 2026
70 checks passed
@kyle-sexton
kyle-sexton deleted the ci/select-lane-transcripts-on-workflows branch November 6, 2026 05:08
github-merge-queue Bot pushed a commit that referenced this pull request Nov 7, 2026
… a workflow change (#13925)

No related issue: ledger L377 (test selection misses suites that read
every workflow), left from #13642, #13645 and #11154

## Summary

`scripts/plan-test-lanes.sh` selected a test package on a workflow
change only when one of its suites named that workflow file. Six
packages have suites that list `.github/workflows/` and check every
workflow, so a change to a workflow no suite names skipped them. For
example, `-- .github/workflows/maintenance-delete-stale-branches.yml`
selected only branch-cleanup and lane-transcripts on main.

## Fix

- `.github/workflows/` is added to resolve-config's SUBPROJECTS line,
and OUTSIDE_TRIGGERS rows are added for check-signed-commits,
check-wip-cap, log-api-budget, `.github/scripts/lib` and pr-merge. This
is the selector's existing mechanism for the same gap (#13658).
- A generic scan was not used: a suite that lists the directory names no
workflow, and the listing calls vary (a `readdirSync` grep missed
`pull.test.mjs`).

## Verification

- `scripts/plan-test-lanes.test.sh`: 60 of 60 pass. Against the old
planner the extended suite gives 58 pass and 2 fail: "a workflow no
suite names runs every package whose suites read every workflow", and
the pr-verify.yml case.
- Probe after the fix: `--
.github/workflows/maintenance-delete-stale-branches.yml` selects all
eight packages.
- `selection-audit.test.sh` 20 of 20; the three Node suites that mention
the planner 256 of 256; shellcheck clean.

## Related

- #13658 added the trigger table rows for the lane-transcripts case of
this gap.

## Follow-ups

- Pre-existing (advisory): the fix is per package, so a new suite that
lists the workflows directory will be missed again, the second time
after #13658. A `// test-scope:` declaration for Node suites
(affected-tests.sh R8 accepts only `#` comments today) would close it
for good.
- Pre-existing (advisory): every workflow change now also runs these six
packages, including resolve-config's large callers.test.mjs; the added
wall time is not measured.

session: automation-lanes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: melodic-automation-lanes[bot] <337595936+melodic-automation-lanes[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant