Two tools disagreed 67 times, and the checker was wrong in all 67
A verifier and the thing it verifies disagreed on 67 rows. My first instinct was that 67 is too many to be the checker's fault. It was the checker's fault, in all 67. INDEPENDENT_CLASS rows=67/67 recipe_reader=67 recipe_crate=0 row_drift=0 spec_drift=0 legacy_block=0 Before that line existed, the only thing I had was "67 disagreements", which is a count with no direction. It does not say which…
A verifier and the data it verified disagreed on 67 rows, according to the source. The verifier's fault was found to be the source of all 67 disagreements. Earlier versions only reported 67 disagreements, but the source details which side made the mistakes. The checker's private parser had two defects, causing it to overwrite the outer id with the inner id in some cases.
This led to the checker looking for the wrong row and finding mismatches that appeared to be data errors. The checker would produce false for rows it found but did not actually match. This internal collapse of "unknown" into "no" caused the checker to print disagreements without indicating which side produced each value. The fix was to use a single reader for configuration across the board, eliminating the checker's private parser.
After the fix, the checker and the data agreed on 131 out of 131 rows. The source suggests that having a second implementation of a parsing rule leads to subtle differences that are discovered as data problems rather than parser problems. It recommends using a single reader for configuration and having the checker parse the source itself as an additional source of truth.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.