0.167.18

Fixed

  • pendingInjections терялись при teardown актора — результаты субагентов исчезали ( — P1). cleanupSubagents (defer каждого хода) выполнял flushPendingBatchLocked() и следующей же строкой обнулял a.pendingInjections = nil — результат асинхронного субагента, завершившегося после финального ответа родителя (контракт P1-5 «терминальность финального ответа», runner.go: результат остаётся в очереди actor’а и доезжает через injectionCallback следующего хода), добавленный flush’ем в срез терялся безвозвратно: пользователь не получал результат делегированной работы, агент не знал, что задача выполнена, и мог запустить её повторно. Фикс: pendingInjections не обнуляются teardown’ом — чистятся только pendingBatch (после flush пуст) и счётчик activeSubagents; результат субагента, пережившего cancel (WaitForChildren-таймаут) и завершившегося между ходами, доезжает до модели следующего хода. Тесты: положительные — батч переживает teardown и доступен injectionCallback следующего хода; результат, добавленный ПОСЛЕ teardown, доезжает (эквивалент debounce-flush); отрицательные — пустая очередь при teardown без паники/idempotent, превышение subagentBatchCap — cap+1 результатов доезжают без потерь; TestActor_CleanupSubagents перепинен на новый контракт (раньше фиксировал баговое обнуление).