Conversation
4e23c20 to
994acd8
Compare
344903c to
13148b9
Compare
|
Quickest fix: git fetch upstream main && git rebase upstream/main
rm uv.lock && uv lock
git add uv.lock && git rebase --continue
git push --force-with-leaseAutomated nudge — ignore if you're not ready to rebase. This comment is updated in place on future |
|
Here’s the Airflow UI view from a fresh run of this PR’s I first ran the checked-in system test unchanged ( |
2b71bac to
41570aa
Compare
cd6b138 to
195ad5e
Compare
SandboxToolset could only run off the worker through Modal, or on the worker through sbx, which needs the sbx binary, a Docker login and host virtualization that an unprivileged container cannot give it. BoatSandboxBackend provisions each sandbox through Boat's hosted cloud-computer API, so a containerized worker and Kubernetes get a second off-worker option. Boat is the service formerly called Ascii Box, renamed on 2026-09-15; boat-sdk 1.0.0 is the first release under the new name. Credentials come from a generic Airflow connection resolved lazily on first use, so the API key can live in a secrets backend; boat_conn_id=None reads BOAT_API_KEY from the worker environment instead. Boat can enforce neither a deny-all network policy nor a per-domain egress allowlist, so create refuses block_network=True and allow_egress_to rather than provisioning something weaker than SandboxSpec asked for. Writes use the native file API; reads keep the inherited bounded shell implementation so max_bytes is enforced in the guest before output reaches worker memory.
195ad5e to
400d3d6
Compare
|
Rebased onto current Also in this push: the temporary The system test passed end to end against boat.dev ( 41 unit tests, ruff and the applicable prek hooks pass locally; mypy is clean on the changed files with the SDK installed. Drafted-by: Claude Code (Opus 5); reviewed by @zozo123 before posting |
|
Hello @zozo123 - thank you for your contributions to Apache Airflow! The Airflow community has introduced a limit of 5 open pull requests at a time for contributors without write access to the repository. You currently have 6 open pull requests, so - as a one-time step of introducing the limit - we closed the ones where maintainers have not engaged yet:
These pull requests stay open because maintainers are already engaged in them - they count towards your limit:
This is not a judgement of you or of your changes. We never told contributors before that opening many pull requests at once was a problem, so there is nothing to feel bad about - and nothing is lost: your branches, commits and the review history stay where they are. What we ask you to do is to make your first prioritization decision: choose which of the pull requests above matter most to you, and reopen them (up to 5 open at a time, including the ones still open) with the "Reopen pull request" button or While your pull requests are waiting for review, the most valuable thing you can do is help in other ways - reviewing other contributors' pull requests, helping with issues, and taking part in the discussions on the devlist and Slack. Why we introduced the limit, what it means for you and how to reopen or restore a pull request is explained in https://github.com/apache/airflow/blob/main/contributing-docs/32_open_pull_request_limit.rst. Drafted-by: Claude Code (Opus 5); reviewed by @potiuk before posting |


Adds a hosted Boat backend for
SandboxToolset, giving containerized Airflow workers a production-capable backend without a local daemon or KVM.Boat is the service formerly called Ascii Box: the vendor renamed it on 2026-09-15 and published
boat-sdk1.0.0 the next day. The oldascii.dev/api/box/v1base now answers withDeprecationandSunset: 31 Oct 2026headers (see Migrating from Box to Boat), so this PR ships the backend under the new name from the start:BoatSandboxBackend, thesandbox-boatextra onboat-sdk>=1.0.0,boat_conn_id/boat_default, andBOAT_API_KEY/BOAT_BASE_URL.What changed
SandboxSpec.envat creation and refuses deny-all / per-domain egress policies Boat cannot enforce;boat-sdkand a generic Airflow connection lazily, and exports the backend eagerly (the module imports the SDK on first use, so the package stays importable without it and a missing SDK surfaces as an actionable error);sandbox-boatextra and adds unit plus system coverage.Validation
/sandboxes/{sandboxId}route;https://boat.dev/api/v1with a real key on 2026-09-19 (create, rename, readiness, command, write, read, list, non-zero exit, delete):1 passed in 13.47s;Related: #68847
See also: #71672, #71676
Was generative AI tooling used to co-author this PR?
Generated-by: Cursor (Grok), Claude Code (Opus 5), Claude Code (Fable 5.1), Codex (GPT-6) following the guidelines