feat(secretary): шаг из модельной сути с фолбэком, step не персистится

Task 4/5 плана. stop-hook берёт updated.step (модельная суть хода) как essence
для buildStepLine; нет step — прежний firstSentence-фолбэк. step срезается из
updated перед записью (транзитное, в protocol.json не оседает). Доказано
smoke-прогоном; свод секретаря зелёный.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-23 09:30:14 +03:00
parent 124dbeef95
commit b846c0c57f
+5 -1
View File
@@ -100,8 +100,12 @@ async function main() {
// Шаг хода (Слой 1) ведёт хук детерминированно — пишется ВСЕГДА; протокол к записи через merge
// (при срыве reconcile категории заморожены, но перечень ходов не получает дыр).
// Модельная суть хода (если reconcile её вернул) — иначе фолбэк firstSentence в buildStepLine.
const modelStep = (updated && updated.step) || null;
if (updated && 'step' in updated) delete updated.step; // транзитное — в protocol.json не сохраняем
const step = { turn, session,
text: buildStepLine({ turn, user: ex.user, assistant: ex.assistant, actions: (ex.actions || []).map((a) => a.tool) }) };
text: buildStepLine({ turn, user: ex.user, assistant: ex.assistant,
actions: (ex.actions || []).map((a) => a.tool), essence: modelStep }) };
const toWrite = mergeTurnIntoProtocol({ proto, updated, step });
// Вернуть реестр СВ из снимка (reconcile его НЕ владеет) — иначе он перенумеровывает СВ.