This clean stage should drop both "x" rows, but one of them survives: removing from a list WHILE iterating it shifts the remaining items and skips the next row. It also mutates its input — a stage should return a new list. Fix clean() to filter with a comprehension.
The break is on line 4 — but read the whole snippet first.