Skip to content

Replace archived OpenCode engine with Crush across runtime, compiler, and workflow assets#26819

Merged
pelikhan merged 2 commits intomainfrom
copilot/swap-opencode-to-crush
Apr 17, 2026
Merged

Replace archived OpenCode engine with Crush across runtime, compiler, and workflow assets#26819
pelikhan merged 2 commits intomainfrom
copilot/swap-opencode-to-crush

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 17, 2026

OpenCode support was still wired as a first-class engine even though OpenCode is archived. This change migrates active engine support to crush and removes opencode from the operational surface.

  • Engine/runtime migration

    • Replaced built-in engine identity from opencodecrush in registry/catalog/constants.
    • Renamed engine implementation and MCP integration files to crush_*.
    • Updated engine metadata, secret guidance, model env vars, and default CLI version (@charmland/crush, CRUSH_MODEL, GH_AW_MODEL_*_CRUSH).
  • Compiler + policy updates

    • Switched compiler/domain routing paths and engine-specific allowlist logic to crush.
    • Updated default domain sets for Crush-specific behavior and provider routing.
    • Updated schema/help text and CLI engine completion/token-bootstrap messaging to expose crush.
  • Workflow/config surface migration

    • Replaced OpenCode gateway converter with Crush converter (.crush.json target).
    • Updated MCP gateway engine dispatch to call the new Crush converter.
    • Renamed smoke workflow from smoke-opencode to smoke-crush and regenerated lockfiles.
    • Migrated built-in engine definition markdown from opencode.md to crush.md.
  • Tests + fixtures alignment

    • Updated engine catalog/constant/completion expectations to include crush.
    • Renamed engine tests to crush_engine_test.go and aligned assertions.
    • Updated golden fixtures for manifest folders/files (.crush, .crush.json).
# before
engine:
  id: opencode

# after
engine:
  id: crush

Copilot AI and others added 2 commits April 17, 2026 04:47
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/a964814b-4d92-43f7-8c6e-072b1e792779

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/a964814b-4d92-43f7-8c6e-072b1e792779

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
@pelikhan pelikhan marked this pull request as ready for review April 17, 2026 05:21
Copilot AI review requested due to automatic review settings April 17, 2026 05:21
@pelikhan pelikhan merged commit 5f00969 into main Apr 17, 2026
66 of 69 checks passed
@pelikhan pelikhan deleted the copilot/swap-opencode-to-crush branch April 17, 2026 05:22
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

Migrates the codebase’s first-class “OpenCode” engine support to the “Crush” engine across runtime/registry wiring, compiler defaults, workflow assets, and user-facing docs.

Changes:

  • Replaces built-in engine identity from opencode to crush (registry/catalog/constants/tests) and introduces Crush engine definition assets.
  • Updates compiler lookups/defaults and MCP config rendering to target Crush.
  • Updates workflow lockfiles and docs to reflect Crush engine/config artifacts and environment variables.
