Skip to main content

Bug Report BR-053: GitHub Actions Workflow Push Trigger Bug

Bug Summary

Critical GitHub Actions bug where workflows are being triggered by push events despite having on: issues: only configuration. This affects multiple workflow files with different names and persists across complete workflow recreations.

Environment

  • Repository: earlution/ai-dev-kit
  • Platform: GitHub Actions
  • Date Reported: 2026-03-12
  • Severity: Critical (prevents core repository functionality)
  • Impact: FR/BR/UXR intake automation completely broken

Bug Description

GitHub Actions workflows configured with on: issues: only are being triggered by push events, causing "No jobs were run" email spam and preventing proper issue-based automation.

Problematic Behavior

  • ❌ Workflows trigger on every push to main branch
  • ❌ Jobs skip due to missing issue context
  • ❌ "No jobs were run" email notifications sent to maintainers
  • ❌ Issue-based automation completely non-functional
  • ❌ Multiple workflow files affected with different names

Comprehensive Testing Evidence

Test 1: Original Workflow Investigation

File: .github/workflows/fr-br-intake.yml Configuration:

on:
issues:
types: [opened, labeled, unlabeled]
workflow_dispatch:

Result: Workflow triggered on push events (commit: 64e6ed0d, 468ed723, etc.)

Test 2: Trigger Modification

Approach: Removed edited from triggers Configuration:

on:
issues:
types: [opened, labeled, unlabeled] # Removed 'edited'
workflow_dispatch:

Result: Still triggered on push events (commit: 4ba795a2)

Test 3: Explicit Event Checking

Approach: Added explicit event name checking in job condition Configuration:

jobs:
convert-issue-to-document:
if: |
github.event_name == 'issues' && # Explicit check
github.event.action != 'edited' &&
contains(github.event.issue.labels.*.name, 'needs-triage') &&
(contains(github.event.issue.labels.*.name, 'bug') ||
contains(github.event.issue.labels.*.name, 'enhancement') ||
contains(github.event.issue.labels.*.name, 'ux-research') ||
contains(github.event.issue.labels.*.name, 'feedback'))

Result: Still triggered on push events (commit: 39ccd9ee)

Test 4: False Condition Test

Approach: Added false && to job condition Configuration:

jobs:
convert-issue-to-document:
if: |
false && # Should never run
contains(github.event.issue.labels.*.name, 'needs-triage') &&
...

Result: Workflow still triggered on push events with "No jobs were run" (commit: efc82878) Conclusion: Confirmed workflow is being triggered, not job execution issue

Test 5: File Disable Test

Approach: Renamed workflow file to disable it Action: mv fr-br-intake.yml fr-br-intake.yml.DISABLED Result: No more workflow triggers or emails (commit: 55404177) Conclusion: Confirmed the specific workflow file was causing triggers

Test 6: Different Workflow Name

Approach: Created completely new workflow with different name New File: .github/workflows/issue-intake-processor.yml Configuration:

name: Issue Intake Processor  # Different name
on:
issues:
types: [opened, labeled, unlabeled]
workflow_dispatch:
jobs:
process-issue: # Different job name
if: |
github.event_name == 'issues' &&
contains(github.event.issue.labels.*.name, 'needs-triage') &&
...

Result: New workflow also triggered on push events (commit: 9f77c55f) Conclusion: NOT a caching issue - affects multiple workflow files

Test 7: Complete Workflow Recreation

Approach: Created workflow with different structure and debug logging Features Added:

  • Different filename
  • Different job name
  • Debug logging step
  • Simplified triggers Result: Still triggered on push events (commit: 9f77c55f) Conclusion: Bug persists across complete workflow recreations

Evidence Timeline

Time (UTC)CommitTestResult
11:0964e6ed0dOriginal fix attemptTriggered on push
11:124ba795a2Removed edited eventsTriggered on push
11:1438092dd3Test push 1Triggered on push
11:14dd5bac35Test push 2Triggered on push
11:17efc82878False condition testTriggered on push
11:1955404177File disable testNO triggers ✅
11:2339ccd9eeExplicit event checkingTriggered on push
11:289f77c55fNew workflow nameTriggered on push
11:30f1c30abfDisable all workflowsNO triggers ✅

Root Cause Analysis

Confirmed NOT Caused By:

  • Caching: Different workflow names had same issue
  • Configuration Error: Multiple approaches tried
  • Job Conditions: Even false conditions didn't stop triggers
  • Workflow Syntax: Multiple valid configurations tested
  • Repository Settings: No obvious repository-level triggers found

