0.2.3: судить дерево, ГДЕ воркер работает, а не откуда его запустили (#3) #4

Merged
anton merged 1 commits from fix/worktree-from-live-process-3 into main 2026-09-20 20:34:29 +03:00

1 Commits

Author SHA1 Message Date
Claude Code (Gitea Agent) 5f5967c9f9 0.2.3: судить дерево, ГДЕ воркер работает, а не откуда его запустили (#3)
`state.json` отдаёт стартовый `cwd`, и у сессии, ушедшей в worktree, он указывает на чужой
чекаут. Замер на живом флоте 20.09: воркер 6ce5556f по state.json «жил» в
/home/a/pro/siege-lines, а на деле в /data/siege-arena364 — судья читал коммиты не того
дерева и печатал «коммиты: нет» в момент, когда воркер открывал PR. Коммиты от базовой точки
кладутся в наблюдение именно потому, что у наших агентов `git diff` пуст на правильной работе,
так что промах по дереву ослепляет судью ровно на здоровом воркере.

Дерево берётся из /proc живой сессии (её транскрипт `<sessionId>.jsonl` в cmdline), state.json
остаётся фолбэком для умершего воркера.

Вторая ловушка, оплаченная тем же замером: транскрипт стоит в cmdline ДВУХ процессов, и первой
идёт обёртка `claude bg-pty-host`, чей cwd — каталог ЗАПУСКА (871379 → /home/a/pro/siege-lines
против 871385 → /data/siege-arena364). Обёртки пропускаются.

Пруф: та же команда до правки печатала «дерево /home/a/pro/siege-lines», после —
«дерево /data/siege-arena364»; 23 теста зелёные (4 новых на выбор дерева).
2026-09-20 20:34:09 +03:00