<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ai on Coffee or Blog</title>
    <link>https://blog.coffeeordeath.dev/tags/ai/</link>
    <description>Recent content in Ai on Coffee or Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 17 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.coffeeordeath.dev/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Release Discipline in the Age of AI-Accelerated Development</title>
      <link>https://blog.coffeeordeath.dev/posts/release-discipline-in-the-age-of-ai-accelerated-development/</link>
      <pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.coffeeordeath.dev/posts/release-discipline-in-the-age-of-ai-accelerated-development/</guid>
      <description>Photo by Patrick Konior on Unsplash
A maturity model for shipping fast without breaking customer trust.
I made an earlier argument that deploying code and releasing a feature are not the same event, and that treating them as one causes unnecessary risk. That argument still holds. But the environment it was written for has changed.
AI-assisted development has made writing and shipping code dramatically cheaper. A change that used to take a sprint now takes an afternoon.</description>
      <content>&lt;p&gt;&lt;img alt=&#34;Control room overview&#34; src=&#34;https://blog.coffeeordeath.dev/images/decoupling-deployment/hero-control-room.jpg&#34;&gt;
&lt;em&gt;Photo by &lt;a href=&#34;https://unsplash.com/@patrickkonior&#34;&gt;Patrick Konior&lt;/a&gt; on &lt;a href=&#34;https://unsplash.com/photos/a-view-of-a-control-room-from-above-FwHJ6mJjVd4&#34;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A maturity model for shipping fast without breaking customer trust.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I made &lt;a href=&#34;https://blog.coffeeordeath.dev/posts/decoupling-deployment-from-release/&#34;&gt;an earlier argument&lt;/a&gt; that deploying code and releasing a feature are not the same event, and that treating them as one causes unnecessary risk. That argument still holds. But the environment it was written for has changed.&lt;/p&gt;
&lt;p&gt;AI-assisted development has made &lt;em&gt;writing&lt;/em&gt; and &lt;em&gt;shipping&lt;/em&gt; code dramatically cheaper. A change that used to take a sprint now takes an afternoon. That&amp;rsquo;s a genuine gain, but it doesn&amp;rsquo;t automatically make the &lt;em&gt;judgment&lt;/em&gt; around releasing that change any faster or better. When the cost of producing change drops and the discipline around exposing change doesn&amp;rsquo;t rise to match it, the result is exactly what customers are describing: things move, break, or reappear differently, without warning, more often than they can absorb.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here&amp;rsquo;s the core claim: in 2026, the bottleneck in software delivery is not how fast we can write code. It&amp;rsquo;s how deliberately we control who sees a change, when, and with what warning. AI removes the first constraint. It makes the second one more important, not less.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This isn&amp;rsquo;t a call to slow engineering down. It&amp;rsquo;s a call to stop routing all of that new speed straight at the customer, unfiltered.&lt;/p&gt;
&lt;h2 id=&#34;the-symptom-were-solving-for&#34;&gt;The symptom we&amp;rsquo;re solving for&lt;/h2&gt;
&lt;p&gt;Customers aren&amp;rsquo;t complaining that we ship too much. They&amp;rsquo;re complaining about three specific things, and it&amp;rsquo;s worth being precise because each has a different fix:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Rate of change&lt;/strong&gt; — things they learned last month look or behave differently now, with no signal it was coming.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forced change&lt;/strong&gt; — a workflow they depend on changed or disappeared, and they had no way to stay on the old behavior while they adjusted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unpredictability&lt;/strong&gt; — they can&amp;rsquo;t tell the difference between &amp;ldquo;this is a bug&amp;rdquo; and &amp;ldquo;this is intentional,&amp;rdquo; because both arrive the same way: silently.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;None of these are solved by shipping less. All three are solved by &lt;strong&gt;separating four things we currently bundle into one event&lt;/strong&gt;: code lands in production, a feature becomes visible, a customer is told about it, and an old behavior is retired. Each deserves its own timeline, its own owner, and its own decision.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Deployment vs. Release Timeline diagram&#34; src=&#34;https://blog.coffeeordeath.dev/images/decoupling-deployment/deployment-vs-release-timeline.svg&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-four-question-test-for-every-user-visible-change&#34;&gt;The four-question test for every user-visible change&lt;/h2&gt;
&lt;p&gt;Before a change reaches a real customer, someone should be able to answer:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Answer determines&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is it visible?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Whether it needs a flag at all&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is it disruptive?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Whether it needs staged rollout or can go straight to 100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is it reversible?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Whether we need a dual code path, or a simple toggle is enough&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Does it remove something?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Whether it needs a deprecation notice and a minimum notice period&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A change that&amp;rsquo;s invisible (backend refactor, performance work) skips all of this, deploy it and move on. Everything else routes through the toolkit below. The mistake teams make under AI-accelerated velocity is treating &lt;em&gt;all&lt;/em&gt; changes like the first category because the code was cheap to produce.&lt;/p&gt;
&lt;h2 id=&#34;blast-radius-classification&#34;&gt;Blast-radius classification&lt;/h2&gt;
&lt;p&gt;Use this before merge, not after a customer complains. It should take seconds, not a meeting.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Class&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Rollout pattern&lt;/th&gt;
&lt;th&gt;Notice required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Invisible&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Refactor, perf work, dependency bump&lt;/td&gt;
&lt;td&gt;Deploy directly&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Visible, additive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;New optional feature, new button&lt;/td&gt;
&lt;td&gt;Flag → rings → GA&lt;/td&gt;
&lt;td&gt;Changelog entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Visible, behavioral&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Changed default, changed workflow&lt;/td&gt;
&lt;td&gt;Flag → opt-in beta → staged % → GA&lt;/td&gt;
&lt;td&gt;Advance in-app notice + changelog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Disruptive / breaking&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Removed capability, forced migration&lt;/td&gt;
&lt;td&gt;Dual path, minimum notice window, opt-out during transition&lt;/td&gt;
&lt;td&gt;Direct communication, not just changelog&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img alt=&#34;Blast-Radius Classification diagram&#34; src=&#34;https://blog.coffeeordeath.dev/images/release-discipline/blast-radius-classification.svg&#34;&gt;&lt;/p&gt;
&lt;p&gt;The AI-specific risk is that classes 2–4 get produced at the same velocity as class 1, and without this checkpoint they get &lt;em&gt;shipped&lt;/em&gt; at that velocity too. The checkpoint is cheap. Skipping it is what customers are feeling.&lt;/p&gt;
&lt;h2 id=&#34;the-toolkit&#34;&gt;The toolkit&lt;/h2&gt;
&lt;h3 id=&#34;1-feature-flags-but-with-a-lifecycle-not-just-an-onoff-switch&#34;&gt;1. Feature flags, but with a lifecycle, not just an on/off switch&lt;/h3&gt;
&lt;p&gt;Flags fail long-term not because teams don&amp;rsquo;t use them, but because nobody owns their &lt;em&gt;end state&lt;/em&gt;. A flag that&amp;rsquo;s still in the codebase eighteen months after full rollout is a liability, not a safety net. Every flag needs a stated life stage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rollout flag (temporary, by default):&lt;/strong&gt; exists to ramp a change safely. Has an owner and an expected removal date at creation time. Options at end of life:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Graduate&lt;/strong&gt; — feature is fully rolled out and stable → flag is deleted, new behavior becomes the only behavior.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revert&lt;/strong&gt; — didn&amp;rsquo;t work → old path stays, new path is removed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extend deliberately&lt;/strong&gt; — a real reason exists to keep ramping slowly (enterprise contracts, regulatory cohorts) → re-approve with a new date, don&amp;rsquo;t let it drift by default.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational flag (long-lived, by design):&lt;/strong&gt; kill switches, ops-only toggles. These are allowed to live indefinitely, but should be inventoried separately from rollout flags so the two don&amp;rsquo;t get confused in review.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Permission / entitlement flag:&lt;/strong&gt; controls who gets a capability (plan tier, beta cohort, region). Long-lived by design, owned by product.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt=&#34;Flag Lifecycle diagram&#34; src=&#34;https://blog.coffeeordeath.dev/images/release-discipline/flag-lifecycle.svg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ownership split that matters:&lt;/strong&gt; engineering owns &lt;em&gt;whether the flag exists and works&lt;/em&gt;; product/support own &lt;em&gt;when it flips for whom&lt;/em&gt;. That split is still correct, it just now needs a &lt;strong&gt;flag registry with an expiry date on every rollout flag&lt;/strong&gt;, reviewed monthly, or the flag count grows faster than the org&amp;rsquo;s ability to reason about it. AI-generated code makes it trivially easy to wrap a new flag around everything; that&amp;rsquo;s a reason to enforce the registry harder, not skip it.&lt;/p&gt;
&lt;h3 id=&#34;2-progressive-rollout-rings&#34;&gt;2. Progressive rollout rings&lt;/h3&gt;
&lt;p&gt;Don&amp;rsquo;t choose between &amp;ldquo;ship to everyone&amp;rdquo; and &amp;ldquo;ship to no one.&amp;rdquo; Use rings, and pick the entry ring based on the blast-radius class above:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Internal&lt;/strong&gt; — team, then company-wide dogfooding.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design partners / opt-in beta&lt;/strong&gt; — customers who explicitly asked to try new things early. This is where self-service enablement lives (see below).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Staged percentage&lt;/strong&gt; — 5% → 25% → 100%, gated on real usage signals and support ticket volume, not a calendar date.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;General availability&lt;/strong&gt; — announced, documented, supported.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&#34;Progressive Rollout diagram&#34; src=&#34;https://blog.coffeeordeath.dev/images/decoupling-deployment/progressive-rollout.svg&#34;&gt;&lt;/p&gt;
&lt;p&gt;A change only needs to pass through every ring if it&amp;rsquo;s disruptive. Additive, low-risk changes can compress rings 3–4. The point isn&amp;rsquo;t ceremony, it&amp;rsquo;s that &lt;em&gt;someone decided&lt;/em&gt; how much exposure this change gets before it got any, instead of exposure being a side effect of when the deploy happened to land.&lt;/p&gt;
&lt;h3 id=&#34;3-self-service-enablement-beta-opt-in&#34;&gt;3. Self-service enablement (beta opt-in)&lt;/h3&gt;
&lt;p&gt;Give customers a way to &lt;em&gt;choose&lt;/em&gt; to be early, rather than &lt;em&gt;discovering&lt;/em&gt; they&amp;rsquo;re early. Concretely: an in-product &amp;ldquo;early access&amp;rdquo; or &amp;ldquo;labs&amp;rdquo; area where customers can turn on features ahead of GA, with a visible way to turn them back off. This does two things at once:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It converts &amp;ldquo;why did this change on me&amp;rdquo; into &amp;ldquo;I opted into this.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;It gives you a self-selected, motivated feedback cohort before wide rollout, which is a better signal than support tickets after the fact.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The precondition for this to work: opted-in features must be genuinely reversible by the customer. If turning it off doesn&amp;rsquo;t actually turn it off, don&amp;rsquo;t offer it as opt-in, that&amp;rsquo;s a forced change wearing an opt-in costume, and customers notice the difference immediately.&lt;/p&gt;
&lt;h3 id=&#34;4-change-communication-tiered-to-disruption-level&#34;&gt;4. Change communication, tiered to disruption level&lt;/h3&gt;
&lt;p&gt;Not every change deserves the same announcement weight. Matching the tier from the blast-radius table:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Additive:&lt;/strong&gt; changelog / release notes. Low ceremony, always shipped.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Behavioral:&lt;/strong&gt; in-app notice &lt;em&gt;before&lt;/em&gt; the change reaches a user&amp;rsquo;s account, plus changelog. Should say what&amp;rsquo;s changing and, if relevant, how to preview it early via opt-in beta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disruptive / breaking:&lt;/strong&gt; direct communication (email, CSM, in-app banner with acknowledgment) with a stated timeline, not just a mention in release notes. If there&amp;rsquo;s a deadline for an old behavior going away, that deadline should be visible to the customer well before it arrives, not just to us.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A useful gut check: if a customer would reasonably say &amp;ldquo;I wish someone had told me,&amp;rdquo; the tier was too low.&lt;/p&gt;
&lt;h3 id=&#34;5-deprecation-without-forced-change&#34;&gt;5. Deprecation without forced change&lt;/h3&gt;
&lt;p&gt;The single biggest driver of the &amp;ldquo;forced change&amp;rdquo; complaint is removing something before the data says it&amp;rsquo;s safe to. The pattern that avoids it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;New path ships behind a flag, old path stays live.&lt;/li&gt;
&lt;li&gt;Both paths run in parallel long enough to gather real usage data, not a fixed arbitrary window, but until usage of the old path is actually low or zero.&lt;/li&gt;
&lt;li&gt;A minimum notice period is announced &lt;em&gt;before&lt;/em&gt; the old path is scheduled for removal, sized to the disruption class (days for a minor UI tweak, months for a workflow customers have built process around).&lt;/li&gt;
&lt;li&gt;Only once notice has elapsed and usage has dropped does the old path get deleted, as its own change, separately reviewed from the feature that replaced it.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt=&#34;Dual code paths diagram&#34; src=&#34;https://blog.coffeeordeath.dev/images/decoupling-deployment/dual-code-paths.svg&#34;&gt;&lt;/p&gt;
&lt;p&gt;This costs engineering effort (two paths, temporarily) in exchange for the thing customers are actually asking for: predictability. That trade is almost always worth making for anything customer-facing.&lt;/p&gt;
&lt;h2 id=&#34;what-ai-accelerated-development-changes-specifically&#34;&gt;What AI-accelerated development changes, specifically&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The proposal rate goes up, the review/rollout rate doesn&amp;rsquo;t automatically follow.&lt;/strong&gt; The gap between them is where uncontrolled change leaks out. Treat rollout classification as a required step in the definition of done, not an optional nicety, it&amp;rsquo;s the part of the pipeline that didn&amp;rsquo;t get faster, so it needs to be protected, not skipped under pressure to keep pace.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flag sprawl accelerates.&lt;/strong&gt; If it&amp;rsquo;s cheap to generate a flag-wrapped change, flags will be created faster than they&amp;rsquo;re retired unless the registry-and-expiry habit from the toolkit above is enforced, not just recommended.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;It&amp;rsquo;s just a small change&amp;rdquo; stops being a reliable signal.&lt;/strong&gt; AI can produce a large, behaviorally significant change with the same apparent effort as a small one. Blast-radius classification should be based on what the change &lt;em&gt;does&lt;/em&gt;, not how much manual effort it took to write, that correlation has broken.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volume of change is a communications problem now, not just an engineering one.&lt;/strong&gt; If ship velocity increases, either communication cadence scales with it, or customers experience the increase as noise. Product/support capacity to write good change notices becomes a real constraint on release pace, plan for it explicitly rather than discovering it during a rollout.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;a-maturity-model-to-self-assess-against&#34;&gt;A maturity model to self-assess against&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Deploy vs release&lt;/th&gt;
&lt;th&gt;Flags&lt;/th&gt;
&lt;th&gt;Communication&lt;/th&gt;
&lt;th&gt;Deprecation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;0 — Coupled&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Deploy = release, always&lt;/td&gt;
&lt;td&gt;None, or ad hoc&lt;/td&gt;
&lt;td&gt;Release notes after the fact, if at all&lt;/td&gt;
&lt;td&gt;Rip and replace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1 — Flags exist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Some features flagged&lt;/td&gt;
&lt;td&gt;Used inconsistently, no registry&lt;/td&gt;
&lt;td&gt;Changelog exists&lt;/td&gt;
&lt;td&gt;Removal decided by engineering alone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2 — Rings defined&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Standard for risky changes&lt;/td&gt;
&lt;td&gt;Registry exists, no expiry discipline&lt;/td&gt;
&lt;td&gt;Tiered by change type&lt;/td&gt;
&lt;td&gt;Notice periods exist but informal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3 — Customer-facing control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Default practice&lt;/td&gt;
&lt;td&gt;Expiry dates enforced, monthly review&lt;/td&gt;
&lt;td&gt;Self-serve beta / early access live&lt;/td&gt;
&lt;td&gt;Data-gated removal, formal notice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4 — Governed change contract&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Assumed, invisible as a decision&lt;/td&gt;
&lt;td&gt;Flags treated as inventory with owners&lt;/td&gt;
&lt;td&gt;Change comms scale with ship velocity by design&lt;/td&gt;
&lt;td&gt;Deprecation SLA is a documented customer commitment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Most orgs feeling the pain described at the top of this post are sitting between Level 0 and 1, while their &lt;em&gt;code output&lt;/em&gt; has jumped to what used to require a Level 3 org&amp;rsquo;s engineering throughput. That mismatch, velocity outrunning governance, is the actual root cause, not &amp;ldquo;we ship too much&amp;rdquo; or &amp;ldquo;AI is risky.&amp;rdquo; The fix is closing the governance gap, not throttling the code.&lt;/p&gt;
&lt;h2 id=&#34;getting-started-in-order&#34;&gt;Getting started, in order&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Adopt the four-question test and blast-radius table&lt;/strong&gt; as a required checklist step before merge for anything customer-visible. This alone catches most of the &amp;ldquo;forced change&amp;rdquo; and &amp;ldquo;no warning&amp;rdquo; complaints.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stand up a flag registry with expiry dates.&lt;/strong&gt; Even a spreadsheet beats nothing. Review monthly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Define your rings&lt;/strong&gt; and who has authority to move a change from one ring to the next.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ship a self-serve early-access surface&lt;/strong&gt;, even a minimal one. It reframes the relationship from &amp;ldquo;this happened to me&amp;rdquo; to &amp;ldquo;I chose this.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write a deprecation SLA&lt;/strong&gt;, minimum notice periods by disruption class, and hold to it publicly. This is the fastest way to rebuild trust with customers who&amp;rsquo;ve been burned by forced changes before.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;the-bottom-line&#34;&gt;The bottom line&lt;/h2&gt;
&lt;p&gt;AI didn&amp;rsquo;t create the need for release discipline, it just removed the natural speed limit that used to give teams cover for not having it. The teams that get faster &lt;em&gt;and&lt;/em&gt; keep customer trust in 2026 aren&amp;rsquo;t the ones writing more code carefully. They&amp;rsquo;re the ones who separated &amp;ldquo;we built it&amp;rdquo; from &amp;ldquo;you see it&amp;rdquo; a long time ago, and are now deliberately re-tuning that separation for a world where the first half of that sentence happens ten times faster than it used to.&lt;/p&gt;
&lt;p&gt;Deploy fearlessly. Release deliberately. That was true before AI. It&amp;rsquo;s the whole game now.&lt;/p&gt;
</content>
    </item>
    
    <item>
      <title>The Pass-Through Problem</title>
      <link>https://blog.coffeeordeath.dev/posts/2026-04-10---the-pass-through-problem/</link>
      <pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate>
      
      <guid>https://blog.coffeeordeath.dev/posts/2026-04-10---the-pass-through-problem/</guid>
      <description>Someone asks you a question. You don&amp;rsquo;t know the answer off the top of your head, so you paste it into Claude, copy the response, and send it back.
