A product leader asked me last month whether AI code generation meant their small team could finally skip the second human review on new features. The answer is no. Without that verification step, AI-assisted builds create ownership debt that surfaces exactly when schedules, volunteers, or users depend on the output.
Charlie Munger’s latticework of mental models makes the reason plain. Munger treated every new tool as one more model that must be cross-checked against several others rather than trusted on its own. AI generation supplies one model: statistical likelihood of correct syntax and logic. It supplies none of the models that matter in deployed systems—edge-case user behavior, downstream schedule impact, or the cost of a single wrong assumption reaching a real person. Teams that treat the generated code as the finished article are using only one model and calling the job done.
Verification as the new core engineering skill
The skill that now separates reliable teams from fragile ones is not prompt writing. It is the ability to hold generated output at arm’s length and run it through a second, slower mental model before it touches anything that affects live data.
In practice this looks like a short, repeatable checklist applied to every AI-produced function or workflow. The checklist asks three questions the model cannot answer: What assumption did the generation make about user intent? What happens if that assumption is off by one hour or one volunteer? Who owns the correction if the assumption fails on a Thursday night before a weekend event?
Teams that embed this checklist into the pull-request template see the same pattern. The first few times feel slow. After the third or fourth instance the verification step becomes faster than the original generation because the reviewer already knows the failure modes that matter in their context. The latticework grows stronger with each pass, exactly as Munger described.
Without the checklist the team ships faster for a short window, then spends the next quarter answering support tickets that trace back to one unexamined assumption in a generated script. The net velocity gain disappears once real users are involved.
Why ministry contexts expose the gap faster than startups
Startups can sometimes absorb a broken feature behind a feature flag or a small beta cohort. Ministry tools rarely have that buffer. A single incorrect schedule generated for children’s ministry volunteers reaches dozens of families who have already rearranged their weekend. The cost is paid in trust and in actual attendance the following Sunday.
The same pattern appears in resource platforms that serve volunteer teachers. When AI suggests a lesson outline that misreads the age range or the available materials, the volunteer standing in the classroom at 9:15 a.m. discovers the problem first. There is no second deployment cycle before the damage is done.
Ministry environments also concentrate the downstream effects. One schedule error does not affect a single user; it affects every family that volunteer was meant to serve. The latticework required here must include models of calendar friction, volunteer availability, and parental expectation. Statistical likelihood alone is not enough.
The cost of skipping the second human check
The most expensive failures I have watched did not come from bad prompts. They came from teams that accepted the first clean-looking output and moved it into production because the generation looked complete. One generated scheduling rule assumed volunteers could be reassigned with twenty-four hours’ notice. The assumption was statistically common in the training data. It was operationally false for the actual volunteer pool.
Recovering from that single rule required three weeks of manual overrides, personal phone calls, and rebuilt trust with the volunteer coordinators who had relied on the tool. The generation step had taken minutes. The verification debt took far longer to clear.
Munger’s point was never that new tools are suspect. It was that every new tool adds a model that must be tested against the others already in use. When the second human check is removed, the latticework stays incomplete and the first real-world collision reveals the missing pieces at the worst possible moment.
Your Turn: Apply This Today
- Choose the single AI-assisted workflow your team ships most often this month and write a three-question verification checklist that must be answered in the pull request before merge.
- Run the last three pieces of generated code through that checklist and log the one assumption each piece made that was not visible in the output itself.
- Assign the next generated feature to two people: one to accept the generation, one to run the verification questions and record the time required.
- Compare the verification time against the time spent fixing the last production incident that traced to an unchecked generation; use the comparison to set a minimum review duration for the next sprint.
- Document one concrete failure mode the checklist caught this week and add it to the shared list the team reviews before every new AI-assisted build.
- Schedule a thirty-minute retro in two weeks to drop any checklist item that never surfaces a problem and replace it with the next observed failure pattern.
The verification layer is the difference between shipping quickly and owning the result when real schedules and real volunteers are involved. Two earlier posts that explore the same tension are “The Night the Voice Agent Forked Three Ministry Schedules at Once” and “The Question Every PM Gets After the First Agent Ships.”
I consult with product leaders and ministry technology teams on verification discipline, AI-assisted workflow design, and downstream ownership costs. Let’s talk.
Discover more from Dr. Joshua Read
Subscribe to get the latest posts sent to your email.

