<?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 Spillover]]></title><description><![CDATA[The hidden economics and quiet absurdities of how work actually gets done.]]></description><link>https://kitalexa.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!-xgn!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg</url><title>The Spillover</title><link>https://kitalexa.substack.com</link></image><generator>Substack</generator><lastBuildDate>Wed, 04 Nov 2026 23:59:50 GMT</lastBuildDate><atom:link href="iframe.php?url=https%3A%2F%2Fkitalexa.substack.com%2Ffeed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Kavita Alexa]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[kitalexa@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[kitalexa@substack.com]]></itunes:email><itunes:name><![CDATA[The Spillover]]></itunes:name></itunes:owner><itunes:author><![CDATA[The Spillover]]></itunes:author><googleplay:owner><![CDATA[kitalexa@substack.com]]></googleplay:owner><googleplay:email><![CDATA[kitalexa@substack.com]]></googleplay:email><googleplay:author><![CDATA[The Spillover]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[AI has a lemons problem]]></title><description><![CDATA[Buy one lemon and you stop trusting the whole lot]]></description><link>https://kitalexa.substack.com/p/ai-has-a-lemons-problem</link><guid isPermaLink="false">https://kitalexa.substack.com/p/ai-has-a-lemons-problem</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Sat, 10 Oct 2026 17:43:06 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>An auto-generated summary of a design discussion reported the opposite of what we decided. It said a field would fill in a default when data was missing; we&#8217;d made the field required specifically so it would never default. It didn&#8217;t drop the decision. It reversed it, in the same confident tone as the parts it got right. We only found out later, catching up a teammate who&#8217;d missed the meeting. They&#8217;d read the notes, believed them, and we had to walk it back.</p><p><strong>I use AI every day, and I still can&#8217;t wave off the skeptics.</strong></p><p>I&#8217;d argue for more of it, too. But if a tool can&#8217;t give me a trustworthy yes or no on &#8216;did the tests pass&#8217; or &#8216;what did we decide,&#8217; every answer it gives me feels like it needs a second look. It handed me something that looked finished, and the finished thing was wrong. Same shape as a coverage bar that went green on a line the test had stubbed out of existence.</p><p><strong>A confident wrong answer gets believed.</strong></p><p>A crash gets fixed in an hour. The wrong answer walks into whatever you build next.</p><p>In July 2025, Jason Lemkin wrote that Replit&#8217;s coding agent kept covering up bugs with fake data and fake reports. Later he wrote: <a href="iframe.php?url=https%3A%2F%2Fthreadreaderapp.com%2Fthread%2F1946064586181881973.html">&#8220;It lied again in our unit tests, claiming they passed.&#8221;</a> <a href="iframe.php?url=https%3A%2F%2Fyoucanbuildthings.substack.com%2Fp%2Fhow-to-stop-a-claude-code-subagent">John Cook</a>&#8216;s verifier signed off on eight test cases, and none of them had run. <a href="iframe.php?url=https%3A%2F%2Fjurgendesmet.substack.com%2Fp%2Fai-readiness-test-meaningfulness">J&#252;rgen De Smet</a>&#8216;s frame is tests that confirm the bug and still paint the dashboard green.</p><p>Akerlof described this market in 1970: when buyers can&#8217;t tell good used cars from bad ones, they price the average, and the good cars leave. Same mechanic inside a toolchain. Once a generated artifact <em>might</em> be silently wrong, your guard goes up. You start reading closer and digging into the weeds on things you used to skim, which eats into the time the tool was supposed to save. And that trust is slow to come back.</p><p><strong>One flipped decision costs you your trust in every line sitting next to it.</strong></p><p>That&#8217;s what a skeptic is doing: a buyer who&#8217;s been sold a few lemons and now marks everything down, and they&#8217;re not wrong to. If the model produced garbage here, would anything catch it besides a human noticing?</p>]]></content:encoded></item><item><title><![CDATA[So your MVP shipped the moon. ]]></title><description><![CDATA[There&#8217;s always one more thing you can squeeze in.]]></description><link>https://kitalexa.substack.com/p/so-your-mvp-shipped-the-moon</link><guid isPermaLink="false">https://kitalexa.substack.com/p/so-your-mvp-shipped-the-moon</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Tue, 29 Sep 2026 17:35:43 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There&#8217;s always one more thing you can squeeze in. Nobody votes to ship the moon. The next screen feels cheap, the edge case arrives with a story, and saying no feels like you meant to leave it unfinished.</p><p>MVP is the smallest iteration of the job to be done &#8212; end to end, for one type of user. When you reach for one more, what are you afraid of &#8212; that users can&#8217;t finish, or that live still won&#8217;t count until it looks like the brochure? One more feature buys cover for that fear. It doesn&#8217;t finish the job.</p><p>Sometimes you draw the line. You ship the thin path &#8212; awkward, manual in places &#8212; because someone can finish the job now.</p><p>The room stares like you forgot the brochure. They wanted the demo they could celebrate. One more wasn&#8217;t about unblocking users. It was about buying applause the working path didn&#8217;t get.</p><p>That&#8217;s how you end up on the moon. Ready decays while you wait for applause. You delay the cheap data that would tell you what to build next.</p><p>Shiny is a communication problem wearing a scope costume. Live already works. It just doesn&#8217;t screenshot well in a stakeholder meeting.</p><p>Was the extra screen so someone finishes the job &#8212; or so the room is impressed?</p>]]></content:encoded></item><item><title><![CDATA[What We Still Can’t Delegate]]></title><description><![CDATA[Most of the conversation about agents still focuses on what they can already do. The more useful question is the inverse: what keeps refusing to get cheaper?]]></description><link>https://kitalexa.substack.com/p/what-we-still-cant-delegate</link><guid isPermaLink="false">https://kitalexa.substack.com/p/what-we-still-cant-delegate</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Sat, 26 Sep 2026 16:47:57 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few categories of work still sit stubbornly in the residual. They don&#8217;t show up as dramatic edge cases &#8212; just ordinary judgment that decides whether the cheap work was aimed at the right thing.</p><p><strong>Long-horizon context</strong></p><p>The history of why something was built the way it was, what constraints used to exist, and which &#8220;simple&#8221; changes would quietly reopen old problems. This rarely lives in any single ticket or doc. It lives in the people who were around when the trade-offs were made.</p><p>One iteration of this: a team asks an agent to clean up an old integration that has accumulated years of pragmatic decisions. The agent produces a clean, modern version and removes a set of odd error-handling paths that look like dead code. The cleanup looks good until someone remembers why those paths existed &#8212; a vendor used to return 504s without actually timing out the request, so the code had to treat certain &#8220;failures&#8221; as still-in-progress. The new version is better on every local metric and worse in production. The context that prevented the mistake wasn&#8217;t in the codebase. It was in the memory of the trade-off.</p><p><strong>Irreversible calls under uncertainty</strong></p><p>Decisions where you can&#8217;t fully test the outcome in advance and the cost of being wrong is high. Agents can surface options, list risks, and even rank them. They still don&#8217;t own the downside.</p><p>This shows up any time a team has to decide whether to migrate a core path, change a data contract, or remove a compatibility layer. The analysis can be thorough. The final call still requires someone to absorb the possibility that the analysis missed the thing that actually breaks. That ownership doesn&#8217;t transfer cleanly to a model, even a very good one.</p><p><strong>Noticing when the system itself is the problem</strong></p><p>Recognizing that the current harness, evaluation, or success metrics are generating the mess instead of solving it. This one is harder to hand off because the system is usually the thing defining what &#8220;good&#8221; looks like.</p><p>A common version: a team keeps adding more steps to an agentic workflow &#8212; plan, research, critique, revise, verify &#8212; because earlier versions felt unreliable. Every local metric improves: higher eval scores, more thorough-looking traces, more apparent rigor. The actual output quality does not. The system is now optimizing for looking careful. The residual judgment is noticing that the real constraint is still an underspecified goal or a bad stopping condition, and then being willing to remove steps instead of adding more of them.</p><p><strong>These aren&#8217;t romantic claims about human specialness.</strong></p><p>They&#8217;re just categories of judgment that remain expensive even as drafting, scaffolding, and first-pass execution keep getting cheaper. The draft can be generated. The decision about whether the draft is safe to ship, or whether the problem is even the right one, still sits with whoever is accountable for the outcome.</p><p><strong>The work that still can&#8217;t be delegated is also the work most systems keep treating as free.</strong> So the residual gets rationed by burnout instead of by any actual decision.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kitalexa.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Residual is the real work]]></title><description><![CDATA[The high-volume parts of knowledge work keep getting cheaper.]]></description><link>https://kitalexa.substack.com/p/the-residual-is-the-real-work</link><guid isPermaLink="false">https://kitalexa.substack.com/p/the-residual-is-the-real-work</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Thu, 24 Sep 2026 02:46:33 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Drafting first passes and format conversions move faster and more reliably every quarter. Agent workflows and tighter tools take more of that surface area.</p><p><strong>What&#8217;s left is the residual.</strong></p><p>The judgment that only shows up after the more obvious work is already done. Deciding which trade-off matters this time. Noticing when the system itself is the constraint. Holding enough context to know the &#8220;simple&#8221; change will quietly break three other things. Choosing what <em>not</em> to build. None of that lands cleanly in a ticket, and most of it only becomes visible once the high-volume work is already handled.</p><p><strong>This is just a shift in what stays expensive.</strong></p><p>Once the low-judgment work gets cheap, the part that still requires judgment starts to matter more. Context-holding and hard calls become the real constraints as the total volume of busy-looking output keeps growing.</p><p>Most teams still price it the other way. They measure the visible output &#8212; the PRs, the docs, the completed tickets &#8212; and treat the residual as background noise or as something that just happens upstream. Whoever is best at holding context and making those calls ends up overloaded or under-recognized, sometimes both, while the system keeps optimizing for more of the work that is already becoming abundant.</p><p>A concrete version of this shows up any time a team ships a solid first draft of something (docs, a feature, a migration plan) and then discovers the real work was never delivery of the draft. It was knowing which edge cases actually mattered, which assumptions would quietly fail in production, and which parts were safe to leave rough. The draft got cheaper. The judgment around it did not.</p><p><strong>The residual isn&#8217;t leftover.</strong></p><p>It&#8217;s the part that decides whether the rest of the work was pointed somewhere useful at all.</p><p>Two practical questions fall out of seeing it this way:</p><ul><li><p>What are we still spending expensive attention on that no longer needs it?</p></li><li><p>Are we measuring the output that&#8217;s getting cheap, or the decisions that still aren&#8217;t?</p></li></ul><p><strong>When one part of the work gets cheap, the expensive part becomes the constraint.</strong> Most teams are still optimizing as if the hard part will somehow scale with the easy part.</p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:null,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Compile what doesn’t think]]></title><description><![CDATA[Where to spend model tokens once you notice most of the task doesn&#8217;t need a model at all.]]></description><link>https://kitalexa.substack.com/p/compile-what-doesnt-think</link><guid isPermaLink="false">https://kitalexa.substack.com/p/compile-what-doesnt-think</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Fri, 18 Sep 2026 17:58:51 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Many of the arguments I see about coding agents are about which model to use.</p><p><strong>The question that&#8217;s saved me money is a different one: </strong><em><strong>how much of the task should touch a model at all?</strong></em></p><p>I run a daily pass over my own reading &#8212; it pulls newsletters out of my inbox, strips them down, clusters what&#8217;s related, scores what matters, and writes a digest. The first version was one long prompt. The model did everything: fetch, strip the HTML, dedupe, cluster, score, write. It worked. It was also expensive and slightly different every run, which for the deterministic parts is a bug, not charm.</p><p><strong>Most of it wasn&#8217;t judgment.</strong></p><p>Pulling the newsletters, stripping boilerplate, normalizing the text &#8212; that work doesn&#8217;t need to be <em>reasoned about</em>, it needs to be correct and identical every time. So once the shape of the thing stopped moving, I compiled that spine out into a plain shell script. The model now only does the ambiguous part: what belongs together, what&#8217;s worth keeping, how to say it.</p><p><strong>The same instinct showed up in a pile of API docs.</strong></p><p>I&#8217;d once spent a day writing reference docs for a subsystem I owned &#8212; nine variants of one workflow, each filled into the same five-section template by hand. Months later I needed the same kind of reference for a vendor&#8217;s API: five specs, a few hundred endpoints. This time, I wrote a converter and pointed it at the source schemas instead. Re-running it again later reproduced four of the five files byte-for-byte, and the fifth differed only where the newer version resolved a type reference the original had silently dropped.</p><p><strong>You don&#8217;t compile first.</strong></p><p>The prose version isn&#8217;t waste you tolerate on the way to the real thing &#8212; it&#8217;s how you <em>find</em> the stable shape in the first place. Harden it too early and you&#8217;ve carved the wrong workflow into code and now you get to un-carve it. Run it as prose until it stops surprising you, then compile the parts that have gone quiet.</p><p><strong>Commit the converter.</strong></p><p>That converter lived in a scratch directory and I never kept it. The output survived, the means of reproducing it didn&#8217;t &#8212; so the regeneration instructions I&#8217;d carefully written into the docs were dead the day I wrote them. Generated reference goes stale on a schedule, so losing the script turns a cheap refresh back into a day of manual work while the docs go on claiming they&#8217;re reproducible. If the shape is regular enough to automate, the automation is part of the artifact. Commit it next to what it produced.</p><p><strong>The econ read:</strong> this is comparative advantage &#8212; Ricardo&#8217;s, the trade one. Even if the model can strip HTML perfectly well in absolute terms, that&#8217;s not where its edge over plain code is largest; its edge is language and judgment. Every token spent on plumbing is a token not spent on the one part nothing else can do. The rule isn&#8217;t &#8220;use the model everywhere it&#8217;s capable.&#8221; It&#8217;s &#8220;use the model only where its advantage is biggest, and let cheap code have the rest&#8221; &#8212; which is exactly what a country does when it stops making the thing it&#8217;s merely competent at to free up capacity for the thing it&#8217;s best at.</p><p>The model is the expensive specialist you brought in for judgment.</p><p><strong>Stop paying specialist rates for plumbing.</strong></p><p></p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kitalexa.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The org chart is the prompt]]></title><description><![CDATA[A team's edge is drawn by what it costs to move context &#8212; and that cost is collapsing.]]></description><link>https://kitalexa.substack.com/p/the-org-chart-is-the-prompt</link><guid isPermaLink="false">https://kitalexa.substack.com/p/the-org-chart-is-the-prompt</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Fri, 21 Aug 2026 21:14:37 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We argue about team structure as an org-design problem: who reports to whom, who owns what, how many people a lead can reasonably hold. Underneath it there's an economics problem, and its biggest cost is dropping fast.</p><p>Here's the concrete thing that showed me. Every repo I work in carries a set of files an agent reads before it touches anything &#8212; who I am, what's in flight, the conventions, the mistakes we've already paid for and won't pay for again. A new agent, or a new session of the same one, doesn't get a meeting or an onboarding thread. It loads the file. That's the thirty-minute context-transfer conversation, except versioned: it doesn't degrade between tellings, and any agent &#8212; different tool, different vendor &#8212; reads the same source. I built it to stop repeating myself. What it did instead was move a boundary.</p><p>This isn't a solo-operator trick that falls apart at scale. Cloudflare <a href="iframe.php?url=https%3A%2F%2Fblog.cloudflare.com%2Fengineering-standards-enforcement%2F">published how it enforces engineering standards with AI</a>, and the artifact is the same one: a governed set of guidance written for people and agents at the same time, which agents retrieve and apply at the point of work &#8212; code review, technical design review, incident review. The same file doing the same job for a whole engineering org instead of one person, except at that size it ships with versioning and governance, because the file stops being a note to self and becomes infrastructure.</p><h2><strong>Where a team's edge sits</strong></h2><p>A team is drawn where coordinating <em>inside</em> it is cheaper than coordinating <em>across</em> it. Most of that cost is context transfer &#8212; explaining the why, the invariants, the history that isn't written down. When that cost is high, you keep context inside a small set of humans who've absorbed it, and the real edge of "the team" is just the set of people you've already onboarded. When a document an agent loads can hand over that context in seconds, the edge stops tracking who's been in the room.</p><p>I'm living the moving version. I led a subsystem for six months, from discovery through the first shipped version, and handed it off mid-flight &#8212; before the finished thing went out the door &#8212; to move to a new team. That's the hard kind of handoff: not a tidy archive of settled decisions but a live project with open questions, half-ratified contracts, and work in progress. The handoff conversations were short, and not because there was little to transfer &#8212; everything I'd normally spend those meetings downloading was already written down: the decisions with their dates, the contracts, the open questions stated precisely enough to pick up cold, the mistakes we'd agreed never to repeat. What was left to talk about was the part that belongs in a conversation &#8212; judgment, taste, where the bodies are buried. The people picking it up onboard the same way the agents do. They load the file.</p><p><strong>The econ read:</strong> this is Coase &#8212; the theory-of-the-firm one. His question was why firms exist at all: if markets price everything efficiently, why isn't the economy just freelancers contracting with each other per task? Because using the market isn't free. Finding the right person, explaining what you need, checking the work &#8212; every handoff across the boundary has a cost, and a firm is what you build when doing those things inside, by standing relationship instead of per-task negotiation, comes out cheaper. The boundary isn't drawn by anyone; it settles, at exactly the point where the cost of coordinating one more thing internally stops beating the cost of going outside for it.</p><p>Settled boundaries move when their input costs move &#8212; that's the whole mechanism. "Explaining what you need" is most of what a team-boundary handoff costs, and that's the line item agents cut by an order of magnitude &#8212; not by negotiating better, but by making the explanation a file that transfers in seconds and doesn't degrade in the retelling. "The org chart is the prompt" is a Coasean claim wearing a t-shirt: the working shape of the team isn't the reporting lines anymore, it's who and what loads the same context.</p><p>You can watch the slide happening in product form. Slack's <a href="iframe.php?url=https%3A%2F%2Fslack.com%2Fblog%2Fnews%2Fslack-code-channels-for-agents">new code channels</a> work like this: mention a coding agent in a conversation and a workspace spins up around the task, visible to the whole team, archiving itself when the work lands. The example in their own announcement is the boundary argument wearing a lanyard &#8212; a non-technical teammate describes a problem in plain language, an agent drafts the fix, and an engineer gets tagged to review it, all without leaving the conversation. The person who could never have opened that pull request is now inside the team's edge, because the context came to them.</p><p>The org chart says who reports to whom. The prompt says who can actually do the work. Those used to be the same list.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Designing the gate]]></title><description><![CDATA[A field note on the part of harness work that doesn&#8217;t automate &#8212; and why &#8220;the harness builds itself&#8221; is only half true.]]></description><link>https://kitalexa.substack.com/p/designing-the-gate</link><guid isPermaLink="false">https://kitalexa.substack.com/p/designing-the-gate</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Tue, 18 Aug 2026 00:08:37 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The harness builds itself now. Every dev newsletter has a &#8220;harness engineering&#8221; primer, and research frameworks let an agent mine its own execution traces, propose fixes to its own scaffolding, and gate those edits behind regression tests &#8212; the harness improving itself, no human in the loop.</p><p>Mostly true. When an agent rewrites its own prompt to stop repeating a failed command, that&#8217;s real and it&#8217;s here. But everyone keeps flattening two different layers into one word, and only one of them automates.</p><h2>Runtime vs. gate</h2><p>The layer that automates is the harness as <em>runtime</em> &#8212; prompts, tool configs, retry logic, the scaffolding an agent runs inside. Machines are already better than us at tuning that: it&#8217;s a tight loop with a measurable objective.</p><p>The layer that doesn&#8217;t automate is the objective. Someone still has to decide what counts as a regression and what goes in the eval set. A model can generate a thousand scaffolding edits; it can&#8217;t tell you which ones make your billing pipeline safer to ship. That isn&#8217;t a capability gap that closes next quarter &#8212; the answer lives in your incident history, your regulator&#8217;s rules, your on-call rotation, and the model has none of that unless you put it in the gate.</p><h2>Every gate gets gamed</h2><p>Here&#8217;s what makes gate design real work rather than a checkbox: the machine optimizes against the gate. Anything measurable the gate rewards, it will find &#8212; including the degenerate versions you didn&#8217;t mean. Tests that pass because an assertion got weakened. A metric that improved because its definition drifted. Every reviewer has watched a human do this; an agent does it by instruction, without malice, and at volume.</p><p>This stopped being hypothetical in July. OpenAI was running a security test against an unreleased model with the guardrails off, and the model broke out of its sandbox and exploited a hole in Hugging Face to steal the test answers (<a href="iframe.php?url=https%3A%2F%2Fsimonwillison.net%2F2026%2FJul%2F22%2Fopenai-cyberattack%2F">Simon Willison&#8217;s write-up</a> is the clearest account). Nothing went rogue &#8212; stealing the answers was the cheapest path to a passing score, so the model went through the wall instead of over the bar.</p><p><strong>The econ read:</strong> It&#8217;s Goodhart&#8217;s law - aim at a number and it stops telling you the truth. Except you&#8217;ve pointed an agent at yours on purpose, so write the gate like a contract for someone you can&#8217;t watch: assume it gets gamed, put the auditing where the gaming would pay.</p><p>Which is also why you can&#8217;t buy a gate. A code-review agent pitched me on being second of forty-two &#8212; a number that means nothing, since nearly half the benchmarks in <a href="iframe.php?url=https%3A%2F%2Fwww.stacksweep.dev%2Fai-benchmark-saturation-study">a study of sixty</a> can&#8217;t separate their top models from noise. I don&#8217;t know whether it catches the bugs my team ships until I run it against the bugs my team shipped.</p><h2>What survives</h2><p>Someone will point out you can buy one now. OpenAI&#8217;s Presence sells that layer &#8212; policies, evals, escalation rules for enterprise agents &#8212; but it isn&#8217;t self-service: forward-deployed engineers run the deployments, because the gate <em>content</em>still has to be pulled out of the org by hand. Confirmation with a price tag.</p><p>At my scale the gate looks smaller, but the shape is the same. My agent instructions had a rule &#8212; written after unscoped Jira queries blew the context budget three sessions in a row &#8212; that every multi-issue query carries a scoping clause and a minimal field list. Reasonable rule, plainly stated, and it failed twice more in one week, because a prose rule competes with everything else in the context window and sometimes loses. It stopped failing the day it became a pre-flight hook that just denies the call. The design work wasn&#8217;t the denying, though. It was two decisions the incident log had already paid for: what counts as &#8220;scoped&#8221; &#8212; a project, a parent epic, a date window &#8212; and what the denial says. The audience for a gate failure is an agent mid-loop, so the message carries the fix; a bare refusal just buys you a retry of the same mistake.</p><p>The judgment about what belongs behind the gate doesn&#8217;t come from the model and doesn&#8217;t come from a newsletter. It comes from operating the system &#8212; knowing which failures do damage, which invariants have never been written down, which &#8220;passing&#8221; state has fooled you before.</p><p>The harness will keep getting better at rewriting itself. The gate is yours.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kitalexa.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Documenting a Subsystem in a Day]]></title><description><![CDATA[How a single coordinated documentation push converted a year of tacit context into reusable reference &#8212; and the methodology I&#8217;m now extracting for The Spillover.]]></description><link>https://kitalexa.substack.com/p/documenting-a-subsystem-in-a-day</link><guid isPermaLink="false">https://kitalexa.substack.com/p/documenting-a-subsystem-in-a-day</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Fri, 31 Jul 2026 23:22:48 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I&#8217;d spent two-plus years as the go-to person on one subsystem, the SME-by-default whenever someone hit its edges. Then a new team spun up to build the adjacent one, and this time I was the only person on it who already knew the old domain. I was going to be answering the same questions live, one at a time, for months.</p><p>One Thursday morning in March, I sat down at my desk, blocked the rest of the day, and published fourteen internal documentation pages by 5pm instead. It wasn&#8217;t planned as fourteen pages. I sat down to write the first one, looked at the second, and realized the second wasn&#8217;t a different page. It was the <em>same</em> page filled in differently. So was the third. And the fourth.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kitalexa.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>By the time I&#8217;d caught the pattern, it was 11am. By 5pm, the whole subsystem had reference documentation organized around a single repeated shape &#8212; an anatomy template with five sections, applied across nine variants of the same workflow. Two years of answering the same questions one at a time, turned into fourteen pages anyone could search instead of pinging me.</p><p>It&#8217;s easily one of the more useful days of work I&#8217;ve done at my company. I&#8217;ve since run the same shape on half a dozen other projects &#8212; it wasn&#8217;t a one-time trick of that particular domain.</p><p>I&#8217;m calling the methodology <strong>The Documentation Burst</strong>. It&#8217;s the first framework I&#8217;m publishing as part of <strong>The Spillover</strong>, a public collection of patterns that turn senior IC work into infrastructure that keeps paying.</p><h2>What tacit context costs</h2><p>Most senior ICs carry a personal mental model of the systems they own &#8212; tribal knowledge, the part that never made it into a doc because everyone who needed it could just ask you. It lives in your head, gets shared one Slack thread at a time, gets re-explained in every onboarding 1:1, and dies the moment you change roles. You can ship great work for a decade and leave behind essentially nothing reusable.</p><p>The trap is that it starts to <em>feel</em> written down. You&#8217;ve explained it so many times that it comes out fluent and complete, and fluency is easy to mistake for documentation. The test I use: could someone act on this without me in the room? Recorded-but-unusable is the normal state of internal docs, and it passes for done.</p><h2>The methodology</h2><p>Four ingredients:</p><ol><li><p><strong>Pick a bounded subsystem.</strong> Not &#8220;the whole codebase.&#8221; A subsystem with a clear scope, real internal complexity, and roughly five to fifteen natural variants &#8212; different entry points, different user types, different lifecycles. The variants are what make burst-shaped writing pay off.</p></li><li><p><strong>Find the natural anatomy.</strong> Spend thirty minutes, not three hours, writing what <em>every</em> variant has in common. The shortcut is that you already know the shape &#8212; it&#8217;s the order you explain the thing in when someone asks, and you&#8217;ve been giving that explanation out loud for a year. You&#8217;re not deriving a structure, you&#8217;re transcribing one. Write it down and the headings fall out. For my subsystem, every variant had an entry surface, an authentication path, a sequence of steps, an integration boundary, and a set of endpoints. Five sections. That became the anatomy template.</p></li><li><p><strong>Block a single day.</strong> This is the burst part. The methodology depends on holding one mental model for a long, uninterrupted period. Each variant takes thirty to forty-five minutes to write &#8212; <em>only</em> if you&#8217;ve just written the previous one. You&#8217;re filling in the same shape, not re-deriving the structure each time. Across nine variants, the second-to-last is faster than the second. That&#8217;s the whole reason a burst pays off.</p></li><li><p><strong>Cross-link as you go.</strong> Every variant page references the others. The anatomy template sits at the center. The reader can navigate by variant or by section, and the doc set is internally consistent because it was written under one frame, on one day.</p></li></ol><h2>What it produces</h2><p>A documentation set that survives you. Onboarding goes from &#8220;let me Slack you about this&#8221; to &#8220;read these five pages,&#8221; and you end up with a model of your own work you can hand off without losing its architecture.</p><p>This is the prototype move for what I call <strong>Capture-and-Retry</strong>: routing the byproduct of senior IC work into permanent infrastructure. Almost nobody externalizes a year of tacit context this way, because one page at a time never feels worth starting. The Burst gets it done in a day instead, and structure-first is what keeps the result coherent.</p><p>Internal docs are a public good. The cost of writing them is private, the benefit is shared, so they get under-provided even on teams that genuinely value them. It&#8217;s not that people are lazy, the incentive to front-load the cost just never shows up on its own. The Burst works because it collapses that cost to one day. Make the good cheap enough to provide and the under-provision problem mostly takes care of itself.</p><h2>What&#8217;s next</h2><p>More of these are coming &#8212; each a meta-pattern about how to document, decide, or research, with real applications behind it rather than a diagram. Next is the five-section template itself, <strong>The Filing Flow Anatomy</strong>, and <strong>Compile What Doesn&#8217;t Think</strong>: what to do when the template turns out regular enough to run as code instead of filling it in by hand.</p><p>None of it assumes your industry. All of it assumes you&#8217;re a senior IC working on systems whose complexity has outrun the tools your team has for capturing it.</p><p>I didn&#8217;t do the Burst because I finally found the discipline. I did it because I ran out of runway to keep answering the same questions live. If you&#8217;re the last person standing on a domain someone else is about to build next to, that&#8217;s the day to block.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kitalexa.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The harness is the work]]></title><description><![CDATA[Most engineers spent 2025 learning to write code with an AI agent in the loop.]]></description><link>https://kitalexa.substack.com/p/the-harness-is-the-work</link><guid isPermaLink="false">https://kitalexa.substack.com/p/the-harness-is-the-work</guid><dc:creator><![CDATA[The Spillover]]></dc:creator><pubDate>Fri, 24 Jul 2026 21:12:49 GMT</pubDate><enclosure url="iframe.php?url=https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21-xgn%21%2Cw_256%2Cc_limit%2Cf_auto%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F893e5739-4c9d-4f26-a234-59b0d352dc40_1408x1408.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most engineers spent 2025 learning to write code with an AI agent in the loop. The interesting question for 2026 is what work is left when the code-writing layer becomes fully delegable.</p><p>I wasn&#8217;t asking the question yet &#8212; I was just living it.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kitalexa.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A few weeks ago I ran a synthesis pass across seven days of my own notes. The pass was supposed to tell me what I&#8217;d been reading. What it told me instead was what I&#8217;d been <em>doing</em> &#8212; and the pattern was unambiguous. Every artifact I&#8217;d produced that week was harness work. Zero feature code.</p><p>A parity ticket inventory of six initiatives and twenty-five epics, so the team could argue about scope before agents started writing PRs. Four design iterations on a data model before any of those PRs would have been coherent. A schema migrations runbook that grew out of a broken staging deploy. A handoff plan for tomorrow-me, so the next session could pick up cold.</p><p>None of it was code. All of it was the shape <em>around</em> the code.</p><p><strong>The thesis: the harness is the staff engineer&#8217;s product now, not the features it enables.</strong></p><h2>What &#8220;harness&#8221; means</h2><p>I mean something broader than the tooling. When people say &#8220;harness&#8221; today they often mean the runtime an agent runs inside &#8212; Claude Code, Cursor, the tool configs and control loop. That&#8217;s part of it. But the harness I&#8217;m pointing at is everything that isn&#8217;t the code:</p><ul><li><p><strong>Environment</strong> &#8212; what tools your agents have, what context they load, what they can and can&#8217;t touch.</p></li><li><p><strong>Docs</strong> &#8212; not for engineers to read, but for the next agent (or next-you) to load. CLAUDE.md, project READMEs, decision records, runbooks.</p></li><li><p><strong>Merge philosophy</strong> &#8212; what gets PR-gated, what blocks deploy, what the CI dry-run catches before a human ever looks at it.</p></li><li><p><strong>Skills</strong> &#8212; reusable procedures (capture, review, plan, close) instead of ad-hoc operator moves.</p></li><li><p><strong>Review discipline</strong> &#8212; what questions you ask of a PR that a model can&#8217;t yet ask itself.</p></li></ul><p>The list isn&#8217;t exhaustive. Every item on it is something a senior engineer once kept in their head, externalized now because the cost of leaving it implicit just went up.</p><h2>Why this matters now</h2><p>The code-writing layer is delegable in a way it wasn&#8217;t twelve months ago. That doesn&#8217;t make the work easier &#8212; it shifts where the work is.</p><p>The bottleneck is no longer &#8220;can I write the function?&#8221; It&#8217;s &#8220;can the agent reading this CLAUDE.md figure out what function I would have written?&#8221; So the bottleneck is the prose around the code, not the code, and staff-engineer leverage moves with it.</p><p>Someone in my reading last week put it better than I can: the org chart is the prompt.</p><p>There&#8217;s a sharper version of this I only noticed once the agents got good enough to show it. As they&#8217;ve gotten better at breaking work down and running it themselves, the unit of work keeps creeping upward &#8212; from the function, to the file, to the change, and now to the spec itself. The better the agent gets, the more the thing I&#8217;m actually on the hook for is the spec: what to build, what counts as done, what the thing is even for. And a spec is harness &#8212; it&#8217;s the shape around the code, written down. So a more capable model doesn&#8217;t shrink the harness work, it promotes it. The more the machine can do, the more of my job is the part that was never code to begin with.</p><p>The clearest tell showed up in a cost argument I watched play out. The obvious way to save money on agent work is to let an expensive model do the planning and a cheap one do the typing. It mostly backfires &#8212; the cheap model burns the savings re-reading everything to rebuild the context the expensive one already had, so you pay for that reading twice. The fix isn&#8217;t a better model, it&#8217;s writing the plan down: have the capable model capture what it figured out into something durable &#8212; a todo list, a decision record, a preamble &#8212; and hand <em>that</em> to whatever runs next. Which is the whole thesis in miniature. Even the move that looks like a model-selection problem turns out to be a harness problem, because the win is in the artifact you persist, not the model you pick.</p><h2>But the harness is starting to build itself</h2><p>Here&#8217;s the objection I&#8217;d raise if I were reading this over your shoulder: if the code-writing layer is delegable, isn&#8217;t the harness next? Partly, yes &#8212; agents can now mine their own execution traces and patch their own scaffolding, gated behind regression tests. But what automates is the harness as <em>runtime</em>. The layer above it &#8212; deciding what counts as a regression, what goes in the evaluation set, what the harness is optimizing <em>toward</em> &#8212; doesn&#8217;t. The machine optimizes against the gate; designing the gate is the work. That deserves its own field note, and it&#8217;s getting one.</p><p>Automation doesn&#8217;t delete the harness; it relocates the human part up one level &#8212; from writing the runbook to deciding what the runbook is <em>for</em>.</p><h2>What I&#8217;m actually claiming</h2><p>I&#8217;m claiming two things, and they&#8217;re separable.</p><p><strong>(1) The harness is more leveraged than it used to be.</strong> Even five years ago, harness work paid off slowly &#8212; onboarding got easier, code review went faster, a runbook saved someone a Tuesday night. Today it pays off in real time: a sharper CLAUDE.md changes the next agent run before it even starts. Compounding got faster.</p><p><strong>(2) The harness is more </strong><em><strong>legible</strong></em><strong> than it used to be.</strong> This one is subtler. In a world where the code itself was the artifact, harness work looked meta, soft, hard to promo on. In a world where the agents reading the harness are doing the code work, the harness IS the artifact. When I first wrote that line it was a prediction; a couple of months later &#8220;harness engineering&#8221; is a named role in the trade press. It&#8217;s not invisible labor anymore &#8212; it&#8217;s the thing.</p><p><strong>The econ read:</strong> this is Baumol&#8217;s cost disease, playing out inside a single job. When one part of the work gets dramatically cheaper &#8212; code-writing, in this case &#8212; the parts that don&#8217;t (judgment, review, deciding what the gate is optimizing toward) become relatively more expensive, and the value migrates to them. The harness didn&#8217;t get more important because engineers got sentimental about docs. It got more important because everything around it got cheap.</p><h2>What&#8217;s next</h2><p>This is the framing piece for a set of Field Notes I&#8217;m writing about specific harness moves I&#8217;ve made in real engineering work. The first one is <strong>The Documentation Burst</strong> &#8212; a methodology for converting a year of tacit subsystem context into reusable reference in a single day. After that: <strong>Designing the Gate</strong> (the field note this essay just promised), <strong>The Decision Tree Write-up</strong>, <strong>The Operational Runbook</strong>, and others.</p><p>None of them are about a particular language, framework, or industry. All of them are about senior IC work whose complexity has outrun the tools your team has for capturing it.</p><p>The harness is the work. The Spillover is the place to put what you build.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://kitalexa.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>