Skip to content

v0.52.0

Choose a tag to compare

@steipete steipete released this 07 Sep 18:08
· 714 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.52.0
e32b14f

0.52.0 - 2026-09-07

Highlights

  • Faster runner startup. Reuse verified SSH endpoints within an operation, publish diagnostics while the workload continues, and overlap AWS quota checks with network preparation.
  • A more responsive coordinator. Slow AWS deletion no longer holds up other leases' ingress work. Control WebSocket connections can open independently of lifecycle work, and heartbeats avoid unrelated alarm scans while holding the ingress lock.
  • Enforce benchmark limits. New crabbox bench check applies sample, failure, and p95 runner-time limits to every matched local benchmark group, with deterministic JSON and a failing exit status when the policy is not met.
  • Run pnpm setup during local hydration. Support pnpm/action-setup with an exact version, including workflows that set up pnpm before Node, and keep the managed pnpm available to later steps.
  • Safer workspace reuse and clearer failures. Islo preserves files during --no-sync runs. SSH access rebinding rejects conflicting provider identities, artifact validation is distinguished from workload exits, and readiness timeouts retain their real cause.
  • More reliable checkpoints and image preparation. Wait for cloud-init completion before native capture, preserve the running source's boot-completion records during cleanup, and report confirmed checkpoint non-submission as structured JSON.
  • Benchmark-gated Linux image publication. Maintainers can opt into comparable baseline, candidate, and promoted-image measurements, with an explicit timing policy and receipt-based rollback through final validation.

Upgrade notes

  • bench check requires --max-p95-runner-total. Defaults are three successful samples and zero failures per matched group; p95 always needs at least three runner-total samples. No matches or missing telemetry fail the check. PR 1899.
  • Local pnpm/action-setup requires an exact major.minor.patch version. Version inference, ranges, and other pnpm inputs require --github-runner; setup-node's cache: pnpm runs without caching during local hydration. PR 1953.
  • SSH artifact-validation failures retain exit 7 but report blockedStage=artifacts and errorKind=provider-error; a workload that exits 7 remains command-exit. Automation should distinguish these outcomes. PR 1934.
  • checkpoint create --json can emit crabbox.checkpoint.create.failure.v1 with outcome=not_submitted on a nonzero exit after verified local reservation removal. This does not certify source rollback or readiness; uncertain and post-submission failures keep their recovery state. PR 1952, PR 1963.
  • Measured AWS Linux image publication is opt-in and plans 12 leases, with additional launch attempts possible during acquisition retries. It requires an explicit p95 cap, promotes only after candidate checks pass, and keeps rollback armed through final validation. Passing the cap does not establish a speedup over the baseline. PR 1960.

Changes

  • Publish run diagnostics without delaying workload admission, preserving ordered lease attribution and joining pending publication before terminal recording; warn on queue overflow or drain expiry while retaining logs and verified terminal receipts. PR 1937.
  • Reuse verified SSH endpoints within an operation across direct, proxy, and WSL execution, avoiding redundant login probes while re-evaluating advertised fallbacks when the host or port changes. PR 1941.
  • AWS: overlap the initial quota lookup with security-group preparation, retain per-candidate quota checks, and join both operations before launch or failure cleanup. PR 1958. Thanks @steipete.
  • Keep AWS deletion and unrelated heartbeat alarm scans out of the ingress queue, and admit control WebSockets independently of lifecycle work, preserving cleanup claims, alarm deadlines, authentication, and message serialization. PR 1951.
  • Deduplicate validated AWS coordinator SSH ranges after combining lease and global access, avoiding repeated authorization calls for identical port/range pairs while retaining ingress reconciliation. PR 1945.
  • Add crabbox bench check to enforce successful-sample, failure-count, and p95 runner-time limits across every matched local group; expose runner-total sample counts in benchmark reports. PR 1899. Thanks @vincentkoc.
  • Local Actions hydration: support pnpm/action-setup with an exact version, including pnpm-before-Node workflows, preserve managed pnpm for later commands, and accept setup-node's cache: pnpm as an explicitly uncached run. PR 1953.
  • Distinguish required-artifact, artifact-change, and artifact-schema validation failures from workload exits in timing and failure digests, preserving exit 7 and artifact enforcement. PR 1934, Issue 1894. Thanks @coygeek.
  • Reject conflicting known provider identities before rebinding resolved SSH access, and remove alias keys only after validating and removing the unchanged alias claim. PR 1936, Issue 1900. Thanks @coygeek.
  • Stop SSH readiness probes and backoff at the shared deadline, report the active probe, and leave authentication unknown when the check expires. PR 1949. Thanks @vincentkoc.
  • Agent Sandbox, OpenSandbox, and Hyper-V: classify readiness deadlines and cancellation consistently while retaining the last probe's diagnostic and existing public exit codes. PR 1964.
  • Islo: preserve existing workspace files during --no-sync runs even when sync deletion is enabled, retaining normal replacement behavior for archive sync. PR 1959.
  • Islo: give sandbox creation its own five-minute budget without shortening command streams or relaxing ordinary API deadlines; report failed create names as unconfirmed locators for explicit identity-checked recovery. PR 1955.
  • Islo: finalize run outcomes after guarded cleanup, honor --keep-on-failure for bound setup failures, retain reused sessions after admitted Tailscale preparation fails, and preserve primary codes and causes through cleanup or timing errors while distinguishing provider/artifact failures from command exits. PR 1947.
  • Agent Sandbox: finalize bound runs once, preserve primary outcomes through TTL cleanup and timing failures, and report early bound failures with accurate recovery handles. PR 1961.
  • Tailscale: withhold raw provider diagnostics and OAuth credentials from preflight and tag-ownership errors while retaining the operation, HTTP status, and actionable tag guidance. PR 1940.
  • Proxmox: retain bounded, redacted bootstrap diagnostics and native error causes after acquisition cleanup, preserving quiet success and the existing CLI failure status. PR 1948, Issue 1873. Thanks @coygeek.
  • Add bounded AWS provisioning logs that separate ingress-queue and lifecycle waits from create-operation costs and count redundant security-group permission calls without logging request payloads. PR 1938.
  • Report producer-confirmed checkpoint non-submission as structured JSON after verified reservation cleanup, without implying that source rollback succeeded. PR 1952. Thanks @steipete.
  • Wait for cloud-init completion within the existing 30-second status deadline before native-image cleanup, retain strict post-clean checks with phase/status diagnostics, and release fresh direct AWS/Hetzner reservations only for confirmed pre-submission failures. PR 1963. Thanks @steipete.
  • Preserve the running source's cloud-init completion records during Linux developer-image cleanup while clearing cached initialization and seed data; stop preparation if preservation or cleanup fails. PR 1954. Thanks @vincentkoc.
  • Add opt-in measured AWS Linux image publication with recipe-bound inputs, comparable baseline/candidate/promoted cohorts, an operator-supplied benchmark policy, an allowlisted public manifest, and receipt rollback through final validation. PR 1960. Thanks @vincentkoc.
  • Report image qualification reaping as idle after clean teardown, preserve failed recovery evidence, and verify transient controller ownership before cleanup. PR 1942. Thanks @vincentkoc.