"""Lean, framework-free `docker` subprocess primitive. Deliberately a top-level module with a single stdlib import so it can be reused from anywhere without cost. It is intentionally *not* placed in `backend.docker.util`: importing that module runs `backend/__init__.py`, which eagerly loads all three bottle backends (docker + firecracker + macos) plus the manifest/egress/git-gate/supervise framework — ~76 modules — which would drag the whole backend layer into the deliberately-lean orchestrator. This primitive stays free of that so both the orchestrator's docker components and (in time) `backend.docker.util` can share it.""" from __future__ import annotations import subprocess def run_docker(argv: list[str]) -> subprocess.CompletedProcess[str]: """Run a `docker` command, capturing stdout/stderr as text. Never raises on a non-zero exit — callers inspect `returncode` / `stderr` so they can stay fail-closed or tolerate idempotent no-ops (e.g. removing an already-absent container).""" return subprocess.run( argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=False, ) __all__ = ["run_docker"]