Skip to content

petry-projects — workflow failures detected 2026-05-28 #405

Closed

Description

@github-actions

Actions Fleet Monitor — 2026-05-28

Org: petry-projects | Lookback: 1 day(s) | Repos: 8 | Workflows: 170

Fleet Health

🔴 CRITICAL: 0 🟠 DEGRADED: 1 🟡 WARNING: 4 ✅ HEALTHY: 38

pie title Workflow Status Distribution
  "DEGRADED" : 1
  "WARNING" : 4
  "HEALTHY" : 38
Loading

Top Failing Workflows

xychart-beta
  title "Top Failing Workflows (≥5 runs)"
  x-axis ["broodly/dev-lead.yml","broodly/pr-review-mention.yml",".github-private/pr-review.yml",".github-private/dev-lead.yml",".github-private/pr-review-mention.yml"]
  y-axis "Failure Rate %" 0 --> 100
  bar [25,9,6,3,3]
Loading

Per-Repo Summary

Repo Workflows Total Runs Failures Issues Worst Status
petry-projects/.github ✅ 31 110 1 #345 #334 #331 #330 #329 ✅ HEALTHY
petry-projects/.github-private 🟡 33 219 5 #402 #401 #342 #341 #337 #244 🟡 WARNING
petry-projects/ContentTwin ✅ 14 5 0 #189 #188 #180 #179 ✅ HEALTHY
petry-projects/bmad-bgreat-suite ✅ 15 5 0 #201 #198 #197 #185 #184 #183 ✅ HEALTHY
petry-projects/broodly 🟠 19 75 15 #280 #243 #240 #230 #227 #226 #223 #224 🟠 DEGRADED
petry-projects/google-app-scripts ✅ 23 5 0 #322 #318 #317 #315 #305 #303 #304 ✅ HEALTHY
petry-projects/markets ✅ 18 6 0 #215 #209 #208 #203 #202 ✅ HEALTHY

Fleet Detail

Repo Workflow Issues Total ✅ ❌ ⚪ Failure Rate p50 p95 Status
petry-projects/broodly 🟠 dev-lead.yml #227 27 8 7 0 25.9% ██░░░░░░░░ 9s 1m19s 🟠 DEGRADED
petry-projects/.github-private 🟡 dev-lead.yml #341 56 12 2 24 3.6% ░░░░░░░░░░ 9s 9m40s 🟡 WARNING
petry-projects/.github-private 🟡 pr-review-mention.yml 26 0 1 0 3.8% ░░░░░░░░░░ 1s 3s 🟡 WARNING
petry-projects/.github-private 🟡 pr-review.yml #402 31 27 2 0 6.5% ░░░░░░░░░░ 43s 2m8s 🟡 WARNING
petry-projects/broodly 🟡 pr-review-mention.yml #280 11 0 1 0 9.1% ░░░░░░░░░░ 2s 11s 🟡 WARNING
petry-projects/.github ✅ agent-shield.yml 2 2 0 0 0% ░░░░░░░░░░ 15s 15s ✅ HEALTHY
petry-projects/.github ✅ ci.yml #329 2 2 0 0 0% ░░░░░░░░░░ 18s 18s ✅ HEALTHY
petry-projects/.github ✅ codeql 2 2 0 0 0% ░░░░░░░░░░ 2m16s 2m16s ✅ HEALTHY
petry-projects/.github ✅ daily-org-status.yml #334 1 1 0 0 0% ░░░░░░░░░░ 3m34s 3m34s ✅ HEALTHY
petry-projects/.github ✅ dependabot-automerge.yml 2 0 0 0 0% ░░░░░░░░░░ 1s 1s ✅ HEALTHY
petry-projects/.github ✅ dependabot-rebase.yml 5 5 0 0 0% ░░░░░░░░░░ 11s 11s ✅ HEALTHY
petry-projects/.github ✅ dependency-audit.yml 2 2 0 0 0% ░░░░░░░░░░ 10s 10s ✅ HEALTHY
petry-projects/.github ✅ dev-lead.yml #330 52 23 0 23 0% ░░░░░░░░░░ 11s 1m36s ✅ HEALTHY
petry-projects/.github ✅ pr-auto-review.yml #345 11 11 0 0 0% ░░░░░░░░░░ 9s 12s ✅ HEALTHY
petry-projects/.github ✅ pr-review-mention.yml #331 28 0 0 0 0% ░░░░░░░░░░ 1s 2s ✅ HEALTHY
petry-projects/.github ✅ sonarcloud.yml 2 2 0 0 0% ░░░░░░░░░░ 39s 39s ✅ HEALTHY
petry-projects/.github-private ✅ agent-shield.yml 10 10 0 0 0% ░░░░░░░░░░ 19s 45s ✅ HEALTHY
petry-projects/.github-private ✅ auto-rebase.yml 1 1 0 0 0% ░░░░░░░░░░ 20s 20s ✅ HEALTHY
petry-projects/.github-private ✅ ci-failure-analyst.lock.yml 18 0 0 0 0% ░░░░░░░░░░ 1s 2s ✅ HEALTHY
petry-projects/.github-private ✅ ci.yml #244 10 10 0 0 0% ░░░░░░░░░░ 16s 33s ✅ HEALTHY
petry-projects/.github-private ✅ codeql 10 10 0 0 0% ░░░░░░░░░░ 51s 1m6s ✅ HEALTHY
petry-projects/.github-private ✅ content-twin-audit.yml 1 1 0 0 0% ░░░░░░░░░░ 23s 23s ✅ HEALTHY
petry-projects/.github-private ✅ copilot-pull-request-reviewer 1 1 0 0 0% ░░░░░░░░░░ 1m34s 1m34s ✅ HEALTHY
petry-projects/.github-private ✅ daily-pr-review-health.yml 1 1 0 0 0% ░░░░░░░░░░ 1m51s 1m51s ✅ HEALTHY
petry-projects/.github-private ✅ dependabot-automerge.yml 9 0 0 0 0% ░░░░░░░░░░ 1s 2s ✅ HEALTHY
petry-projects/.github-private ✅ dependency-audit.yml 10 10 0 0 0% ░░░░░░░░░░ 7s 31s ✅ HEALTHY
petry-projects/.github-private ✅ dev-lead-retry.yml 6 6 0 0 0% ░░░░░░░░░░ 7m36s 8m23s ✅ HEALTHY
petry-projects/.github-private ✅ lint.yml #342 8 8 0 0 0% ░░░░░░░░░░ 17s 1m54s ✅ HEALTHY
petry-projects/.github-private ✅ release-notes.yml 1 1 0 0 0% ░░░░░░░░░░ 10s 10s ✅ HEALTHY
petry-projects/.github-private ✅ sonarcloud.yml 10 10 0 0 0% ░░░░░░░░░░ 42s 54s ✅ HEALTHY
petry-projects/.github-private ✅ test.yml 10 10 0 0 0% ░░░░░░░░░░ 8s 19s ✅ HEALTHY
petry-projects/ContentTwin ✅ codeql 1 1 0 0 0% ░░░░░░░░░░ 56s 56s ✅ HEALTHY
petry-projects/ContentTwin ✅ dependabot-rebase.yml 4 4 0 0 0% ░░░░░░░░░░ 13s 15s ✅ HEALTHY
petry-projects/bmad-bgreat-suite ✅ dependabot-rebase.yml 5 5 0 0 0% ░░░░░░░░░░ 20s 24s ✅ HEALTHY
petry-projects/broodly ✅ agent-shield.yml 3 3 0 0 0% ░░░░░░░░░░ 17s 18s ✅ HEALTHY
petry-projects/broodly ✅ ci-failure-analyst.yml #243 12 0 0 0 0% ░░░░░░░░░░ 1s 8s ✅ HEALTHY
petry-projects/broodly ✅ codeql 3 3 0 0 0% ░░░░░░░░░░ 1m10s 1m21s ✅ HEALTHY
petry-projects/broodly ✅ copilot-pull-request-reviewer 1 1 0 0 0% ░░░░░░░░░░ 1m35s 1m35s ✅ HEALTHY
petry-projects/broodly ✅ dependabot-automerge.yml 3 0 0 0 0% ░░░░░░░░░░ 1s 2s ✅ HEALTHY
petry-projects/broodly ✅ dependabot-rebase.yml 5 5 0 0 0% ░░░░░░░░░░ 8s 11s ✅ HEALTHY
petry-projects/broodly ✅ sonarcloud.yml 3 3 0 0 0% ░░░░░░░░░░ 53s 55s ✅ HEALTHY
petry-projects/google-app-scripts ✅ dependabot-rebase.yml #317 5 5 0 0 0% ░░░░░░░░░░ 22s 23s ✅ HEALTHY
petry-projects/markets ✅ dependabot-rebase.yml #215 6 6 0 0 0% ░░░░░░░░░░ 10s 11s ✅ HEALTHY
petry-projects/.github 🟡 compliance-retrigger.yml 1 0 1 0 100% ██████████ 10s 10s 🟡 LOW-CONF
petry-projects/broodly 🟡 ci.yml #223 3 0 3 0 100% ██████████ 1m6s 1m7s 🟡 LOW-CONF
petry-projects/broodly 🟡 dependabot-updates #240 1 0 1 0 100% ██████████ 59s 59s 🟡 LOW-CONF
petry-projects/broodly 🟡 dependency-audit.yml #226 3 0 3 0 100% ██████████ 42s 45s 🟡 LOW-CONF

