Update SKILL.md files to clarify usage of phase and bug handling skills. Added details about agent waves in phase-work, phase-review, and side-work descriptions, emphasizing the shared merge lock and the distinction between different task types. Improved guidance on handling ongoing phases and the importance of not interfering with others' work.
ci / server (push) Failing after 3m39s
ci / client (push) Failing after 2s

This commit is contained in:
Leonid Pershin
2026-08-20 09:30:24 +03:00
parent 9665302948
commit 723f60a9ca
7 changed files with 415 additions and 17 deletions
+77
View File
@@ -0,0 +1,77 @@
# Зависания и грязный main
То, на чём оркестрация этой сессии ломалась. Не чинить «на всякий случай» —
только когда симптом совпал.
## Транскрипт
Живой агент, а в jsonl только стартовый user-промпт и «читаю скилл» /
`GetMcpTools` — он не работает. После `interrupt` снова одна строка —
повторный завис.
Не поллить транскрипты без повода: completion, «завис», «продолжай», тишина
заметно дольше обычной фазы.
## MCP
`GetMcpTools` на `cursor-app-control` и ожидание echovault держали агента
полчаса. В промпте: **не звать cursor-app-control**; memory — один раз или
без неё.
## Interrupt
Короткий промпт: не начинай с нуля, брось MCP, вот ветка и worktree, вот
незакоммиченное, которое нельзя выкинуть. Длинный повтор всего скилла снова
вешает.
Два зависания подряд — старый уступает («git не трогай»), новый — продолжение
того же 🔄: та же `phase/<N>-*` и тот же worktree, статус не сбрасывать.
Это не новый захват ⬜ и не второй автор. Пинает координатор, не отдельный агент.
## Worktree
Путь **вне** репозитория. `node_modules` копировать из основного дерева или
`npm ci`; копия worktree внутрь себя забивает диск. `git worktree remove
--force` после merge; каталог с битым `node_modules` может остаться — prune.
Первая сборка в 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.