78 lines
4.3 KiB
Markdown
78 lines
4.3 KiB
Markdown
# Зависания и грязный 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.
|