Why this matters

The bug. == coerces operands. 0 == '', null == undefined, [] == false — every project has a war story about a == that quietly let through the wrong value. Once one bug rides on it, your defaults shift.

The fix. Use ===. ESLint's eqeqeq rule should be on in every TypeScript project. Reach for == only as the deliberate value == null shorthand, and even then opinions vary.

This puzzle's twist. The category isn't 'broken validation' — there's no validation here. The category is type_coercion: a code smell that doesn't break *this* function but signals a project that doesn't run a strict linter.

Review heuristic

Hunt the diff for implicit conversions: bare + between unknown types, == instead of ===, JS truthiness checks where a strict null-check was meant. Each one is an opportunity for the language to do something the author didn't intend.