Skip to content

Commit c2107f3

Browse files
committed
wip
1 parent 6a6f5f2 commit c2107f3

3 files changed

Lines changed: 644 additions & 0 deletions

File tree

TODO.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,39 @@ worker-testbed 2→3). До исправлений тест-сьют падал
164164
(generic T); гарды advisor — ask на незарегистрированном имени и дубль
165165
addAdvisor кидают
166166

167+
## 10-й заход: аудит src/client/* на уязвимые места (+11 тестов, багов не найдено)
168+
169+
Отдельно перечитаны все 10 файлов клиентского слоя (ClientAgent, ClientCompute,
170+
ClientHistory, ClientMCP, ClientOperator, ClientPolicy, ClientSession, ClientState,
171+
ClientStorage, ClientSwarm) с фокусом на уязвимые сценарии: рекурсивная навигация,
172+
гонки, обрывы tool-цепочек, битые ссылки на агентов, потеря целостности history.
173+
174+
### Новые тесты (11), сьют вырос до 143/143 — test/spec/resilience.test.mjs
175+
- приоритет навигационного тула: батч [data-тул, nav-тул] выполняет ТОЛЬКО навигацию
176+
(защита от двойных side-эффектов при навигации);
177+
- maxToolCalls=2 срезает батч из 3 вызовов до хвостовых [b,c];
178+
- дефолт CC_MAX_TOOL_CALLS=1: из батча в 2 вызова выполняется только последний
179+
(закреплено как контракт — важный неочевидный дефолт);
180+
- неизвестный тул от модели → placeholder-ответ + resque-flush истории (следующий
181+
комплишен не видит старых сообщений);
182+
- validate тула вернул false → placeholder, call не выполняется;
183+
- упавший тул (throw) останавливает цепочку: второй тул не вызывается, placeholder;
184+
- битая целостность history не доходит до модели: commitToolRequest без output
185+
(висячие tool_calls) и commitToolOutput с чужим toolId (сиротский tool-месседж)
186+
отфильтровываются в toArrayForAgent;
187+
- keepMessages=2: модель видит ровно хвостовое окно [echo:turn3, turn4];
188+
- два параллельных complete() сохраняют попарность вход→выход (busy-lock +
189+
FIFO-цепочка waitForOutput);
190+
- 10 параллельных setState-инкрементов без потерянных обновлений (queued dispatch);
191+
- битый активный агент ("ghost" не из свармы через CC_SWARM_DEFAULT_AGENT) →
192+
NoopAgent-фолбэк на defaultAgent, complete не падает и отвечает.
193+
194+
Замечания без фикса (by design): рекурсивная навигация уже покрыта в 8-м заходе
195+
(CC_THROW_WHEN_NAVIGATION_RECURSION, A↔B гасится flushMessage, CC_MAX_NESTED_EXECUTIONS);
196+
_navigationStack растёт при каждой навигации и не дедуплицируется — это история для
197+
navigationPop; тул, закоммитивший output без продолжения флоу (executeForce/emit),
198+
оставляет complete висеть — контракт библиотеки (страховка: warning через 15с).
199+
167200
## Найденные и исправленные баги (18 итого)
168201

169202
### 1. Дедлок waitForOutput при functools-kit v4 (причина 39 упавших тестов)

test/index.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import "./spec/infra.test.mjs";
2121
import "./spec/policy.test.mjs";
2222
import "./spec/adapters.test.mjs";
2323
import "./spec/outline.test.mjs";
24+
import "./spec/resilience.test.mjs";
2425

2526
run(import.meta.url, () => {
2627
console.log("All tests are finished");

0 commit comments

Comments
 (0)