feat(framework+cli): fw-4.42.0 / cli-3.43.0 — Antigravity CLI succeeds Gemini CLI - #411
Merged
Conversation
…s Gemini CLI
Google retired Gemini CLI; its successor is Antigravity CLI (agy). Verified
against agy 1.1.10 and agy-customizations — the spec Google ships inside the
binary — the obvious reading of "discontinue Gemini CLI" is half wrong:
- GEMINI.md is NOT retired. Antigravity reads it as a first-class Rules file
alongside AGENTS.md, and its global config dir is ~/.gemini/ (the binary
carries a resolve_gemini_dir symbol). Deleting it would have removed a rules
source from the very CLI we are adding support for. Kept, retitled to the
Antigravity lineage, identity antigravity-v{version}, with a note explaining
why the filename stays so nobody deletes it as a leftover.
- <project>/.gemini/skills/ IS dead: not a discovery location for agy, whose
workspace roots are .agents/ .agent/ _agents/ _agent/.
- .agent/workflows/ is read by nothing. Right root, wrong shape — agy wants
skills/<name>/SKILL.md, and the binary has no `agent/workflows` string. It
had been advertised in the README as the Antigravity channel regardless.
New channel: dist/.agent/skills/, generated from the Claude source rather than
hand-mirrored. That choice came from the data — .gemini/skills/ had drifted
behind .claude/ in 7 of 15 skills because nothing regenerated or gated it,
while the generated .codex/ channel was byte-perfect. gen_codex_skills becomes
gen_minimal_skills and emits both under the existing CI gate.
Retiring a distributed path was previously impossible to complete: update_files
only copies, so a directory dropped from files: survived in every existing
installation until someone ran `straymark remove`. New declarative `retired:`
manifest key, honored by update-framework and repair. Deletion is
provenance-gated — a file goes only when its hash still matches what
.checksums.json recorded; operator-edited and operator-authored files are kept
and reported distinctly, because telling someone they "modified" a file they
wrote themselves erodes trust in the report.
The manual e2e caught two defects before they shipped: repair's early return
skipped the sweep on a healthy installation, and the first report conflated
"you edited this" with "this was never mine". A unit test caught that only the
retired root was cleaned, leaving emptied skill subdirectories behind.
Gemini MODEL ids are deliberately untouched: the CLI was retired, the models
were not, and the audit skills already require auditor: to name the backend
model rather than the CLI. Historical records — Sentinel telemetry, the
Charter-template rule justified by an observed Gemini-auditor behavior across
2 cycles — are left as written; rewriting the actor would falsify the evidence.
NOT READY TO TAG: the .agent/ vs .agents/ customization root is not
empirically confirmed. Google's doc lists .agent/ as an accepted alias; the
binary's path templates only build .agents/. Three headless probes could not
settle it. Operator verifies interactively; if .agent/ loses it is a git mv
plus two manifest lines. Everything else here is root-independent.
Decision in AIDEC-2026-08-05-002, work in AILOG-2026-08-05-004.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Operator ran the probe interactively: agy listed BOTH straymark-probe-alias (.agent/) and straymark-probe-canonical (.agents/), so the alias documented in agy-customizations is implemented, not aspirational. The shipped channel (dist/.agent/skills/) needs no change and fw-4.42.0 is unblocked. Durable lesson recorded in AIDEC and AILOG: `agy -p` does not exercise workspace customization discovery — three headless probes came back with only the user-level and builtin skills, in a trusted directory with a git root, so they could not distinguish the two roots rather than showing one failing. Use an interactive session for that class of question. FU-003 annotated and closed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Google retired Gemini CLI; its successor is Antigravity CLI (
agy). StrayMark's Gemini-era surfaces are retired with it — and the framework gains the mechanism that makes retiring a distributed path possible at all.The correction that reshaped this
The obvious reading of "discontinue Gemini CLI" is half wrong. Verified against
agy1.1.10 installed locally and againstagy-customizations, the skill Google ships inside the binary as the authoritative spec of its customization system:GEMINI.mdAGENTS.mdand.agents/rules/*.md.~/.gemini/resolve_gemini_dirsymbol;~/.gemini/skills/,settings.jsonandGEMINI.mdare live.<project>/.gemini/skills/.agents/,.agent/,_agents/,_agent/.<project>/.agent/workflows/agywantsskills/<name>/SKILL.md, and the binary contains noagent/workflowsstring.The product was retired; the on-disk contract was kept. So
GEMINI.mdstays (deleting it would remove a rules source from the very CLI we're adding support for), retitled to the Antigravity lineage with identityantigravity-v{version}and a note explaining why the filename persists — without it the next reader deletes it as a leftover.Meanwhile
.agent/workflows/— the channel the README advertised as the Antigravity surface — was read by nothing at all.Changes
New channel
dist/.agent/skills/, generated from the Claude source rather than hand-mirrored. That choice came from the data:.gemini/skills/had drifted behind.claude/in 7 of 15 skills because nothing regenerated or gated it, while the generated.codex/channel was byte-perfect. Agit mvwould have imported the stale files.gen_codex_skills→gen_minimal_skills, emitting both minimal-frontmatter channels under the existing CI gate.New
retired:manifest key. Retiring a distributed path was previously impossible to complete:update_filesonly copies, so a directory dropped fromfiles:survived in every existing installation until someone ranstraymark remove. Deletion is provenance-gated — a file goes only when its hash still matches what.checksums.jsonrecorded. Operator-edited files and files StrayMark never installed are kept and reported distinctly, because telling someone they "modified" a file they wrote themselves erodes trust in the report.Also:
--agent gemini→--agent agy(the guidance no longer derives the source dir from the agent name — Antigravity reads.agent/skills/, not.agy/skills/); auditor-CLI prose across skills, governance, CLI output and website; docs in EN/es/zh-CN, including the zh-CN CLI-REFERENCE that was two releases behind.The line I drew: CLI vs model
The Gemini CLI was retired; the Gemini models were not, and
agyserves them. The audit skills already requireauditor:to name the backend model rather than the CLI. So prose telling the operator which CLI to open moved toagy, while model ids, Sentinel telemetry, test fixtures and the Charter-template rule justified by an observed Gemini-auditor behavior across 2 cycles were left exactly as written. Rewriting the actor in a piece of evidence would falsify the evidence.Verification
cargo test: 953 passed, 0 failed.retired_paths_test.rs+ four unit tests covering the three provenance outcomes, full-subtree cleanup, the no-op case, and the pre-4.42.0 manifest parse (#[serde(default)]is load-bearing — every older.straymark/dist-manifest.ymllacks the key).The e2e caught two defects before they shipped:
repairreturned early on a healthy installation, so the sweep would never have run where it mattered; and the first report conflated "you edited this" with "this was never mine". A unit test caught that only the retired root was cleaned, leaving emptied skill subdirectories behind.Root confirmed empirically.
.agent/vs.agents/was the one assumption the code couldn't settle — Google's doc lists.agent/as an alias, the binary's path templates only build.agents/. Three headlessagy -pprobes failed to distinguish them (print mode doesn't exercise workspace customization discovery at all, even in a trusted dir with a git root). The operator ran it interactively:agylisted both probe skills..agent/is a real alias; shipped channel unchanged.Release
fw-4.41.0→fw-4.42.0,cli-3.42.0→cli-3.43.0. Minor, not major: two directories leave the adopter's tree but neither was consumed by a live runtime, the content reappears in.agent/skills/, and migration is automatic viaretired:.Decision in
AIDEC-2026-08-05-002, work inAILOG-2026-08-05-004.🤖 Generated with Claude Code