#!/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 }; }