Verifier field (exit-code oracle) + Attempts tracking + re-queue on fail. Design: OpeItcLoc03/workshop/.brainstorm/ralph-loop-inner-execution.md
2.6 KiB
ralph-loop-execution
When to Use
Когда задача содержит поле **Verifier:** <command> — это ralph-loop задача. Активируй этот скил в начале работы.
Algorithm
-
Прочитай задачу. Извлеки:
**Verifier:** <cmd>— oracle-команда**Attempts:** N— текущий счётчик (0 если отсутствует)**Max-Attempts:** M— потолок (если отсутствует, дефолт 5)
-
Выполни работу (code, tests, edits — всё что требует задача).
-
Запусти verifier:
<Verifier command> -
Если exit 0 → задача выполнена. Закрой задачу штатно (
**Status:** done). Готово. -
Если exit ≠ 0:
a. Вычисли новый номер попытки:
N_new = N + 1b. Если
N_new >= M(бюджет исчерпан):**Attempts:** <N_new> **Status:** failedДобавь в конец description:
## Attempt <N_new> (final) — budget exhausted <stdout+stderr verifier>Завершай сессию.
c. Иначе (попытки ещё есть):
**Attempts:** <N_new> **Status:** readyДобавь в конец description:
## Attempt <N_new> failure <stdout+stderr verifier> ### Что попробовал: <краткое резюме что делал в этой итерации>Завершай сессию. Поллер подберёт задачу заново.
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, даже если субъективно кажется что всё правильно.