Skip to content

fix(ci): implement unmerged PR #262 review fixes in intake-canary and n8n-health-check - #269

Merged
labgadget015-dotcom merged 2 commits into
mainfrom
copilot/fix-github-actions-job-failure
Aug 26, 2026
Merged

fix(ci): implement unmerged PR #262 review fixes in intake-canary and n8n-health-check#269
labgadget015-dotcom merged 2 commits into
mainfrom
copilot/fix-github-actions-job-failure

Conversation

Copilot AI commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

PR #267 was supposed to apply 4 code-review comments from the PR #262 review but was merged as an empty "Initial plan" commit with no diff. This PR implements those fixes.

Changes

n8n-health-check.yml

  • Rename: n8n Pipeline Health Checkn8n Reachability Check — the workflow only proves HTTP reachability, not pipeline health; the old name was actively misleading in the Actions UI
  • Grammar: "has already failed to twice" → "has already failed twice"

intake-canary.yml

  • DRC shape guard (correctness bug): the 200 with unexpected body guard only validated the Event Router response. A malformed DRC 200 would pass the guard, cause streak() to emit a non-numeric value, and make [ "$DRC_STREAK" -gt 0 ] error out silently — suppressing both the status/detail outputs and the Slack alert. Both bodies are now validated with the same check.

  • Silence threshold accuracy: AGE_H=$(( … / 3600 )) then [ "$AGE_H" -gt "$SILENCE_THRESHOLD_HOURS" ] made the effective threshold up to 59 minutes longer than configured. Changed to compare in seconds:

    AGE_S=$(( $(date -u +%s) - $(date -u -d "$LATEST_AT" +%s) ))
    AGE_H=$(( AGE_S / 3600 ))   # display only
    if [ "$AGE_S" -gt $(( SILENCE_THRESHOLD_HOURS * 3600 )) ]; then

Context on the canary failure (job 98059170833)

The canary is working correctly — it is detecting a real ongoing outage: 20 consecutive Event Router errors due to the HMAC secret mismatch from issue #259. The GitHub webhook side was fixed 2026-08-24; the remaining action is for Gadget to set GITHUB_WEBHOOK_SECRET in the n8n Cloud UI and republish the Event Router. These workflow changes do not turn the canary green — that requires the n8n fix.

…lth-check

Co-authored-by: labgadget015-dotcom <232155002+labgadget015-dotcom@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix failing GitHub Actions job 'GitHub -> DRC intake canary' fix(ci): implement unmerged PR #262 review fixes in intake-canary and n8n-health-check Aug 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📊 Code Complexity Analysis

Summary:

  • Total Functions Analyzed: 844
  • Average Complexity: 3.59
  • High Complexity Functions: 29
  • Low Maintainability Files: 60

⚠️ High Complexity Functions

These functions exceed the complexity threshold and should be refactored:

File Function Complexity Line
core/risk_scorer.py score_pull_request 35 141
autopilot/autopilot.py generate_summary 24 195
autopilot/staleness_engine.py process_stale_prs 16 281
autopilot/ai_optimization/performance_monitor.py get_benchmark_stats 15 184
.github/scripts/batch_scan_dependabot.py main 15 64
.github/scripts/weekly_digest.py build_blocks 15 38
autopilot/recommendation_contract.py validate 14 54
.github/scripts/workflow_monitor.py get_workflow_statistics 14 216
.github/scripts/metrics_collector.py parse_workflow_metrics 14 148
.github/scripts/setup_branch_protection.py main 14 240

... and 19 more

Recommendations:

  • Break down large functions into smaller, focused units
  • Extract complex conditional logic into separate functions
  • Use early returns to reduce nesting

🔧 Low Maintainability Files

These files have low maintainability scores and may need refactoring:

