Repository navigation
fix(readiness): exclude workflow_run writer checks from CI evaluation - #2436
Merged
tamirdresher merged 2 commits intoNov 9, 2026
Merged
tamirdresher merged 2 commits into
tamirdresher merged 2 commits into
Conversation
#2409 moved the impact, Post Repo Health findings and heartbeat writers onto workflow_run jobs. Their check runs attach to the default-branch tip, not the PR head, and squad-impact.yml / squad-repo-health-report.yml cancel superseded runs, so a quick push on any PR leaves a `cancelled` check on dev. checkCIStatus() treats cancelled/failure as failing CI, so every dev-to-main PR reported "check(s) failing: impact" based on unrelated PRs' runs. readiness-bind was already excluded for this reason (#2423); this adds the remaining workflow_run writer names. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
🟡 Impact Analysis — PR #2436Risk tier: 🟡 MEDIUM 📊 Summary
🎯 Risk Factors
📦 Modules Affectedcopilot-config (1 file)
scripts (1 file)
tests (2 files)
This report is generated automatically for every PR. See #733 for details. |
Contributor
🛫 PR Readiness Check
PR Scope: 🔧 Infrastructure
|
| Status | Check | Details |
|---|---|---|
| ❌ | Single commit | 2 commits — consider squashing before review |
| ✅ | Not in draft | Ready for review |
| ✅ | Branch up to date | Up to date with dev |
| ❌ | Copilot review | No Copilot review yet — it may still be processing |
| ✅ | Changeset present | No source files changed — changeset not required |
| ✅ | Scope clean | No .squad/ or docs/proposals/ files |
| ✅ | No merge conflicts | No merge conflicts |
| ✅ | Copilot threads resolved | No Copilot review threads |
| ✅ | CI passing | All checks passing |
Files Changed (4 files, +90 −6)
| File | +/− |
|---|---|
.copilot/skills/pr-lifecycle/SKILL.md |
+2 −2 |
scripts/pr-readiness.mjs |
+25 −3 |
test/pr-readiness.test.ts |
+49 −0 |
test/pull-request-workflow-split.test.ts |
+14 −1 |
Total: +90 −6
This check runs automatically on every push. Fix any ❌ items and push again.
See CONTRIBUTING.md and PR Requirements for details.
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues are reported for the changes excluding unrelated writer checks from promotion PR readiness evaluation.
No open issues 🎉
What changed in this PR
Prevents unrelated workflow_run writer checks on the default-branch tip from incorrectly marking dev-to-main promotion PRs as failing or pending.
Changes:
- Excludes
impact,Post Repo Health findings, andheartbeatfrom readiness CI evaluation without changing workflow concurrency. - Adds regression tests for ignored writer runs, genuine CI failures, and workflow job-name consistency.
- Documents the exclusions and why they are necessary.
| File | Description |
|---|---|
test/pull-request-workflow-split.test.ts |
Ensures writer job names remain in the CI exclusion lists. |
test/pr-readiness.test.ts |
Tests ignored writer statuses while preserving genuine failure reporting. |
scripts/pr-readiness.mjs |
Defines writer check names and adds them to readiness exclusions. |
.copilot/skills/pr-lifecycle/SKILL.md |
Explains the updated CI evaluation exclusions. |
Review effort: Balanced (auto)
…workflow-run-check
tamirdresher
enabled auto-merge (squash)
November 9, 2026 16:31
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What's wrong
Since #2409, the
impact,Post Repo Health findings, andheartbeatwriters run asworkflow_runjobs (squad-impact.yml,squad-repo-health-report.yml,squad-heartbeat.yml). GitHub attachesworkflow_runcheck runs to the default-branch (dev) tip, not to the PR that triggered them.squad-impact.ymlandsquad-repo-health-report.ymlusecancel-in-progress: true, so two quick pushes on any PR leave acancelledimpact/Post Repo Health findingscheck run sitting on the dev tip. A binding or posting error leaves afailurethere the same way.scripts/pr-readiness.mjs->checkCIStatus()treatscancelledandfailureas failing CI, andSELF_CHECK_NAMESonly excludedreadinessandreadiness-bind(the latter added in #2423 for exactly this reason). So every PR whose head is the dev tip, i.e. dev -> main promotion PRs, showed "check(s) failing: impact" based on other PRs' cancelled runs.What changed
scripts/pr-readiness.mjs: newWORKFLOW_RUN_WRITER_CHECK_NAMES = ['impact', 'Post Repo Health findings', 'heartbeat'], spread intoSELF_CHECK_NAMES, with a comment explaining why these land on the dev tip. Names were taken from the jobname:(or job id when there is none) in each workflow.test/pr-readiness.test.ts: for each excluded writer name, acancelled,failure, andin_progressrun no longer fails/pends CI; a real failure alongside an ignored writer run is still reported; constants test updated.test/pull-request-workflow-split.test.ts: pins every job insquad-impact.yml,squad-repo-health-report.yml, andsquad-heartbeat.ymltoWORKFLOW_RUN_WRITER_CHECK_NAMES, mirroring the existingreadiness-bindtest, so a job rename breaks a test instead of readiness..copilot/skills/pr-lifecycle/SKILL.md: Check 9 now lists the excluded names and why.Workflow
concurrencysettings are deliberately unchanged; the exclusion list is the chosen fix.No changeset: the Changelog gate only covers
packages/squad-(sdk|cli)/src|templates,.squad-templates/, andtemplates/.How it was tested
npx vitest run test/pr-readiness.test.ts test/pull-request-workflow-split.test.ts test/workflow-run-pr-binding.test.ts test/repo-health-report.test.ts- passed (3 files, 217 tests).npx vitest run test/was started but not completed locally (gh-aw / packaging smoke suites run for 25+ minutes); relying on CI for that.Relates to #2409, #2423.