Repository navigation
Deprecate Gemini engine in favor of experimental Agy - #66941
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
✅ PR Code Quality Reviewer completed the code quality review.
|
|
✅ Test Quality Sentinel completed test quality analysis. Test Quality Sentinel skipped because pre-fetch PR data was unavailable: unable to fetch test file diff
|
|
✅ Design Decision Gate 🏗️ completed the design decision gate check. See the comment below for the result and any generated ADR draft. No ADR enforcement needed for PR #66941: the PR does not carry the "implementation" label (has_implementation_label=false) and adds only 91 lines in default business logic directories, below the 100-line threshold (requires_adr_by_default_volume=false). Evidence: /tmp/gh-aw/agent/adr-prefetch-summary.json (11 files, no custom .design-gate.yml).
|
|
✅ Ponytail Reviewer completed successfully! Lean already. Ship.
|
|
🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅
|
There was a problem hiding this comment.
Verdict
No merge-blocking issues found in the deprecation wiring.
Highlights
Reviewed the compiler notice path, engine metadata updates, and the added regression coverage for imports, overrides, version pins, and Google WIF. The change is narrow, the deprecation remains informational rather than warning-shaped, and I did not find a changed-line correctness issue that should block merge.
🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt54 · 24.6 AIC · ⌖ 5.52 AIC · ⊞ 19.8K
Comment /review to run again
There was a problem hiding this comment.
🟡 Changes recommended
The updated Gemini label breaks an existing constants test, and the new stderr notice uses the wrong output formatter.
2 open findings
What changed in this PR
Soft-deprecates Gemini in favor of experimental Agy while preserving Gemini compatibility.
Changes:
- Marks Gemini deprecated across engine metadata and documentation.
- Emits an informational notice after engine resolution.
- Adds migration guidance and regression coverage.
| File | Description |
|---|---|
pkg/workflow/gemini_engine.go |
Updates Gemini metadata. |
pkg/workflow/engine_catalog_test.go |
Tests deprecated catalog metadata. |
pkg/workflow/data/engines/gemini.md |
Updates embedded engine description. |
pkg/workflow/compiler_orchestrator_engine.go |
Emits the deprecation notice. |
pkg/workflow/compiler_orchestrator_engine_test.go |
Tests resolution and notice behavior. |
pkg/constants/engine_constants.go |
Marks the interactive option deprecated. |
docs/src/content/docs/reference/engines.md |
Documents status and migration constraints. |
docs/src/content/docs/engines/gemini.md |
Adds a deprecation warning. |
docs/src/content/docs/engines/agy.md |
Clarifies Agy’s experimental status. |
docs/adr/34693-add-antigravity-engine-deprecate-gemini.md |
Records the revised decision. |
.changeset/deprecate-gemini-engine.md |
Adds release notes. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
| Value: string(GeminiEngine), | ||
| Label: "Gemini", | ||
| Description: "Google Gemini CLI coding agent", | ||
| Label: "Gemini (Deprecated)", |
There was a problem hiding this comment.
Updated the expected option label to Gemini (Deprecated) and covered it with the existing constants test. Fixed in e0912e8.
| return nil, err | ||
| } | ||
| if agenticEngine.GetID() == string(constants.GeminiEngine) { | ||
| fmt.Fprintln(os.Stderr, console.FormatInfoMessage("The gemini engine is deprecated in favor of the experimental agy engine. Use engine: agy where supported; retain engine: gemini for Google WIF or features Agy does not support. See https://github.github.com/gh-aw/engines/agy/")) |
There was a problem hiding this comment.
Switched the notice to FormatInfoMessageStderr so its styling follows stderr TTY/color detection. Fixed in e0912e8.
There was a problem hiding this comment.
Impeccable review — documentation/metadata change
Applied clarify mode (docs/copy-focused deprecation notice) and a correctness pass on the Go code.
Findings: none blocking.
- The deprecation notice message, URL (
https://github.github.com/gh-aw/engines/agy/), andFormatInfoMessage/stderr pattern are consistent with existing conventions in the codebase (e.g.copilot_engine_installation.go,llm_provider.go). > [!WARNING]admonition indocs/engines/gemini.mdmatches the Starlight convention used elsewhere in this repo.- New tests (
TestSetupEngineAndImports_GeminiDeprecation,TestEngineCatalog_GeminiDeprecated) cover string/object engine forms, imports, CLI override (both directions), Google WIF, and confirm no extra warnings/strict-mode impact — all pass locally. go build ./...succeeds;gofmt -lreports no issues on changed files.- Changeset and ADR updates accurately reflect the scoped change (soft-deprecation only, no Agy stable-promotion claim).
Nothing further to request. Approving.
🧵 Reviewed using Impeccable skills by Impeccable Skills Reviewer · copilot · sonnet50 · 45.3 AIC · ⌖ 14 AIC · ⊞ 8.1K
There was a problem hiding this comment.
Skills-Based Review 🧠
Applied /codebase-design — small, well-tested change with two minor consistency nits; no blocking issues.
📋 Key Themes & Highlights
Key Themes
- Batch-compile noise: the new deprecation notice in
compiler_orchestrator_engine.goalways writes to stderr, without thec.batchMode/c.quietdedup pattern used by neighboring experimental/feature warnings in the same package. Harmless for a single workflow, but could spam output when compiling many Gemini workflows at once. - Styling helper mismatch: the notice uses
console.FormatInfoMessage(stdout-TTY-aware) for a message written to stderr, while the adjacent Agy experimental notice correctly usesFormatInfoMessageStderr. Minor inconsistency, not functionally broken.
Positive Highlights
- ✅ Soft deprecation preserves all existing Gemini behavior (binaries, auth, version pins, log identity) — no breaking change.
- ✅ Strong regression test coverage (
TestSetupEngineAndImports_GeminiDeprecation) across string/object engine forms, imports, CLI overrides, and Google WIF, explicitly asserting zero added warnings/strict-mode impact. - ✅ Catalog test (
TestEngineCatalog_GeminiDeprecated) keeps the engine selectable while asserting the deprecated description is surfaced. - ✅ Docs (ADR,
gemini.md,agy.md,reference/engines.md) updated consistently with working anchor links (verified#evaluating-a-gemini-api-key-workflowexists inagy.md).
Skill selection note: pr-triage ran successfully and returned skill recommendations for this PR.
🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet50 · 84.9 AIC · ⌖ 14.6 AIC · ⊞ 10.1K
Comment /matt to run again
| return nil, err | ||
| } | ||
| if agenticEngine.GetID() == string(constants.GeminiEngine) { | ||
| fmt.Fprintln(os.Stderr, console.FormatInfoMessage("The gemini engine is deprecated in favor of the experimental agy engine. Use engine: agy where supported; retain engine: gemini for Google WIF or features Agy does not support. See https://github.github.com/gh-aw/engines/agy/")) |
There was a problem hiding this comment.
[/codebase-design] This notice is printed unconditionally on every compile that resolves gemini, with no c.batchMode/c.quiet gating like the nearby experimental-engine notice at line 664 or the plugins/drive-memory warnings in compiler_validators.go. In a batch compile over many Gemini workflows this will repeat the same multi-sentence message per file.
💡 Suggested fix
Follow the existing pattern used for other informational/warning messages in this file, e.g.:
if agenticEngine.GetID() == string(constants.GeminiEngine) {
if c.batchMode {
c.featureUsage["gemini deprecation"]++
} else {
fmt.Fprintln(os.Stderr, console.FormatInfoMessageStderr("The gemini engine is deprecated..."))
}
}This keeps per-file notices during single-file compiles but avoids noisy repeated output during gh aw compile over an entire repo.
@copilot please address this.
There was a problem hiding this comment.
Batch compilation now aggregates Gemini deprecation notices into the existing feature-usage summary, while quiet single-file compilation suppresses the notice. Added regression coverage. Fixed in e0912e8.
| return nil, err | ||
| } | ||
| if agenticEngine.GetID() == string(constants.GeminiEngine) { | ||
| fmt.Fprintln(os.Stderr, console.FormatInfoMessage("The gemini engine is deprecated in favor of the experimental agy engine. Use engine: agy where supported; retain engine: gemini for Google WIF or features Agy does not support. See https://github.github.com/gh-aw/engines/agy/")) |
There was a problem hiding this comment.
[/codebase-design] This uses console.FormatInfoMessage (the stdout-styling helper, degraded via isTTY/stdoutEnviron) to format a string written to os.Stderr, whereas the neighboring experimental-engine notice at line 664 correctly uses console.FormatInfoMessageStderr (checks isStderrTTY/stderrEnviron). If stdout is redirected but stderr is a TTY (or vice versa), this message could render without expected ANSI styling or apply unwanted styling in a piped stderr context.
💡 Suggested fix
fmt.Fprintln(os.Stderr, console.FormatInfoMessageStderr("The gemini engine is deprecated in favor of the experimental agy engine. ..."))Minor, but keeps the two adjacent deprecation/experimental notices in this file consistent.
@copilot please address this.
There was a problem hiding this comment.
Switched to the stderr-specific info formatter, preserving stderr TTY/color behavior independently of stdout. Fixed in e0912e8.
|
@copilot address the following outstanding work in one pass:
Push the necessary fixes, reply to each listed review thread and resolve it when addressed. Ignore feedback already answered or resolved. Use the pr-finisher skill and stop when only human review or CI remains; do not trigger CI. Sous-chef head: 95a4aaf
|
…mini-engine Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
|
@copilot merge main and recompile |
…mini-engine Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
@copilot address the following outstanding work in one pass:
Push the necessary fixes, reply to each listed review thread and resolve it when addressed. Ignore feedback already answered or resolved. Use the pr-finisher skill and stop when only human review or CI remains; do not trigger CI. Sous-chef head: 5cec4ba
|
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
Merged/refreshed |
|
🎉 This pull request is included in a new release. Release: |


Summary
Soft-deprecate the
geminiagentic engine in favor of experimentalagy, while preserving existing Gemini workflows and authentication.Validation
make agent-report-progresscompleted its impacted tests and other checks but failed on a pre-existingwastedassignfinding inmergeImportedEngineConfigin the touched compiler file. That unrelated code is unchanged. The gate required Homebrew Bash because macOS system Bash lacksmapfile.