# E2E Sandbox Framework — Runbook > **Migrated (2026-06-23):** `make e2e REPO=` and `python -m e2e_framework` now > delegate to **wise-validator** (`validate run`) + **sand-boxer** (`sandboxer > create`). The modules in this directory are **deprecated** and will be removed > after one release cycle. > > **Canonical runbooks:** > - [wise-validator: validate-compose-e2e](~/wise-validator/docs/runbooks/validate-compose-e2e.md) > - [sand-boxer: profile-compose-e2e](~/sand-boxer/docs/runbooks/profile-compose-e2e.md) --- ## Prerequisites **Workstation:** - `validate` on PATH (`cd ~/wise-validator && make install`) - `sandboxer` on PATH (`cd ~/sand-boxer && make install`) - `ssh` available (BatchMode; respects `~/.ssh/config`) - State Hub on `:8000` (optional, for result reporting) **Sandbox host (CoulombCore / sandboxer01):** - SSH key access - `podman-compose` or `docker compose` (`SANDBOXER_COMPOSE_CMD` on CoulombCore) - Sufficient disk for images (~4 GB for activity-core stack) ## First run ```bash export SANDBOXER_HOST=92.205.130.254 # CoulombCore; or RAILIANCE01_HOST (legacy) export SANDBOXER_COMPOSE_CMD=podman-compose # From the-custodian: make e2e REPO=activity-core ``` Output: sandbox create → health wait → tests → destroy. Exit 0 = pass, 1 = fail. ## Options ```bash make e2e REPO=activity-core KEEP=1 make e2e REPO=activity-core HOST=92.205.130.254 make e2e REPO=activity-core WORKSTREAM_ID= make e2e REPO=activity-core NO_REPORT=1 # Legacy entry (prints deprecation, delegates to validate run): python3 -m e2e_framework ~/activity-core --host $SANDBOXER_HOST ``` ## Adding a new repo 1. Create `/e2e/e2e.yml` (see wise-validator runbook for schema). 2. Add tests under `/e2e/tests/` or inline `test_command`. 3. Run: `make e2e REPO=` or `validate run ~/`. ## Verification ```bash ./scripts/verify-e2e-shim.sh ``` ## Troubleshooting **`validate` / `sandboxer` not found:** Install wise-validator and sand-boxer CLIs. **CoulombCore compose failures:** Set `SANDBOXER_COMPOSE_CMD=podman-compose`; use fully qualified image names in compose files. **Stale sandboxes:** `sandboxer inspect stale` / `sandboxer reap-stale --apply` ## Architecture (current) ``` make e2e REPO= → validate run → sandboxer create (sand-boxer) → health + test (wise-validator) → sandboxer destroy ``` Legacy `e2e-framework/sandbox.py` provision path is **not** used by `make e2e`.