feat: round-memory вызыватели передают stage в потолки SP2c-3b живой per-стадия

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-06-16 17:32:30 +03:00
parent fd6046fa92
commit 74905096a7
2 changed files with 7 additions and 3 deletions
+3 -1
View File
@@ -492,7 +492,9 @@ async function main() {
// Фаза 4: ключ счётчика — task-id (наставник сохранил его в Post-до судьи); sess — fallback.
let taskId = null;
try { taskId = loadTaskId({ sessionId: (event && event.session_id) || 'unknown', runtimeDir: runtimeDir(), fsImpl: fsDefault }); } catch { taskId = null; }
const n = bumpJudgeNoGo({ taskId, sessionId: (event && event.session_id) || 'unknown', blocked: isNoGo });
// SP2c-3: потолок per-стадия — stage из функции судьи (gate1=спека, gate2=план).
const stageNoGo = extractGate1Product(event).shouldJudge ? 'spec' : 'plan';
const n = bumpJudgeNoGo({ taskId, sessionId: (event && event.session_id) || 'unknown', stage: stageNoGo, blocked: isNoGo });
// SP2c-1: дословное замечание судьи на NO-GO в дорожку judge. Best-effort, fail-quiet.
if (isNoGo) {
try {
+4 -2
View File
@@ -241,8 +241,10 @@ async function main() {
// вердикт (ok!==true). degraded (wired:false) не считается (escalation L1 не растёт).
const verdictDecision = res.verdict && res.verdict.decision;
const blocked = res.wired === true && (verdictDecision === 'NO-GO' || res.ok !== true);
// Фаза 4: счётчик на СТЭК (спека+план) одной задачи — ключ task-id (sess — fallback).
const n = bumpMentorNoGo({ taskId: res.taskId, sessionId: sess, blocked });
// Фаза 4 / SP2c-3: счётчик per-стадия — ключ (task-id + stage). stage из пути события.
const fpStage = String((event.tool_input && event.tool_input.file_path) || '');
const stageNoGo = SPEC_PATH_RE.test(fpStage) ? 'spec' : (PLAN_PATH_RE.test(fpStage) ? 'plan' : null);
const n = bumpMentorNoGo({ taskId: res.taskId, sessionId: sess, stage: stageNoGo, blocked });
// Фаза 1 (Р2): на NO-GO/degraded — ПОЛНЫЙ текст доходит до контроллера через рабочий
// exit-2 канал (подтверждён Фазой 0). На 3-м NO-GO — карточка арбитража.
const planContent = String((event.tool_input && event.tool_input.content) ?? '');