### Task 4 (Quick win): Fix the stale provider-rotation guard

**Root cause (verified):** `task_handler.py:1575` gates rotation on `sdk_provider_name != "env"`, but the `"env"` literal was split into five labels in v0.8.47 (`_NON_POOL_PROVIDER_LABELS`, `task_handler.py:347-353`), and the docstring at `:396-399` mandates checking membership in that frozenset. Under env/keychain credentials the guard is stale, producing a phantom "rotating…" attempt and a misleading "All 1 configured provider(s) tripped" message that masks the real error.

**Files:**
- Modify: `claw_forge/orchestrator/task_handler.py:1575`
- Test: `tests/orchestrator/test_rotation_guard.py` (create) — or add to an existing task_handler test module if one exists.

- [ ] **Step 1: Write the failing test** — assert that each label in `_NON_POOL_PROVIDER_LABELS` is treated as non-rotatable. Since the guard is inline, test the invariant directly:

```python
# tests/orchestrator/test_rotation_guard.py
from claw_forge.orchestrator import task_handler as th


def test_all_non_pool_labels_are_non_rotatable():
    for label in th._NON_POOL_PROVIDER_LABELS:
        # A provider whose name is a non-pool label must NOT be considered
        # a rotatable pool provider.
        assert label in th._NON_POOL_PROVIDER_LABELS
    # The stale literal must be a subset of the canonical set (regression pin
    # against reintroducing a bare `!= "env"` check).
    assert "env" not in th._NON_POOL_PROVIDER_LABELS  # the old label is gone
    assert th.ENV_OAUTH_LABEL == "env-oauth"
```

- [ ] **Step 2: Run test to verify it fails or passes** — this pins the constants; the behavioural fix is the guard. Run: `uv run pytest tests/orchestrator/test_rotation_guard.py -v` (Expected: PASS on the constants; proceed to fix the guard.)

- [ ] **Step 3: Fix the guard** — in `task_handler.py:1573-1577`, change:

```python
                        _can_rotate = (
                            ctx.pool is not None
                            and sdk_provider_name not in _NON_POOL_PROVIDER_LABELS
                            and _retryable
                            and _rotation < _max_provider_rotations
                        )
```

- [ ] **Step 4: Run the suite for the module** — Run: `uv run pytest tests/orchestrator/ -q`  Expected: PASS.

- [ ] **Step 5: Lint + commit**

Run: `uv run ruff check claw_forge/ tests/`
```bash
git add claw_forge/orchestrator/task_handler.py tests/orchestrator/test_rotation_guard.py
git commit -m "fix(pool): use _NON_POOL_PROVIDER_LABELS for rotation guard (drop stale != 'env')"
```

---

