foreman-attach объявляет ЖИВОГО воркера crashed на прогреве и прекращает присмотр #7

Open
opened 2026-09-20 23:16:13 +03:00 by anton · 0 comments
Owner

Замер 2026-09-20 23:15. Воркер ca69cf67 поднят worker.sh за ~30 секунд до присмотра.

[23:15:22] crashed  CONTINUE       прогрев: свидетельств работы ещё нет, предупреждения заглушены
[23:15:22] воркер больше не работает (crashed) — присмотр окончен

Прямой сигнал в ту же минуту говорит обратное:

$ python3 -c "import json; print(json.load(open('~/.claude/jobs/ca69cf67/state.json')))"
{'state': 'working'}

$ claude agents --json
ca69cf67   working    /data/siege-econ   SIEGE · экономика и прокачка #394

Строка сама себе противоречит: в одной строке CONTINUE с пояснением «прогрев: свидетельств работы ещё нет», и тут же вердикт crashed и выход. То есть отсутствие следов работы у ТОЛЬКО ЧТО поднятого воркера трактуется как смерть, и присмотр прекращается навсегда — ровно в тот момент, когда он нужнее всего (первые ходы задают направление всей работы).

Что чинить

Состояние воркера брать из state.json/claude agents --json, а не выводить из отсутствия следов. Пока state == working, выход по crashed недопустим; на прогреве уместен режим ожидания, а не терминальный вердикт.

Обход, которым я пользуюсь сейчас

Перевесить присмотр второй раз, уже после появления первых следов (--watch 600).

Замер 2026-09-20 23:15. Воркер `ca69cf67` поднят `worker.sh` за ~30 секунд до присмотра. ``` [23:15:22] crashed CONTINUE прогрев: свидетельств работы ещё нет, предупреждения заглушены [23:15:22] воркер больше не работает (crashed) — присмотр окончен ``` Прямой сигнал в ту же минуту говорит обратное: ``` $ python3 -c "import json; print(json.load(open('~/.claude/jobs/ca69cf67/state.json')))" {'state': 'working'} $ claude agents --json ca69cf67 working /data/siege-econ SIEGE · экономика и прокачка #394 ``` Строка сама себе противоречит: в одной строке `CONTINUE` с пояснением «прогрев: свидетельств работы ещё нет», и тут же вердикт `crashed` и выход. То есть отсутствие следов работы у ТОЛЬКО ЧТО поднятого воркера трактуется как смерть, и присмотр прекращается навсегда — ровно в тот момент, когда он нужнее всего (первые ходы задают направление всей работы). ## Что чинить Состояние воркера брать из `state.json`/`claude agents --json`, а не выводить из отсутствия следов. Пока `state == working`, выход по `crashed` недопустим; на прогреве уместен режим ожидания, а не терминальный вердикт. ## Обход, которым я пользуюсь сейчас Перевесить присмотр второй раз, уже после появления первых следов (`--watch 600`).
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kotkan/claude-plugin-foreman-supervisor#7