# ralph-loop-execution ## When to Use Когда задача содержит поле `**Verifier:** ` — это ralph-loop задача. Активируй этот скил в начале работы. ## Algorithm 1. Прочитай задачу. Извлеки: - `**Verifier:** ` — oracle-команда - `**Attempts:** N` — текущий счётчик (0 если отсутствует) - `**Max-Attempts:** M` — потолок (если отсутствует, дефолт 5) 2. Выполни работу (code, tests, edits — всё что требует задача). 3. Запусти verifier: ``` ``` 4. **Если exit 0** → задача выполнена. Закрой задачу штатно (`**Status:** done`). Готово. 5. **Если exit ≠ 0**: a. Вычисли новый номер попытки: `N_new = N + 1` b. Если `N_new >= M` (бюджет исчерпан): ``` **Attempts:** **Status:** failed ``` Добавь в конец description: ```markdown ## Attempt (final) — budget exhausted ``` Завершай сессию. c. Иначе (попытки ещё есть): ``` **Attempts:** **Status:** ready ``` Добавь в конец description: ```markdown ## Attempt failure ### Что попробовал: <краткое резюме что делал в этой итерации> ``` Завершай сессию. Поллер подберёт задачу заново. ## Reading Attempt History Когда клеймишь ralph-loop задачу с `**Attempts:** N > 0` — прочитай все секции `## Attempt K failure` в description. Это память о том, что уже не сработало. Не повторяй те же подходы. ## Interactive Mode (/loop) В интерактивном `/loop` контексте: тот же алгоритм, но цикл внутренний (контекстное окно сохраняется). Запускай verifier в конце каждой итерации. `Max-Attempts` работает так же. ## Key Invariant Verifier — единственный критерий готовности. Не закрывай задачу без `exit 0` от verifier, даже если субъективно кажется что всё правильно.