Skip to content

[Fleet Monitor] petry-projects/.github-private β€” test-dev-lead.ymlΒ #512

Closed

Description

@don-petry

🟠 DEGRADED: petry-projects/.github-private / test-dev-lead.yml

Metric Value
Failure Rate 25% (1 / 4 runs)
Status DEGRADED
p50 Duration 116s
p95 Duration 171s
Successful Runs 3
Cancelled Runs 0

Workflow: test-dev-lead.yml

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

Activity

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

    @don-petry
    CollaboratorAuthor
    All engines are currently rate-limited. Please re-apply the `dev-lead` label when the rate limit clears to retry.
  3. added
    dev-leadFor dev-lead agent pickup
    and removed
    dev-leadFor dev-lead agent pickup
    on Jun 9, 2026
  4. don-petry commented on Jun 9, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead Implementation Plan

    Issue: #512 β€” [Fleet Monitor] petry-projects/.github-private β€” test-dev-lead.yml

    Scope

    Fix a silent-exit bug in tests/dev-lead/integration/test_concurrency_config.sh that caused the concurrency-config job to fail with no diagnostic output when a workflow file's concurrency block was absent or contained only comment lines.

    Root Cause

    The test script uses set -euo pipefail. Inside check_concurrency_field and check_concurrency_order, the block-extraction pipeline is:

    block=$(awk '/^concurrency:/{...}' "$file" | grep -v '^\s*#')

    When the file has no concurrency block (or all lines are comments), grep -v receives no matching input and exits with code 1. With set -euo pipefail, that causes immediate script exit β€” no FAIL messages, no diagnostic output. The runner just saw exit code 1 with no explanation.

    This is what happened on PR #488 (implementing issue #395: making dev-lead.yml non-stub): an early version of the PR's dev-lead.yml had no top-level concurrency block, causing the test to exit silently.

    Implementation Checklist

    • tests/dev-lead/unit/test_concurrency_config.bats β€” new bats unit tests covering the missing-block and comment-only-block cases (TDD: written first, must fail before fix)
    • tests/dev-lead/integration/test_concurrency_config.sh β€” add || true to block=$(...) in both check_concurrency_field and check_concurrency_order so a missing/empty block falls through to a clear FAIL message

    Tests to Write

    • block=$(pipeline): grep returns non-zero on empty input β†’ script still prints FAIL message (check_concurrency_field with no concurrency block)
    • block=$(pipeline): comment-only block β†’ each check prints FAIL message
    • Existing passing cases still pass (regression)

    Test Command

    bats tests/dev-lead/unit/ --formatter tap

  5. don-petry commented on Jun 9, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Implementation Complete

    Plan Execution

    • Investigated failed run (job 80243734055 from workflow run 27182261596)
    • Identified root cause: silent-exit bug in test_concurrency_config.sh
    • Wrote 4 failing bats tests covering missing-block and comment-only-block scenarios (TDD red phase)
    • Applied fix: || true on all three grep-based pipelines in the block-extraction functions
    • Confirmed tests go green (4/4 pass)
    • Full suite: 377/377 passing
    • bash scripts/dev-lead-lint.sh passed (shellcheck + agent frontmatter)
    • Integration test test_concurrency_config.sh passes on current repo files

    Root Cause

    test_concurrency_config.sh uses set -euo pipefail. In both check_concurrency_field and check_concurrency_order, the block-extraction pipeline is:

    block=$(awk '...' "$file" | grep -v '^\s*#')

    When a workflow file has no concurrency block, awk produces no output. grep -v '^\s*#' on empty input finds no matching lines and exits with status 1. In non-interactive bash (i.e., when running as a script, not in a (subshell) or interactive mode), set -e triggers on this assignment β€” causing the script to exit before printing any FAIL message.

    The same silent-exit happened for line_before=$(...) and line_after=$(...) in check_concurrency_order when the block is empty.

    On PR #488's merge commit (commit 11ec55ff), the merge combined the old test (which expects both dev-lead.yml and dev-lead-reusable.yml to have concurrency blocks) with the PR's stub dev-lead.yml (no concurrency block). The test exited silently: GitHub Actions logged "Process completed with exit code 1" with zero diagnostic output β€” making the failure look like infra noise to the fleet monitor.

    Test Results

    1..4 (test_concurrency_config.bats β€” new)
    ok 1 concurrency-config: exit 1 with FAIL output when dev-lead.yml has no concurrency block
    ok 2 concurrency-config: exit 1 with FAIL output when dev-lead.yml concurrency block is comments-only
    ok 3 concurrency-config: exit 1 with FAIL output when dev-lead-reusable.yml has no concurrency block
    ok 4 concurrency-config: passes when both files have correct concurrency config
    
    Full suite: 377/377 passing (0 failures)
    

    Files Changed

    • tests/dev-lead/integration/test_concurrency_config.sh: Added || true to block=$(...) in check_concurrency_field and to block=$(...), line_before=$(...), line_after=$(...) in check_concurrency_order β€” prevents bash set -e from triggering when grep exits 1 on empty input; empty block now falls through to the existing FAIL-message branches.
    • tests/dev-lead/unit/test_concurrency_config.bats (new): 4 bats unit tests covering the regression scenarios.

    Notes

    The underlying PR #488 (issue #395: convert dev-lead.yml back to a stub) is still open. Whether that PR lands or not, the concurrency-config test will now produce clear diagnostic output instead of silently exiting whenever a workflow file lacks a concurrency block. Future failures in this test will be attributable rather than appearing as mystery infra failures.

  6. added a commit that references this issue on Jun 10, 2026
  7. added 5 commits that reference this issue on Jun 12, 2026
  8. 16 remaining items

  9. added 14 commits that reference this issue on Aug 7, 2026
  10. added a commit that references this issue on Aug 18, 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 report

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions