Skip to content

[Fleet Monitor] petry-projects/.github-private β€” .github/workflows/auto-rebase.ymlΒ #1473

Closed

Description

@don-petry

🟠 DEGRADED: petry-projects/.github-private / .github/workflows/auto-rebase.yml

Metric Value
Failure Rate 33.3% (1 / 3 runs)
Status DEGRADED
p50 Duration 32s
p95 Duration 248s
Successful Runs 2
Cancelled Runs 0

Workflow: .github/workflows/auto-rebase.yml

Last updated by Fleet Monitor run on 2026-08-07.
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 Aug 7, 2026
  2. don-petry commented on Aug 7, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead Implementation Plan

    Issue: #1473 β€” [Fleet Monitor] petry-projects/.github-private β€” .github/workflows/auto-rebase.yml

    Root cause

    The single failing run (31119528520) failed in "Set up job" with Failed to resolve action download info. Error: Service Unavailable β€” a transient GitHub action-resolution outage (503), not a config/code defect in the thin caller stub (which AGENTS.md forbids editing anyway).

    The repo-specific self-heal handler auto-rebase-retry.yml (AGENTS.md exception; exists precisely to recover "transient API error, rate-limit, infra hiccup") did fire (31119777561) but hung ~15 min and was cancelled β€” because its own "Set up job" must resolve actions/checkout@<sha> during the very same action-resolution outage. So the mitigation shares the failure it's meant to heal, and the auto-rebase run stayed failed β†’ DEGRADED metric.

    Scope

    Harden auto-rebase-retry.yml so the self-heal handler no longer depends on resolving any marketplace action during "Set up job": drop actions/checkout, fetch the retry script via the pre-installed gh CLI (REST contents API, a different service than action resolution), and run it. No change to the tested scripts/auto-rebase-retry.sh logic, and no change to the frozen auto-rebase.yml caller stub.

    Implementation Checklist

    • .github/workflows/auto-rebase-retry.yml β€” remove actions/checkout step; add contents: read permission; fetch scripts/auto-rebase-retry.sh via gh api ... raw and execute it
    • tests/dev-lead/integration/test_auto_rebase_retry_no_action_resolution.py β€” new regression guard
    • .github/workflows/test-dev-lead.yml β€” add a job to run the new test

    Tests to Write

    Test Command

    bats tests/dev-lead/unit/ && python3 tests/dev-lead/integration/test_auto_rebase_retry_no_action_resolution.py (plus bash .dev-lead/scripts/dev-lead-lint.sh)

  3. don-petry commented on Aug 7, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Implementation Complete

    Root cause (why auto-rebase.yml went DEGRADED)

    The single failing run (31119528520) failed in "Set up job" with
    Failed to resolve action download info. Error: Service Unavailable β€” a transient
    GitHub action-resolution outage (503)
    , not a defect in the (frozen) auto-rebase.yml
    caller stub. The repo-specific self-heal handler auto-rebase-retry.yml did fire
    (31119777561) but hung ~15 min and was cancelled, because its own "Set up job"
    had to resolve actions/checkout during the same outage. So the mitigation shared the
    failure it exists to heal, the auto-rebase run stayed failed, and 1/3 runs β†’ 33.3% DEGRADED.

    Fix

    Removed the retry handler's dependency on marketplace-action resolution so it can run
    during the exact outage class it heals: dropped actions/checkout, added contents: read,
    and self-fetch scripts/auto-rebase-retry.sh via the pre-installed gh CLI (REST contents
    API β€” a different service than action resolution) before executing it. A job with zero
    uses: steps skips "Prepare all required actions" entirely. The tested retry logic in
    scripts/auto-rebase-retry.sh is unchanged; the frozen auto-rebase.yml stub is untouched.

    Plan Execution

    • Diagnosed the failing run + the cancelled self-heal retry
    • Added failing regression test (red)
    • Hardened auto-rebase-retry.yml (green)
    • Wired the new test into test-dev-lead.yml
    • Full suite + dev-lead-lint.sh pass

    Test Results

    $ python3 tests/dev-lead/integration/test_auto_rebase_retry_no_action_resolution.py
    PASS: .github/workflows/auto-rebase-retry.yml retry job resolves no actions and self-fetches scripts/auto-rebase-retry.sh
    
    $ python3 tests/dev-lead/integration/test_auto_rebase_stub.py
    PASS: auto-rebase.yml correctly references ...auto-rebase-reusable.yml@auto-rebase/v2-next
    
    $ bats tests/dev-lead/unit/test_auto_rebase_retry.bats
    1..11  (all ok)
    
    $ bats tests/dev-lead/unit/        β†’ 764 ok, 0 not ok
    $ bash .dev-lead/scripts/dev-lead-lint.sh
      [lint] shellcheck on 102 file(s)... / validating 4 agent profile(s)... / all checks passed
    

    Files Changed

    • .github/workflows/auto-rebase-retry.yml: drop actions/checkout; add contents: read; self-fetch retry script via gh api ... raw and run it (immune to action-resolution outages).
    • tests/dev-lead/integration/test_auto_rebase_retry_no_action_resolution.py: new regression guard β€” retry job must resolve no actions, must still invoke the retry script, and must declare actions: write + contents: read.
    • .github/workflows/test-dev-lead.yml: new auto-rebase-retry-resilience job running the guard.

    Notes

    • The original failure was pure transient infra; there is nothing to "fix" in the caller stub itself (and AGENTS.md forbids editing it). The durable fix is making the documented self-heal path actually recover this class β€” so a future 503 during "Set up job" gets re-run to success and the metric no longer degrades.
    • Edge case: if the REST contents API is also unavailable, the step fails fast under set -euo pipefail (never executes a partial script) β€” the pre-existing "a handler failure is just noise" posture, no worse than before.
  4. added a commit that references this issue on Aug 7, 2026
  5. added a commit that references this issue on Aug 8, 2026
  6. 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