Skip to content

rax-task-runner: keep the first-run marker on the workspace volume, as AX now does - #15

Merged
h0ffmann merged 1 commit into
mainfrom
claude/project-thread-8rk4ga
Nov 9, 2026
Merged

h0ffmann merged 1 commit into
mainfrom
claude/project-thread-8rk4ga

Conversation

@h0ffmann

@h0ffmann h0ffmann commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

Requested by Hoffmann · project thread

Brings RAX to parity with AX's main at 241bc4d (from 6e970c5). AX has two commits since the last parity point; one changes behavior, and this PR ports it.

What changed

The workspace's first-run marker lived under /ax, which a volumes-only resume does not restore, so setup ran again and could overwrite the agent's edits. Like AX, RAX now writes it on the workspace volume:

  • .git/.ax/initialized when the workspace root is a git repository (the git directory is untouched by git add -A and git clean -fdx), otherwise .ax/initialized.
  • A marker left under /ax by an older runner is migrated, but only when it names this workspace, since two mount paths can share a legacy name (/a/b and /a-b).
  • A marker or marker directory that is a symbolic link is refused with an error, so nothing is read or written outside the workspace.
  • The marker's directory is created before writing; marker_name normalizes path separators.

Tests

  • Ported AX's new setup tests: marker follows a root clone into .git, own legacy marker migrated, another workspace's legacy marker ignored, linked .ax directory refused. Added one for a linked marker file.
  • Runner test and local E2E (workspace_setup_files_and_git) now check the new path, as AX's runner and E2E tests do. Dropped the E2E harness's now-unused per-actor /ax map.
  • cargo fmt, cargo clippy --workspace --all-targets (clean) and cargo test --workspace all pass, including the 7 local E2E tests.

Not ported

AX's other change only touches its README quick start, demo.sh and a WorkerPool example manifest. RAX's local cluster setup (hack/local) already creates the ax-workers WorkerPool, so nothing applies here.

README: parity point moved to 241bc4d, line counts updated (7,640 of 8,262).


Generated by Claude Code

…s AX now does

The marker lived under /ax, which a volumes-only resume does not restore,
so setup ran again and could overwrite the agent's edits. Write it under
the workspace instead: .git/.ax/initialized when the workspace root is a
git repository, otherwise .ax/initialized.

- Migrate a marker left under /ax only when it names this workspace, since
  two mount paths can share a legacy marker name (/a/b and /a-b).
- Refuse a marker, or a marker directory, that is a symbolic link: the
  agent can create one, and following it would leave the workspace.
- Create the marker's directory before writing it.
- Normalize path separators in marker_name.

Ports AX's new setup tests (root clone, own and foreign legacy markers, a
linked marker directory) and moves the runner and local E2E checks to the
new path. README: parity as of AX 241bc4d.

AX's other change since the last parity point only touches its README quick
start, demo.sh and a WorkerPool example; RAX's local setup already creates
a WorkerPool.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0193yhp4LhPwgHBK6JdpZQb5
@h0ffmann h0ffmann self-assigned this Nov 9, 2026
@h0ffmann
h0ffmann merged commit b9fca67 into main Nov 9, 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