That&amp;rsquo;s not a human interaction. That&amp;rsquo;s a very slow API call with extra steps.
I keep seeing this pattern, at work, on forums, in social communities, and it makes me wonder if we&amp;rsquo;ve completely missed the point. Not of AI. Of ourselves.</description>
      <content>&lt;p&gt;Someone asks you a question. You don&amp;rsquo;t know the answer off the top of your head, so you paste it into Claude, copy the response, and send it back.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s not a human interaction. That&amp;rsquo;s a very slow API call with extra steps.&lt;/p&gt;
&lt;p&gt;I keep seeing this pattern, at work, on forums, in social communities, and it makes me wonder if we&amp;rsquo;ve completely missed the point. Not of AI. Of ourselves.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what the pattern tells the person on the other end: &lt;em&gt;I could not be bothered to engage with your question.&lt;/em&gt; The response might be accurate. It might even be helpful. But it carries a clear signal: you were not worth the effort of actual thought. The sender probably didn&amp;rsquo;t mean it that way. It doesn&amp;rsquo;t matter. That&amp;rsquo;s what arrived.&lt;/p&gt;
&lt;p&gt;If I wanted an LLM answer, I would have asked the LLM. I asked &lt;strong&gt;you&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The useful version of this technology isn&amp;rsquo;t a faster copy-paste. It&amp;rsquo;s a forcing function. The interactions that &lt;em&gt;don&amp;rsquo;t&lt;/em&gt; require a human (the FAQ, the status update, the &amp;ldquo;what does this acronym mean&amp;rdquo;) should go away entirely. Build a better doc. Point to a bot. Remove the friction. That&amp;rsquo;s the job.&lt;/p&gt;
&lt;p&gt;What should be left over is the stuff that actually requires a person. Judgment calls. Messy context. The question behind the question. The moments that only work if someone actually gives a shit.&lt;/p&gt;
&lt;p&gt;Those interactions deserve more, not less. If AI is buying back any of your time, that&amp;rsquo;s where it goes. And if you&amp;rsquo;re one of the people who already gets that — start talking about it. The people around you are probably already losing the thread, and they don&amp;rsquo;t know it yet.&lt;/p&gt;
&lt;p&gt;What&amp;rsquo;s happening instead is the opposite. The low-effort questions get a low-effort LLM response dressed up as a human answer. The hard questions get the same treatment. And slowly, the expectation of genuine engagement just&amp;hellip; lowers.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a word for what this looks like at scale: &lt;a href=&#34;https://pluralistic.net/2023/01/21/potemkin-ai/#hey-ho-lets-go&#34;&gt;enshittification&lt;/a&gt;. And I don&amp;rsquo;t think the people doing it are cynical. I believe they&amp;rsquo;re trying. They picked up - or were forced to use - a powerful tool and pointed it at a real problem. Nobody handed them a manual for which problems it should and shouldn&amp;rsquo;t touch.&lt;/p&gt;
&lt;p&gt;But good intentions don&amp;rsquo;t change what lands on the other end. The person who asked you something real still got a hollow answer. The gap between meaning well and doing well is exactly where the work is.&lt;/p&gt;
&lt;p&gt;The technology isn&amp;rsquo;t the problem. Mistaking the shortcut for the improvement is. And that mistake doesn&amp;rsquo;t land evenly. For some people, a hollow answer isn&amp;rsquo;t an inconvenience - it&amp;rsquo;s confirmation of something they were already afraid was true. The impact isn&amp;rsquo;t equally distributed. Neither is the responsibility to fix it.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
