<?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" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[The Intent Layer]]></title><description><![CDATA[Where Software Takes Shape in the Age of Agents]]></description><link>https://intentlayer.to</link><image><url>https://substackcdn.com/image/fetch/$s_!7ub1!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd87631d4-edee-4114-9a09-c4a7976c10b6_1254x1254.png</url><title>The Intent Layer</title><link>https://intentlayer.to</link></image><generator>Substack</generator><lastBuildDate>Thu, 04 Jun 2026 18:25:38 GMT</lastBuildDate><atom:link href="https://intentlayer.to/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Matt Trifiro]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[intentlayerthe@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[intentlayerthe@substack.com]]></itunes:email><itunes:name><![CDATA[Matt Trifiro]]></itunes:name></itunes:owner><itunes:author><![CDATA[Matt Trifiro]]></itunes:author><googleplay:owner><![CDATA[intentlayerthe@substack.com]]></googleplay:owner><googleplay:email><![CDATA[intentlayerthe@substack.com]]></googleplay:email><googleplay:author><![CDATA[Matt Trifiro]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[When Code Looks Right but Isn’t]]></title><description><![CDATA[Why human review is poorly suited to catching agent misunderstandings]]></description><link>https://intentlayer.to/p/when-code-looks-right-but-isnt</link><guid isPermaLink="false">https://intentlayer.to/p/when-code-looks-right-but-isnt</guid><dc:creator><![CDATA[Matt Trifiro]]></dc:creator><pubDate>Thu, 04 Jun 2026 17:27:31 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gzx7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gzx7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gzx7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!gzx7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!gzx7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!gzx7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gzx7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6120504,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://intentlayer.to/i/200646098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gzx7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 424w, https://substackcdn.com/image/fetch/$s_!gzx7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 848w, https://substackcdn.com/image/fetch/$s_!gzx7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 1272w, https://substackcdn.com/image/fetch/$s_!gzx7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd186c9f6-e508-4f98-85a7-f9e515fbb7ff_2560x1440.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Agent-generated code looks right. It reads well. It often works on the first try.</p><p>But &#8220;looks right&#8221; is not sufficient for production software. The question is not whether the code is readable or plausible. The question is whether it can be trusted.</p><h2>Built for human mistakes</h2><p>Code review worked because humans wrote code, and humans could review it. A senior engineer could glance at a diff and spot the bug&#8212;the off-by-one error, the missing null check, the race condition. Code review was archaeology. You were reading the bones of someone&#8217;s thinking, and your job was to catch what they&#8217;d missed or misunderstood.</p><p>This works because human error follows patterns. We forget boundary conditions. We misread specifications. We over-index on common cases and forget about the edge. A trained reviewer learns to smell these mistakes. They become reflex.</p><h2>Clean code can be confidently wrong</h2><p>When an agent generates code, you can&#8217;t read it the way you read human code. Agent code is often <em>cleaner</em> than human code. It doesn&#8217;t have the accidental architecture, the shortcuts born from deadline pressure, or the documentation gaps. But clean code can be confidently wrong. An agent can misunderstand a spec in ways that produce perfectly formatted, well-structured, plausible code that does the wrong thing with absolute consistency.</p><p>The problem: human code review was optimized for catching human mistakes. It wasn&#8217;t optimized for catching confident misunderstandings. When a human reads an agent diff, they&#8217;re still looking for the mistakes a human would make. But agents don&#8217;t make those mistakes. They make different ones.</p><p>This is not a weakness of code review. It&#8217;s a signal that code review, as a mechanism, has to change.</p><h2>The trust boundary moves upstream</h2><p>Here&#8217;s what changes: the trust boundary moves from the diff itself to the boundaries around it.</p><p><strong>The diff stops being the evidence.</strong> When humans wrote code, the diff <em>was</em> the artifact that mattered. You reviewed it, you approved it, and you deployed. The diff was proof that someone had made a deliberate choice. With agent-generated code, the diff is just output. It&#8217;s what came out the back of a process. The real evidence lives upstream: in the specification, in the test suite, in the type system, in the runtime constraints that box in what the code can actually do.</p><p>Think of it this way. When you review human code, you&#8217;re verifying that a person understood the problem and made the right trade-offs. When you review agent code, you&#8217;re verifying that the spec was clear enough, the tests were comprehensive enough, and the types were tight enough to force the agent toward correctness.</p><h2><strong>Tests become the primary review mechanism</strong></h2><p>Not <em>a</em> mechanism. The primary one. With human code, tests are one signal among many. A reviewer might catch bugs that tests miss. But with agent code, tests are the only unambiguous proof that the code does what you want. An agent can&#8217;t reason about your unstated needs. It only knows what the spec says and what the tests verify. If your tests don&#8217;t cover a case, the agent will have no signal to write code that handles it. If your tests pass on generated code, that&#8217;s not lucky&#8212;that&#8217;s the contract being fulfilled.</p><p>This means test suites need to be different. They need to be exhaustive in a way that matters more. You can&#8217;t rely on a human coming in later and saying, &#8220;Oh, we should handle this case.&#8221; The human review step is downstream. It&#8217;s looking at whether the generated code <em>violates</em> the test suite or spec, not whether the human would have written it differently. This is a relief and a constraint in equal measure.</p><h2><strong>Types become guardrails</strong></h2><p>A strongly typed system doesn&#8217;t just prevent bugs. It prevents <em>categories</em> of bugs. When an agent generates code, a tight type system becomes a boundary that forces correctness in ways that human reviewers never had to. If you&#8217;ve typed your functions precisely&#8212;if you&#8217;ve made illegal states unrepresentable&#8212;then the agent can&#8217;t generate code that violates those invariants. It can be wrong, but not <em>in those specific ways</em>. You&#8217;ve narrowed the surface area of what &#8220;wrong&#8221; can mean.</p><p>This is why languages with weaker type systems will struggle with agent-generated code. Python can be wonderfully flexible in human hands. An experienced Python engineer can hold complex invariants in their head and write code that violates type hints when there&#8217;s a good reason. An agent has no head to hold anything in. It sees &#8220;any&#8221; and generates code that might crash at runtime because nothing caught the mistake earlier.</p><h2><strong>Runtime constraints become part of the contract</strong></h2><p>Error handling. Rate limiting. Circuit breakers. Timeouts. These aren&#8217;t just defensive programming anymore. They&#8217;re part of the contract. When a human writes code that calls an external API, they might add error handling because they&#8217;ve been burned before. An agent writes error handling because the spec says the operation can fail. But the distinction doesn&#8217;t matter. What matters is that runtime constraints&#8212;things that actually execute and enforce boundaries&#8212;become part of what you&#8217;re verifying when you look at generated code.</p><p>You&#8217;re not asking, &#8220;Did the developer think to handle this?&#8221; You&#8217;re asking, &#8220;Does the system enforce this?&#8221; Because if it doesn&#8217;t, the agent won&#8217;t either.</p><h2><strong>Review the spec, not just the code</strong> </h2><p>This is the inversion. The human reviewer&#8217;s job shifts upstream. Instead of reviewing the diff, you&#8217;re reviewing the spec. Is it complete? Does it cover the cases that matter? Are the invariants stated clearly? Have you told the agent what failure looks like? This is harder work in some ways and easier in others. You&#8217;re not reading code. You&#8217;re reading requirements. But you&#8217;re reading them with new intensity because now they&#8217;re the thing that actually shapes the output.</p><p>The diff is still reviewed. But the review is compressed. You&#8217;re looking for obvious violations of the specification, not reading the code as if a human wrote it. Does it call functions that don&#8217;t exist? Does it assume behavior that contradicts the spec? Is there a category of error it silently ignores? These are fast questions to answer. They&#8217;re high-signal gates.</p><h2>Trust the boundaries you built</h2><p>The unsettling truth is this: <strong>trust is no longer about trusting the coder. It&#8217;s about trusting the boundaries you&#8217;ve built.</strong> If you&#8217;ve specified clearly, if your tests are complete, if your types are tight, if your runtime constraints are enforced&#8212;then agent-generated code is as trustworthy as the system that produced it. And that system is entirely under your control.</p><p>What feels like a loss of human judgment is actually a transfer of judgment upstream. You can&#8217;t rely on a reviewer to catch mistakes during code review because code review is too late. The reviewer can&#8217;t see what wasn&#8217;t specified. They can&#8217;t know what the agent should have assumed. The decisions that matter happen before the code is written: in the spec, in the test design, and in the type definitions you choose.</p><h2>The diff is still worth reading</h2><p>This is harder in some ways. It requires discipline. It means you can&#8217;t ship incomplete specs and count on human reviewers to fill in the gaps. But it&#8217;s also more honest. You&#8217;re no longer pretending that code review is the thing that ensures correctness. You&#8217;re admitting that correctness comes from specification, from testing, from constraint. Code review becomes what it always should have been: a check that the output matches the input, not the entire quality gate.</p><p>The diff is still worth reading. But reading it doesn&#8217;t create trust. Trust comes from knowing the system that made it. And that system is built from specs, tests, types, and constraints, the things that agents can actually learn from and be held accountable to.</p>]]></content:encoded></item><item><title><![CDATA[The Intent Layer: Where Software Takes Shape in the Age of Agents]]></title><description><![CDATA[From writing code to architecting intention in the age of generative AI]]></description><link>https://intentlayer.to/p/the-intent-layer-where-software-takes</link><guid isPermaLink="false">https://intentlayer.to/p/the-intent-layer-where-software-takes</guid><dc:creator><![CDATA[Matt Trifiro]]></dc:creator><pubDate>Thu, 04 Jun 2026 16:52:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8WkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8WkU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8WkU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8WkU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8WkU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8WkU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8WkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:289003,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://intentlayer.to/i/200638467?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8WkU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8WkU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8WkU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8WkU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb2895964-cb6a-48c8-bcdb-383be22cad82_2560x1440.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The code is not the system. For my entire career, we pretended it was. This was mainly because the code was all we could see, the only artifact we could touch. You had an intention. An engineer translated it into syntax. The code became the interface, the contract, the source of truth. Everything else&#8212;the design, the judgment, the specification&#8212;was scaffolding around the translation.</p><p>That era is not ending, exactly. Code still matters. But code is no longer the only place where software takes shape.</p><h2>The Expansion Beyond Code</h2><p>If you ask a junior engineer what a software system <em>is</em>, they&#8217;ll likely point to the repository. The code. And until recently, they wouldn&#8217;t be wrong. Code was where intention became concrete. Every decision about data structures, control flow, error handling, and performance lived in the code. To understand a system, you read the code. To build the system, you wrote the code. To change the system, you edited the code.</p><p>But something has shifted. The emergence of AI agents capable of acting on specifications, tests, and architectural constraints has revealed something profound: the code is not the system. The code is the <em>artifact</em>. The system is something broader, something that lives in layers above and around the code itself.</p><p>Consider what happens when you prompt a capable AI model with a clear specification. You don&#8217;t need to hand-translate the specification into code yourself. The model can do that translation. And when the model gets it right, when the generated code matches your intent perfectly, it&#8217;s a striking moment. The code doesn&#8217;t matter as much as the <em>clarity and completeness of the intent you provided</em>.</p><p>This is the real insight. When the act of coding can be partially or wholly automated, what becomes precious is not the syntactic translation but the semantic clarity. The <em>intent layer</em>.</p><h2>Defining the Intent Layer</h2><p>The intent layer is the collection of artifacts that define what a system must do, without committing to how it is built. It is where clarity replaces guesswork and where meaning exists independently of implementation.</p><p>It includes specifications, which describe behavior, constraints, and edge cases with precision. It includes tests, which make those expectations executable and verifiable. It includes architectural principles that shape how the system is allowed to evolve, along with constraints such as performance limits and security requirements that bound what is acceptable.</p><p>It also includes design documents that capture reasoning, trade-offs, and rejected alternatives, preserving the thinking behind decisions. And it includes concrete examples and real-world scenarios that anchor abstract intent in lived use.</p><p>Taken together, these artifacts form a complete expression of intent&#8212;one that can be understood, validated, and acted upon without relying on any particular codebase.</p><p>These elements aren&#8217;t new. Good engineers have always written specifications, tests, and design documents. But they lived in a supporting role, in comments and docstrings and PRs and wikis. They were the <em>description</em> of what the code did. The code itself was the source of truth.</p><p>The shift is that the intent layer is becoming the <em>primary artifact</em>. The code is becoming the <em>derived artifact</em>&#8212;generated, maintained, and validated by tools that understand intent.</p><h2>Why This Matters</h2><p>The quality of software has always depended on the clarity of intention. A vague specification leads to misunderstood requirements, which lead to wasted time in rework. A missing test case hides a lurking bug that surfaces in production. A poorly documented architecture decision leads to future developers making contradictory choices.</p><p>But when engineers were the ones translating intent into code, there was a natural quality gate. If the specification was unclear, the engineer would ask for clarification. If the test case was missing, the engineer would discover it in the implementation process. If the architectural principle was violated, the engineer would notice it during code review.</p><p>With AI agents doing the translation, that gate shifts. The agent will implement the spec as written, gaps and all. The agent will generate code that follows the specification but violates architectural principles if those principles aren&#8217;t explicit in the spec.</p><p>This is not a weakness of AI agents. It&#8217;s a feature. It forces intention to be made explicit. It makes the fuzzy, implicit knowledge that good engineers carry in their heads become concrete, shareable, and verifiable. It scales that knowledge.</p><p>An AI agent trained on incomplete specifications will generate incomplete software. But an AI agent trained on <em>complete, precise, well-tested specifications will generate reliable software at scale</em>. The quality of software in an agent-driven world is almost entirely determined by the quality of the intent layer.</p><h2>The Three Dimensions of Intent</h2><p>A complete intent layer has three dimensions:</p><p><strong>The declarative dimension</strong> describes what the system does: the features, the behaviors, the outcomes. This is the specification. This is the user-facing contract.</p><p><strong>The imperative dimension</strong> describes how the system should achieve those outcomes: the architecture, the algorithms, the structural constraints. This is where you embed your expertise about what makes software maintainable, scalable, and resilient. This is how you prevent agents from reinventing problems you&#8217;ve already solved.</p><p><strong>The evaluative dimension</strong> describes how you measure whether the system has achieved its intent: the tests, the success criteria, the health metrics. This is how you validate that intent has been correctly translated into implementation.</p><p>Many teams focus primarily on the declarative dimension. They write user stories and feature specs, and they leave the imperative and evaluative dimensions implicit. In a world where code is handwritten, this is manageable. The engineer&#8217;s experience fills in the gaps. In a world where code is generated, it&#8217;s a source of brittleness.</p><p>The teams that will thrive in this new era are the ones that make all three dimensions explicit. They write specifications so precise that a machine can implement them. They codify their architectural wisdom so clearly that a machine won&#8217;t violate it. They write tests so comprehensively that correctness is verifiable without human code review.</p><h2>The Inversion of Control</h2><p>Here&#8217;s what&#8217;s truly revolutionary: the inversion of control. For seventy years, the engineer owned the intent. The engineer decided what the system should do, how it should do it, and whether it was done correctly. The code was the engineer&#8217;s primary expression.</p><p>In the age of agents, the intent owner still decides, but they now own the <em>specification of intent</em>, not the code. The engineer becomes the architect of the intent layer rather than the author of the artifact. The engineer&#8217;s time goes not to syntax and logic translation, but to precision, completeness, and the encoding of expertise.</p><p>This is more intellectually demanding, not less. It&#8217;s easier to write a function that works than to specify in unambiguous terms what that function should do and why it should do it that way. It&#8217;s easier to debug a failing test case than to write a test that comprehensively covers all the edge cases you haven&#8217;t yet discovered. It&#8217;s easier to make an ad-hoc architectural decision than to codify architectural principles that will guide every decision downstream.</p><p>But it&#8217;s also more powerful. An engineer who masters the intent layer can multiply their impact. Instead of translating specifications into one hand-written codebase, they can provide specifications to many agents, each generating implementations in different languages, for different platforms, at different scales. The engineer&#8217;s intention scales. The engineer&#8217;s expertise scales. The code becomes disposable, but the intent becomes precious.</p><h2>The Foundation of the Next Era</h2><p>We are at the threshold of a fundamental reorganization of software engineering. The act that defined the discipline&#8212;the translation of human intention into executable code&#8212;is no longer the bottleneck. The bottleneck is now the clarity, completeness, and precision of the intention itself.</p><p>This isn&#8217;t a threat to engineering. It&#8217;s a liberation. It means we can stop pretending that code is the thing that matters, and start acknowledging what we&#8217;ve always known: the thing that matters is the intention. The insight. The design. The specification. The constraint. The principle. The test that catches the bug that would have cost a million dollars.</p><p>The intent layer is where software takes shape in the next era. Master it, and you master the future of engineering. Ignore it, and you&#8217;ll find your code generated by agents that don&#8217;t understand what it&#8217;s supposed to do.</p><p>The choice is ours. But the direction is clear.</p>]]></content:encoded></item><item><title><![CDATA[The Intent Layer]]></title><description><![CDATA[A publication about the emerging discipline of using agents to write code]]></description><link>https://intentlayer.to/p/the-intent-layer</link><guid isPermaLink="false">https://intentlayer.to/p/the-intent-layer</guid><dc:creator><![CDATA[Matt Trifiro]]></dc:creator><pubDate>Thu, 04 Jun 2026 03:37:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2tsc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2tsc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2tsc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!2tsc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!2tsc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!2tsc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2tsc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png" width="1254" height="1254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1254,&quot;width&quot;:1254,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:264776,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://intentlayer.to/i/200556127?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2tsc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 424w, https://substackcdn.com/image/fetch/$s_!2tsc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 848w, https://substackcdn.com/image/fetch/$s_!2tsc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 1272w, https://substackcdn.com/image/fetch/$s_!2tsc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bf312bd-b065-4c51-aa29-d727bb0825b0_1254x1254.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Software development is undergoing a phase change.</p><p>For decades, the primary interface between human intention and software behavior has been code. Engineers translated goals into implementation details by hand. Product managers wrote requirements. Designers created mockups. Engineers decomposed work, wrote code, tested it, reviewed it, deployed it, and operated it.</p><p>AI agents are beginning to disturb that model.</p><p>The important shift is not simply that agents can generate code. Code generation is only the visible symptom. The deeper change is that a new abstraction layer is emerging above the codebase: a layer where humans express intent, constraints, specifications, architectural principles, tests, workflows, policies, and desired outcomes, and agents translate those into working software.</p><p>That layer needs a name.</p><p><strong>The Intent Layer</strong> will be a publication about this emerging discipline: how software gets built when human beings move from typing every line of code to designing, supervising, constraining, reviewing, and orchestrating intelligent systems that can act inside the development process.</p><p>This is not a newsletter about &#8220;AI coding tips.&#8221; It is about the new operating model for software engineering.</p>]]></content:encoded></item></channel></rss>