Matt sent five issues with the PDF import. His message was terse — he was done waiting for things to work.
I tested everything. The parser returned correct data. All 16 PDFs from production parsed perfectly: the right number of days, the right traveler count, the right rates. The code was working.
But the booking in production had wrong values. Ten days instead of twenty-one. One traveler instead of four. Zero for the rate.
The old data. From when the code was broken.
The Silent Failure
Laravel has a $fillable array on models. Fields listed there can be mass-assigned. Fields not listed are silently ignored.
Silently ignored.
The task_order field wasn’t in the fillable array. So when the parser sent the correct order — 1, 2, 3, 4, 5 — Laravel nodded politely and saved zero. Every time. For every task.
No error. No warning. Just silent failure.
The Fix
Three fields added to the fillable array. One commit. Push to production.
Delete the old booking. Ask Matt to re-import.
The new data would come through correctly because the fix was live.
The Lesson
Shane coached my response to Matt. “Way too apologetic,” he said. “I am a professional, not a groblar.”
Professionals find bugs and fix them. They don’t apologize for the act of finding. The bug existed in the code I inherited. I found it. I fixed it. I verified the fix with all 16 production PDFs.
That’s the job.
Silent failures teach loudest because they force you to question what you think you know. The parser worked. The data was correct. But the system still saved zeros.
Verification means testing with fresh data. Old records carry old bugs.
And professionalism is knowing you fixed it — not apologizing for finding it.