- T10 smoke passed on CoulombCore (sand-boxer self-deploy, sandbox 4e542c51) - Add e2e smoke compose, scripts/smoke-compose-e2e.sh, make smoke-remote - Support SANDBOXER_COMPOSE_CMD for podman-compose hosts - FastAPI v0 stub at sandboxer.api.app; migration gaps doc - Mark workplan finished (all 10 tasks done)
Extensions
Backend adapters for sandbox establishment. Each extension is declared in
ext.<name>.yaml and implements provision, wait_ready, and teardown.
ext.compose-ssh
Self-hosted extension migrated from the-custodian/e2e-framework/.
Provision: SSH to configured host → isolated directory per sandbox id → rsync
repo → docker compose up with unique project name.
wait_ready: Confirms compose services are running (docker compose ps). Does
not run HTTP health checks — wise-validator owns that.
teardown: compose down + remove remote directory (idempotent).
Compose runtime: defaults to docker compose. On CoulombCore set
SANDBOXER_COMPOSE_CMD=podman-compose.
Compatibility note for make e2e callers
Legacy make e2e REPO=<repo> runs provision + health + tests + teardown in one
step. sand-boxer splits responsibilities:
| Step | Owner |
|---|---|
| rsync + compose up/down | sand-boxer (ext.compose-ssh) |
| health checks + test_command | wise-validator (SAND-WP-0003) |
Interim workflow: sandboxer create --profile profile.compose-e2e --input repo=...
then run validation separately until wise-validator migration lands.