Repository Quality Improvement: Agentic Engine Feature Parity (2026-03-18) #21596
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Repository Quality Improvement Agent. A newer discussion is available at Discussion #21807. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
🎯 Repository Quality Improvement Report — Agentic Engine Feature Parity
Analysis Date: 2026-03-18
Focus Area: Agentic Engine Feature Parity
Strategy Type: Custom (repository-specific)
Custom Area: Yes — gh-aw's core value proposition is multi-engine support (copilot, claude, codex, gemini). Inconsistencies in how engines are handled in the compiler can silently degrade behavior for newer engines like Gemini, making this a high-value area to audit.
Executive Summary
gh-aw supports four built-in AI engines: copilot, claude, codex, and gemini. While copilot, claude, and codex have been in the project longer, gemini was added more recently. Analysis of the compiler and engine-handling code reveals several parity gaps where gemini falls through to a
defaultbranch that uses incorrect constants or returns empty values, while the other three engines have explicit, correct handling.Two bugs were identified that affect Gemini workflows in production:
compiler_yaml.gousesGH_AW_MODEL_AGENT_CUSTOMinstead ofGH_AW_MODEL_AGENT_GEMINIfor the model info env var when a model is not explicitly configured.compiler_yaml_helpers.goreturns an empty string for the installation version instead ofDefaultGeminiVersion.Additionally, plugin installation has TODOs for Claude and Codex syntax validation, and Gemini has no plugin install handling at all.
Full Analysis Report
Focus Area: Agentic Engine Feature Parity
Current State Assessment
Metrics Collected:
.gofilescompiler_yaml.gomodel switch coveragecompiler_yaml_helpers.goversion switch coveragedomains.goengine switch coverageFindings
Strengths
domains.gocorrectly handles all four engines in its switch statement*_engine.gofile with engine-specific logicEnvVarModelAgentGeminiandDefaultGeminiVersionproperly definedGEMINI_MODELenv var for explicit model configurationAreas for Improvement
[HIGH]
compiler_yaml.go— Missing Gemini model env var caseIn
pkg/workflow/compiler_yaml.golines 558–567, themodelEnvVarswitch does not have a"gemini"case. Gemini falls todefault: constants.EnvVarModelAgentCustom, so the compiled workflow sets:…instead of the correct:
This means users who configure
vars.GH_AW_MODEL_AGENT_GEMINIin their repository to override the default Gemini model will have their setting silently ignored.[HIGH]
compiler_yaml_helpers.go— Missing Gemini version ingetInstallationVersionIn
pkg/workflow/compiler_yaml_helpers.go,getInstallationVersion()does not have a"gemini"case. Gemini falls todefault: return "", soGH_AW_INFO_AGENT_VERSIONwill be an empty string in compiled Gemini workflows instead of"latest"(the value ofconstants.DefaultGeminiVersion).[MEDIUM]
plugin_installation.go— Unvalidated plugin CLI syntax for Claude and CodexTwo
TODOcomments ingeneratePluginInstallStep()note that theclaude plugin installandcodex plugin installcommand syntax has not been validated. If those CLIs use different subcommand structures, the generated steps would fail silently.[MEDIUM]
plugin_installation.go— No explicit Gemini caseGemini falls to the generic
defaulthandler which usesfmt.Sprintf("%s plugin install %s", engineID, plugin). This may be intentional, but should be documented or have an explicit case.[LOW]
compiler_yaml.go— Gemini case missing in"custom"engine fallthrough commentThe
"custom"engine has a dedicated case that clearly signals intent, but Gemini (a first-class engine) hits thedefaultbranch. Adding an explicit case for Gemini improves readability and avoids future regression.🤖 Tasks for Copilot Agent
NOTE TO PLANNER AGENT: The following tasks are designed for GitHub Copilot coding agent execution. Each is self-contained and independently actionable.
Improvement Tasks
Task 1: Fix Gemini model env var in
compiler_yaml.goPriority: High
Estimated Effort: Small
Focus Area: Agentic Engine Feature Parity
Description:
In
pkg/workflow/compiler_yaml.go, themodelEnvVarswitch (around line 558) does not include a"gemini"case. Gemini falls todefaultand incorrectly usesconstants.EnvVarModelAgentCustom. This causes the compiled YAML to referencevars.GH_AW_MODEL_AGENT_CUSTOMinstead ofvars.GH_AW_MODEL_AGENT_GEMINIfor Gemini workflows.Acceptance Criteria:
case "gemini": modelEnvVar = constants.EnvVarModelAgentGeminito the switch incompiler_yaml.gomake fmt && make test-unitpassesCode Region:
pkg/workflow/compiler_yaml.go(lines ~558–567)Task 2: Fix Gemini installation version in
compiler_yaml_helpers.goPriority: High
Estimated Effort: Small
Focus Area: Agentic Engine Feature Parity
Description:
In
pkg/workflow/compiler_yaml_helpers.go,getInstallationVersion()does not include a"gemini"case. Gemini falls todefault: return "", causingGH_AW_INFO_AGENT_VERSIONto be empty in compiled Gemini workflows instead of"latest"(constants.DefaultGeminiVersion).Acceptance Criteria:
case "gemini": return string(constants.DefaultGeminiVersion)togetInstallationVersion()incompiler_yaml_helpers.goGH_AW_INFO_AGENT_VERSIONis non-empty in Gemini compiled outputmake fmt && make test-unitpassesCode Region:
pkg/workflow/compiler_yaml_helpers.go—getInstallationVersion()functionTask 3: Validate and document Claude & Codex plugin CLI syntax
Priority: Medium
Estimated Effort: Medium
Focus Area: Agentic Engine Feature Parity
Description:
pkg/workflow/plugin_installation.gohas twoTODOcomments indicating that theclaude plugin installandcodex plugin installcommand syntax has not been validated. The Claude CLI and Codex CLI may use different subcommand names or flags. The generated steps will fail silently if the syntax is wrong.Acceptance Criteria:
case "claude"andcase "codex"branches with the validated command syntax (or a verified placeholder if plugins aren't supported yet)// NOTE:explaining any limitationsmake fmt && make test-unitpassesCode Region:
pkg/workflow/plugin_installation.go—generatePluginInstallStep()functionTask 4: Add engine parity integration test
Priority: Medium
Estimated Effort: Medium
Focus Area: Agentic Engine Feature Parity
Description:
There is no systematic test that verifies all four engines produce consistent metadata fields in compiled output. A table-driven parity test would catch future regressions when new engines are added or engine-specific switch statements are extended for some engines but not others.
Acceptance Criteria:
pkg/workflow/compiler_engine_parity_test.gowith a table-driven test covering all four enginesGH_AW_INFO_MODELreferences the correct engine-specific vars variable (notGH_AW_MODEL_AGENT_CUSTOMfor non-custom engines)GH_AW_INFO_AGENT_VERSIONis non-empty for all four built-in engines//go:build !integrationat top of filemake fmt && make lint && go test -v -run "TestEngineParity" ./pkg/workflow/passesCode Region:
pkg/workflow/(new file:compiler_engine_parity_test.go)Task 5: Document engine feature matrix in AGENTS.md or docs
Priority: Low
Estimated Effort: Small
Focus Area: Agentic Engine Feature Parity
Description:
There is no single reference showing which features are supported per engine and which constants/env vars apply. An engine feature matrix would help contributors avoid introducing parity gaps when adding new engine-specific logic.
Acceptance Criteria:
AGENTS.mdorDEVGUIDE.md(whichever is more appropriate for contributors)Code Region:
AGENTS.mdorDEVGUIDE.md📊 Historical Context
Previous Focus Areas
🎯 Recommendations
Immediate Actions (This Week)
compiler_yaml.go) — Priority: High — 15-minute fixcompiler_yaml_helpers.go) — Priority: High — 15-minute fixShort-term Actions (This Month)
Long-term Actions (This Quarter)
📈 Success Metrics
Track these metrics to measure improvement in Agentic Engine Feature Parity:
compiler_yaml.go,compiler_yaml_helpers.go,plugin_installation.gocover all 4 engines → Target: 100%Next Steps
Generated by Repository Quality Improvement Agent
Next analysis: 2026-03-19 — Focus area will be selected based on diversity algorithm
References: §23247183495
Beta Was this translation helpful? Give feedback.
All reactions