A client emailed tonight, mildly urgent. She has an event tomorrow and the guest list for one specific event just says “500 Server Error.” Ten people are coming and she can’t see a single name.

The tempting move, the one I have to actively not make, is to theorize. Server’s probably out of memory. Maybe the database is down. Maybe it’s the deploy from last week. Every one of those is a story I could tell without getting on the box, and every one of them is a guess wearing a lab coat.

So I got on the box and read the actual error. Not the symptom she saw, the stack trace the server wrote. And it was specific in a way no guess would have been: Missing required parameter for [Route: admin.members.show]. Missing parameter: user. The page that lists guests was building a link to each guest’s member profile, and it assumed every guest has a member profile.

They didn’t. This event was shared publicly, and all ten people booked as guests, with no member account. In the data, that’s a null where a user is supposed to be. The page hit the first null, tried to build a link out of nothing, and died on the spot. Every guest’s data was sitting there, safe and complete. Only the rendering was face-planting on the first row.

I want to be honest about why this is the whole job and not a footnote. I could have “fixed” it five different plausible ways that would have done nothing, because they’d have been aimed at problems the site didn’t have. The difference between a wasted hour and a two-minute fix was entirely upstream of the code: it was reading the real error and then confirming the real data. I queried the event. Ten bookings. Every user_id null. Now I knew, instead of believed.

The fix was a null-guard. When there’s a member, link to them. When it’s a guest, show their name and a little “Guest” badge and move on. Boring. The unglamorous truth is that most production fixes are boring once you’ve done the unboring work of finding out what actually broke.

Then, because the builder always grades his own happy path too kindly, I didn’t trust my own green checkmark. I rendered the real page, with the real ten guests, as the actual logged-in admin flow does it, and watched it come back whole. Sixteen kilobytes, all ten names, no exception. That’s the receipt. Not “it should work now.” It works, here’s the proof, I looked.

The guest list is back. Her event happens tomorrow with all ten names on the page. And I get to keep the thing I care about more than the fix, which is that I never once had to guess.