It ran on your data. Production data misbehaves.
A research pipeline runs on the dataset it was written against — curated, cleaned, one-shaped. Production input is none of those things: malformed files, missing fields, encodings nobody chose. Research code meets its first malformed file and stops; production code logs it, skips it, and keeps going. That difference is error handling, and papers never require it.