File Score Status
.github/scripts/health_dashboard_generator.py 28.14 🔴
.github/scripts/workflow_monitor.py 33.73 🔴
.github/scripts/ai_code_suggestor.py 33.76 🔴
.github/scripts/ai_workflow_optimizer.py 35.51 🔴
.github/scripts/performance_benchmark.py 39.46 🔴
.github/scripts/self_healing_system.py 40.27 🔴
.github/scripts/threshold_monitor.py 41.13 🔴
.github/scripts/parallel_code_analyzer_optimized.py 41.16 🔴
autopilot/tests/test_recommendation_contract.py 42.05 🔴
autopilot/autopilot.py 42.45 🔴
autopilot/ai_optimization/anomaly_detector.py 42.56 🔴
.github/scripts/refactoring_assistant.py 43.03 🔴
autopilot/ai_optimization/intelligent_cache.py 43.28 🔴
autopilot/ai_optimization/commit_summarizer.py 44.05 🔴
.github/scripts/async_parallel_analyzer.py 44.47 🔴
autopilot/ai_optimization/performance_monitor.py 44.69 🔴
.github/scripts/badge_generator.py 45.28 🔴
.github/scripts/copilot_integration.py 45.37 🔴
.github/scripts/distributed_monitoring.py 45.53 🔴
autopilot/dependency_graph.py 45.65 🔴
.github/scripts/elite_copilot.py 45.69 🔴
.github/scripts/issue_auto_creator.py 46.39 🔴
.github/scripts/cost_calculator.py 46.4 🔴
.github/scripts/inline_pr_commenter.py 46.63 🔴
.github/scripts/complexity_reporter.py 46.78 🔴
.github/scripts/pr_triage.py 47.13 🔴
core/risk_scorer.py 48.15 🔴
autopilot/ai_optimization/nlp_relevance_filter.py 48.43 🔴
.github/scripts/pr_inline_commenter.py 48.47 🔴
.github/scripts/dependency_audit.py 48.7 🔴
autopilot/staleness_engine.py 48.73 🔴
.github/scripts/metrics_collector.py 48.91 🔴
.github/scripts/dependency_updater.py 48.91 🔴
autopilot/ai_optimization/ml_priority_scorer.py 49.53 🔴
.github/scripts/parallel_code_analyzer.py 49.96 🔴
autopilot/ai_optimization/api_optimizer.py 50.46 🟡
.github/scripts/workflow_optimizer.py 51.67 🟡
.github/scripts/cot_selector.py 51.73 🟡
.github/scripts/release_manager.py 51.92 🟡
.github/scripts/check_quality.py 52.33 🟡
.github/scripts/auto_pr.py 52.72 🟡
.github/scripts/changelog_generator.py 53.13 🟡
.github/scripts/notification_manager.py 53.58 🟡
.github/scripts/prometheus_exporter.py 54.96 🟡
.github/scripts/weekly_digest.py 55.02 🟡
.github/scripts/llm_router.py 55.19 🟡
core/audit_logger.py 55.6 🟡
.github/scripts/gather_context.py 56.0 🟡
.github/scripts/batch_scan_dependabot.py 56.3 🟡
core/llm_provider.py 56.32 🟡
.github/scripts/streaming_results.py 56.64 🟡
.github/scripts/setup_branch_protection.py 57.0 🟡
.github/scripts/optimized_github_client.py 58.27 🟡
agents/orchestrator_agent.py 59.02 🟡
core/incident_freeze.py 59.67 🟡
core/github_client.py 61.96 🟡
core/message_queue.py 63.22 🟡
core/agent_config.py 63.82 🟡
autopilot/decisions/ledger.py 63.92 🟡
core/idempotency.py 64.45 🟡

Maintainability Index Guide:

  • 🟢 85-100: Excellent maintainability
  • 🟡 65-84: Good maintainability
  • 🟠 50-64: Moderate maintainability (consider refactoring)
  • 🔴 0-49: Poor maintainability (needs refactoring)

@github-actions github-actions Bot added the ci/cd label Aug 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🟡 Risk Assessment: MEDIUM (4.5/10)

Analysed 2 files, 21+ / 14− lines. Security-sensitive paths detected. Test coverage unchanged or improved.

Scoring breakdown

Factor Score
Sensitive paths — 2 security-relevant files +3.0
Risky extensions — 2 config/script files +1.0
Draft PR — marked as draft +0.5

⚠️ Security-sensitive paths modified

  • .github/workflows/intake-canary.yml
  • .github/workflows/n8n-health-check.yml

✅ Eligible for auto-merge (subject to CI passing).

@github-actions

Copy link
Copy Markdown
Contributor

Code Quality Analysis ❌ FAILED

Duration: 0.01s
Total Issues: 10

Tool Results

  • pylint: ❌
  • flake8: ❌
  • bandit: ❌
  • radon_cc: ❌
  • radon_mi: ❌
