397777089e
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
1.9 KiB
JavaScript
31 lines
1.9 KiB
JavaScript
#!/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 };
|
|
}
|