Skip to content

5. Continuous score, not a boolean

Context

The primary consumer of a Report is a retry loop: a model generates a text, the checker rejects it, and the violations are fed back for another attempt.

Decision

score is a float in [0, 1], monotone in violation count, and satisfied is exactly score == 1.0 for every procedure without exception.

Consequences

A caller can tell whether a text missed by one word or by fifty, which is what makes an automatic retry loop converge instead of thrashing. The strict equivalence between satisfied and score == 1.0 gives one invariant that can be property-tested across the entire registry, so a procedure cannot quietly disagree with the convention. An empty text is vacuously satisfied for restriction procedures and unsatisfied at score 0.0 for pangram; each procedure records this in its golden fixtures.