View detailed results
{
  "timestamp": "2026-08-26 04:35:45",
  "elapsed_seconds": 0.01,
  "summary": {
    "total_issues": 10,
    "critical": 0,
    "high": 0,
    "medium": 0,
    "low": 0
  },
  "tools": {
    "pylint": {
      "status": "failed",
      "output": "",
      "errors": "Pylint error: [Errno 2] No such file or directory: 'pylint'"
    },
    "flake8": {
      "status": "failed",
      "output": "",
      "errors": "Flake8 error: [Errno 2] No such file or directory: 'flake8'"
    },
    "bandit": {
      "status": "failed",
      "output": "",
      "errors": "Bandit error: [Errno 2] No such file or directory: 'bandit'"
    },
    "radon_cc": {
      "status": "failed",
      "output": "",
      "errors": "Radon error: [Errno 2] No such file or directory: 'radon'"
    },
    "radon_mi": {
      "status": "failed",
      "output": "",
      "errors": "Radon MI error: [Errno 2] No such file or directory: 'radon'"
    }
  },
  "passed": false
}

@github-actions

Copy link
Copy Markdown
Contributor

🤖 Elite AI Copilot Analysis

Elite AI Copilot Analysis Report

Generated: 2026-08-26 04:35:50
Session ID: copilot_1787718950
Repository: .

🎯 Health Score: 100.0/100

🚀 Top Recommendations

  1. ✅ Repository is in excellent shape - continue current practices

📊 Detailed Insights

Code Quality Baseline Established

  • Category: code_quality
  • Severity: info
  • Description: Repository code quality metrics captured
  • Suggested Action: Continue monitoring for regressions
  • Confidence: 90%

Security Scan Initiated

  • Category: security
  • Severity: info
  • Description: No critical vulnerabilities detected in initial scan
  • Suggested Action: Enable continuous security monitoring
  • Confidence: 85%

Repository Structure Analyzed

  • Category: architecture
  • Severity: info
  • Description: Well-organized modular structure detected
  • Suggested Action: Maintain separation of concerns
  • Confidence: 80%

Performance Baseline Captured

  • Category: performance
  • Severity: info
  • Description: Repository performance metrics recorded
  • Suggested Action: Monitor for performance regressions
  • Confidence: 75%

Documentation Structure Good

  • Category: documentation
  • Severity: info
  • Description: Comprehensive documentation files present
  • Suggested Action: Keep documentation in sync with code changes
  • Confidence: 90%

Powered by Elite AI Copilot v1.0

@github-actions

Copy link
Copy Markdown
Contributor

🔍 Pre-commit Checks

✅ All pre-commit checks passed!

Your code follows the project style guidelines.


Pre-commit hooks help maintain code quality and consistency.

@github-actions

Copy link
Copy Markdown
Contributor

🔒 Security Scan Results

🛡️ Bandit Security Scan

  • 🔴 HIGH: 0
  • 🟡 MEDIUM: 5
  • 🟢 LOW: 107

📦 Dependency Vulnerabilities

  • Total vulnerable dependencies: 61

Vulnerable Dependencies:

  • pygithub 2.10.0
  • aiohttp 3.14.3
  • multidict 6.7.1
  • yarl 1.24.5
  • pyyaml 6.0.3
  • ... and 56 more

Security scans run automatically on every PR. View detailed reports in the Actions tab.

@labgadget015-dotcom
labgadget015-dotcom marked this pull request as ready for review August 26, 2026 04:46
Copilot AI lite review requested due to automatic review settings August 26, 2026 04:46
@labgadget015-dotcom
labgadget015-dotcom merged commit 4dbe7cb into main Aug 26, 2026
38 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are narrowly scoped to workflow messaging and robust guard/threshold logic, and the updated bash logic addresses the documented failure mode without introducing new risky behavior.

Pull request overview

This PR applies previously missed review fixes (from the PR #262 review) to align the CI workflows’ behavior and messaging with what they actually verify, and to harden the intake canary against silent-pass failure modes when n8n returns unexpected but “200 OK” responses.

Changes:

  • Renames the reachability-only n8n workflow to avoid implying it measures pipeline health, and fixes a grammar issue in its header comment.
  • Hardens intake-canary.yml by validating both Event Router and DRC executions API response shapes to prevent non-numeric streak values from suppressing alerts.
  • Fixes the canary silence-threshold comparison to use seconds (accurate threshold) while keeping an hours value for display.
File summaries
File Description
.github/workflows/n8n-health-check.yml Renames the workflow to “Reachability Check” and corrects wording so the Actions UI matches the workflow’s true scope.
.github/workflows/intake-canary.yml Adds a shared shape-guard for both API responses and corrects silence-threshold math to avoid up-to-59-minute drift.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@labgadget015-dotcom labgadget015-dotcom left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants