refactor(sidecars): drop vestigial start/stop methods (PRD 0024 chunk 3)
test / unit (pull_request) Successful in 21s
test / integration (pull_request) Successful in 41s

Compose-up has owned per-container lifecycle since PRD 0018 ch3;
the .start() / .stop() methods on DockerPipelockProxy /
DockerEgress / DockerGitGate / DockerSupervise (and their
abstractmethod declarations in the four base ABCs) were already
documented as vestigial. With the bundle path in flight
(PRD 0024 ch2), they are truly dead — collapse to nothing.

Changes:
- Removed start/stop methods from the four DockerSidecar
  classes. Plan dataclasses, image/path constants,
  container-name helpers, and the .prepare() methods all stay
  (the renderer + apply path still need them).
- Removed the matching @abstractmethod declarations in the
  base ABCs so concrete subclasses don't have to stub them.
- launch.launch() and prepare.resolve_plan() no longer take
  proxy/git_gate/egress/supervise instance parameters. backend.py
  loses the four instance attributes it threaded through.
  prepare.resolve_plan() instantiates the four classes itself
  to call their .prepare() methods.
- Deleted four integration tests that only exercised the
  removed lifecycle: test_pipelock_sidecar_smoke,
  test_supervise_sidecar, test_git_gate_sidecar,
  test_git_gate_mirror.
- Dropped the .stop-idempotency case in test_orphan_cleanup;
  the network-cleanup cases stay (those test real production
  code).
- Marked test_pipelock_apply @skip pending chunk 4 — its
  bringup helper used .start; chunk 4 rewrites it with direct
  `docker run`.

Dockerfile deletion deferred to chunk 5 (when the bundle flag
default flips) — the legacy compose path still needs
Dockerfile.{egress,git-gate,supervise} until then.

Net: 708 lines removed, 80 added.

533 unit tests + 27 integration tests passing (5 skipped: the
chunk-4-pending case + existing GITEA_ACTIONS guards).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-27 01:01:10 -04:00
parent c37344608b
commit 539234f29e
18 changed files with 80 additions and 1758 deletions
+22 -8
View File
@@ -376,16 +376,30 @@ rewrite.
`bottle_plan_to_compose` to emit two services. Feature flag
it via env var. Update unit tests to assert on both shapes
(flag on vs off) during the migration window.
3. **Backend Python collapse.** Trim the four docker
sidecar modules, consolidate container-name helpers, update
orphan-cleanup logic to look for the bundle by name. Delete
old Dockerfiles.
4. **Integration test sweep.** Bring every integration test
that probes a four-container shape (`pipelock_container_name`,
`egress_container_name`, etc.) onto the bundle. Confirm
3. **Backend Python collapse.** Drop the vestigial per-container
`.start()` / `.stop()` methods from `DockerPipelockProxy`,
`DockerEgress`, `DockerGitGate`, `DockerSupervise` (and from
the ABCs in `claude_bottle/{pipelock,egress,git_gate,supervise}.py`).
These were already documented as vestigial in PRD 0018 ch3.
Strip vestigial sidecar-instance parameters from
`launch.launch()` and `prepare.resolve_plan()`. Delete the
integration tests that exclusively exercised those methods
(`test_pipelock_sidecar_smoke`, `test_supervise_sidecar`,
`test_git_gate_sidecar`, `test_git_gate_mirror`). Skip
`test_pipelock_apply` pending chunk 4 bringup rewrite.
Orphan cleanup already uses a prefix scan and catches the
bundle for free; no change needed. Dockerfile deletion is
deferred to chunk 5 — until the flag flips, the legacy path
still needs `Dockerfile.{egress,git-gate,supervise}` for
compose `build:`.
4. **Integration test sweep.** Rewrite `test_pipelock_apply`'s
bringup with direct `docker run` so the
`apply_allowlist_change` hot-reload retains coverage. Add
any bundle-specific integration smoke as needed. Confirm
PRD 0022 stays green.
5. **Docs + flag removal.** Flip the default, remove the
feature flag, update README + CLAUDE.md.
feature flag, delete `Dockerfile.{egress,git-gate,supervise}`,
update README + CLAUDE.md.
## Open questions