scripts/run-benchmark-campaign.py now resolves --campaign-root through validate_campaign_root before disk checks, plan archival, environment snapshots, or cell execution. Paths equal to or below tempfile.gettempdir() fail with actionable guidance because completed results, failed-attempt logs, and resume markers would be lost after a crash or reboot.
Add --allow-temporary-campaign-root as an explicit disposable-test override. Durable campaign behavior remains unchanged: atomic fsynced writes, immutable cell identities, completion hashes, retained attempts, stale-lock recovery, process-tree termination, disk guards, audit manifests, and resumable cells.
tests/test_benchmark_campaign.py covers default rejection, explicit disposable opt-in, and a repository .worktrees campaign path. Campaign tests passed 14/14; combined benchmark/campaign/report tests passed 80/80; Ruff and git diff --check passed.
Signed-off-by: Andrew Hundt <ATHundt@gmail.com>