Show a summary per file
File Description
pkg/workflow/opencode_mcp.go Removes OpenCode MCP config renderer.
pkg/workflow/crush_mcp.go Adds Crush MCP config renderer.
pkg/workflow/engine_definition_test.go Updates built-in engine catalog expectations to include crush.
pkg/workflow/engine_definition.go Updates built-in engine documentation comments from opencode to crush.
pkg/workflow/engine_catalog_test.go Updates engine ID expectations for crush in catalog tests.
pkg/workflow/data/engines/opencode.md Removes embedded OpenCode engine definition markdown.
pkg/workflow/data/engines/crush.md Adds embedded Crush engine definition markdown.
pkg/workflow/compiler_yaml_lookups.go Adds default version lookup for Crush; updates model-default routing list.
pkg/workflow/compiler_orchestrator_engine.go Updates orchestrator comments to reference Crush instead of OpenCode.
pkg/workflow/agentic_engine.go Registers NewCrushEngine() instead of NewOpenCodeEngine().
pkg/workflow/README.md Updates engine registry docs to list crush.
pkg/constants/version_constants.go Replaces DefaultOpenCodeVersion with DefaultCrushVersion.
pkg/constants/constants_test.go Updates expected engine list to include crush.
pkg/constants/constants.go Renames OpenCode gateway port constant to Crush.
pkg/console/README.md Updates example error hint to list crush instead of opencode.
pkg/cli/tokens_bootstrap.go Updates --engine help text to include crush.
pkg/cli/completions_test.go Updates completion expectations to include crush.
docs/src/content/docs/setup/cli.md Updates CLI docs mentioning supported engines to include crush.
docs/src/content/docs/reference/faq.md Updates FAQ engine list to include crush.
docs/src/content/docs/reference/environment-variables.md Renames OpenCode model override env vars to Crush equivalents.
actions/setup/sh/start_mcp_gateway.sh Switches gateway converter dispatch from OpenCode converter to Crush converter.
.github/workflows/workflow-skill-extractor.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/workflow-normalizer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/workflow-health-manager.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/workflow-generator.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/weekly-safe-outputs-spec-review.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/weekly-issue-summary.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/weekly-editors-health-check.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/weekly-blog-post-writer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/video-analyzer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/update-astro.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/unbloat-docs.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/ubuntu-image-analyzer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/typist.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/tidy.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/test-workflow.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/test-quality-sentinel.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/test-project-url-default.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/test-dispatcher.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/test-create-pr-error-handling.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/terminal-stylist.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/technical-doc-writer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/super-linter.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/sub-issue-closer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/step-name-alignment.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/static-analysis-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/stale-repo-identifier.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/spec-librarian.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/spec-extractor.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/spec-enforcer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-workflow-call.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-test-tools.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-temporary-id.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-service-ports.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-project.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-multi-pr.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-gemini.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-call-workflow.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-agent-scoped-approved.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-agent-public-none.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-agent-public-approved.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-agent-all-none.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/smoke-agent-all-merged.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/slide-deck-maintainer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/sergo.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/semantic-function-refactor.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/security-review.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/security-compliance.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/scout.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/schema-feature-coverage.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/schema-consistency-checker.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/safe-output-health.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/research.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/repository-quality-improver.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/repo-tree-map.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/repo-audit-analyzer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/release.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/refiner.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/refactoring-cadence.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/q.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/python-data-charts.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/prompt-clustering-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/pr-triage-agent.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/pr-nitpick-reviewer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/portfolio-analyst.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/plan.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/pdf-summary.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/org-health-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/notion-issue-summary.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/metrics-collector.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/mergefest.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/mcp-inspector.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/lockfile-stats.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/layout-spec-maintainer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/jsweep.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/issue-triage-agent.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/issue-monster.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/issue-arborist.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/instructions-janitor.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/hourly-ci-cleaner.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/grumpy-reviewer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/gpclean.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/go-pattern-detector.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/go-logger.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/go-fan.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/glossary-maintainer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/github-remote-mcp-auth-test.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/github-mcp-tools-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/github-mcp-structural-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/functional-pragmatist.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/firewall.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/firewall-escape.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/example-workflow-analyzer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/example-permissions-warning.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/duplicate-code-detector.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/draft-pr-cleanup.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/docs-noob-tester.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/discussion-task-miner.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/dictation-prompt.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/developer-docs-consolidator.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/dev.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/dev-hawk.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/design-decision-gate.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/dependabot-go-checker.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/dependabot-burner.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/delight.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/deep-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/dead-code-remover.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-workflow-updater.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-team-status.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-team-evolution-insights.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-syntax-error-quality.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-semgrep-scan.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-security-red-team.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-secrets-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-safe-outputs-conformance.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-safe-output-optimizer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-safe-output-integrator.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-repo-chronicle.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-rendering-scripts-verifier.md Updates workflow verification guidance to reference crush engine.
.github/workflows/daily-regulatory.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-performance-summary.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-observability-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-news.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-mcp-concurrency-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-issues-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-integrity-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-function-namer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-firewall-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-file-diet.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-fact.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-doc-updater.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-doc-healer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-compiler-quality.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-community-attribution.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-code-metrics.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-cli-tools-tester.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-cli-performance.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-choice-test.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/daily-architecture-diagram.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/craft.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/copilot-token-optimizer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/copilot-token-audit.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/copilot-session-insights.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/copilot-pr-prompt-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/copilot-pr-nlp-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/copilot-pr-merged-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/copilot-agent-analysis.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/contribution-check.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/constraint-solving-potd.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/commit-changes-analyzer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/code-simplifier.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/code-scanning-fixer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/cloclo.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/cli-version-checker.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/cli-consistency-checker.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/ci-doctor.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/ci-coach.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/changeset.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/breaking-change-checker.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/brave.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/bot-detection.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/blog-auditor.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/audit-workflows.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/artifacts-summary.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/architecture-guardian.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/archie.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/approach-validator.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/api-consumption-report.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/ai-moderator.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/agent-persona-explorer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/agent-performance-analyzer.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.
.github/workflows/ace-editor.lock.yml Updates agent config sparse-checkout/snapshot lists to include Crush artifacts.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 226/226 changed files
  • Comments generated: 3

