diff --git a/workplans/CUST-WP-0028-e2e-sandbox-framework.md b/workplans/CUST-WP-0028-e2e-sandbox-framework.md index 3392911..9ca12a8 100644 --- a/workplans/CUST-WP-0028-e2e-sandbox-framework.md +++ b/workplans/CUST-WP-0028-e2e-sandbox-framework.md @@ -160,10 +160,52 @@ Write `e2e-framework/RUNBOOK.md`: Note: manual validation on railiance01 still needed (first live run). +--- + +### T06 — automated cron on railiance01 (no manual trigger) + +```task +id: CUST-WP-0028-T06 +status: cancelled +priority: high +state_hub_task_id: "038d8085-d2a7-446d-9aff-211afdd5c163" +``` + +The framework is a runner — it still needs a trigger. This task wires up the +automated scheduler so tests run without any manual invocation. + +**Deliverables:** + +1. `activity-core/e2e/run-on-host.sh` — standalone script that runs natively + on railiance01 (no SSH from workstation): + - `git pull --ff-only` + - `docker compose up -d` + - polls Temporal UI health (up to 180s) + - `uv run python e2e/tests/test_full_flow.py` + - `docker compose down -v` + - POSTs result to state-hub via ops-bridge tunnel (`http://127.0.0.1:18000`) + +2. `the-custodian/Makefile` — three new targets: + - `make e2e-cron-install REPO=activity-core` — SSHes to railiance01, installs + weekly cron (`13 3 * * 0`). Idempotent. + - `make e2e-cron-remove REPO=activity-core` — removes the entry + - `make e2e-cron-list` — shows installed e2e cron entries + +3. Run `make e2e-cron-install REPO=activity-core` to install on railiance01. + Verify: `make e2e-cron-list` shows the entry. + +**Why run-on-host.sh instead of the sandbox wrapper:** +The sandbox wrapper SSHes from the workstation into railiance01. For automated +runs the workstation may be off. `run-on-host.sh` runs directly on railiance01, +so the only dependency is a working ops-bridge tunnel for state-hub reporting +(which is separately monitored). + ## Done Criteria -- [ ] `make e2e REPO=activity-core` runs the full stack on railiance01, reports pass/fail -- [ ] Sandbox is always cleaned up (compose down + dir removed) unless `--keep` +- [ ] `make e2e REPO=activity-core` runs the full stack on railiance01 on demand +- [ ] `make e2e-cron-install REPO=activity-core` installs weekly automated run +- [ ] `make e2e-cron-list` confirms the cron entry on railiance01 +- [ ] Sandbox is always cleaned up (compose down) even on failure - [ ] Results posted to state-hub as progress event - [ ] activity-core T21 closed by the automated test script -- [ ] Any repo can opt in by adding `e2e/e2e.yml` +- [ ] Any repo can opt in by adding `e2e/e2e.yml` + `e2e/run-on-host.sh`