{"slug": "why-does-the-ai-always-leave-a-few-blocks-out", "title": "\"Why does the AI always leave a few blocks out?\"", "summary": "A developer identified a structural flaw in AI-generated deliverables: tools verify internal consistency but never check against a completeness baseline—a standard of what a given deliverable type should contain. The fix involves classifying the deliverable type and checking three layers: exists, reachable, and substantiated. The developer also describes design principles used in their own toolchain: capability-gated (not identity-gated) interactions, a public engine with private values injected at runtime, and a propose-don't-auto-advance flow.", "body_md": "您的瀏覽器不支援音檔播放。[下載音檔](https://assets.coffeeshooters.com/completeness-baseline-en/completeness-baseline-en.m4a)\n\nI asked an AI to build me a brand website. What came back had a header with two links, no \"About\" page at all, and an admin panel that worked — but with no button anywhere on the site that reached it. Backend 90, frontend 10.\n\nMy first guess was that it was being lazy. It wasn't. This is a *structural* problem — and the design principle that fixes it turned out to be one I'd reused, without noticing, **seven times** in my own toolchain.\n\nThis piece is about that principle. But first the \"leaves a few blocks out\" pain, because it has a name — and I suspect no one's named it.\n\nI went digging into why these tools (mine included) \"leave a few blocks out,\" and found they all verify the *same* thing:\n\n\"Is everything you\n\ndeclaredinternally consistent?\"\n\nand never:\n\n\"Does this\n\nkindof thing have what it'ssupposedto?\"\n\nThat gap is fatal. You ask for a brand site, mention two pages, and every check faithfully confirms those two pages link to each other — then passes green. It never asks \"a brand site is *supposed* to have an About page,\" because **nothing in the system holds a standard for what a brand site looks like.** Garbage in, *verified* garbage out.\n\nThat's the missing piece: a **completeness baseline** — *a standard of what a kind of deliverable should contain, that you check the real thing against.* Not internal consistency. Whether what's supposed to be there, is.\n\nI'm not the only one who felt this. In Thomson Reuters' write-up of Claude Forge, the author drops one line: *\"Passing tests is necessary, but not enough.\"* He **felt** the next layer — and didn't build it. Everyone's hit this pain; nobody grew the baseline.\n\nMy fix isn't \"ship a built-in website template\" — that would wreck the people building an API, an automation, a bot, anything non-web. It's an **axis**: first classify *what kind* of thing this is, and let each kind carry its own baseline of \"what complete looks like\":\n\nAnd completeness is three layers, not a yes/no: **exists → reachable → substantiated.** That last one gets dropped the most: an About page that needs a photo isn't done until there's an *image slot* on the page **and** a path in the backend to actually put a photo in it — not just a wall of text. Web completeness is only *one* cell on the axis — which is why \"you can't make 'web app' the only standard\" is satisfied **by design**, not by exception.\n\nThat's the completeness baseline.\n\nOnce that baseline was in, I kept building — wiring the pipeline so it runs from an idea (or an audit of an existing project) all the way to delivery. And I noticed something strange: **every piece I added was the same design decision wearing a different outfit.**\n\n**(1) Capability-gated, not identity-gated.**\n\nThe tool doesn't ask \"am I Claude?\" It asks \"is *this capability* present?\" — present, use the rich interaction; absent, degrade gracefully to plain text. Why it matters: the same thing runs on Claude Code, Cursor, or a bare LLM without breaking. **Detect the capability, not the identity.**\n\n**(2) Public engine, private values.**\n\nI open-source the engine, but keep my hard-won know-how — house conventions, a list of security traps, table names — in a *private* repo, **injected at runtime through that same capability gate**, never leaked. A public user without my private file just gets neutral defaults, completely undisturbed. My habits stay mine: not imposed, not exposed.\n\n**(3) Propose, don't auto-advance.**\n\nAt the end of each stage, the system *proactively offers* the next step — but the human decides. **What's automated is the flow, not the judgment.** I even refused to make \"auto-fix what the audit found\" fully automatic: first it triages (genuinely fix-now / deliberately deferred / already correct), the human picks which to fix, and for the dangerous ones (touching row-level security, permissions) it stops and shows you the SQL before applying anything.\n\nThe meta-observation is the real one: **these aren't three features. They're one design philosophy in three outfits.** I counted — from the questioning interface, to knowledge injection, to stage handoffs, to a security gate, to the audit-then-fix loop, to the hook that makes a handoff fire deterministically — I made the same decision **seven times.** When you catch yourself making the same design call a seventh time, that's not repetition. That's a **law**. Name it.\n\nI won't claim \"no one's done this,\" so I actually checked — English and Chinese. Honest verdict:\n\nSo my novelty isn't in any single point — it's in the **combination** plus the framing of seeing them as *one law*. I'm saying that conservatively, because someone's unindexed repo or private essay may well have done something similar. But three rounds of searching didn't surface it, which is itself a signal.\n\nDesign aside, the rest is cost. I ran a **single controlled experiment** (N=1, labeled honestly): same spec, same decomposition rules, same prompt — **only the model changed.** Sonnet vs Opus, one decomposition each.\n\nThose are precisely the errors that *propagate downstream* into integration breaks. So this N=1 (I'll take it to N≥3 before treating it as hard evidence) says: **the cheap model carries the mechanical bulk — 80% there and cheaper; the expensive model is worth its cost only on the \"refuse to invent, catch the contradiction\" judgment that prevents propagation.** Which is exactly why my pipeline assigns a model *per goal* and keeps an *independent audit* as a safety net.\n\nNot \"the expensive one is better.\" It's: **automate the flow, tier the judgment, and keep a human gate where errors propagate.**\n\nIf I positioned this as \"an AI pipeline from idea to delivery,\" it'd get compared to Devin, v0, bolt — and I'm not in their quadrant. They sell magic, one-click, hands-off. I built the **opposite**:\n\nFor a one-person shop or small team, this isn't \"a stronger agent.\" It's a **moat design pattern**: open-source the engine, accumulate your private know-how, take it to clients — instead of betting everything on a black box you can't see into.\n\nThe most practical thing I learned: **you don't stop \"leaving a few blocks out\" with a stronger model or more magic.** You stop it by (1) giving the system a *completeness baseline* that knows what a kind of thing should look like, (2) baking your conventions into reusable parts, and (3) automating the flow but never the judgment.\n\nAnd — when you catch yourself making the same design decision a seventh time, stop. That's not you repeating yourself. That's a law you've been using but never said out loud. Name it. It might be exactly the thing everyone else is using too, and nobody's said yet.\n\n*Source: a June 2026 conversation that grew from \"the header only has two links\" to \"a portable security gate + end-to-end handoffs.\" The design decisions are recorded as ADR-001 through 007 in the public repos' DESIGN-NOTES. Prior-art and the full A/B data are kept separately.*", "url": "https://wpnews.pro/news/why-does-the-ai-always-leave-a-few-blocks-out", "canonical_source": "https://dev.to/dexterlung/why-does-the-ai-always-leave-a-few-blocks-out-48ab", "published_at": "2026-07-21 13:57:23+00:00", "updated_at": "2026-07-21 14:21:40.559971+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-tools", "developer-tools"], "entities": ["Thomson Reuters", "Claude Forge"], "alternates": {"html": "https://wpnews.pro/news/why-does-the-ai-always-leave-a-few-blocks-out", "markdown": "https://wpnews.pro/news/why-does-the-ai-always-leave-a-few-blocks-out.md", "text": "https://wpnews.pro/news/why-does-the-ai-always-leave-a-few-blocks-out.txt", "jsonld": "https://wpnews.pro/news/why-does-the-ai-always-leave-a-few-blocks-out.jsonld"}}