Day 18/90: Error handling with types
The useful shift today was making runtime truth match the types. I kept the lesson tied to three checks: validate unknown input at the edge and convert it to a typed shape once, write tests around the boundary that is easiest to misunderstand, not just the easiest function to call, and make failures explain which contract broke so debugging starts in the right place.…
