DEFAULT_MIN_TOKENS

const val DEFAULT_MIN_TOKENS: Int = 4

Content words needed on both sides before a single difference is treated as a swap.

Four, and M51 is the argument for why it stays there rather than the argument that put it there. Read from the mechanism, the floor is a crossover: the guard's evidence is the agreeing part, which grows with every extra word, against the risk that the one differing position is a synonym somebody chose rather than a term somebody swapped, which does not shrink with length. The mechanism fixes that a floor must exist and that two is below it, because one agreeing word is no agreement at all. It does not fix three against four: where the two quantities cross is an empirical property of the language, not a structural one.

So it was measured, on splits nobody here can tune. Three buys 77 more catches on the external question split and pays 63 genuine paraphrases for them, and costs the tuned split a paraphrase it has never lost. A trade at a ratio of 1.2 to 1 is the boundary case this project already declined once at 2.9 to 1: it moves cost from the wrong-answer column to the API-bill column, and those two are not interchangeable. SubstitutionFloorTest carries the ladder and docs/MEASUREMENTS.md publishes it.