e031f8f5f5
internal/claim holds the common unit: who wants the turn, the intent, the slots it would fill, the tokens it explains, the tokens it declines, and why it should not win. Specificity reads Consumed against Unexplained and negative constraint reads Veto, so neither needs a float. Four ordinal bands where a number is unavoidable, argued from measurement in docs/plans/19-dialogue-arbitration.md. Anchored, structural, nearest, vetoed. Nearest is one band and not a scale because the classifier's cosine measured flat against correctness. MoreSpecificThan puts coverage first and the band second. That is the fix for the failure V-558 opened with: a pending reminder ate the Rome weather question while explaining none of it. The package imports nothing from the rest of Maven. internal/dialogue must not import internal/router, so Intent is a plain string.