Comment on lines +410 to +412
crush)
echo "Using Crush converter..."
bash ${RUNNER_TEMP}/gh-aw/actions/convert_gateway_config_crush.sh
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

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

The Crush converter invocation is unquoted (bash ${RUNNER_TEMP}/...), while the other converter paths in this case statement are quoted. Quote the path (and consider quoting the whole argument) to avoid word-splitting/path issues if RUNNER_TEMP ever contains spaces or glob characters.

Copilot uses AI. Check for mistakes.
Comment on lines 84 to 86

expected := []string{"claude", "codex", "copilot", "gemini", "opencode"}
expected := []string{"claude", "codex", "copilot", "gemini", "crush"}
catalogIDs := catalog.IDs()
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

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

The expected built-in engine ID lists are ordered differently across tests in this file (sorted in TestEngineCatalog_IDs, but not here). Keeping a consistent ordering (e.g., sorted) reduces churn and makes it easier to visually compare expected vs actual sets.

Copilot uses AI. Check for mistakes.
```

**Options:** `--engine` (copilot, claude, codex, gemini, opencode), `--non-interactive`, `--repo`
**Options:** `--engine` (copilot, claude, codex, gemini, crush), `--non-interactive`, `--repo`
Copy link

Copilot AI Apr 17, 2026

Choose a reason for hiding this comment

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

PR description says opencode is removed from the operational surface, but there are still user-facing docs listing opencode as a supported/valid engine (e.g. .github/aw/github-agentic-workflows.md still mentions opencode). Either update those remaining docs in this PR, or clarify in the PR description that some historical/aux docs will continue to reference OpenCode.

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown
Contributor


Warning

The push_to_pull_request_branch operation failed: Branch copilot/swap-opencode-to-crush no longer exists on origin (it may have been deleted), can't push to it.. The code changes were not applied.

🏗️ Design Decision Gate — ADR Generated

This PR makes significant changes to core business logic (242 new lines in pkg/) and did not have a linked Architecture Decision Record (ADR).

AI has analyzed the PR diff and generated a draft ADR:

📄 Draft ADR: docs/adr/26819-replace-opencode-engine-with-crush.md

The draft has been committed to this branch. It also marks ADR-25830 (OpenCode engine integration) as Superseded by this decision.

What to do next

  1. Review the draft ADR — verify the Context, Decision, Alternatives, and Consequences sections reflect the team's actual reasoning
  2. Complete any missing sections — in particular, confirm whether [TODO: verify] items exist or whether the alternatives list is exhaustive
  3. Change status from Draft to Accepted once the team is satisfied
  4. Reference the ADR in this PR body by adding a line such as:

    ADR: ADR-26819: Replace Archived OpenCode Engine with Crush

Decision Summary

The draft ADR captures the following key points extracted from the diff:

  • Trigger: OpenCode was archived upstream; keeping it as a first-class engine creates a maintenance liability with no upstream security patches
  • Decision: Replace opencode engine (from opencode-ai npm, opencode run, opencode.jsonc) with crush engine (from @charmland/crush npm, crush run, .crush.json)
  • Routing change: Default credential shifts from direct ANTHROPIC_API_KEY → Copilot proxy via COPILOT_GITHUB_TOKEN / OPENAI_API_KEY
  • Continuity: Same LLM gateway port (10004), same BaseEngine pattern, same provider/model firewall domain resolution logic
📋 ADR Format Reference

An ADR must contain these four sections to be considered complete:

  • Context — What is the problem? What forces are at play?
  • Decision — What did you decide? Why?
  • Alternatives Considered — What else could have been done?
  • Consequences — What are the trade-offs (positive and negative)?

All ADRs are stored in docs/adr/ as Markdown files numbered by PR number.

References: §24549148853

🏗️ ADR gate enforced by Design Decision Gate 🏗️ · ● 242.9K ·

@github-actions
Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

Test Quality Score: 94/100

Excellent test quality

Metric Value
New/modified tests analyzed 10
✅ Design tests (behavioral contracts) 10 (100%)
⚠️ Implementation tests (low value) 0 (0%)
Tests with error/edge cases 8 (80%)
Duplicate test clusters 0
Test inflation detected No
🚨 Coding-guideline violations None

Test Classification Details

View full test classification table (10 tests)
Test File Classification Issues Detected
TestCrushEngine pkg/workflow/crush_engine_test.go ✅ Design Comprehensive sub-tests: identity, capabilities, secrets (basic + copilot-requests + MCP + env override), output files, manifest files, secret validation step
TestCrushEngineInstallation pkg/workflow/crush_engine_test.go ✅ Design Edge case: custom command skips installation; firewall path covered
TestCrushEngineExecution pkg/workflow/crush_engine_test.go ✅ Design Covers copilot-requests, model/no-model, MCP, custom command, env overrides, config step ordering
TestCrushEngineFirewallIntegration pkg/workflow/crush_engine_test.go ✅ Design Both enabled/disabled paths; negative assertions on AWF presence
TestExtractProviderFromModel pkg/workflow/crush_engine_test.go ✅ Design Edge cases: empty string, no-slash, case-insensitive prefix
TestCompleteEngineNames pkg/cli/completions_test.go ✅ Design Updated wantLen for "c" prefix (3→4) and comment for "empty prefix" case
TestAgenticEngines pkg/constants/constants_test.go ✅ Design Swapped "opencode" → "crush" in expected engines list
TestEngineCatalog_IDs pkg/workflow/engine_catalog_test.go ✅ Design Updated expected sorted IDs list and verifies sort order
TestEngineCatalog_BuiltInsPresent pkg/workflow/engine_catalog_test.go ✅ Design Updated presence-check list
TestNewEngineCatalog_BuiltIns pkg/workflow/engine_definition_test.go ✅ Design Updated table row from {"opencode","OpenCode","opencode"}{"crush","Crush","crush"}

Flagged Tests — Requires Review

No tests flagged. All tests are behavioral contracts with comprehensive coverage.


Notable Strengths

  • crush_engine_test.go was renamed from opencode_engine_test.go (git rename detection: 35 added/35 deleted lines within the 406-line file). The underlying test quality is high: every assertion carries a descriptive message, require.* is used for critical setup, and the test structure covers positive paths, negative paths (.NotContains), feature-flag branches, and firewall-enabled/disabled branches.
  • No mock libraries used anywhere — all tests exercise real engine implementations.
  • Build tag //go:build !integration is present on the new file.
  • Test inflation: crush_engine_test.go (35 net changed lines) vs corresponding production changes (~332 lines across crush_engine.go + crush_mcp.go). Ratio well below 2:1.

Language Support

Tests analyzed:

  • 🐹 Go (*_test.go): 10 tests — all unit (//go:build !integration)
  • 🟨 JavaScript (*.test.cjs, *.test.js): 0 tests

Verdict

Check passed. 0% of new tests are implementation tests (threshold: 30%). Score: 94/100.


📖 Understanding Test Classifications

Design Tests (High Value) verify what the system does:

  • Assert on observable outputs, return values, or state changes
  • Cover error paths and boundary conditions
  • Would catch a behavioral regression if deleted
  • Remain valid even after internal refactoring

Implementation Tests (Low Value) verify how the system does it:

  • Assert on internal function calls (mocking internals)
  • Only test the happy path with typical inputs
  • Break during legitimate refactoring even when behavior is correct
  • Give false assurance: they pass even when the system is wrong

Goal: Shift toward tests that describe the system's behavioral contract — the promises it makes to its users and collaborators.

References:

🧪 Test quality analysis by Test Quality Sentinel · ● 931.7K ·

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

✅ Test Quality Sentinel: 94/100. Test quality is excellent — 0% of new/modified tests are implementation tests (threshold: 30%). All 10 analyzed tests verify behavioral contracts with comprehensive edge case coverage, proper build tags, descriptive assertion messages, and no mock libraries.

@github-actions github-actions bot mentioned this pull request Apr 17, 2026
github-actions bot added a commit that referenced this pull request Apr 17, 2026
Update Engine entry to reflect the addition of the Crush engine,
replacing the previously archived OpenCode engine (#26819).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
github-actions bot added a commit that referenced this pull request Apr 17, 2026
Add a manual migration entry to the upgrading guide explaining that
engine: id: opencode has been removed and users must switch to
engine: id: crush. Also update ADR-25830 status from Draft to
Superseded since the OpenCode engine was replaced by Crush in #26819.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
github-actions bot added a commit that referenced this pull request Apr 17, 2026
The FAQ entry "I'm not using a supported AI Engine" listed only three
engines (Copilot, Claude, Codex) but the current supported set is five:
Copilot, Claude, Codex, Gemini, and Crush. The Gemini engine was
previously added and the Crush engine replaced OpenCode in PR #26819
today. This line was not updated in either PR.

The same file already uses the complete five-engine list at line 117.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants