Skip to content

[Fleet Monitor] petry-projects/TalkTerm β€” .github/workflows/ci.ymlΒ #380

Closed

Description

@don-petry

🟠 DEGRADED: petry-projects/TalkTerm / .github/workflows/ci.yml

Metric Value
Failure Rate 33.3% (2 / 6 runs)
Status DEGRADED
p50 Duration 16s
p95 Duration 17s
Successful Runs 4
Cancelled Runs 0

Workflow: .github/workflows/ci.yml

Last updated by Fleet Monitor run on 2026-07-19.
Threshold: failure rate > 10% over the monitored window.

Activity

  1. added
    dev-leadFor dev-lead agent pickup
    fleet-trackerTracked by the Actions Fleet Monitor
    health-checkAutomated health check result
    on Jul 19, 2026
  2. don-petry commented on Jul 19, 2026

    @don-petry
    ContributorAuthor

    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_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)

  3. don-petry commented on Jul 19, 2026

    @don-petry
    ContributorAuthor

    Dev-Lead: Implementation Complete

    Root Cause

    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.
    • No follow-up issues.
  4. added a commit that references this issue on Jul 19, 2026
  5. added 3 commits that reference this issue on Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dev-leadFor dev-lead agent pickupfleet-trackerTracked by the Actions Fleet Monitorhealth-checkAutomated health check result

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions