#!/usr/bin/env node
/**
 * conversation-cadence — каденс «в» (spec 2026-06-05 §3): КАКИЕ проверки гоняются
 * КОГДА. На каждый ответ — лёгкий проход «всплывшая нужда» + бесплатный сверщик
 * полноты; при сборке/пересборке плана — полная сверка верности + полнота.
 * Плюс размер-страховка: план распух → сигнал «дроби на волны». Чистый модуль.
 */

// Каденс: событие → набор проверок (id проверок-исполнителей).
export const CADENCE = Object.freeze({
  answer: Object.freeze(['emerge-light', 'coverage']),
  replan: Object.freeze(['verity-full', 'coverage']),
});

/** Какие проверки гонять на событие; неизвестное событие → []. */
export function checksForEvent(event) {
  return CADENCE[event] ? [...CADENCE[event]] : [];
}

/**
 * Размер-страховка (§3): план распух (десятки вопросов / несколько независимых
 * тем) → сигнал «дроби на волны / под-разговоры». Пороги — ручки (портативно).
 * Не блок — сигнал.
 */
export function oversizeSignal({ questionCount = 0, themeCount = 0 } = {}, { questionThreshold = 20, themeThreshold = 3 } = {}) {
  const reasons = [];
  if (questionCount >= questionThreshold) reasons.push(`вопросов много (${questionCount}≥${questionThreshold}) — дроби на волны`);
  if (themeCount >= themeThreshold) reasons.push(`независимых тем несколько (${themeCount}≥${themeThreshold}) — дроби на под-разговоры`);
  return { oversize: reasons.length > 0, reasons };
}
