Three stamped tuning forks, a resonance tube, and a number printed everywhere: the speed of sound is 343 m/s. You measure, a few readings land a little far out, you drop them, and the answer comes to exactly 343. The trouble is that the room is not at 20 degrees.
Why this experiment is different
The twelve experiments before this one were about the instrument or about the model: a ruler that is badly graduated, a rail with an imperceptible tilt, a formula that only holds over a range, a fit that will not report a wrong model. This is the first time the hidden variable is the experimenter.
Nobody cheats here. Discarding outliers is a standard and usually correct thing to do. The only question is where the reference for discarding comes from. As long as that reference is the number you expect, the scissors cut in one direction only, and the result is an answer that is both further from the truth and more confident looking, because the error bar shrinks after the cut.
This sits exactly one step past the flywheel experiment. There the procedure threw away the contrary evidence and you never knew. Here you throw it away yourself, in perfectly good faith. And as in the spring constant experiment, two sound routes reach two different numbers, except this time you built the difference.
The way out is a thermometer. Once the reference switches from the printed 343 to a value computed from the actual room temperature, the same discard rule is no longer one sided. The general lesson follows: the criterion for rejecting data has to come from the data, not from the answer you have in mind.
The Python section makes this quantitative. It sweeps the discard threshold from strict to loose, twice: once anchored on the textbook value and once on the median of your own readings. Same scissors; only the aim changes. In one case the answer walks several metres per second, in the other it barely moves.
