# Experiment 1 repeat A — saturated rolling deploy

**Purpose:** replicate experiment 1 to measure variance in the ~84 s
DEPLOYMENT_BLOCKED latency observed with n=1.

**Run date/time (UTC):** 2026-04-17T17:18:55Z

**Setup:**
- desired_count = 3 (matches original exp 1)
- EXPIRES_MINUTES = 5 (matches original exp 1; not yet bumped to prod 30)
- WORK_DURATION_MS = 200, IDLE_MS = 50 (saturated profile)
- Trigger via `force_deploy.sh`

**Results:**
- Time from trigger to first `enable_failed`: **94.5 s**
- Spread of 3 `enable_failed` events: **160 ms**
- Convergence (trigger → steady state): **190 s**
- All 3 old tasks exited via `DEPLOYMENT_BLOCKED` + `worker_exit` (clean)
- SIGTERM events: **0**

**Capture issue & fix:**
The first data pull was incomplete: `tail_logs.sh` using `aws logs tail --follow`
was killed immediately after the service reached COMPLETED state, but
CloudWatch ingestion lag meant the final `enable_failed` and `worker_exit`
events hadn't propagated yet. The initial `worker-logs.jsonl` showed all
workers' last event as mid-cycle (`work_start`, `idle_start`, etc.), making
it look like they were silently killed.

Re-queried CloudWatch via `filter-log-events` for the full window and
recovered all 6 exit events. Saved as `worker-logs-complete.jsonl`.

For repeat B and scale=5, switched to a wrapped script
(`run_saturated_deploy.sh`) that waits 45 s for CloudWatch ingestion
before pulling logs via `filter-log-events` — single reliable capture.

## Raw data

- `worker-logs.jsonl` — partial capture from tail_logs (truncated at
  convergence, missing exit events)
- `worker-logs-complete.jsonl` — authoritative, pulled via
  `filter-log-events` after a 30 s catch-up window
- `service-state.jsonl`, `service-events.jsonl`, `task-state.jsonl` — state
  snapshots from `tail_state.sh`
- `trigger.txt` — trigger timestamp
