Skip to content

Deprecate Gemini engine in favor of experimental Agy - #66941

Merged
pelikhan merged 6 commits into
mainfrom
pelikhan-deprecate-gemini-engine
Oct 9, 2026
Merged

pelikhan merged 6 commits into
mainfrom
pelikhan-deprecate-gemini-engine

Conversation

@pelikhan

@pelikhan pelikhan commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

Soft-deprecate the gemini agentic engine in favor of experimental agy, while preserving existing Gemini workflows and authentication.

  • Mark Gemini deprecated in engine metadata, interactive choices, and documentation.
  • Emit one informational notice after effective engine resolution, covering string/object selection, imports, and CLI overrides. The notice does not add warnings or change strict-mode success.
  • Preserve Gemini binaries, version pins, authentication, and historical log identity. No automatic migration or removal date is introduced.
  • Update migration guidance, the ADR, and the release changeset. Agy remains experimental; Google WIF workflows and workflows requiring unsupported capabilities should retain Gemini.

Validation

  • Build and formatting completed successfully.
  • Engine setup, catalog, Gemini, and Agy regression tests passed, including deprecation notice coverage for imports, overrides, version pins, and Google WIF.
  • Patch-scoped Go lint reports no new issues, and compiled workflow drift checks passed.
  • make agent-report-progress completed its impacted tests and other checks but failed on a pre-existing wastedassign finding in mergeImportedEngineConfig in the touched compiler file. That unrelated code is unchanged. The gate required Homebrew Bash because macOS system Bash lacks mapfile.

pelikhan and others added 2 commits October 8, 2026 09:31
@pelikhan
pelikhan marked this pull request as ready for review October 8, 2026 22:25
Copilot AI balanced review requested due to automatic review settings October 8, 2026 22:25
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

✅ PR Code Quality Reviewer completed the code quality review.

🔎 Code quality review by PR Code Quality Reviewer

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

✅ Test Quality Sentinel completed test quality analysis.

Test Quality Sentinel skipped because pre-fetch PR data was unavailable: unable to fetch test file diff

🧪 Test quality analysis by Test Quality Sentinel

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

✅ 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).

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

✅ Ponytail Reviewer completed successfully!

Lean already. Ship.

Generated by Ponytail Reviewer for #66941

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer

@github-actions github-actions Bot 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.

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

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.

🟡 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)",

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.

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/"))

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.

Switched the notice to FormatInfoMessageStderr so its styling follows stderr TTY/color detection. Fixed in e0912e8.

@github-actions github-actions Bot mentioned this pull request Oct 8, 2026

@github-actions github-actions Bot 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.

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/), and FormatInfoMessage/stderr pattern are consistent with existing conventions in the codebase (e.g. copilot_engine_installation.go, llm_provider.go).
  • > [!WARNING] admonition in docs/engines/gemini.md matches 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 -l reports 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

@github-actions github-actions Bot 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.

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.go always writes to stderr, without the c.batchMode/c.quiet dedup 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 uses FormatInfoMessageStderr. 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-workflow exists in agy.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/"))

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.

[/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.

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.

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/"))

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.

[/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.

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.

Switched to the stderr-specific info formatter, preserving stderr TTY/color behavior independently of stdout. Fixed in e0912e8.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot address the following outstanding work in one pass:

  1. Update this branch with the latest main using make merge-main, resolving any conflicts and preserving the intended changes.
  2. Review (pkg/constants/engine_constants.go:86): This label change leaves TestGetEngineOption_AllBuiltInEngines failing: pkg/constants/constants_test.go:408 still expects "Gemini". Please update that expectation to "Gemini (Deprecated)" so the existing constants suite reflects the new public metadata. - Deprecate Gemini engine in favor of experimental Agy #66941 (comment)
  3. Review (pkg/workflow/compiler_orchestrator_engine.go:86): This writes to os.Stderr but formats the prefix using stdout TTY/color detection. When stdout and stderr are redirected differently, the notice can gain unwanted ANSI escapes or lose terminal styling. Use the stderr-specific formatter, as the Agy notice already does below at line 663. - Deprecate Gemini engine in favor of experimental Agy #66941 (comment)
  4. Review (pkg/workflow/compiler_orchestrator_engine.go:86): [/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. - Deprecate Gemini engine in favor of experimental Agy #66941 (comment)
  5. Review (pkg/workflow/compiler_orchestrator_engine.go:86): [/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. - Deprecate Gemini engine in favor of experimental Agy #66941 (comment)

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
Sous-chef work: 21195191cd7b74d79dbd500e177139a329a4f1f934b2f5a0f44d439582b3e276 3b798309267015ae953ae040765e1b7f478c724f8c107197612c749f14329a46 7f78c160d308af778394f679fdb0fcd6cc3dc0758b037fd48c6fe49fa297c7a4 f87b279c7fe1fa15d612b562fbc7652b7731c04ec91dce3f193b36352d0d4d09
Sous-chef state: b8174e492d8fb769230f2cc0d60b1396240c59a9b159162689954454adad56ba

Generated by 👨‍🍳 PR Sous Chef · pi · haiku45 · 4.54 AIC · ⌖ 5.59 AIC · ⊞ 1K · ◷
Comment /souschef to run again

Copilot AI and others added 2 commits October 8, 2026 23:02
…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 AI requested a review from gh-aw-bot October 8, 2026 23:20
@pelikhan

pelikhan commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator Author

@copilot merge main and recompile

…mini-engine

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

Copilot AI commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

@copilot merge main and recompile

Merged the latest main in 5cec4ba and recompiled all 333 workflows; generated lock files are synchronized. Build, formatting, and the final local validation gate passed. No new CI was triggered.

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot address the following outstanding work in one pass:

  1. Update this branch with the latest main using make merge-main, resolving any conflicts and preserving the intended changes.
  2. Fix failing check lint-go-govulncheck (FAILURE): https://github.com/github/gh-aw/actions/runs/37860760369/job/113599879220.

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
Sous-chef work: 4ce4dd407e604d374ecd66edfd2afc18c54e2d0b3733dbac37ac8e9c8834fdba
Sous-chef state: 09ea070bc02eaee8ddf2942c6eab4b9301a5facc1b436d682fb3e5b605c18d54

Generated by 👨‍🍳 PR Sous Chef · pi · haiku45 · 4.73 AIC · ⌖ 7.53 AIC · ⊞ 1K · ◷
Comment /souschef to run again

Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>

Copilot AI commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

@copilot address the following outstanding work in one pass:

  1. Update this branch with the latest main using make merge-main, resolving any conflicts and preserving the intended changes....

Merged/refreshed main (already current) and upgraded the module toolchain to Go 1.26.9 plus golang.org/x/net to v0.60.0 in the follow-up commit. Build and targeted tests passed. The final local gate passed; govulncheck itself could not reach vuln.go.dev from this sandbox, so CI must confirm the scan after a maintainer re-triggers it. No CI was triggered.

@pelikhan
pelikhan merged commit eb462d7 into main Oct 9, 2026
39 of 40 checks passed
@pelikhan
pelikhan deleted the pelikhan-deprecate-gemini-engine branch October 9, 2026 00:50
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v0.91.7

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.

4 participants