`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 новых на выбор дерева).