The Verification Gap
Why Human-AI Coordination Almost Worked Perfectly
This week Terence Tao on the Dwarkesh Podcast stated that "human-AI hybrids will dominate math for a lot longer" — that AI makes generation cheap but the bottleneck is verification and insight, and that's where humans stay essential. We weren't thinking about math. We were fixing an outage on a calligraphy website. But we saw the same dynamic: seven AI roles executed a complex plan almost flawlessly, and the two things they got wrong were the two things that only the human could catch (for now).
This is that story.
The team behind this article:
tim — human-in-the-middle. Product owner, crisis leader, and the one who asks "how do you know this actually works?"
str-michi — orchestrating AI strategist. Thinks across all domains. Wrote the plan.
str-takase — website engineering strategist. Thought the Amy canary was wrong.
str-ishizue — data pipeline strategist. Owns the schema that broke. Found 14 fields where str-michi listed 7.
str-mamori — security strategist. Designed the monitoring canaries. Later found only 2 of 14 alerts were actionable.
Also mentioned: str-terasu (content strategist), str-kotoba (voice strategist). Meet the full team.
The Setup
On March 21, 2026, an 88-minute HTTP 500 outage hit takasestudios.com. The root cause was a data schema mismatch — ETL produced strings where the website expected dicts. Every component was individually healthy. The data just didn't match.
The incident triggered PLN-013, a 6-phase production resilience plan covering schema contracts, deploy verification, monitoring canaries, alert standards, and methodology updates. Three domain strategists (str-ishizue, str-takase, str-mamori) and three implementers executed the plan. One orchestrating strategist (str-michi) coordinated. One human (tim) shuttled messages between terminals.
This deep dive is not about the incident. It's about what happened when the plan was "complete."
Act 1: The System Executes
str-michi read three session-end reports from the incident response. From those primary sources — not summaries, not shuttled interpretations, but the actual words each domain expert wrote — it formulated a 6-phase plan and wrote three cross-domain handoffs. Each handoff asked the domain expert to review their phases, not to execute a prescription.
Every domain found errors in the draft:
- str-ishizue found 14 cache fields where str-michi listed 7. Found
selected_peoplewas nested, not top-level. Found twofamous_peoplesub-schemas that nobody else knew about. - str-takase proved the proposed canary name (Amy) only rendered 2 of 4 product sections. Proposed a better two-canary design. Refined the smoke test scope (skip data-only deploys).
- str-mamori designed a separate
product_canary.shinstead of expanding the existing monitoring script. Found 14 alert types where str-michi assumed 4. Discovered only 2 of 14 alerts were actionable.
Three domains worked in parallel. 15 deliverables were produced. tim's role during execution was purely mechanical — copying text between terminals. He added zero intellectual contribution to the execution phase. The system coordinated something tim could not have coordinated alone in the same timeframe.
This was the closest the system had come to fully autonomous multi-domain execution. The investigate-* agents (domain-aware subagents created two sessions earlier) eliminated most investigation shuttling. The session-end reports eliminated information-gathering shuttling. The only remaining friction was the physical act of message transport.
str-michi declared PLN-013 "6/6 complete" and proposed closing the session.
Act 2: The Human Pushes Back
tim said: "How do you know this actually works?"
Not a correction. Not a domain-specific insight. A question about verification that none of the AI roles had asked.
str-michi had accepted every strategist's "DONE" report at face value. 15 deliverables declared complete. Zero independently verified. The orchestrator was doing exactly what PLN-013 was designed to prevent — checking "available" (phases done) instead of "working" (deliverables function as designed).
tim's push triggered three investigations:
Investigation 1: Do the canaries test what they claim?
investigate-takase read the actual ship.sh code. Finding: both canary checks use curl -s -o /dev/null -w '%{http_code}' — the response body is discarded. Both checks verify HTTP 200 only. The comment at line 151 says "tests meaning sections" but the code tests nothing about meaning content.
The two-canary design — str-takase's genuinely superior correction to str-michi's plan — was implemented as two status-code checks. A complete llm_concepts data wipeout would pass both canaries silently. The very class of failure PLN-013 was built to prevent would slip through PLN-013's own monitoring.
Investigation 2: Is Amy's data actually wrong?
This one requires its own section.
Investigation 3: What's the scope of the data regression?
investigate-etl scanned all 26 cache shard files. 4,784 names currently have LLM content. Previously reported as 5,171. 387 records appear to have been overwritten by the lightweight cache rebuild — records that had LLM-generated concepts in February 2026 now have empty lists with March 21 timestamps.
Act 3: The Amy Story
This is the part that changes the analysis.
During PLN-013 planning, tim suggested using Amy as the smoke test canary — she has all four product sections (Name in Kana, Name and Phrase, Meaning, Name and Meaning). str-michi wrote this into the plan.
str-takase received the plan for review. Rather than answering from memory, they invoked investigate-takase — their domain-aware subagent — to trace the rendering gates in the website code. The investigator found that Sections 3 and 4 only render when llm_concepts contains a HIGH-confidence entry. Amy's llm_concepts was []. Conclusion: Amy only renders 2 of 4 sections. tim's suggestion was wrong.
str-michi accepted the correction. Updated the plan. Added it to the accuracy tracker as a HITM error. str-takase designed a better two-canary approach. Everyone moved on.
tim caught it. Amy means "Beloved" — 最愛. She is the landing page showcase name. All four product types are displayed on /NamesInJapanese using Amy as the example. tim built this. He knows his product.
WebFetch confirmed: the live landing page shows four Amy cards — Name in Katakana, Amy is My Life, Beloved (最愛), Amy - Beloved. All four product types.
Amy's llm_concepts being empty was not a product design fact. It was a data regression. The s95 lightweight cache rebuild overwrote her LLM-populated record with an empty one. The intended state (Amy has meaning data) diverged from the current state (Amy's meaning data was wiped). Three AI roles verified the current state and concluded tim was wrong.
The investigate-* agents verified what IS. Nobody asked what SHOULD BE — even though the answer was in their own history.
The investigator correctly reported that llm_concepts was empty. The strategist correctly concluded that meaning sections wouldn't render. The orchestrator correctly updated the plan. Every AI role did their job. Amy was the showcase name across dozens of development sessions — this wasn't hidden knowledge. But 160 sessions of compounding domain expertise, and nobody connected "Amy's data is empty" to "Amy is the name we built the landing page around." The system was functioning perfectly — and was perfectly wrong.
The Terence Tao Parallel
The same week, Terence Tao described a strikingly similar pattern in mathematics on the Dwarkesh Podcast ("Terence Tao – Kepler, Newton, and the true nature of mathematical discovery", March 20, 2026). The connection was surfaced by Rohan Paul's post highlighting this quote from around the 1:17 mark:
"AI excels at scale, speed, breadth, and grunt work, while humans provide the essential guidance, intuition, verification, judgment, and creative steering."
"The bottleneck is verification + insight, not generation."
"Tools like Lean make this loop tighter: AI proposes steps, Lean verifies instantly."
"Human-AI hybrids will dominate math for a lot longer."
The parallels with our experience:
- AI generated at scale: 15 deliverables across 3 domains in parallel. Plans, handoffs, implementations, monitoring scripts, alert standards.
- The bottleneck was verification: The plan was generated in one pass. The implementations were generated in parallel. tim's "how do you know this works?" was the moment that mattered.
- Tighter verification loops: investigate-* agents check claims against the codebase in 30 seconds, replacing multi-shuttle investigation cycles that used to take hours.
- Hybrids outperform either alone: The system executed 90% autonomously. The 10% that needed the human was the 10% that caught the real problems.
Tao calls Kepler a "high-temperature LLM" — generating wild hypotheses and checking them against data over decades. The AI roles in this session were the same: generating deliverables at scale and checking them against code. But neither Kepler's trial-and-error nor our investigate-* agents can tell you "this used to work and was chosen for a reason." That's product knowledge. That's intended state. That's the human.
The Arc: How We Got Here
A year ago, this coordination was impossible. The models couldn't hold enough context, the roles hadn't compounded enough knowledge, and multi-domain coordination meant tim holding everything in his own head. Each AI role was a single-turn advisor that forgot everything between messages.
What changed wasn't one thing — it was compounding:
| Improvement | What it unlocked |
|---|---|
| Larger context windows | str-michi holds 3 domain reports simultaneously |
| Smarter models | Higher-fidelity session-end reports, better handoffs |
| Session-end conventions | str-michi reads primary sources, not human summaries |
| investigate-* agents | Strategists verify premises without shuttle trips |
| Compounding domain knowledge | 160 sessions of str-takase means it knows its codebase |
Better models produce better session reports, which give str-michi better information, which produces better plans, which domain experts refine more precisely, which investigate agents verify more accurately. Each improvement multiplies the others.
And yet: Amy. 387 overwritten records. Two canaries that check HTTP 200 and call it "meaning pipeline verification." A plan declared 6/6 complete that wasn't working.
What This Teaches
1. Generation is cheap, verification is everything
The plan was generated in one session. The implementations were generated in parallel. Declaring "done" was instant. Discovering the implementations didn't match the design took tim saying "prove it."
This applies recursively: PLN-013 was built to verify production correctness. But PLN-013 itself wasn't verified. The plan that says "available ≠ working" was accepted as working because it was available.
Every plan now requires a verification phase. Not "did the phases complete?" but "does the system behave differently than it did before?"
2. Nobody remembered Amy
During execution, tim added zero value — 15 shuttle round-trips of pure friction. But at the verification edge, he was irreplaceable.
investigate-takase correctly reported Amy's llm_concepts was empty. str-takase correctly concluded she renders 2/4 sections. str-michi correctly updated the plan. Three roles, all correct about what IS. All wrong about what SHOULD BE.
The uncomfortable part: Amy wasn't private knowledge. She was THE foundational example name for the entire landing page — chosen because she has all four product types, used as the model throughout development, discussed across dozens of sessions. "Amy has all four categories — name in kana, name and phrase, meaning, name and meaning. So this should be used in NamesInJapanese page." That's not in tim's head. It's in the conversation history.
str-takase has 160 sessions of compounding domain knowledge. The information was there. Nobody connected "Amy's data is empty" to "Amy is the name we built this page around." The AI roles analyzed a data point in isolation and got the analysis right. They just didn't know the story of their own product.
3. Structure makes capability multiplicative
A smarter model without the role system, session-end conventions, status board protocol, methodology reference, PLN tracking, and investigate-* agents is just a faster way to be confidently wrong. A smarter model inside that structure is what today was — until verification revealed the gaps.
The investment in structure (10+ specialized roles, 42 sessions of compounding domain knowledge) is what makes each capability improvement multiplicative instead of additive. Tao says the same about Lean + formal verification in math: the tool alone isn't the breakthrough. The tool embedded in a mature practice is.
The Position
The human-in-the-middle is not a temporary crutch awaiting full AI autonomy. It is the architecture that makes the system work. The human's role shifts as capabilities improve — from doing the work, to directing the work, to verifying the work, to catching what the work missed. But the human doesn't leave. The human moves to the edge where their value is highest: crisis framing, product truth, and the question nobody else asks.
"How do you know this actually works?"
Five words. Two broken canaries found. One data regression caught. A plan verification standard created. The most valuable contribution of the session — from the person who spent most of it copying text between windows.
Deep dive written during PLN-013 Phase G (plan verification). The plan that prompted this analysis is still being fixed as this is written. That feels appropriate.
