experiment: narrow acknowledge behaviour eligibility

This commit is contained in:
2026-08-06 17:44:37 +01:00
parent eee8c6b1e4
commit 05d3d96014
2 changed files with 66 additions and 34 deletions
@@ -30,10 +30,29 @@ const PRIORITIES = {
continue: 5, // default
};
/* ── Acknowledge exclusion gate ─────────────────────────────── */
/**
* Deterministic exclusions for Acknowledge.
* Returns true when Acknowledge should not fire, even if its positive trigger matches.
* This gate qualifies the trigger; it does not replace it.
*/
function isAcknowledgeExcluded(assessment) {
// Phase-based exclusions: synthesising and concluding states call for Summarise, not Acknowledge
if (["synthesising", "concluding"].includes(assessment.phase.value)) return true;
// Progress-based exclusion: stalled progress calls for Pause, not Acknowledge
if (assessment.progress.value === "stalled") return true;
// Health-based exclusion: user_overloaded calls for Pause, not Acknowledge
if (assessment.conversationHealth.value === "user_overloaded") return true;
return false;
}
/* ── Selection rules (one rule per behaviour) ─────────────── */
function selectAcknowledge(assessment) {
if (assessment.conversationHealth.value === "healthy" && assessment.phase.confidence !== "low") {
// Apply exclusion gate before returning acknowledge
if (isAcknowledgeExcluded(assessment)) return null;
return {
behaviour: "acknowledge",
confidence: "medium",