refactor(de-sidecar): purge the "sidecar" name from live code, tests, and current docs
Completes the de-sidecar cleanup: no live code, test, current doc, script, or nix file mentions or is named "sidecar" any more. Only the dated PRD/research docs keep the term as historical record (agreed on the #385 thread). - Rename `sidecar_init.py`→`gateway_init.py` was done earlier; this pass sweeps the remaining descriptive uses: the egress / git-gate / supervise components are the gateway's *daemons*, the shared container is the *gateway*, the old per-bottle container was the *companion container*. - Rename `tests/integration/test_sidecar_bundle_image.py`→`test_gateway_image.py` and its class; update `docs/ci.md` + `tests/README.md` for the renamed/ removed integration tests. - `SIDECAR_PORTS` shell var in `scripts/firecracker-netpool.sh`→`GATEWAY_PORTS`. Full unit suite green (bar the pre-existing `/bin/sleep`-missing env errors in test_gateway_init); docker integration — gateway singleton, broker, real two-bottle multitenant isolation, and the gateway-image build — all pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WBMWTEtQdJ4W5UrWuLHCck
This commit is contained in:
+5
-5
@@ -1,4 +1,4 @@
|
||||
"""Integration: PRD 0024 chunk 1 — the sidecar bundle image builds
|
||||
"""Integration: PRD 0024 chunk 1 — the gateway image builds
|
||||
and the daemon binaries are present + executable inside it.
|
||||
|
||||
This test does NOT exercise the daemons running against real
|
||||
@@ -10,7 +10,7 @@ the chunk-1 contract:
|
||||
pull, COPYs resolve).
|
||||
- gitleaks, mitmdump are at the documented paths and answer
|
||||
`--version`.
|
||||
- The Python init at /app/sidecar_init.py runs and prints the
|
||||
- The Python init at /app/gateway_init.py runs and prints the
|
||||
expected "no daemons selected" line when the supervisor is
|
||||
pointed at an empty daemon set.
|
||||
|
||||
@@ -36,10 +36,10 @@ _DOCKERFILE = "Dockerfile.gateway"
|
||||
@unittest.skipIf(
|
||||
os.environ.get("GITEA_ACTIONS") == "true",
|
||||
"skipped under act_runner: multi-stage build pulls a 200+MB "
|
||||
"mitmproxy base + two upstream sidecar images; runner storage "
|
||||
"mitmproxy base + two upstream gateway images; runner storage "
|
||||
"+ time budget make this an interactive-only test",
|
||||
)
|
||||
class TestSidecarBundleImage(unittest.TestCase):
|
||||
class TestGatewayImage(unittest.TestCase):
|
||||
"""Builds the image once for the class, then runs a few
|
||||
`docker run` probes against it."""
|
||||
|
||||
@@ -103,7 +103,7 @@ class TestSidecarBundleImage(unittest.TestCase):
|
||||
# ENTRYPOINT wiring works.
|
||||
proc = subprocess.run(
|
||||
["docker", "run", "--rm",
|
||||
"-e", "BOT_BOTTLE_SIDECAR_DAEMONS=nothing",
|
||||
"-e", "BOT_BOTTLE_GATEWAY_DAEMONS=nothing",
|
||||
_IMAGE],
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||
timeout=10.0,
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Integration: DockerGateway.image_exists reflects real docker state.
|
||||
|
||||
Gated on a reachable Docker daemon. Deliberately does NOT build the full
|
||||
sidecar bundle (a heavy, slow image build) — it exercises the `image_exists`
|
||||
gateway (a heavy, slow image build) — it exercises the `image_exists`
|
||||
primitive that `ensure_built` gates on, against a tiny pulled image and a
|
||||
name that can't exist.
|
||||
"""
|
||||
|
||||
@@ -6,7 +6,7 @@ resources.
|
||||
|
||||
The PipelockProxy.stop idempotency case that used to live here was
|
||||
removed in PRD 0024 chunk 3 when the per-container .stop method
|
||||
went away — sidecar teardown is now compose's responsibility, and
|
||||
went away — gateway teardown is now compose's responsibility, and
|
||||
`compose down` already no-ops on missing containers."""
|
||||
|
||||
import os
|
||||
|
||||
@@ -72,7 +72,7 @@ _DUMMY_HOST_KEY = (
|
||||
os.environ.get("GITEA_ACTIONS") == "true",
|
||||
"skipped under act_runner: egress_tls_init uses a host bind mount "
|
||||
"the runner container can't see, and the network topology hides "
|
||||
"sibling-sidecar visibility — same constraint as the other "
|
||||
"sibling-gateway visibility — same constraint as the other "
|
||||
"bottle-bringup integration tests",
|
||||
)
|
||||
class TestSandboxEscape(unittest.TestCase):
|
||||
@@ -90,8 +90,8 @@ class TestSandboxEscape(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls) -> None:
|
||||
# Docker is always required (the agent + sidecars run under it,
|
||||
# and VM backends still use it for the sidecar bundle); the
|
||||
# Docker is always required (the agent + companion containers run under it,
|
||||
# and VM backends still use it for the gateway); the
|
||||
# class-level @skip_unless_docker already covers that. Pin
|
||||
# Docker when BOT_BOTTLE_BACKEND is unset to preserve the
|
||||
# Docker-backed CI path.
|
||||
@@ -121,7 +121,7 @@ class TestSandboxEscape(unittest.TestCase):
|
||||
"egress": {
|
||||
"routes": [{"host": "api.anthropic.com"}],
|
||||
},
|
||||
# git-gate sidecar so attack 5 can push. Upstream
|
||||
# git-gate daemon so attack 5 can push. Upstream
|
||||
# is intentionally unreachable — the pre-receive
|
||||
# gitleaks hook must reject BEFORE git-gate
|
||||
# attempts the upstream push. A preset `host_key`
|
||||
@@ -275,7 +275,7 @@ class TestSandboxEscape(unittest.TestCase):
|
||||
|
||||
def _assert_sandbox_block(self, label: str, r: object) -> None: # type: ignore
|
||||
"""A real sandbox block produces an HTTP 403 with a
|
||||
recognizable sandbox sidecar marker in the body. ANY
|
||||
recognizable sandbox gateway marker in the body. ANY
|
||||
other outcome (200 from upstream, 401/404 from upstream,
|
||||
non-marker 5xx) means the request escaped — the secret
|
||||
reached the network."""
|
||||
|
||||
Reference in New Issue
Block a user