#!/usr/bin/env node
/**
 * mentor-nogo-counter — счётчик подряд идущих NO-GO наставника (L1), зеркало
 * bumpJudgeNoGo. blocked=true → +1; allow → сброс 0. Порог 3 → арбитраж (round-control C-12).
 */
import fsDefault from 'node:fs';
import { join } from 'node:path';
import { runtimeDir } from './enforce-hook-helpers.mjs';

export const MENTOR_ESCALATE_AFTER = 3;

export function bumpMentorNoGo({ taskId, sessionId, blocked, fsImpl = fsDefault, dir = runtimeDir() } = {}) {
  // Фаза 4: счётчик на СТЭК (спека+план) одной задачи — ключ task-id (sessionId — fallback
  // backward-compat). Две правки в одной сессии → независимые счётчики.
  const safe = String(taskId || sessionId || 'unknown').replace(/[^a-zA-Z0-9_-]/g, '_');
  const path = join(dir, `mentor-nogo-${safe}.json`);
  let count = 0;
  try { count = (JSON.parse(fsImpl.readFileSync(path, 'utf8')).count) || 0; } catch { count = 0; }
  const next = blocked ? count + 1 : 0;
  try { fsImpl.mkdirSync(dir, { recursive: true }); fsImpl.writeFileSync(path, JSON.stringify({ count: next })); } catch { /* best-effort */ }
  return next;
}