Failed Runs

petry-projects/.github / compliance-retrigger.yml

Run Date Duration Link
#7 2026-05-27 10s view

petry-projects/.github-private / dev-lead.yml

Run Date Duration Link
#5509 2026-05-27 0s view
#5508 2026-05-27 0s view

petry-projects/.github-private / pr-review-mention.yml

Run Date Duration Link
#2175 2026-05-27 0s view

petry-projects/.github-private / pr-review.yml

Run Date Duration Link
#2272 2026-05-27 0s view
#2261 2026-05-27 25s view

petry-projects/broodly / ci.yml

Run Date Duration Link
#773 2026-05-27 1m6s view
#772 2026-05-27 1m7s view
#771 2026-05-27 1m2s view

petry-projects/broodly / dependency-audit.yml

Run Date Duration Link
#686 2026-05-27 41s view
#685 2026-05-27 42s view
#684 2026-05-27 45s view

petry-projects/broodly / dev-lead.yml

Run Date Duration Link
#2163 2026-05-27 31s view
#2154 2026-05-27 29s view
#2152 2026-05-27 0s view
#2151 2026-05-27 0s view
#2145 2026-05-27 33s view
#2142 2026-05-27 1m19s view
#2140 2026-05-27 23s view

petry-projects/broodly / pr-review-mention.yml

Run Date Duration Link
#1396 2026-05-27 0s view

petry-projects/broodly / dependabot-updates

Run Date Duration Link
#92 2026-05-28 59s view

