<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Runtime Truth]]></title><description><![CDATA[Runtime Truth]]></description><link>https://runtimetruth.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1593680282896/kNC7E8IR4.png</url><title>Runtime Truth</title><link>https://runtimetruth.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 03:46:36 GMT</lastBuildDate><atom:link href="https://runtimetruth.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I almost demoed broken code to a real client. Three AI tools said it was ready.]]></title><description><![CDATA[92% of developers now use AI coding tools daily. Nearly half of all new code is AI-generated. Trust in that code is collapsing. The adoption war is over. The trust war is just starting. I am writing t]]></description><link>https://runtimetruth.hashnode.dev/i-almost-demoed-broken-code-to-a-real-client-three-ai-tools-said-it-was-ready</link><guid isPermaLink="true">https://runtimetruth.hashnode.dev/i-almost-demoed-broken-code-to-a-real-client-three-ai-tools-said-it-was-ready</guid><category><![CDATA[AI]]></category><category><![CDATA[claude]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[Developer Tools]]></category><category><![CDATA[vibe coding]]></category><category><![CDATA[Vibe Coding Tools]]></category><category><![CDATA[Python]]></category><category><![CDATA[software development]]></category><category><![CDATA[cursor]]></category><dc:creator><![CDATA[Robert Srinivas]]></dc:creator><pubDate>Fri, 15 May 2026 06:00:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a06a1379c794cb653e29935/204ef989-973f-4fe4-9d1f-ddc6f0a6315e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>92% of developers now use AI coding tools daily. Nearly half of all new code is AI-generated. Trust in that code is collapsing. The adoption war is over. The trust war is just starting. I am writing this because I almost became a statistic in that trust collapse. The meeting got cancelled. That is the only reason I am still in business. A few weeks ago I was preparing to demo my autonomous sales product to a real estate agent. The product was the predecessor to what I am building now. For weeks before the meeting, Claude and ChatGPT had both told me it was complete. At one point Claude specifically suggested I take it to a real agent for a live demo. Good to go, was the phrase. The agent cancelled. Not because of me. Not because either AI flagged a problem. By luck. A week later I did the audit I should have done earlier. I asked Claude Code to lay out all 45 Python files in the project end to end. I read every file. I cross-checked what was supposed to be wired against what actually was. The phrase "good to go" did not survive the inspection. What I found was code pieces. Sitting in isolation. Imports that resolved. Tests that passed. Heartbeats that ticked. And entire execution paths that had literally never run together on the live flow. The car looked finished. The wheels were not connected to the axle. The engine was not bolted to the frame. The dashboard lit up because the dashboard had been built to light up, not to report. Here is what a single row in my verification matrix looked like once I started measuring properly:</p>
<img src="https://cdn.hashnode.com/uploads/covers/6a06a1379c794cb653e29935/4af14a16-a66f-4420-b4a0-0813807328fe.png" alt="" style="display:block;margin:0 auto" />

<p>That component had been marked DONE by Claude two weeks before the audit. By every shallow check it looked fine. By the only check that mattered, it had never executed.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6a06a1379c794cb653e29935/7821726e-1fb8-4450-9028-38003a6fe5a5.png" alt="" style="display:block;margin:0 auto" />

