feat(orchestrator): slice 13c(viii) — agent-only consolidated compose render #378

Closed
didericis-claude wants to merge 1 commits from orchestrator-agent-compose into orchestrator-gateway-ca
Collaborator

Sub-slice of slice 13c — the last testable piece before the launch.py cut-over. Renders the agent container for consolidated mode.

The per-bottle model rendered a compose project with the agent + a sidecar bundle on two per-bottle networks. Consolidated has no sidecars — one shared gateway serves everyone — so consolidated_agent_compose renders just the agent:

  • attached to the external shared gateway network at the orchestrator-allocated pinned IP (networks: {<gateway>: {ipv4_address: source_ip}});
  • HTTPS_PROXY → http://<gateway_ip>:9099;
  • NO_PROXY includes the gateway address so git-http + supervise (also on the gateway) bypass the egress proxy and are reached directly;
  • no depends_on/sidecars.

Pure — takes the launch-time LaunchContext values — so it's unit-testable without docker.

Verification

pyright 0 errors, pylint 9.83/10 (new files 10.00), unit suite green (the 13 test_sidecar_init /bin/sleep errors are pre-existing NixOS-local noise). Tests: only the agent service, pinned on the external network, proxy/NO_PROXY at the gateway, no sidecar dep, runsc runtime, bare forwarded-env names.

Stacked on #377.

🤖 Generated with Claude Code

Sub-slice of **slice 13c** — the last testable piece before the launch.py cut-over. Renders the agent container for consolidated mode. The per-bottle model rendered a compose project with the agent **+ a sidecar bundle** on two per-bottle networks. Consolidated has no sidecars — one shared gateway serves everyone — so `consolidated_agent_compose` renders **just the agent**: - attached to the **external** shared gateway network at the orchestrator-allocated **pinned IP** (`networks: {<gateway>: {ipv4_address: source_ip}}`); - `HTTPS_PROXY → http://<gateway_ip>:9099`; - `NO_PROXY` includes the gateway address so git-http + supervise (also on the gateway) bypass the egress proxy and are reached directly; - no `depends_on`/sidecars. Pure — takes the launch-time `LaunchContext` values — so it's unit-testable without docker. ### Verification pyright **0 errors**, pylint **9.83/10** (new files 10.00), unit suite green (the 13 `test_sidecar_init` `/bin/sleep` errors are pre-existing NixOS-local noise). Tests: only the agent service, pinned on the external network, proxy/NO_PROXY at the gateway, no sidecar dep, runsc runtime, bare forwarded-env names. Stacked on #377. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
didericis-claude added 1 commit 2026-07-13 22:17:14 -04:00
feat(orchestrator): slice 13c(viii) — agent-only consolidated compose render
test / unit (pull_request) Successful in 1m2s
test / integration (pull_request) Successful in 20s
test / coverage (pull_request) Successful in 1m18s
lint / lint (push) Successful in 2m8s
eab7d6ccbc
The per-bottle model rendered a compose project with the agent + a sidecar
bundle on two per-bottle networks. Consolidated has no sidecars — one shared
gateway serves everyone — so this renders JUST the agent, attached to the
external shared gateway network at the orchestrator-allocated pinned IP, and
pointed at the gateway's address for egress.

- consolidated_agent_compose(plan, *, gateway_ip, source_ip, network):
  agent service only; networks {<gateway>: {ipv4_address: source_ip}} on the
  external gateway network; HTTPS_PROXY -> http://<gateway_ip>:9099; NO_PROXY
  includes the gateway address so git-http + supervise (also on the gateway)
  bypass the proxy and are reached directly. No depends_on/sidecars.
- Pure (takes the launch-time LaunchContext values), so it's unit-testable
  without docker.

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:46 -04:00
Some checks are pending
test / unit (pull_request) Successful in 1m2s
test / integration (pull_request) Successful in 20s
test / coverage (pull_request) Successful in 1m18s
lint / lint (push) Successful in 2m8s

Pull request closed

Sign in to join this conversation.