Skip to content

fix(edge): upgrade @cloudflare/computer and computerd to 0.7.0 (#373) - #384

Merged
pawaca merged 1 commit into
mainfrom
feat/computer-0.7
Oct 24, 2026
Merged

pawaca merged 1 commit into
mainfrom
feat/computer-0.7

Conversation

@pawaca

@pawaca pawaca commented Oct 24, 2026

Copy link
Copy Markdown
Owner

Closes #373.

Why

computerd 0.3.1 finished a command on the child's exit event. Output read after that (a background job started with & that keeps the pipes, or a Durable Object reader slower than the command) reached EventLog.append, threw append after exit from a stream listener, and the daemon's uncaughtException handler exited it, stopping the container. On staging a burst of a few hundred KB through the container failed almost every time. cloudflare/computer#260, released in 0.7.0, finishes a command on close, or exitDrainMs (250 ms) after exit when a background job holds the pipes, and drops later output.

What changes

  • @cloudflare/computer 0.3.1 → 0.7.0 (app and standalone manifests, both locks) and computerd 0.7.0 pinned by digest in container/Dockerfile; the wire protocol has no negotiation, so they move together. Notices regenerated.
  • Container backend: CloudflareContainerBackend is now LegacyContainerBackend from backends/container-legacy, still platform-scheduled with the same containers block in wrangler.jsonc. Computer's new ContainerBackend needs scheduling_policy: "durable_object". Cloudflare cannot switch an existing application to that policy, and the replacement must use a new Durable Object class and namespace, which would leave every instance's storage behind. The policy is also in public beta.
  • output: false on the Workspace: since 0.5.0, runtime.exec saves the full output of long commands to /.computer/output by default. The bash tool already keeps each stream's tail and spills to /workspace/.spill, so Computer's copy would double the writes.
  • RecordingWorkspaceStub: follows 0.6.0's stub. getWorkspace() now reads hasAssets across RPC, and useThink is gone. This was found by integration: The RPC receiver does not implement the method "hasAssets".
  • VFS resolve-plan patch: re-ported to 0.7.0, because resolveViaCte still probes vfs_dirents by parent_inode only. audit.json and vfs-resolve-plan.spec.ts follow it.
  • minimumReleaseAgeExclude: @cloudflare/computer@0.7.0 was published on 2026-10-23, inside the minimum release age, so it is excluded explicitly, as the 0.2.1-rc.2 Harness packages are.
  • README: the container output limitation is replaced by the 0.7.0 behavior.

Compatibility

The workspace VFS schema migrates from 8 to 10 on first open (vfs_changes.prior, _vfs_mounts.version). 0.30 refuses schema 10, so rolling an instance back after this lands cannot read its workspace. This goes in the release notes.

Evidence

  • pnpm run typecheck, pnpm run test (1,113 passed), pnpm run lint, doc-sync, dependency-sync, upstream-parity, test:snapshot (13 passed).
  • Session integration passes against both release artifacts (Direct and Isolated).
  • test:container passes with computerd 0.7.0. The binary in the built image is byte-identical to the published 0.7.0 image and contains exitDrainMs. A new check runs (sleep 1; seq 1 200000) & echo started in the container, then reads a file kept on the container's own disk: it passes here and fails on main ("the container restarted after late output").
  • row-cost.probe.mjs against 0.30.0: every step identical (443 SQL rows and 36 KV and alarm writes over plain turns).
  • upgrade-from-release.probe.mjs from published 0.30.0, with the version temporarily bumped: 11 checks pass, including workspace files read back after the VFS migration.

🤖 Generated with Claude Code

computerd 0.3.1 finished a command on the child's exit event, so output
read after it (a background job holding the pipes, or a reader slower than
the command) threw "append after exit" from a stream listener and the
daemon exited, taking the container with it. 0.7.0 carries
cloudflare/computer#260: a command finishes on close, or exitDrainMs
(250 ms) after exit, and later output is dropped.

- Pin @cloudflare/computer 0.7.0 in the app and standalone manifests and
  computerd 0.7.0 by digest in the Container image; regenerate notices.
- Keep the platform-scheduled container: CloudflareContainerBackend is now
  LegacyContainerBackend (backends/container-legacy). The durable_object
  scheduling policy needs a new Durable Object class, which would leave
  this object's storage behind.
- Pass `output: false` to the Workspace: since 0.5.0 Computer saves every
  long command's output to /.computer/output, which would duplicate the
  bash tool's own spill.
- The recording workspace stub mirrors 0.6.0's stub (`hasAssets`, no
  `useThink`); getWorkspace() now loads it through hasAssets.
- Re-port the VFS resolve-plan patch: 0.7.0 still joins vfs_dirents by
  parent_inode only.
- Container integration: a background job writing 200,000 lines after its
  shell exited leaves the same container running (fails on 0.3.1).

The workspace VFS schema moves from 8 to 10 on first open; 0.30 refuses
version 10, so a rollback after this lands cannot read the workspace.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-24T02:39:36.003177Z 8047106 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@pawaca
pawaca merged commit 8d113cd into main Oct 24, 2026
5 checks passed
@pawaca
pawaca deleted the feat/computer-0.7 branch October 24, 2026 08:51
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.

Container: computerd exits when a command's output arrives after it exits

1 participant