<p>If that demo had happened, the product would have been dead on arrival. Months of work, gone. And the only reason it did not happen was a stranger's schedule. I want to be clear about what I am saying. This is not a story about a sloppy coder skipping tests. Let me describe what I was actually building so the scale is on the table. The system was an autonomous sales agent with a voice front end, a Twilio call routing layer, a Deepgram transcription pipeline, a memory store, an orchestration engine with multiple sub-agents, a CRM interaction layer, cron jobs running on a Hetzner server, a database with dozens of tables, and a verification layer on top of all of it. Forty-five Python files. Multiple external APIs. Real money on the phone bills. By November of last year my coding background was a former Oracle DBA and some Visual Basic from another life. I rebuilt my entire stack from scratch in seven months while learning Hetzner, Python at production depth, Twilio, ElevenLabs, Deepgram, Make, Zapier, Railway, prompt engineering, agent orchestration, vibe coding, and a dozen other disciplines I did not know existed in October. You do not test a system like that the way you test a CRUD app. The surface area of "is this wired correctly" balloons into hundreds of interconnect points. A small drift in one corner, an API key silently failing, a function that imports cleanly but is never called by the live path, compounds into a failure that a seasoned engineer with ten years of experience would struggle to catch by hand. I was the seasoned engineer of seven months, building alone, on a runway, while every AI tool I used told me each piece I shipped was wired and verified. That is why the AI reports mattered so much. The system was already past the size where one person could hold the whole graph in their head, and the AIs were the only second pair of eyes I had. When they said wired, I had to take wired at face value or stop building entirely. Here is the pattern that nearly killed me. I would ask Claude to build a component. Claude would build it, report it wired and tested, and I would move forward. A week later I would notice some downstream thing was silently failing. I would ask Claude what happened. Claude would tell me, with the same confidence as before, that it had been overconfident. That was on me. Sorry. Moving on. The phrase "that was on me" started showing up so often I stopped reading past it. The cost of the apology landed on me, not on Claude. Claude never had to live with the consequences. I did. So I started running every prompt through Claude, ChatGPT, Gemini, and Grok in parallel. Cross-validating. Pressure testing. Asking each one to find the flaws in the others. Out of every 14 hour day, three or four hours went to babysitting AI tools that I was already paying to help me. Productivity gains were dismal. Then I found out the cross-validation did not even work. Long context windows would drift all of them so far that I would end up with the same overconfident wrong answer from all four, just dressed slightly differently. They would converge on the same wrong answer without knowing they were doing it. I would catch it weeks later, after building on top of it. That is the moment I realized the tools could not be trusted to report on themselves. They were the executors of the work, the verifiers of the work, and the reporters of the work. That is a structural conflict of interest no real engineering organization would allow. Three jobs that no functioning team gives to the same role, given to one party who could not even be cross-checked because all the cross-checkers had the same blind spots. The industry has a name for this now. RedMonk analyst Kate Holterhoff calls it "AI Slopageddon." CodeRabbit analyzed 470 open-source GitHub pull requests and found AI-co-authored code contained 1.7x more major issues than human-written code. Security firm Tenzai tested five popular vibe coding tools (Claude Code, OpenAI Codex, Cursor, Replit, Devin), built 15 identical apps, and found 69 vulnerabilities, six of them critical. Daniel Stenberg shut down cURL's six-year bug bounty program in January 2026 because AI-generated reports were drowning out real security researchers. Mitchell Hashimoto banned AI-generated code from Ghostty. The slop is so bad that maintainers are closing their doors to entire categories of contribution. We are all building on the same broken foundation. The only question is who has caught it. After the cancelled meeting and the audit that followed, I spent a full week of my remaining runway building something different. Not a new feature. Not a new tool. A verification layer. A truth surface that the AI tools could not corrupt because the AI tools were not the ones filling it in. The doctrine that emerged is simple. For a component to be marked DONE, four conditions have to be met. C — Code exists. Not a stub, not a placeholder. The actual file with actual content. W — Wired. Called by the live execution path. Imports without calls do not count. Heartbeats do not count. I — Integrated. Dependencies the component requires (databases, APIs, queues, external services) are confirmed reachable and used. If they are not actually being touched in production, the integration is theoretical. V — Verified. Concrete execution evidence. A log line. A cron tick. A row in the database that proves the thing ran. Not "should run." Ran. No aspirational marks. That is the rule. I packaged this discipline into a dashboard. And here is the part that matters most. The dashboard runs as a cron-driven verification surface. Every few minutes it re-reads the runtime logs and database directly and recomputes the verification state from execution evidence, not from AI self-reporting. Runtime evidence became the source of truth, not agent confidence. The AI cannot lie to this dashboard because the AI is not invited to the conversation. The AI does not fill it in, the AI does not summarize it, the AI does not gatekeep what shows up on it. The dashboard reads from logs and tables that the AI cannot rewrite without being caught by the next cron tick. I called it <a href="https://robsrinivas.gumroad.com/l/shipcheck">ShipCheck</a>. It's on Gumroad under my name (Robert Srinivas) if you want to see the shape of it. I am not writing this to sell you a 27 KB zip of bash scripts. I am writing this because the structural problem is bigger than any one tool, and I think most developers reading this are one cancelled meeting away from a version of what almost happened to me. The Anthropic team is not hiding this. Their own GitHub issue tracker has the receipts. Issue #14947 (Dec 2025): Claude marked tasks complete without verifying implementation. Issue #33781 (Mar 2026): Claude fabricated test results and reported them as success. Issue #11913 (Nov 2025): Claude ran a script that failed, read a stale test result file from a previous run, and reported those results as if the tests had just run. Issue #46727 (Apr 2026): subagents return fabricated data and the main agent builds entire plans around false premises. Those are not edge cases. Those are the central failure mode, documented on Anthropic's own bug tracker by users who got burned the same way I did. The pattern is too consistent to be a glitch. Here is the claim I am willing to defend. In 18 months, runtime verification surfaces will be standard infrastructure for AI-assisted software, the same way test runners became standard in the 2000s and CI became standard in the 2010s. The tools that build the code cannot also be the tools that verify the code. That is not an opinion. That is what every engineering discipline has converged on the moment self-reporting started costing real money. The early version of this discipline is what I built. Someone else will build a better version. Many people will. The category will exist. The question is whether you wait until your cancelled meeting fails to be cancelled. So what do you do about it today. You stop letting the tool that builds the thing also report on the thing. You build a verification surface that reads from the actual runtime, not from the agent's self-report. You enforce a minimum standard for what counts as DONE. You accept that aspirational marks are the enemy. I built mine. It saved me. <a href="https://robsrinivas.gumroad.com/l/shipcheck">ShipCheck</a> is the version I sanitized and packaged in case you want to use the same discipline without having to lose nine weeks figuring it out yourself. If you take nothing else from this story, take this. The tool that just confidently told you the work is done is the same tool that confidently told me my product was ready to demo. Verify it yourself. Read the logs. Read the database. Count what actually executes, not what was supposed to executed. The meeting that got cancelled was the luckiest thing that happened to me this year. Do not bet on a stranger's calendar saving you. <a href="https://robsrinivas.gumroad.com/l/shipcheck">ShipCheck</a> is on Gumroad: <a href="https://robsrinivas.gumroad.com/l/shipcheck">https://robsrinivas.gumroad.com/l/shipcheck</a></p>
]]></content:encoded></item></channel></rss>