feat(orchestrator): slice 13c(iv) — gateway joins a shared network #374

Closed
didericis-claude wants to merge 1 commits from orchestrator-gateway-network into orchestrator-client
Collaborator

Sub-slice of slice 13c. The consolidated gateway ran on the default bridge; the model needs it on a dedicated user-defined network every agent bottle also joins — agents reach the gateway's egress / git-http / supervise ports by its address (no host port publishing), and the source IP the gateway attributes by is the bottle's address on this network.

Changes

  • GATEWAY_NETWORK = "bot-bottle-gateway"; DockerGateway gains a network param.
  • ensure_running now ensures the network exists (idempotent create, tolerating a concurrent already exists) then runs with --network.
  • Docker picks the subnet; the launcher reads it back (the 13c source-IP allocator, #372) to hand each bottle a pinned address.

Verification

pyright 0 errors, pylint 9.83/10 (changed files 10.00), unit suite green (the 13 test_sidecar_init /bin/sleep errors are pre-existing NixOS-local noise). New tests: runs on the shared network, creates-when-missing, reuses-when-present.

Stacked on #373.

🤖 Generated with Claude Code

Sub-slice of **slice 13c**. The consolidated gateway ran on the default bridge; the model needs it on a **dedicated user-defined network** every agent bottle also joins — agents reach the gateway's egress / git-http / supervise ports by its address (no host port publishing), and the source IP the gateway attributes by is the bottle's address on this network. ### Changes - `GATEWAY_NETWORK = "bot-bottle-gateway"`; `DockerGateway` gains a `network` param. - `ensure_running` now **ensures the network exists** (idempotent create, tolerating a concurrent `already exists`) then runs with `--network`. - Docker picks the subnet; the launcher reads it back (the 13c source-IP allocator, #372) to hand each bottle a pinned address. ### Verification pyright **0 errors**, pylint **9.83/10** (changed files 10.00), unit suite green (the 13 `test_sidecar_init` `/bin/sleep` errors are pre-existing NixOS-local noise). New tests: runs on the shared network, creates-when-missing, reuses-when-present. Stacked on #373. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
didericis-claude added 1 commit 2026-07-13 21:55:12 -04:00
feat(orchestrator): slice 13c(iv) — gateway joins a shared network
test / unit (pull_request) Successful in 1m5s
test / integration (pull_request) Successful in 22s
test / coverage (pull_request) Successful in 1m15s
lint / lint (push) Successful in 2m18s
c5ba33bf0a
The consolidated gateway ran on the default bridge; the model needs it on a
dedicated user-defined network that every agent bottle also joins, reaching
the gateway's egress / git-http / supervise ports by its address (no host
port publishing) — and the source IP the gateway attributes by is the
bottle's address on this network.

- GATEWAY_NETWORK = "bot-bottle-gateway"; DockerGateway gains a `network`
  param.
- ensure_running now ensures the network exists (idempotent create,
  tolerating a concurrent 'already exists') then runs with `--network`.
- Docker picks the subnet; the launcher reads it back (13c source-IP
  allocator) to hand each bottle a pinned address.

pyright 0 errors; pylint 9.83/10; unit suite green (the 13 test_sidecar_init
/bin/sleep errors are pre-existing NixOS-local noise).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WBMWTEtQdJ4W5UrWuLHCck
Author
Collaborator

Collapsed into the single stack PR #380 (per-host orchestrator, PRD 0070). Closing this slice PR; review + merge happens on #380.

Collapsed into the single stack PR #380 (per-host orchestrator, PRD 0070). Closing this slice PR; review + merge happens on #380.
didericis-claude closed this pull request 2026-07-14 00:57:41 -04:00
Some checks are pending
test / unit (pull_request) Successful in 1m5s
test / integration (pull_request) Successful in 22s
test / coverage (pull_request) Successful in 1m15s
lint / lint (push) Successful in 2m18s

Pull request closed

Sign in to join this conversation.