Activity

  1. added
    dev-leadFor dev-lead agent pickup
    and removed
    dev-leadFor dev-lead agent pickup
    on Jun 8, 2026
  2. don-petry commented on Jun 9, 2026

    @don-petry
    Collaborator
    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
    Collaborator

    Dev-Lead Implementation Plan

    Issue: #405 — petry-projects — workflow failures detected 2026-05-28

    Scope

    Fix two code-level root causes behind .github-private workflow failures: (1) dev-lead.yml crashes when a trusted-bot comment arrives on an already-merged PR whose branch was deleted, because checkout_pr_in_worktree calls gh pr checkout on a non-existent branch; (2) defense-in-depth skip in the intent classifier so fix-bot-comment events on closed PRs never reach checkout at all.

    The pr-review.yml failures are caused by DON_PETRY_BOT_GH_PAT being a fine-grained PAT; the workflow code correctly detects this and fails fast — the fix is a secret rotation (noted as a follow-up, not a code change).

    Implementation Checklist

    • scripts/lib/pr-worktree.sh — in checkout_pr_in_worktree, add a gh pr view --json state check before gh pr checkout; if the PR is not OPEN, emit a notice and exit 0 cleanly
    • scripts/dev-lead-intent.sh — in the issue_comment routing block, after the is_pr guard, check .issue.state == "closed" and emit skip pr-already-closed
    • tests/dev-lead/unit/test_pr_worktree.bats — update the gh stub to return ${PR_STATE_API:-OPEN} for state queries; add two new tests (merged, closed)
    • tests/dev-lead/fixtures/events/issue_comment_sonarqube_closed_pr.json — new fixture: same as issue_comment_sonarqube.json but with "state": "closed"
    • tests/dev-lead/unit/test_intent_reviews.bats — add test: trusted-bot comment on closed PR → skip / pr-already-closed

    Tests to Write

    • test_pr_worktree.bats: checkout_pr_in_worktree: exits cleanly (status 0) when PR state is MERGED
    • test_pr_worktree.bats: checkout_pr_in_worktree: exits cleanly (status 0) when PR state is CLOSED
    • test_intent_reviews.bats: issue_comment: trusted-bot comment on closed PR → skip (pr-already-closed)

    Test Command

    bats tests/dev-lead/unit/

    Follow-up (not in this PR)

  5. don-petry commented on Jun 9, 2026

    @don-petry
    Collaborator

    Implementation complete — issue #405

    Root cause

    issue_comment events from trusted bots (SonarQube, Coderabbit, etc.) arriving on already-merged PRs were routed to fix-bot-comment. That intent calls checkout_pr_in_worktree, which runs gh pr checkout — and when the PR's head branch was deleted after merging, that command aborts with fatal: couldn't find remote ref.

    Fix (two layers of defence)

    Layer 1 — fast-path guard in dev-lead-intent.sh (scripts/dev-lead-intent.sh)

    In the issue_comment branch, immediately after confirming the comment is on a PR, the classifier now reads issue.state from the event payload. If it is "closed", it emits skip with reason pr-already-closed and exits before any token spend.

    Layer 2 — deep safety net in checkout_pr_in_worktree (scripts/lib/pr-worktree.sh)

    As the very first operation in checkout_pr_in_worktree (before mktemp, before the EXIT trap), a gh pr view --json state call checks the PR state. If not OPEN, it prints a ::notice:: annotation and exits 0 cleanly. This catches any path that reaches the function regardless of the intent classifier.

    The state check must be before the EXIT trap — placing it after (the initial broken placement) caused the trap to capture and replay bats' own lifecycle handler when exit 0 fired, producing "Executed 2 instead of expected 1 tests" in the unit tests.

    Tests

    • test_intent_reviews.bats: new regression test — trusted-bot comment on closed PR → skip / pr-already-closed
    • test_pr_worktree.bats: two new regression tests — checkout_pr_in_worktree exits cleanly for MERGED and CLOSED states; updated gh stub to handle --json state queries
    • New fixture: tests/dev-lead/fixtures/events/issue_comment_sonarqube_closed_pr.json

    Verification

    bats tests/dev-lead/unit/    # 376/376 ok
    shellcheck scripts/lib/pr-worktree.sh scripts/dev-lead-intent.sh  # clean
    
  6. added a commit that references this issue on Jun 13, 2026
  7. added 4 commits that reference this issue on Jun 14, 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

    automated-reportCreated by automated workflowdev-leadFor dev-lead agent pickuphealth-checkAutomated health check report

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions