Judge the residue sweeps on how much of the copy came back
@mjungnickel18 reports a third damage shape at the same broken residue (#25): after an empty answer and a one-character answer, 400 tokens of fluent Danish that open with a malformed <think> and invent a translation task, 2 of 1146 characters matching the document. bugb_sweep filed that as DIVERGED -- the same class of miss as the collapse-to-stop it had already been fixed for. The location is deterministic; the damage is not, so no rule keyed on a signature can work. bench/verbatim.py holds the rule both sweeps now use: a length floor, coverage -- the fraction of the answer's 40-character windows that occur in the source -- against the median of the other lengths in the same run, and a check for repetition the model added beyond what the source itself repeats. All three carry weight. The live residue-4 break returns ONE character, that character occurs in the document, and its coverage is therefore 1.00; a long enough loop clears the coverage bar the same way. It self-tests against all three shapes and against the healthy answers a signature rule condemns: a one-character divergence mid-copy, a one-line preamble, a document that repeats a line. venv/bin/python bench/verbatim.py residue_sweep now prints coverage and a sha on every row rather than only the broken ones -- "verbatim against the neighbours" cannot be applied to a log that prints only outliers, and with it the neighbours of a break are visibly byte-identical to each other. Its usage line names the file that exists. Also the arithmetic it leads with. Five DISTINCT samples miss one broken residue in 128 C(127,5)/C(128,5) = 123/128 = 96% of the time, not 82%; 82% is the figure for six broken residues. Corrected by @mjungnickel18, and it makes the point stronger: the five residues this repo sampled had a 3.9% chance of finding residue 4.
M
mhenrichsen committed
7cdca1ec66b57db69ac4253fafee484ddc45ee77
Parent: 2ae239f