feat: integrate the optional Antigravity role into the image - #75
feat: integrate the optional Antigravity role into the image#75eXPerience83 wants to merge 30 commits into
Conversation
|
Warning Review limit reached
Next review available in: 34 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
Summary by CodeRabbit
WalkthroughAntigravity is added as an experimental remote development role. The PR defines canonical paths, gates role resolution, provisions image assets, initializes and hardens persistent state, adds launch and menu support, and extends diagnostics and tests. ChangesAntigravity integration
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related issues
Possibly related PRs
Sequence Diagram(s)sequenceDiagram
participant User
participant RemoteDevMenu
participant RemoteDevRuntime
participant RunAntigravity
participant AntigravityBinary
User->>RemoteDevMenu: select start or lifecycle action
RemoteDevMenu->>RemoteDevRuntime: resolve antigravity role
RemoteDevRuntime->>RunAntigravity: validate and export role
RunAntigravity->>AntigravityBinary: launch validated executable
AntigravityBinary-->>User: return command status
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/remote-dev-doctor.sh`:
- Around line 138-145: Update the Antigravity status handling in the role branch
to capture remote-dev-antigravity’s output and exit code through an || guard, so
exit code 3 does not terminate the script under set -euo pipefail. Preserve the
existing status assignment behavior: codes 0 and 3 leave status unchanged, while
other nonzero codes set status=1.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 41fb812b-6577-4f89-b158-7ed5dafe030d
📒 Files selected for processing (11)
images/codex/Dockerfilescripts/attach-remote-dev-tmux.shscripts/lib/antigravity-paths.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-doctor.shscripts/remote-dev-healthcheck.shscripts/remote-dev-menu.shscripts/runtime-smoke-test.shscripts/secure-persistent-state.shscripts/start-remote-dev-web.shscripts/test-role-neutral-runtime.sh
📜 Review details
🧰 Additional context used
📓 Path-based instructions (7)
**/*.{yml,yaml,Dockerfile,sh,bash,js,ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{yml,yaml,Dockerfile,sh,bash,js,ts,tsx}: Never use privileged containers, Docker or Podman sockets, SYS_ADMIN, host-root mounts, or broad persistence mounts such as /root, /home, /opt, /usr/local, or a parent data root.
Preserve mandatory ttyd authentication for agent terminals, origin checking for all web endpoints, tmux reconnect behavior, image identity checks, and existing Codex login, start, and resume behavior.
Files:
scripts/remote-dev-healthcheck.shscripts/lib/antigravity-paths.shscripts/runtime-smoke-test.shscripts/start-remote-dev-web.shscripts/attach-remote-dev-tmux.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-menu.shscripts/secure-persistent-state.shscripts/test-role-neutral-runtime.sh
**/*.{sh,bash,js,ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Never use eval, sourced editable state, or user-controlled shell fragments for role, mode, installer, routing, or command dispatch.
Files:
scripts/remote-dev-healthcheck.shscripts/lib/antigravity-paths.shscripts/runtime-smoke-test.shscripts/start-remote-dev-web.shscripts/attach-remote-dev-tmux.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-menu.shscripts/secure-persistent-state.shscripts/test-role-neutral-runtime.sh
**/*.{sh,bash}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{sh,bash}: Use fixed, validated enums for roles and start modes; reject unknown values with a deterministic non-zero exit status and a clear message.
Build command invocations with Bash arrays, preserve arguments without re-evaluating them, preserve command exit status, and run persistent-state hardening after supported interactive sessions.
Files:
scripts/remote-dev-healthcheck.shscripts/lib/antigravity-paths.shscripts/runtime-smoke-test.shscripts/start-remote-dev-web.shscripts/attach-remote-dev-tmux.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-menu.shscripts/secure-persistent-state.shscripts/test-role-neutral-runtime.sh
**/*.{yml,yaml,sh,bash}
📄 CodeRabbit inference engine (AGENTS.md)
Implement issue
#25in separately reviewed slices: role-neutral commands and validation, configurable Codex approval modes, canonical image and variable naming with time-bounded aliases, shared image digest, Compose and state migration, and outer hardening with cross-service canaries.
Files:
scripts/remote-dev-healthcheck.shscripts/lib/antigravity-paths.shscripts/runtime-smoke-test.shscripts/start-remote-dev-web.shscripts/attach-remote-dev-tmux.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-menu.shscripts/secure-persistent-state.shscripts/test-role-neutral-runtime.sh
**/*.{sh,bash,js,ts,tsx,yml,yaml}
📄 CodeRabbit inference engine (AGENTS.md)
Run the narrowest relevant tests during development and complete required CI before merge; preserve or extend coverage for role/start-mode validation, wrappers, launcher security, mounts, image identity, health checks, Codex flows, credential hardening, ttyd, tmux, provenance, notices, SBOM, Trivy, and the critical-vulnerability gate.
Files:
scripts/remote-dev-healthcheck.shscripts/lib/antigravity-paths.shscripts/runtime-smoke-test.shscripts/start-remote-dev-web.shscripts/attach-remote-dev-tmux.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-menu.shscripts/secure-persistent-state.shscripts/test-role-neutral-runtime.sh
scripts/**/*.sh
⚙️ CodeRabbit configuration file
scripts/**/*.sh: Review as production Bash. Check quoting, set -euo pipefail behavior, cleanup traps,
bounded retries and timeouts, non-interactive execution, idempotency and useful failure messages.
Flag commands that can hang, leak credentials, silently ignore failures or mutate persistent data unexpectedly.
Files:
scripts/remote-dev-healthcheck.shscripts/lib/antigravity-paths.shscripts/runtime-smoke-test.shscripts/start-remote-dev-web.shscripts/attach-remote-dev-tmux.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-menu.shscripts/secure-persistent-state.shscripts/test-role-neutral-runtime.sh
images/**/Dockerfile
⚙️ CodeRabbit configuration file
images/**/Dockerfile: Review for reproducibility, supply-chain security and minimal image growth.
Require pinned upstream versions and checksum or digest verification for downloaded binaries.
Flag secrets, floating base tags, unsafe remote-script execution, broken multi-architecture logic,
cache misuse, unnecessary packages and changes that weaken the secure-by-default runtime.
Files:
images/codex/Dockerfile
🪛 Shellcheck (0.11.0)
scripts/lib/antigravity-paths.sh
[warning] 3-3: ANTIGRAVITY_EVIDENCE appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 4-4: ANTIGRAVITY_BIN_DIR appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 5-5: ANTIGRAVITY_BINARY appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 6-6: ANTIGRAVITY_STATE_DIR appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 7-7: ANTIGRAVITY_MANIFEST appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 8-8: ANTIGRAVITY_VENDOR_STATE_DIR appears unused. Verify use (or export if used externally).
(SC2034)
scripts/test-role-neutral-runtime.sh
[info] 53-53: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 54-54: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 55-55: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 57-57: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 58-58: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 59-59: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 60-60: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 61-61: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
🔇 Additional comments (11)
images/codex/Dockerfile (1)
13-19: LGTM!Also applies to: 60-63, 72-72, 87-90, 103-103, 120-121
scripts/lib/antigravity-paths.sh (1)
3-8: LGTM!scripts/lib/remote-dev-runtime.sh (1)
16-24: LGTM!Also applies to: 47-63, 86-86
scripts/attach-remote-dev-tmux.sh (1)
17-17: LGTM!Also applies to: 29-38
scripts/remote-dev-healthcheck.sh (1)
33-33: LGTM!scripts/start-remote-dev-web.sh (1)
30-38: LGTM!scripts/secure-persistent-state.sh (1)
6-6: LGTM!Also applies to: 33-45, 70-85
scripts/remote-dev-doctor.sh (1)
14-14: LGTM!Also applies to: 40-40, 49-60, 91-95, 192-198
scripts/remote-dev-menu.sh (1)
150-158: LGTM!Also applies to: 221-269, 305-305
scripts/runtime-smoke-test.sh (1)
166-166: LGTM!scripts/test-role-neutral-runtime.sh (1)
53-61: LGTM!Also applies to: 71-72
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0dc5e4c529
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| case "$role" in | ||
| launcher|codex|shell) | ||
| launcher|codex|shell|antigravity) |
There was a problem hiding this comment.
Keep the Antigravity role unavailable until its gates pass
Do not accept antigravity as implemented here: third_party/optional-agents.md:46-49 still records the integration as pending and unsupported, while third_party/antigravity-cli-inspection.md:106-116 says exact post-login state paths still require manual validation. Accepting this enum exposes install/start menus and advertises the role from the public image before those gates have passed; keep it reserved until the owning integration and real-environment validation are complete.
AGENTS.md reference: AGENTS.md:L25-L25
Useful? React with 👍 / 👎.
| readonly ANTIGRAVITY_BIN_DIR=/root/.local/bin | ||
| readonly ANTIGRAVITY_BINARY=/root/.local/bin/agy | ||
| readonly ANTIGRAVITY_STATE_DIR=/root/.local/share/remote-dev/antigravity | ||
| readonly ANTIGRAVITY_MANIFEST=/root/.local/share/remote-dev/antigravity/install.json | ||
| readonly ANTIGRAVITY_VENDOR_STATE_DIR=/root/.gemini/antigravity-cli |
There was a problem hiding this comment.
Make the runtime manager consume the canonical paths
antigravity-paths.sh is now consumed by startup, diagnostics, and hardening as the immutable path map, but remote-dev-antigravity.sh:5-8 still independently hard-codes the same binary and state paths. When a canonical path or mount changes, the manager can install and verify one tree while startup and hardening initialize another, potentially leaving credentials outside the protected persistent tree; source this map from the manager or otherwise derive every consumer from one definition.
AGENTS.md reference: AGENTS.md:L53-L53
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9fac659858
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| COPY scripts/remote-dev-antigravity.sh /usr/local/bin/remote-dev-antigravity | ||
| COPY scripts/remote-dev-install-antigravity.sh /usr/local/bin/remote-dev-install-antigravity | ||
| COPY scripts/remote-dev-update-antigravity.sh /usr/local/bin/remote-dev-update-antigravity | ||
| COPY scripts/run-antigravity.sh /usr/local/bin/run-antigravity |
There was a problem hiding this comment.
Gate the Antigravity entry points by role
In a default Codex or shell container, these executable wrappers let a terminal user run remote-dev-install-antigravity --yes and then run-antigravity without ever invoking remote_dev_resolve_role or setting the experimental gate. That installs Google state into the Codex/shell service and reuses its workspace and credentials instead of the intended isolated Antigravity service; run-antigravity also invokes hardening under the original role, so the vendor state is not hardened. Fresh evidence beyond the earlier role-enum comment is that the direct entry points copied here completely bypass that enum gate; make each Antigravity entry point reject calls unless the gated Antigravity role has been resolved.
AGENTS.md reference: AGENTS.md:L25-L25
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
images/codex/Dockerfile (1)
115-123: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick winSet the Antigravity role and experimental gate for this build check.
remote-dev-antigravitynow callsrequire_antigravity_rolebeforestatus. At Line 122, the image still hasREMOTE_DEV_ROLE=codexand no experimental gate. The command exits with status 2, so theRUNinstruction fails.Proposed fix
- && remote-dev-antigravity status --menu | grep -Fx 'Antigravity: not installed' \ + && REMOTE_DEV_ROLE=antigravity REMOTE_DEV_ENABLE_EXPERIMENTAL_ANTIGRAVITY=1 \ + remote-dev-antigravity status --menu | grep -Fx 'Antigravity: not installed' \🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@images/codex/Dockerfile` around lines 115 - 123, Update the Dockerfile build-check environment before invoking remote-dev-antigravity status: set REMOTE_DEV_ROLE to the Antigravity role and enable the required experimental gate. Keep the existing status assertion and /root/.local/bin/agy absence check unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/remote-dev-antigravity.sh`:
- Around line 45-48: Remove the is_testing-based bypass from
require_antigravity_role and relocate the fixture path injection and role-bypass
behavior into a test-only harness excluded from the shipped image. Ensure
install and update operations always require the production
REMOTE_DEV_ROLE=antigravity and REMOTE_DEV_ENABLE_EXPERIMENTAL_ANTIGRAVITY
checks.
In `@scripts/remote-dev-doctor.sh`:
- Around line 141-142: Update status_command and its Antigravity status probe to
execute through run_binary_no_update, ensuring read_version_with_identity does
not invoke the installed agy binary without the existing timeout bound. In
scripts/remote-dev-doctor.sh, map a timeout result to status=1 while retaining
exit code 3 as non-fatal.
In `@scripts/runtime-smoke-test.sh`:
- Around line 118-121: Update the default-gate docker exec invocation in the
runtime smoke test to explicitly set
REMOTE_DEV_ENABLE_EXPERIMENTAL_ANTIGRAVITY=0 alongside
REMOTE_DEV_ROLE=antigravity, ensuring the command always exercises the
disabled-by-default path.
---
Outside diff comments:
In `@images/codex/Dockerfile`:
- Around line 115-123: Update the Dockerfile build-check environment before
invoking remote-dev-antigravity status: set REMOTE_DEV_ROLE to the Antigravity
role and enable the required experimental gate. Keep the existing status
assertion and /root/.local/bin/agy absence check unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: e2897bfd-e1e1-4abb-88f5-6394dbf4b4fd
📒 Files selected for processing (7)
images/codex/Dockerfilescripts/lib/remote-dev-runtime.shscripts/remote-dev-antigravity.shscripts/remote-dev-doctor.shscripts/run-antigravity.shscripts/runtime-smoke-test.shscripts/test-role-neutral-runtime.sh
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
- GitHub Check: build
🧰 Additional context used
📓 Path-based instructions (7)
**/*.{yml,yaml,Dockerfile,sh,bash,js,ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{yml,yaml,Dockerfile,sh,bash,js,ts,tsx}: Never use privileged containers, Docker or Podman sockets, SYS_ADMIN, host-root mounts, or broad persistence mounts such as /root, /home, /opt, /usr/local, or a parent data root.
Preserve mandatory ttyd authentication for agent terminals, origin checking for all web endpoints, tmux reconnect behavior, image identity checks, and existing Codex login, start, and resume behavior.
Files:
scripts/run-antigravity.shscripts/test-role-neutral-runtime.shscripts/runtime-smoke-test.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-antigravity.sh
**/*.{sh,bash,js,ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Never use eval, sourced editable state, or user-controlled shell fragments for role, mode, installer, routing, or command dispatch.
Files:
scripts/run-antigravity.shscripts/test-role-neutral-runtime.shscripts/runtime-smoke-test.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-antigravity.sh
**/*.{sh,bash}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{sh,bash}: Use fixed, validated enums for roles and start modes; reject unknown values with a deterministic non-zero exit status and a clear message.
Build command invocations with Bash arrays, preserve arguments without re-evaluating them, preserve command exit status, and run persistent-state hardening after supported interactive sessions.
Files:
scripts/run-antigravity.shscripts/test-role-neutral-runtime.shscripts/runtime-smoke-test.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-antigravity.sh
**/*.{yml,yaml,sh,bash}
📄 CodeRabbit inference engine (AGENTS.md)
Implement issue
#25in separately reviewed slices: role-neutral commands and validation, configurable Codex approval modes, canonical image and variable naming with time-bounded aliases, shared image digest, Compose and state migration, and outer hardening with cross-service canaries.
Files:
scripts/run-antigravity.shscripts/test-role-neutral-runtime.shscripts/runtime-smoke-test.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-antigravity.sh
**/*.{sh,bash,js,ts,tsx,yml,yaml}
📄 CodeRabbit inference engine (AGENTS.md)
Run the narrowest relevant tests during development and complete required CI before merge; preserve or extend coverage for role/start-mode validation, wrappers, launcher security, mounts, image identity, health checks, Codex flows, credential hardening, ttyd, tmux, provenance, notices, SBOM, Trivy, and the critical-vulnerability gate.
Files:
scripts/run-antigravity.shscripts/test-role-neutral-runtime.shscripts/runtime-smoke-test.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-antigravity.sh
scripts/**/*.sh
⚙️ CodeRabbit configuration file
scripts/**/*.sh: Review as production Bash. Check quoting, set -euo pipefail behavior, cleanup traps,
bounded retries and timeouts, non-interactive execution, idempotency and useful failure messages.
Flag commands that can hang, leak credentials, silently ignore failures or mutate persistent data unexpectedly.
Files:
scripts/run-antigravity.shscripts/test-role-neutral-runtime.shscripts/runtime-smoke-test.shscripts/remote-dev-doctor.shscripts/lib/remote-dev-runtime.shscripts/remote-dev-antigravity.sh
images/**/Dockerfile
⚙️ CodeRabbit configuration file
images/**/Dockerfile: Review for reproducibility, supply-chain security and minimal image growth.
Require pinned upstream versions and checksum or digest verification for downloaded binaries.
Flag secrets, floating base tags, unsafe remote-script execution, broken multi-architecture logic,
cache misuse, unnecessary packages and changes that weaken the secure-by-default runtime.
Files:
images/codex/Dockerfile
🪛 Checkov (3.3.8)
images/codex/Dockerfile
[low] 1-164: Ensure that a user for the container has been created
(CKV_DOCKER_3)
🪛 Shellcheck (0.11.0)
scripts/test-role-neutral-runtime.sh
[info] 54-54: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 55-55: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
[info] 57-57: Expressions don't expand in single quotes, use double quotes for that.
(SC2016)
🔇 Additional comments (16)
images/codex/Dockerfile (4)
13-19: LGTM!
60-63: LGTM!Also applies to: 72-72, 87-90, 103-103
148-155: LGTM!
164-164: LGTM!scripts/lib/remote-dev-runtime.sh (2)
12-35: LGTM!
58-74: 🎯 Functional CorrectnessStart-mode and tmux-session contract is covered.
START_MODE=codexandSTART_MODE=antigravityreject mismatched roles with status 2, Antigravity maps to theantigravitytmux session, and the role-neutral test suite covers these cases.scripts/remote-dev-antigravity.sh (3)
5-6: LGTM!Also applies to: 64-69
121-130: LGTM!
552-553: LGTM!scripts/run-antigravity.sh (1)
6-6: LGTM!Also applies to: 16-25
scripts/remote-dev-doctor.sh (2)
40-41: LGTM!
143-150: LGTM!scripts/runtime-smoke-test.sh (3)
116-117: LGTM!Also applies to: 122-152
203-204: LGTM!
222-222: LGTM!scripts/test-role-neutral-runtime.sh (1)
53-57: LGTM!
| antigravity_status_code=0 | ||
| antigravity_status="$(remote-dev-antigravity status --menu 2>&1)" || antigravity_status_code=$? |
There was a problem hiding this comment.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n -C 8 \
'remote-dev-antigravity|status --menu|timeout' \
scripts/remote-dev-doctor.sh scripts/remote-dev-antigravity.shRepository: eXPerience83/remote-dev-containers
Length of output: 9325
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf '--- outline remote-dev-antigravity.sh relevant functions ---\n'
ast-grep outline scripts/remote-dev-antigravity.sh --match 'antigravity_do|run_antigravity_status|status' --view expanded || true
printf '\n--- relevant regions in remote-dev-antigravity.sh ---\n'
sed -n '1,35p;135,160p;190,225p;430,520p' scripts/remote-dev-antigravity.sh
printf '\n--- doctor section around antigravity call ---\n'
sed -n '120,170p' scripts/remote-dev-doctor.shRepository: eXPerience83/remote-dev-containers
Length of output: 263
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- relevant sections in scripts/remote-dev-antigravity.sh ---'
sed -n '1,35p;135,160p;190,225p;430,520p' scripts/remote-dev-antigravity.sh
printf '%s\n' '--- doctor section around antigravity call ---'
sed -n '120,170p' scripts/remote-dev-doctor.sh
printf '%s\n' '--- search for status implementation ---'
rg -n -C 6 'status|antigravity_do|run_antigravity|execute|AGY_CLI_DISABLE_AUTO_UPDATE' scripts/remote-dev-antigravity.shRepository: eXPerience83/remote-dev-containers
Length of output: 11215
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
sed -n '516,570p' scripts/remote-dev-antigravity.shRepository: eXPerience83/remote-dev-containers
Length of output: 1452
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
rg -n -C 8 'load_evidence\(\)|read_current_installation\(\)|load_evidence=' scripts/remote-dev-antigravity.shRepository: eXPerience83/remote-dev-containers
Length of output: 1746
Bound the Antigravity status probe.
status_command is only file/local-metadata limited, while read_current_installation still runs the installed agy binary via read_version_with_identity. That call does not use the existing bounded wrapper, so remote-dev-antigravity status --menu can hang. Route status_command through run_binary_no_update, and in scripts/remote-dev-doctor.sh map timeout to status=1 while preserving exit code 3 as non-fatal.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/remote-dev-doctor.sh` around lines 141 - 142, Update status_command
and its Antigravity status probe to execute through run_binary_no_update,
ensuring read_version_with_identity does not invoke the installed agy binary
without the existing timeout bound. In scripts/remote-dev-doctor.sh, map a
timeout result to status=1 while retaining exit code 3 as non-fatal.
Source: Path instructions
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 713fea5af2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if is_testing; then | ||
| return 0 |
There was a problem hiding this comment.
Remove the production test-mode gate bypass
In a default Codex or shell container, setting REMOTE_DEV_ANTIGRAVITY_TESTING=1 makes this guard return before role resolution; after supplying the four test path variables—using the bundled inspection JSON and the canonical production paths—remote-dev-install-antigravity --yes can still download and install the agent, and run-antigravity contains the same environment-controlled bypass. Fresh evidence beyond the prior entry-point finding is that the newly added role check is explicitly disabled by a variable any terminal process can set, so the optional role remains usable inside another role's service; keep the test bypass out of the shipped entry points.
AGENTS.md reference: AGENTS.md:L25-L25
Useful? React with 👍 / 👎.
Progresses #27. This PR does not close #27 or claim supported Antigravity integration; real vendor login and lifecycle validation remain gated by #29.
What changed
antigravityrole, dedicated tmux session, neutral menu/direct/shell routing, diagnostics, health behavior and role-specific state hardening.agyexecutable remains absent until an explicit runtime installation.REMOTE_DEV_ENABLE_EXPERIMENTAL_ANTIGRAVITY=1together withREMOTE_DEV_ROLE=antigravity.3as the expected non-fatal “reviewed update required” state in diagnostics.Impact
Validation
Build AMD64Test optional Antigravity runtimefixture lifecycle workflow completed3regression was exercised inside the built image/root/.local/bin/agywere asserted during image buildCHANGELOG.mdupdate deferred because this PR does not expose a supported user-facing integrationSafety and release checks
agyexecutableFollow-up