Repository navigation
fix(edge): upgrade @cloudflare/computer and computerd to 0.7.0 (#373) - #384
Merged
Merged
Conversation
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>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #373.
Why
computerd 0.3.1 finished a command on the child's
exitevent. Output read after that (a background job started with&that keeps the pipes, or a Durable Object reader slower than the command) reachedEventLog.append, threwappend after exitfrom a stream listener, and the daemon'suncaughtExceptionhandler 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 onclose, orexitDrainMs(250 ms) afterexitwhen a background job holds the pipes, and drops later output.What changes
@cloudflare/computer0.3.1 → 0.7.0 (app and standalone manifests, both locks) and computerd 0.7.0 pinned by digest incontainer/Dockerfile; the wire protocol has no negotiation, so they move together. Notices regenerated.CloudflareContainerBackendis nowLegacyContainerBackendfrombackends/container-legacy, still platform-scheduled with the samecontainersblock inwrangler.jsonc. Computer's newContainerBackendneedsscheduling_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: falseon the Workspace: since 0.5.0,runtime.execsaves the full output of long commands to/.computer/outputby 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 readshasAssetsacross RPC, anduseThinkis gone. This was found by integration:The RPC receiver does not implement the method "hasAssets".resolveViaCtestill probesvfs_direntsbyparent_inodeonly.audit.jsonandvfs-resolve-plan.spec.tsfollow it.minimumReleaseAgeExclude:@cloudflare/computer@0.7.0was 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.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).test:containerpasses with computerd 0.7.0. The binary in the built image is byte-identical to the published 0.7.0 image and containsexitDrainMs. A new check runs(sleep 1; seq 1 200000) & echo startedin 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.mjsagainst 0.30.0: every step identical (443 SQL rows and 36 KV and alarm writes over plain turns).upgrade-from-release.probe.mjsfrom 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