## Problem
Task 80ffb77b (`quest engine CI`) was abandoned 29 times with `rate_limit_retries_exhausted:glm`. Two compounding bugs in `/home/ubuntu/Orchestra/orchestra/`:
**Bug 1 — agent.py**: When an agent exhausts rate_limit retries (~line 1596), `release_task_lease(final_status="open")` is called but `_stall_skip_providers` in the task payload is NOT updated. Only the zero-commit stall path (`_requeue_stalled_task`) updates this field. So the same GLM provider re-claims the task every cycle.
**Bug 2 — services.py `_find_matching`**: The scheduler checks `canonical_provider in skip` where `canonical_provider = resolve_model_name(provider)`. For GLM-5, `provider="glm-5"` and `resolve_model_name("glm-5")="glm-5"` (no alias going the other direction). A manually-added `"glm"` in `_stall_skip_providers` does NOT block GLM-5 workers (`"glm-5" not in ["glm"]`).
## Fix
**agent.py** (~line 1596, before `release_task_lease`): After opening `_rl_conn`, read the task payload, add both `self._auth_provider` (e.g. "glm") AND `resolve_model_name(self._current_model)` (e.g. "glm-5") to `_stall_skip_providers` with timestamps in `_stall_skip_at`, then UPDATE tasks SET payload_json=? WHERE id=?, then commit BEFORE calling `release_task_lease`.
**services.py `_find_matching`** (~line 6325): After the `canonical_provider in skip` check, add:
```python
from orchestra.models import MODEL_REGISTRY
_api = MODEL_REGISTRY.get(canonical_provider, {}).get("api", "")
if _api and _api in skip:
continue
```
This lets `"glm"` in skip_list block ALL glm-* model variants.
## Also fix task 80ffb77b directly
Update its payload: `_stall_skip_providers` should include `["glm", "glm-5", "glm-4.5", "glm-4-plus"]`. Then run `orchestra reset 80ffb77b-8391-493c-8644-37086c8e2e3c`.
## Acceptance criteria
- [ ] agent.py rate_limit exhaustion block updates `_stall_skip_providers` with both auth_provider and model name
- [ ] services.py `_find_matching` checks API group name against skip list
- [ ] Task 80ffb77b payload updated with all GLM model names
- [ ] Task 80ffb77b resets and completes on a non-GLM provider
Completion Notes
Verified bug still in main: agent.py line ~1596 lacks _stall_skip_providers update on rate_limit exhaustion; services.py _find_matching doesn't check API group in skip list. Cannot implement fix - /home/ubuntu/Orchestra is mounted read-only. Escalated as P1 (task 2492d7ac-b874-4ed9-aed5-02b16e70b173) with full details for Orchestra agent with write access.