You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The two "failures" in the monitored window (2/6 = 33.3%) are both action_required runs on the same bot PR branch (dev-lead/issue-372-β¦). No jobs ever executed β these are redundant/pending runs created when the dev-lead bot pushed several commits to one PR in quick succession. ci.yml is the only workflow in this repo with no top-level concurrency: block, so redundant runs are never serialized or superseded and pile up as action_required, inflating the failure rate. This is the same class of Fleet Monitor degradation already fixed for pr-review.yml (issue #374) by adding a concurrency: block plus a regression-guard test.
Scope
Add a top-level concurrency: block to .github/workflows/ci.yml that serializes runs per Git ref β cancelling outdated PR runs while never cancelling main-branch runs β and add a shell regression-guard test mirroring scripts/test-pr-review-workflow.sh.
Implementation Checklist
scripts/test-ci-workflow.sh β new regression-guard test (written first, must fail)
.github/workflows/ci.yml β add top-level concurrency: block (group keyed on github.ref, cancel-in-progress only for pull_request)
Tests to Write
scripts/test-ci-workflow.sh asserting: yq present; ci.yml exists; concurrency.group present and keyed on github.ref; cancel-in-progress scoped to pull_request events (main pushes never cancelled)
Test Command
bash scripts/test-ci-workflow.sh (plus bash .dev-lead/scripts/dev-lead-lint.sh, shellcheck, and yamllint .github/workflows/ci.yml)
Both flagged "failures" in the monitored window (2/6 = 33.3%) were action_required runs on the same bot PR branch (dev-lead/issue-372-β¦) β no jobs ever executed. ci.yml was the only workflow in the repo with no top-level concurrency: block, so redundant runs created by the bot pushing multiple commits to one PR piled up instead of being superseded, inflating the failure rate. Same class of degradation already remediated for pr-review.yml (#374).
Plan Execution
Root-caused the degradation to missing run serialization
Wrote failing regression test scripts/test-ci-workflow.sh (TDD red confirmed)
Added top-level concurrency: block to ci.yml (test green)
Verified full test set, dev-lead-lint, shellcheck, and rubber-duck reviewed the diff
Test Results
$ bash scripts/test-ci-workflow.sh
=== test-ci-workflow ===
PASS: 'yq' is available
PASS: .github/workflows/ci.yml exists
PASS: 'concurrency.group' block present in .github/workflows/ci.yml
PASS: concurrency group keyed on github.ref in .github/workflows/ci.yml
PASS: 'concurrency.cancel-in-progress' scoped to pull_request events in .github/workflows/ci.yml
All checks passed.
$ bash .dev-lead/scripts/dev-lead-lint.sh
[lint] shellcheck on 5 file(s)...
[lint] validating CODEOWNERS...
OK: CODEOWNERS
[lint] all checks passed
$ shellcheck --severity=warning -x scripts/test-ci-workflow.sh
shellcheck-clean
$ for t in scripts/test-*.sh; do bash $t; done
OK scripts/test-ci-workflow.sh
OK scripts/test-copilot-setup-steps-workflow.sh
OK scripts/test-pr-review-workflow.sh
Files Changed
.github/workflows/ci.yml: added a top-level concurrency: block β group: ci-${{ github.ref }} with cancel-in-progress: ${{ github.event_name == 'pull_request' }}. Outdated PR runs for a superseded commit are cancelled; main-branch pushes are never cancelled so every merged commit is still verified.
scripts/test-ci-workflow.sh (new): regression guard mirroring scripts/test-pr-review-workflow.sh; asserts the concurrency block exists, is keyed on github.ref, and scopes cancel-in-progress to pull_request events.
Notes
Each ref gets an isolated lane: PRs use refs/pull/N/merge, main uses refs/heads/main, so lanes never collide and branch protection still evaluates the required secret-scan check on the latest commit.
yamllint is not a CI gate in this repo; the org yamllint config uses line-length: 200 (per .dev-lead/.markdownlint-cli2.jsonc), under which the added lines (β€82 chars) pass. A local run with default (80-char) config flagged only pre-existing long lines.
Activity
don-petry commentedon Jul 19, 2026
Dev-Lead Implementation Plan
Issue: #380 β [Fleet Monitor] petry-projects/TalkTerm β .github/workflows/ci.yml
Root-Cause Analysis
The two "failures" in the monitored window (2/6 = 33.3%) are both
action_requiredruns on the same bot PR branch (dev-lead/issue-372-β¦). No jobs ever executed β these are redundant/pending runs created when the dev-lead bot pushed several commits to one PR in quick succession.ci.ymlis the only workflow in this repo with no top-levelconcurrency:block, so redundant runs are never serialized or superseded and pile up asaction_required, inflating the failure rate. This is the same class of Fleet Monitor degradation already fixed forpr-review.yml(issue #374) by adding aconcurrency:block plus a regression-guard test.Scope
Add a top-level
concurrency:block to.github/workflows/ci.ymlthat serializes runs per Git ref β cancelling outdated PR runs while never cancellingmain-branch runs β and add a shell regression-guard test mirroringscripts/test-pr-review-workflow.sh.Implementation Checklist
scripts/test-ci-workflow.shβ new regression-guard test (written first, must fail).github/workflows/ci.ymlβ add top-levelconcurrency:block (group keyed ongithub.ref,cancel-in-progressonly forpull_request)Tests to Write
scripts/test-ci-workflow.shasserting: yq present; ci.yml exists;concurrency.grouppresent and keyed ongithub.ref;cancel-in-progressscoped topull_requestevents (main pushes never cancelled)Test Command
bash scripts/test-ci-workflow.sh(plusbash .dev-lead/scripts/dev-lead-lint.sh,shellcheck, andyamllint .github/workflows/ci.yml)don-petry commentedon Jul 19, 2026
Dev-Lead: Implementation Complete
Root Cause
Both flagged "failures" in the monitored window (2/6 = 33.3%) were
action_requiredruns on the same bot PR branch (dev-lead/issue-372-β¦) β no jobs ever executed.ci.ymlwas the only workflow in the repo with no top-levelconcurrency:block, so redundant runs created by the bot pushing multiple commits to one PR piled up instead of being superseded, inflating the failure rate. Same class of degradation already remediated forpr-review.yml(#374).Plan Execution
scripts/test-ci-workflow.sh(TDD red confirmed)concurrency:block toci.yml(test green)Test Results
Files Changed
.github/workflows/ci.yml: added a top-levelconcurrency:block βgroup: ci-${{ github.ref }}withcancel-in-progress: ${{ github.event_name == 'pull_request' }}. Outdated PR runs for a superseded commit are cancelled;main-branch pushes are never cancelled so every merged commit is still verified.scripts/test-ci-workflow.sh(new): regression guard mirroringscripts/test-pr-review-workflow.sh; asserts the concurrency block exists, is keyed ongithub.ref, and scopescancel-in-progressto pull_request events.Notes
refs/pull/N/merge, main usesrefs/heads/main, so lanes never collide and branch protection still evaluates the requiredsecret-scancheck on the latest commit.yamllintis not a CI gate in this repo; the orgyamllintconfig usesline-length: 200(per.dev-lead/.markdownlint-cli2.jsonc), under which the added lines (β€82 chars) pass. A local run with default (80-char) config flagged only pre-existing long lines.feat: implement issue #380 β [Fleet Monitor] petry-projects/TalkTerm β¦
feat: implement issue #380 β [Fleet Monitor] petry-projects/TalkTerm β¦
feat: implement issue #380 β [Fleet Monitor] petry-projects/TalkTerm β¦
feat: implement issue #380 β [Fleet Monitor] petry-projects/TalkTerm β¦