Likely Causes:

  1. GitHub Actions Platform Bug: Core trigger system malfunction
  2. Repository-level Corruption: Specific repository trigger cache corruption
  3. GitHub Internal Issue: Platform-wide trigger handling bug
  4. Workflow Name Collision: Internal GitHub naming conflict

Impact Assessment

Immediate Impact

  • Email Spam: "No jobs were run" notifications on every push
  • Automation Broken: FR/BR/UXR intake process completely non-functional
  • Developer Experience: Poor maintainers' notification experience
  • Resource Waste: Unnecessary GitHub Actions executions

Long-term Impact

  • Feature Loss: Cannot automate issue intake process
  • Scalability Issues: Manual process doesn't scale
  • User Experience: Poor contributor experience
  • Maintenance Overhead: Increased manual work

Workarounds Attempted

Failed Workarounds

  • ❌ Trigger modification
  • ❌ Explicit event checking
  • ❌ Job condition changes
  • ❌ Workflow recreation
  • ❌ Different workflow names

Successful Workaround

  • Disable Workflows: Renaming files stops triggers
  • Trade-off: No automation, but no spam emails

Required Information for GitHub Support

Repository Details

  • Repository: earlution/ai-dev-kit
  • Owner: earlution
  • Visibility: Public
  • Main Branch: main

Workflow Files

  • Original: .github/workflows/fr-br-intake.yml
  • Test: .github/workflows/issue-intake-processor.yml
  • Current: Both disabled with .DISABLED suffix

Recent Workflow Runs

  • Latest Run ID: 22999378837 (push trigger)
  • Pattern: Every push triggers workflow
  • Expected: Only issue events should trigger

Reproduction Steps

  1. Create any workflow with on: issues: only triggers
  2. Push any change to main branch
  3. Observe workflow runs despite no issue events
  4. Receive "No jobs were run" email notification

Expected vs Actual Behavior

Expected Behavior

  • ✅ Workflow only triggers on issue events (opened, labeled, unlabeled)
  • ✅ No push event triggers
  • ✅ No "No jobs were run" emails
  • ✅ Issue-based automation works correctly

Actual Behavior

  • ❌ Workflow triggers on every push event
  • ❌ "No jobs were run" emails on every push
  • ❌ Issue-based automation broken
  • ❌ Multiple workflow files affected

Support Request

Immediate Needs

  1. Investigate: Why workflows trigger on push despite on: issues:
  2. Fix: Restore proper trigger behavior
  3. Guidance: Alternative approaches if this is expected behavior

Information Needed

  1. Root Cause: What is causing this trigger behavior?
  2. Scope: Is this repository-specific or platform-wide?
  3. Timeline: When can this be fixed?
  4. Workaround: Are there any working alternatives?
  • BR-051: GitHub Actions workflow spam emails (documentation)
  • BR-052: GitHub Actions workflow optimization (attempted fix)
  • Multiple GitHub Actions runs: Evidence in repository history

Contact Information


GitHub Issue Reference

  • Issue Number: N/A (Internal documentation)
  • Evidence: Comprehensive testing across multiple scenarios
  • Status: DISABLED - Workflows renamed to stop spam
  • Next Step: GitHub Support intervention required

This bug report documents a critical GitHub Actions platform issue that prevents core repository functionality. Comprehensive testing has confirmed this is not a configuration or caching issue, but a platform-level bug requiring GitHub Support intervention.


Resolution / current status (2026-03-30)

Verified behavior (post–BR-057 valid YAML): Using gh run list --workflow fr-br-intake.yml on earlution/ai-dev-kit, every sampled run through 2026-03-25 used event: push (including after on: issues only was restored on main and epic/6-framework-management). No issues events appeared in the recent run window. Example run IDs: 23541602524 (push to epic/6-framework-management), 23352483560, 23352364482, consistent with the 2026-03-12 push-only pattern in the evidence table above.

BR-057 relationship: Invalid YAML could explain failed parses (“Invalid workflow file”), not incorrect trigger types while the workflow is accepted. Push scheduling with on: issues only remains reproducible with syntactically valid workflow definitions.

Repository action (E2:S11:T12): The active workflow file was removed from GitHub’s workflow file set by renaming .github/workflows/fr-br-intake.yml to .github/workflows/fr-br-intake.yml.DISABLED (source) (extension not .yml/.yaml). Canonical YAML is preserved in that file for a future re-enable. Manual intake is documented in FR_BR_UXR_FB_GITHUB_SUBMISSION_GUIDE.md (source) and the intake skill.

Acceptance criteria adjustment: “GitHub Bug Fixed” is not satisfied by vendor confirmation; evidence-based closure is: no spurious workflow runs after a future re-enable test, or continued disablement with documented manual process.