Skip to content

Bring RAX to parity with AX main (f0228f1) - #12

Merged
h0ffmann merged 3 commits into
mainfrom
claude/project-thread-jebpjh
Oct 31, 2026
Merged

h0ffmann merged 3 commits into
mainfrom
claude/project-thread-jebpjh

Conversation

@h0ffmann

Copy link
Copy Markdown
Collaborator

Requested by Hoffmann · project thread

Summary

RAX main (2037585) had fallen behind google/ax main (f0228f1, unchanged as of today). This PR closes the three gaps, one commit each:

  1. Explicit suspend / resume / delete (AX #532, #536) — rax-server's Reconciler trait drops the phase-driven reconcile for explicit suspend, resume and delete calls that record only what AX stores (task ID, WorkspaceReady, and a False Ready on failure). The service now owns the phase: Pending or Failed after a failed create/resume, cleared after success so reads come from the actor (which also cancels a failed delete). rax-server now exits when the Substrate client cannot be built, as ax-server does.
  2. Claude Code runner (AX #513) — new rax-claude-code-runner crate, Dockerfile.claude-code, examples/claude-code/task.yaml, and a just claude-code-image recipe.
  3. PostgreSQL restart test (AX #528) — rax-store gains a test that the Postgres store survives a restart; the README parity note now points at AX f0228f1.

Testing

  • cargo test --workspace with RAX_TEST_POSTGRES_URL set against a local PostgreSQL 16: 167 passed, 0 failed.
  • cargo fmt --all -- --check and cargo clippy --workspace --all-targets -- -D warnings: clean.

Not done: a line-by-line comparison against AX's Go code, and the cluster E2E suite (needs a cluster with Agent Substrate).


Generated by Claude Code

Port google/ax#532 and google/ax#536. The Reconciler trait drops its
phase-driven reconcile for explicit suspend, resume and delete calls that
record only what AX stores (task ID, WorkspaceReady, and on failure a
False Ready). The service sets the phase: Pending or Failed after a failed
create or resume, and cleared after a success so reads take it from the
actor, which also cancels a failed delete. rax-server now exits when the
Substrate client cannot be built, as ax-server does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp3enJYXRHihkb8uyNH
Port google/ax#513. A Task that leaves spec.command empty runs one headless
`claude --print` session built from spec.config (camelCase keys become
claude flags) and the bound Workspace's MCP servers (--mcp-config), with
the same arguments AX's runner builds. Dockerfile.claude-code layers it and
Claude Code over the task-runner image; `just claude-code-image` builds it,
and examples/claude-code is AX's example adapted to rax.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp3enJYXRHihkb8uyNH
Port google/ax#528: a server that crashes holding a lock leaves its tasks
in PostgreSQL, and its lease can be taken once it expires. The README now
names the AX commit RAX matches, adds the Claude Code runner, and brings the
test counts up to date (167).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp3enJYXRHihkb8uyNH
@h0ffmann h0ffmann self-assigned this Oct 31, 2026
@h0ffmann
h0ffmann merged commit b87c790 into main Oct 31, 2026
3 checks passed
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.

2 participants