zozo123 commented on PR #71672: URL: https://github.com/apache/airflow/pull/71672#issuecomment-5774115905
Pushed the round for the 2026-09-17 review; replies are inline on each thread. Two of the threads needed facts neither the SDK nor the API spec carries, so I measured them against the compute API rather than guess: - Each output stream is capped at exactly 1 MiB and the **tail** is kept, not the head, and one `truncated` flag covers both streams. A 300,000-line `seq` came back as 1,048,576 bytes ending in `299999/300000`; stderr caps independently; a 3 MB single line behaves the same. The "vendor keeps the head" claim in the docs was wrong and is gone, which also settles the `list_directory` branch -- a truncated listing's mangled record is always the leading one, which is the one dropped. - `delete_after` counts from creation, as you read it; `pause_after_idle` counts from last use and `auto_resume: on_activity` resumes on the next call. The default policy is now `pause_after_idle=600, auto_resume="on_activity", delete_after=86400`, so a run past the hour keeps its microVM while a dead worker's VM stops costing compute after ten idle minutes. Also measured, and each drove a change: the runner owns `PATH` and drops one given at creation under both `sh -c` and `sh -lc`, so the wrapper is `sh -c` and a `PATH` in `SandboxSpec.env` is refused at `create` rather than silently dropped; and a stopped sandbox answers `get_sandbox` with 200 and `status: stopped` while exec returns 400, which is what the missing-file check now reads before deciding between recoverable and terminal. The rest: polling rides out transient 5xx rather than failing the task on one (the API produced `503 RESOURCE_UNAVAILABLE` twice during the session, so this is not hypothetical), and `max_retries: 0` is gone since it was switching off the SDK's own retries; oversized reads report the guest's `stat` size; the connection has its own `islo` type with a hook, a docs page and `test_connection`; the lazy export is replaced by an eager one so the autoapi reference resolves and the untested optional branch disappears; `islo` is in the dev group so the suite runs in the main lane; and the trap test now discriminates between the shipped wrapper and the two ways it could regress. The system test passed end to end against islo.dev (`1 passed in 12.08s`), as did the connection-backed path -- hook `test_connection`, create, command, write, read, list, destroy. Rebased onto current `main`, which reorganised the provider docs twice today, so the backend is now documented in `docs/sandbox/backends.rst` beside Modal and `sbx`, and the connection and hook pages are in the `docs/index.rst` toctree rather than the removed `docs/hooks/index.rst`. 100 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 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
