Repository navigation
Rebuild container images when only their guest code changes - #177
Merged
Merged
Conversation
Alchemy's container diff returned early for every Effect-native container: its props carry the program as an Effect in `exports`, so `isResolved` is always false. The engine then planned noop, and the chat and PR review sandbox images stayed on the 2026-10-28 build. The chat sandbox never got the /files read route from #176, so attachFile got a 405. Patch the Cloudflare provider to strip Effects before that check, as its Worker provider already does.
tim-smart
force-pushed
the
agent/bob/b0597528f3f2
branch
from
November 3, 2026 00:23
af1fecf to
9f79ae9
Compare
|
patching on our end alchemy-run/alchemy#2971 |
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.
Fixes the 405 that
attachFilegets from the chat sandbox.Cause
The chat sandbox still runs the image built on 2026-10-28, so it has no
GET /filesroute from #176. Every Deploy since then planned[ChatSandbox] noopand[PullRequestReviewSandbox] noop, even when guest code changed.The cause is in Alchemy's container provider. An Effect-native container (
main) carries its program as an Effect inprops.exports.diffstarts withif (!isResolved(news)) return, and that Effect always makesisResolvedfalse. The engine then falls back to comparing props with Effects stripped. Those are equal, so the plan isnoop, and the bundle hash never reaches the image comparison.2.0.0-beta.85and Alchemymainhave the same code.Fix
The Cloudflare patch now calls
stripEffects(news)before that check, as the Worker provider already does. It covers both TypeScript and shipped JavaScript.patches/README.mddocuments it.The earlier version of this PR added a container API handshake. That is gone: it misread the cause, and against the old image it would have restarted every warm sandbox.
Checking it
The first Deploy after merge should plan
[ChatSandbox] updateand[PullRequestReviewSandbox] update, then build and roll out both images. After that,attachFileshould work in a new chat.Closes EFF-3313