Conversation
|
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 |
37cade3 to
ffd06d4
Compare
|
Yes — ran it end to end against a real OpenSandbox server (Docker runtime,
Every sandbox in the clip is a real container created and destroyed through the server's API, and the egress results come from a stdlib socket probe inside the sandbox, so a failure can't be mistaken for a missing tool. It covers API-key enforcement (401 → 200), all four Trying it out turned up two things this PR had wrong. Both are fixed in the push above: The system test could never have run. It asked for a 30s command ceiling while leaving Command output lost every line break. execd streams one message per output line with the delimiter stripped, and the backend concatenated them, so Also rebased onto Drafted-by: Claude Code (Opus 5); reviewed by @zozo123 before posting |
c6316d3 to
7e9ad96
Compare
Could you post what the task logs in Airflow UI looks like too please |
|
Here’s the Airflow UI view from a fresh run of this PR’s The manual run finished successfully in 16.4s. The task log shows the |
84f0eb7 to
1bc54e5
Compare
|
Pushed the round for the 2026-09-17 review; replies are inline on each thread. Behaviour changes, all confined to the OpenSandbox backend: the network policy is read back after create and a sandbox the server did not restrict is destroyed; a stalled command stream is abandoned 30s past its budget with the sandbox destroyed and Two threads asked for evidence against a real server rather than fixtures. Both are now covered, against a local
The third is the one the The system test also passed end to end against that server ( Rebased onto current 63 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 |
|
I went back through each round-2 thread against the
|
kaxil
left a comment
There was a problem hiding this comment.
Approving; please settle the extra name (note 3 in my comment above) before merge, since that one is permanent once released.
8ca5ff7 to
14381a3
Compare
|
All three notes from your pass earlier today are addressed; the extra name is settled. 1. Command-timeout docs.
2. Open-network specs. 3. Extra name. Renamed to While re-checking that rename I found it had shortened the extras-table cell by eight characters without re-padding the row, so the second column started inside the first column's span. docutils rejects that with "Malformed table. Text in column margin" and parses zero rows, which drops the whole Optional dependencies table from the rendered docs and from 64/64 unit tests pass. Drafted-by: Claude Code (Claude Opus 5); reviewed by @zozo123 before posting |
|
CI is green on 425079a — 295 passed, 0 failed — and the extra name you asked me to settle before The five threads still open are the round-2 ones; each has a reply and the fixes are in the current Anything else you want before this goes in? Drafted-by: Claude Code (Claude Opus 5); reviewed by @zozo123 before posting |
Rebase the reviewed OpenSandbox backend onto current Airflow main, preserving current dependency state and dropping the expired temporary SDK quarantine override.
8952e87 to
36cb7e6
Compare



Adds a self-hosted OpenSandbox backend for
SandboxToolset, so Airflow workers can use a remote Docker or Kubernetes sandbox service without access to the container runtime.What changed
SandboxSpecenvironment and network policy at creation, preserving the fail-closed contract;sandbox-opensandboxextra and adds unit plus system coverage.Validation
Verified end to end against a real OpenSandbox server (
opensandbox/server:v0.2.3, Docker runtime, SDK0.1.16) — recording in the comments. That run covers API-key enforcement, all four toolset tools driven by a pydantic-ai agent, this PR's system-test Dag task, deny-all egress with allowlist narrowing, line-delimited output, and teardown.Running it for real surfaced two defects, both fixed here:
default_command_timeoutat 60s, whichSandboxToolsetrejects;printf 'A\nB\nC\n'came back as'ABC'. Output reached the model as a single run-on line, which also left the toolset's line-based truncation with nothing to cut on.Also:
opensandbox0.1.15 and 0.1.16;mypyfor providers and the datamodel codegen hooks.Related: #68847
Was generative AI tooling used to co-author this PR?
Generated-by: Codex (GPT-5.6), Claude Code (Opus 5) following the guidelines