Skip to content

fix(remote): multi-machine spawn + dated target names - #40

Open
cgpadwick wants to merge 3 commits into
masterfrom
feat/ds_test
Open

fix(remote): multi-machine spawn + dated target names#40
cgpadwick wants to merge 3 commits into
masterfrom
feat/ds_test

Conversation

@cgpadwick

Copy link
Copy Markdown
Owner

Summary

Remote-spawn reliability fixes plus a provider bump.

  • fix(remote): spawn from a second machineensure_ssh_key now matches Lambda keys by CONTENT (type+blob) rather than by name. A key registered under the name saage-remote from a different machine no longer shadows ours; on a name collision with different content it registers a stable saage-remote-<fp8> variant. wait_ssh fails fast on Permission denied instead of burning the full 300s wait on a deterministic auth rejection.
  • feat(remote): dated default target names — spawn now names boxes lambda-<yyyymmdd-hhmmss> so targets are unique across days and carry the box's age (stale-target cleanup was impossible with the old lambda-<hhmm> scheme).
  • Use latest deepseek — provider config bump.

Test plan

  • pytest -q (offline suite)
  • Manual: verified saage remote spawn succeeds from a second machine (spark) where it previously terminated the box after the ssh wait timed out.

🤖 Generated with Claude Code

cgpadwick and others added 3 commits August 1, 2026 12:13
…ot content

On spark, `saage remote spawn` launched fine but ssh never came up and the
box was terminated after the 300s wait. Root cause: ensure_ssh_key treated
an existing Lambda key NAMED 'saage-remote' as ours, but that name was
registered from a different machine — the instance booted authorized for
the other machine's key, so every ssh attempt was Permission denied
(silently, under BatchMode) until wait_ssh gave up.

- ensure_ssh_key now matches key CONTENT (type+blob, comment ignored) and
  returns the usable name; on a name collision with a different key it
  registers a stable 'saage-remote-<fp8>' variant instead of shadowing the
  other machine's entry. launch() uses the returned name.
- wait_ssh fails fast on 'Permission denied' with a pointed message —
  auth rejection is deterministic, looping 300s only buried the cause.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
lambda-<hhmm> collided across days and told you nothing about the box's
age — half the reason stale targets were unidentifiable.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.

1 participant