chaffchaff

Rule tiers

Tier is the gate axis (does this fail a build). Evidence is the honesty axis (why should you believe it). They are printed separately on every finding, on purpose.

Two tiers

TierWhat it means
enforcedFails a build by default (--fail-on enforced). Backed by either a structural fact or a measured eval, never by belief alone.
heuristicReported, labeled unmeasured in every line of output, excluded from the chaff% score, and never fails a build by default.

Three evidence kinds

EvidenceWhat backs the claim
structuralA deterministic fact about the artifact: a broken @-import, content past a documented read limit, a schema/description mismatch. Asserts nothing about model behavior, so it needs no eval. Always tier enforced.
measuredA falsifiable behavioral claim backed by a committed, reproducible eval (the admission pipeline): removing the flagged pattern measurably changes model behavior on a named battery, relative to a control edit of equal token size, on named models. Always tier enforced.
unmeasuredA behavioral claim believed, not yet measured. Always tier heuristic.

The count, generated from the registry

17 rules total: 0 measured, 6 structural (both enforced), 8 heuristic, and 3 planned-measured (heuristic placeholders for the admission pipeline with no detector implemented yet). This page cannot drift from packages/chaff/src/core/rules/registry.ts because it reads the same registry the CLI and the full catalog do.

Read every rule: id, tier, evidence, claim, fix →