chore: release v0.12.0#333
Conversation
- Add `deva status` command: Docker-native workspace inspection with container state, categorized mounts, agent homes, health - Add agent context injection: container-awareness instructions written to .claude/CLAUDE.md and AGENTS.md before agent start - Replace atlas-cli with ccx (thevibeworks/ccx v0.7.0) - 47 new tests across status helpers and context injection Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Claude finished @lroolle's task in 3m 3s —— View job 🔒 Security Audit: deva v0.12.0Status: 🚨 BLOCKING Security Issues1. Shell Injection in Config Processing (CRITICAL)Location: value="${value//\$(pwd)/$PWD}" # Direct PWD expansion without escaping
value="${value/#\~/$HOME}" # HOME expansion without validationAttack Vector: Malicious 2. Path Traversal in dangerous_directory() (HIGH)Location: Lines 444-456 bad_dirs=("$HOME" "/" "/etc" "/usr" "/var" "/bin" "/sbin" "/lib" "/lib64" "/boot" "/dev" "/proc" "/sys" "/tmp" "/root" "/mnt" "/media" "/srv")Gaps: Missing
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ee46f05da3
ℹ️ 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".
| grep -F "Installing ccx pinned to $CCX_VERSION" <<<"$output" >/dev/null | ||
| grep -F "falling back to pinned go install" <<<"$output" >/dev/null | ||
| grep -F "atlas-cli installed" <<<"$output" >/dev/null | ||
| grep -F "ccx installed" <<<"$output" >/dev/null |
There was a problem hiding this comment.
Update fake installer to produce ccx
In the CI smoke path, bash scripts/test-install-agent-tooling.sh now exits before this assertion because the fake go install above still writes $GOBIN/atl, while install_ccx verifies $DEVA_HOME/.local/bin/ccx --help; the captured output never reaches ccx installed. Updating the fake binary and final executable check from atl to ccx is needed to keep the smoke test green.
Useful? React with 👍 / 👎.
| "--build-arg CODEX_VERSION=0.117.0" \ | ||
| "--build-arg GEMINI_CLI_VERSION=0.35.3" \ | ||
| "--build-arg ATLAS_CLI_VERSION=v0.1.4" \ | ||
| "--build-arg CCX_VERSION=v0.1.4" \ |
There was a problem hiding this comment.
Fix stale ccx version expectation
The version-upgrade unit test still expects the old atlas pin after the switch to ccx; running bash tests/version-upgrade.sh fails with main build missing expected arg: --build-arg CCX_VERSION=v0.1.4 because the fake current image and new ccx pin are v0.7.0. This assertion should match the ccx version the test setup now advertises, or CI's Unit tests (version-upgrade.sh) job remains red.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Pull request overview
Release bump to v0.12.0 introducing Docker-native workspace inspection (deva status), runtime agent context injection into workspace instruction files, and replacing atlas-cli with ccx across build/pin/label plumbing.
Changes:
- Add
deva statusimplementation backed bydocker inspect, plus helper/test scripts for status formatting and mount categorization. - Inject container-awareness context into
.claude/CLAUDE.mdandAGENTS.mdon startup (idempotent, replace semantics). - Replace
atlas-cliwithccxthroughout version pins, tool registry, Docker build args/labels, and installer logic.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| versions.env | Replace ATLAS_CLI_VERSION pin with CCX_VERSION. |
| tests/version-upgrade.sh | Update fake docker/gh expectations for ccx version upgrade flow. |
| tests/test_release_utils.sh | Update tool registry expectations from atlas-cli to ccx. |
| scripts/version-upgrade.sh | Replace atlas env wiring with ccx and add build manifest output. |
| scripts/version-pins.sh | Update pinned environment variable list to include CCX_VERSION. |
| scripts/update-version-pins.sh | Refresh pins from thevibeworks/ccx instead of atlas-cli. |
| scripts/toolchain-report.sh | Report CCX version instead of Atlas CLI. |
| scripts/test-workspace-context.sh | New test script validating workspace context injection behavior. |
| scripts/test-version-targets.sh | Update version override expectations to CCX_VERSION. |
| scripts/test-status-helpers.sh | New tests for status helper functions extracted from deva.sh. |
| scripts/test-install-agent-tooling.sh | Adjust installer test to look for ccx install output/version var. |
| scripts/resolve-tool-versions.sh | Resolve ccx_version instead of atlas_cli_version. |
| scripts/release-utils.sh | Replace tool registry entry and display-name mapping for ccx. |
| scripts/install-agent-tooling.sh | Replace atlas installer with ccx release/go-install + skill install. |
| scripts/agent-context.md | New reference content for container context injected into workspace files. |
| Makefile | Replace atlas build arg/version override plumbing with ccx equivalents. |
| docs/devlog/20260524-status-and-agent-context.org | New devlog describing status + context injection design. |
| Dockerfile.rust | Replace atlas ARG/LABEL with ccx ARG/LABEL. |
| Dockerfile | Replace atlas ARG/LABEL with ccx ARG/LABEL. |
| deva.sh | Bump version, replace old status with docker-native cmd_status, and inject workspace context before agent start. |
| CHANGELOG.md | Add v0.12.0 release notes covering status, context injection, and ccx switch. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @echo " CODEX_VERSION Codex CLI version (default: $(CODEX_VERSION))" | ||
| @echo " GEMINI_CLI_VERSION Gemini CLI version (default: $(GEMINI_CLI_VERSION))" | ||
| @echo " ATLAS_CLI_VERSION Atlas CLI version (default: $(ATLAS_CLI_VERSION))" | ||
| @echo " CCX_VERSION Atlas CLI version (default: $(CCX_VERSION))" |
| first_char=$(head -c1 "$ws1/AGENTS.md") | ||
| if [ "$first_char" != "" ]; then pass "no leading blank"; else fail "leading blank"; fi |
| for _line in ${_lines_upgrade[@]+"${_lines_upgrade[@]}"}; do echo -e "$_line"; done | ||
| for _line in ${_lines_pinned[@]+"${_lines_pinned[@]}"}; do echo -e "$_line"; done | ||
| for _line in ${_lines_current[@]+"${_lines_current[@]}"}; do echo -e "$_line"; done | ||
| for _line in ${_lines_new[@]+"${_lines_new[@]}"}; do echo -e "$_line"; done |
| case "${2:-}" in | ||
| repos/lroolle/atlas-cli/releases/latest) | ||
| echo "v0.1.4" | ||
| repos/lroolle/ccx/releases/latest) | ||
| echo "v0.7.0" | ||
| ;; |
| echo "0ea08febdd7e3e055b03dd298bf57e669500b5c1" | ||
| ;; | ||
| repos/lroolle/atlas-cli/releases/tags/v0.1.4) | ||
| repos/lroolle/ccx/releases/tags/v0.1.4) |
| CODEX_VERSION ?= 0.131.0 | ||
| GEMINI_CLI_VERSION ?= 0.42.0 | ||
| ATLAS_CLI_VERSION ?= v0.1.4 | ||
| CCX_VERSION ?= v0.1.4 |
| Replaced with workspace injection (=inject_workspace_context()=, 27 | ||
| lines in docker-entrypoint.sh): | ||
| - Claude: append marked block to =.claude/CLAUDE.md= (gitignored) | ||
| - Codex: append to existing =AGENTS.md= (only if file exists) |
| ccx_platform() { | ||
| local os arch | ||
| os="$(uname -s)" | ||
| arch="$(uname -m)" | ||
| case "$arch" in | ||
| x86_64) arch="x86_64" ;; |
| grep -F "Installing ccx pinned to $CCX_VERSION" <<<"$output" >/dev/null | ||
| grep -F "falling back to pinned go install" <<<"$output" >/dev/null | ||
| grep -F "atlas-cli installed" <<<"$output" >/dev/null | ||
| grep -F "ccx installed" <<<"$output" >/dev/null |
| github-commit) | ||
| local branch="master" | ||
| [[ $source == "lroolle/atlas-cli" ]] && branch="main" | ||
| [[ $source == "thevibeworks/ccx" ]] && branch="main" |
Summary
deva status: Docker-native workspace inspection (containers, mounts, agent homes, health)Test plan
bash scripts/test-workspace-context.sh(25/25)bash scripts/test-status-helpers.sh(22/22)bash scripts/test-container-slug.sh(59/59)bash tests/test_release_utils.sh(55/55)deva status/deva status -g/deva status --verbose