Don't write a beamignore all the time#46
Merged
cooper-grc merged 3 commits intobeam-cloud:mainfrom Mar 20, 2026
Merged
Conversation
cooper-grc
requested changes
Mar 19, 2026
cooper-grc
approved these changes
Mar 20, 2026
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.
When using a known/static image ID, the SDK shouldn't attempt to write a .beamignore file to disk. The file sync path (and its .beamignore) is only relevant when building a new image from local files. Writing unconditionally breaks in read-only or restricted environments where no file sync is happening. This moves initIgnoreFile() so it only runs when no explicit ignore patterns are provided, like when a file sync is actually needed.
Additionally, when prepareRuntime did fail, it threw a generic "Failed to prepare runtime" with no indication of the actual cause (bad client, failed build, volume not ready, etc.) because stub.prepare() only returned false. Now each failure point stores the real error on stub.lastError, which gets surfaced in the exception, making failures diagnosable.
Summary by cubic
Stop writing
.beamignorewhen a static image or explicit ignore patterns are used, and surface real errors from runtime preparation so failures are diagnosable..beamignorewhen no ignore patterns are provided (i.e., when file sync is needed). Prevents failures in read‑only environments and with known image IDs.StubBuilder.lastErrorat each failure point and include the message inSandboxConnectionError. Makes build, sync, volume, and API errors visible.Written for commit 27747fb. Summary will update on new commits.