Files
h-school/.claude/skills/phase-orch/hangs.md
T

5.1 KiB
Raw Blame History

Зависания и грязный main

То, на чём оркестрация этой сессии ломалась. Не чинить «на всякий случай» — только когда симптом совпал.

Транскрипт

Живой агент, а в jsonl только стартовый user-промпт и «читаю скилл» / GetMcpTools — он не работает. После interrupt снова одна строка — повторный завис.

Не поллить транскрипты без повода: completion, «завис», «продолжай», тишина заметно дольше обычной фазы.

MCP

GetMcpTools на cursor-app-control и ожидание echovault держали агента полчаса. В промпте: не открывай этот сервер через GetMcpTools. После готового worktree можно один move_agent_to_root с известной схемой { rootPath }. Memory — один раз или без неё.

Interrupt

Короткий промпт: не начинай с нуля, брось MCP, вот ветка и worktree, вот незакоммиченное, которое нельзя выкинуть. Длинный повтор всего скилла снова вешает.

Два зависания подряд — старый уступает («git не трогай»), новый — продолжение того же 🔄: та же phase/<N>-* и тот же worktree, статус не сбрасывать. Это не новый захват и не второй автор. Пинает координатор, не отдельный агент.

Worktree

Путь вне репозитория. node_modules копировать из основного дерева или npm ci; копия worktree внутрь себя забивает диск. git worktree remove --force после merge; каталог с битым node_modules может остаться — prune.

Первая сборка в worktree длинная — это не завис.

git branch phase/<N>-<slug> без main берёт HEAD IDE. Коммит 🔄 «в основном дереве» на bug/… оставляет заявку в истории бага, а worktree иногда так и не появляется — агент пишет фазу в дерево пользователя. Лечение: interrupt, не checkout, worktree add на уже существующую phase/<N>-*, 🔄 донести на main через wt-claim-main. Коммиты на bug/… не revert. Правки после захвата — только абсолютным путём worktree.

Грязный main и чужая ветка

merge/lock общий: фаза, баг, ревью, side. Чужой — ждать, не снимать.

phase-work не сливает, если status --porcelain непустой. Портреты, SwarmUI, чужой WIP на карточке блокировали 32/36/35/38/41.

Основное дерево должно уже стоять на main. Если пользователь на bug/… — не checkout main: снимешь ему IDE. Merge-агент стоп, слот ждёт.

Пользователь сказал «сливай» — stash -u своим сообщением, merge, pop только его. Pop с конфликтом: stash живёт, дерево не калечить.

Не stash’ать файлы, которые пишет сосед в основном дереве (он обязан быть в worktree; если нет — merge-агент стоп и отчёт «main занят»).

DLL и тесты хоста

MSB3021/3027: процесс пользователя держит HSchool.Server. Не убивать. В отчёте: AppHost на main не пересобрался. Весь dotnet test solution из-за этого не гонять — и так не надо: только проект из Testing policy.

После фазы сессии хостовые тесты логинятся в ResetAsync. Два игрока — две куки, не общий jar. OpenSchool / часы от гостя не доходят — сокет-тесты открывают школу владельцем.

Клиент

npm test на Windows иногда падает в параллели — --maxWorkers=1. vitest зелёный при мёртвом tsc: лови npm run build (дубликат ключа, неиспользуемый import).

Pause / last wave

Пауза: WIP-коммит на ветке фазы, worktree оставить, main не трогать. Продолжение: resume с хешем WIP, не git branch заново.

«Остановись» / «закончи с этими»: текущие доводят merge, координатор не открывает следующую по completion.