<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>README — economics</title>
<link>https://readme.news/tags/economics/</link>
<atom:link href="https://readme.news/tags/economics/feed.xml" rel="self" type="application/rss+xml"/>
<description>README pieces tagged economics.</description>
<language>en-us</language>
<lastBuildDate>Thu, 01 Oct 2026 13:20:31 +0000</lastBuildDate>
<item><title>Observability costs more than the thing it observes</title><link>https://readme.news/observability-costs-more-than-the-thing-it-observes/</link><guid isPermaLink="true">https://readme.news/observability-costs-more-than-the-thing-it-observes/</guid><pubDate>Fri, 10 Apr 2026 09:00:00 +0000</pubDate><description>At some point your telemetry bill exceeded your compute bill and nobody noticed. Here&#x27;s how to fix it without going blind.</description><content:encoded><![CDATA[<p>A meaningful number of organizations now spend more on observability tooling than on the compute being observed. That is not automatically wrong — visibility has real value — but it is almost never a decision anyone made deliberately.</p>
<h2 id="how-it-happens">how it happens<a class="anchor" href="#how-it-happens" aria-label="link to this section">#</a></h2>
<p><strong>Logs at debug level in production</strong>, because someone turned it on during an incident in 2023 and nobody turned it off.</p>
<p><strong>Every metric at every dimension.</strong> A counter with five labels, each with a hundred values, is ten billion time series. Cardinality multiplies and the pricing follows.</p>
<p><strong>100% trace sampling</strong> because sampling felt like giving something up.</p>
<p><strong>Retention set to the maximum</strong> because nobody knew what to pick and the default was generous.</p>
<p><strong>Duplicate pipelines.</strong> Logs going to two vendors during a migration that never completed.</p>
<p>Each decision was locally reasonable. The bill is the sum.</p>
<h2 id="the-reduction-in-order-of-return">the reduction, in order of return<a class="anchor" href="#the-reduction-in-order-of-return" aria-label="link to this section">#</a></h2>
<p><strong>1. Sample traces intelligently.</strong> You do not need every trace. You need:</p>
<ul><li>All traces that errored.</li><li>All traces above a latency threshold.</li><li>A small percentage of the rest, for baseline.</li></ul>
<p>Tail-based sampling — decide after the trace completes, when you know whether it is interesting — typically cuts volume by 90%+ while keeping essentially all diagnostic value. This is the single largest win available.</p>
<p><strong>2. Fix your cardinality.</strong> Find the metrics with the most series. There will be one or two that dominate.</p>
<p>The usual culprits: user ID as a metric label, URL path with IDs in it (<code>/user/12345/profile</code> instead of <code>/user/:id/profile</code>), and <a class="xref" href="/error-messages-are-a-user-interface/" title="Error messages are a user interface">error messages</a> as labels.</p>
<p><strong>Metrics are for aggregates. Events are for specifics.</strong> A user ID belongs in a structured event where it costs one field, not in a metric label where it multiplies the series count.</p>
<p><strong>3. Drop the logs you never query.</strong> Audit what you actually search. Most organizations find that a large fraction of log volume is from a handful of noisy sources nobody has ever looked at — <a class="xref" href="/your-monitoring-is-measuring-the-wrong-nines/" title="Your monitoring is measuring the wrong nines">health check</a> logs, framework debug output, successful-request logs that duplicate a metric.</p>
<p>Route those to cheap object storage rather than an indexed store, or drop them.</p>
<p><strong>4. Tier your retention.</strong> You do not need 90 days of everything.</p>
<ul><li>Metrics: long retention, they are small when aggregated.</li><li>Traces: short, days. You investigate recent things.</li><li>Logs: short and hot for search, long and cold in object storage for compliance.</li></ul>
<p><strong>5. Aggregate at the source.</strong> Emit a histogram, not a thousand individual timing events. Most agents can pre-aggregate and it moves cost from the vendor to your own process, where it is much cheaper.</p>
<h2 id="what-not-to-cut">what not to cut<a class="anchor" href="#what-not-to-cut" aria-label="link to this section">#</a></h2>
<p>Be careful here, because the failure mode of aggressive cost reduction is finding out during an incident that you deleted the thing you needed.</p>
<p><strong>Keep all errors.</strong> Never sample errors. They are rare and they are the whole point.</p>
<p><strong>Keep the request-level events for your critical journeys.</strong> One wide structured event per request, with all the context, is the highest value telemetry you have per byte. It is cheaper than the interior logging it replaces.</p>
<p><strong>Keep enough cardinality to slice by customer and region.</strong> Aggregate-only metrics hide the failures that matter — "one tenant is completely broken" looks identical to "everyone is slightly slower" in a global average.</p>
<h2 id="the-structural-fix">the structural fix<a class="anchor" href="#the-structural-fix" aria-label="link to this section">#</a></h2>
<p><strong>Move from logs to events.</strong> The expensive pattern is many log lines per request, each a string, indexed for full-text search.</p>
<p>The cheap pattern is one structured event per unit of work, with everything you know attached as fields, queried by field rather than by text.</p>
<p>Fewer records, more information per record, dramatically cheaper to store and query. This is the change that actually fixes the cost problem rather than trimming it.</p>
<p><strong>Own your pipeline.</strong> An open telemetry collector between your services and your vendor lets you filter, sample, aggregate, and route without changing application code, and without being locked into one destination's pricing model.</p>
<p>That is worth setting up before your bill is a problem, because doing it under cost pressure means making decisions in a hurry.</p>
<h2 id="the-question-to-ask-quarterly">the question to ask quarterly<a class="anchor" href="#the-question-to-ask-quarterly" aria-label="link to this section">#</a></h2>
<p>For each telemetry stream: <strong>when did we last use this to answer a question?</strong></p>
<p>Anything nobody has queried in a quarter is a candidate for deletion or cold storage. Run the audit. The answer is usually uncomfortable and the savings are usually large.</p>]]></content:encoded></item><item><title>Small models ate the middle</title><link>https://readme.news/small-models-ate-the-middle/</link><guid isPermaLink="true">https://readme.news/small-models-ate-the-middle/</guid><pubDate>Mon, 23 Feb 2026 09:00:00 +0000</pubDate><description>The capability floor rose faster than the ceiling. Most production inference no longer touches a frontier model.</description><content:encoded><![CDATA[<p>The most consequential trend in applied AI over the last eighteen months is not at the frontier. It is that the bottom of the market got good enough for most work.</p>
<h2 id="the-shape-of-it">the shape of it<a class="anchor" href="#the-shape-of-it" aria-label="link to this section">#</a></h2>
<p>Track any capability benchmark across model sizes over time and the pattern is consistent: the frontier improves steadily, and the small-model tier improves faster. The gap between "the best model available" and "a model that costs 2% as much" has been compressing.</p>
<p>The mechanisms are known:</p>
<ul><li><strong>Distillation.</strong> Training small models on the outputs of large ones transfers a surprising amount of capability. The recipes are public.</li><li><strong>Better data.</strong> Curated, synthetic, and filtered training data improves small models disproportionately, because they have less capacity to waste on noise.</li><li><strong>Mixture of experts.</strong> Total parameters for knowledge, <a class="xref" href="/llama-4-arrives-and-the-leaderboard-problem-gets-a-name/" title="Llama 4 arrives, and the leaderboard problem gets a name">active parameters</a> for cost. The economics of a 30B-total/3B-active model are close to a 3B dense model, and the quality is much closer to a 30B dense one.</li><li><strong>Reasoning post-training.</strong> RL on verifiable rewards works on small models. A <a class="xref" href="/haiku-45-and-the-collapsing-cost-of-good-enough/" title="Haiku 4.5 and the collapsing cost of good-enough">small model</a> that thinks can outperform a large model that does not, on the tasks where thinking helps.</li></ul>
<h2 id="what-it-means-in-practice">what it means in practice<a class="anchor" href="#what-it-means-in-practice" aria-label="link to this section">#</a></h2>
<p>Go through a typical production AI workload and categorize the calls:</p>
<div class="table-wrap"><table><thead><tr><th style="text-align:left">task</th><th style="text-align:left">needs frontier?</th></tr></thead><tbody><tr><td style="text-align:left">classify a support ticket</td><td style="text-align:left">no</td></tr><tr><td style="text-align:left">extract fields from a document</td><td style="text-align:left">no</td></tr><tr><td style="text-align:left">summarize a thread</td><td style="text-align:left">no</td></tr><tr><td style="text-align:left">rewrite for tone</td><td style="text-align:left">no</td></tr><tr><td style="text-align:left">generate a SQL query from a question</td><td style="text-align:left">usually not</td></tr><tr><td style="text-align:left">route a request</td><td style="text-align:left">no</td></tr><tr><td style="text-align:left">draft a response</td><td style="text-align:left">usually not</td></tr><tr><td style="text-align:left">debug a subtle concurrency bug</td><td style="text-align:left">yes</td></tr><tr><td style="text-align:left">design a system from a vague brief</td><td style="text-align:left">yes</td></tr><tr><td style="text-align:left">plan a multi-step task with dependencies</td><td style="text-align:left">yes</td></tr></tbody></table></div>
<p>The first column is most of the volume. The second is most of the value per call and a small fraction of the calls.</p>
<p>If you are running everything through a frontier model, you are likely spending a large multiple of what you need to, and you probably have not measured which calls actually need it.</p>
<h2 id="the-architecture">the architecture<a class="anchor" href="#the-architecture" aria-label="link to this section">#</a></h2>
<div class="code"><pre><code>                  ┌─→ small model ──→ verifier ──→ ok? → done
request → route ──┤                              └→ no  ─┐
                  └─→ frontier model ←──────────────────┘</code></pre></div>
<p>Three components and each matters:</p>
<p><strong>The router.</strong> Simpler than people build. Input length, detected task type, and a handful of keywords gets you most of the way. A small model as a classifier works too. Do not build a sophisticated router before you have measured that a simple one is insufficient.</p>
<p><strong>The verifier.</strong> This is the part that gets skipped and it is what makes the architecture safe. Small models fail confidently. A cheap check — schema validation, a range assertion, running the generated code, a second model asked "is this answer plausible" — catches the failures that would otherwise reach production silently.</p>
<p><strong>The escalation path.</strong> When verification fails, retry with the frontier model. Track the rate. If it climbs, something changed.</p>
<h2 id="the-instrumentation-that-matters">the instrumentation that matters<a class="anchor" href="#the-instrumentation-that-matters" aria-label="link to this section">#</a></h2>
<p>Three metrics, on a <a class="xref" href="/the-dashboard-nobody-looks-at/" title="The dashboard nobody looks at">dashboard</a>:</p>
<ol><li><strong>Escalation rate.</strong> The fraction of requests that fall through to the expensive path. This is the health metric for the whole design.</li><li><strong>Cost per successful task</strong>, not per token. Tokens are an implementation detail; tasks are the unit you care about.</li><li><strong>Quality on your eval set, by tier.</strong> Run both tiers against the same evaluation regularly. When a new small model ships, you will know within an hour whether you can move work down.</li></ol>
<h2 id="the-second-order-effect">the second-order effect<a class="anchor" href="#the-second-order-effect" aria-label="link to this section">#</a></h2>
<p>When inference is nearly free, you use more of it.</p>
<p>Things that were not worth a model call become worth it: normalizing an input, double-checking an output, generating three candidates and picking one, enriching a record, summarizing an intermediate step.</p>
<p>The systems being built now use dramatically more model calls per user action than the systems from two years ago, at lower total cost. That is Jevons operating on schedule, and it is why "our AI costs went down per token and up in total" is the normal experience.</p>
<h2 id="the-thing-to-watch">the thing to watch<a class="anchor" href="#the-thing-to-watch" aria-label="link to this section">#</a></h2>
<p>The interesting question is not whether small models keep improving. They will.</p>
<p>It is whether the <em>frontier</em> keeps being worth its premium. If the gap on practically-relevant tasks keeps compressing, the frontier tier's addressable workload shrinks to a narrow band of genuinely hard problems.</p>
<p>That is a much smaller business than the one being priced today, and it is the scenario that ought to worry the labs more than competition does.</p>]]></content:encoded></item><item><title>Haiku 4.5 and the collapsing cost of good-enough</title><link>https://readme.news/haiku-45-and-the-collapsing-cost-of-good-enough/</link><guid isPermaLink="true">https://readme.news/haiku-45-and-the-collapsing-cost-of-good-enough/</guid><pubDate>Thu, 16 Oct 2025 09:00:00 +0000</pubDate><description>A small model at frontier-adjacent coding performance, priced for volume. The economics of agent fleets just changed.</description><content:encoded><![CDATA[<p>Anthropic released Claude Haiku 4.5, a small fast model with coding performance in the neighborhood of the previous generation's mid-tier, at a fraction of the price and several times the speed.</p>
<p>The headline is not the benchmark. It is what the price-performance point makes economically viable.</p>
<h2 id="the-pattern-across-the-industry">the pattern across the industry<a class="anchor" href="#the-pattern-across-the-industry" aria-label="link to this section">#</a></h2>
<p>Every major provider now ships roughly the same ladder:</p>
<div class="table-wrap"><table><thead><tr><th style="text-align:left">tier</th><th style="text-align:left">role</th><th style="text-align:left">relative cost</th></tr></thead><tbody><tr><td style="text-align:left">frontier</td><td style="text-align:left">hard reasoning, planning, novel problems</td><td style="text-align:left">1×</td></tr><tr><td style="text-align:left">mid</td><td style="text-align:left">most production work</td><td style="text-align:left">~0.2×</td></tr><tr><td style="text-align:left">small</td><td style="text-align:left">high-volume, well-defined tasks</td><td style="text-align:left">~0.03×</td></tr></tbody></table></div>
<p>The interesting fact is that the <em>small</em> tier's capability is rising faster than the frontier's. Today's small model is roughly where the frontier was eighteen months ago, and it costs about two percent as much.</p>
<p>For anyone doing volume work, that is the number that matters. Not "how smart is the best model" but "how cheap is the model that is good enough for this task."</p>
<h2 id="what-it-enables">what it enables<a class="anchor" href="#what-it-enables" aria-label="link to this section">#</a></h2>
<p><strong>Agent fleets.</strong> If a small model can handle subtasks reliably, an orchestrator using a <a class="xref" href="/small-models-ate-the-middle/" title="Small models ate the middle">frontier model</a> can dispatch twenty parallel workers using a small one. Total cost stays reasonable; throughput multiplies. This architecture was uneconomic a year ago and is now obvious.</p>
<p><strong>Real-time interaction.</strong> Latency matters more than capability for anything a human is waiting on. A fast model that is 90% as good and 5× faster wins on almost any interactive surface.</p>
<p><strong>Processing everything instead of sampling.</strong> Classification, extraction, routing, and enrichment over an entire corpus rather than a sample. At small-model prices, "run it on all of it" becomes the default rather than a budget question.</p>
<p><strong>Pipeline stages that were not worth it.</strong> Adding a model call to normalize an input, or to double-check an output, or to summarize an intermediate result — each of these was a cost decision at frontier prices and is now free enough to just do.</p>
<h2 id="the-routing-architecture">the routing architecture<a class="anchor" href="#the-routing-architecture" aria-label="link to this section">#</a></h2>
<p>This is the shape that production systems are converging on:</p>
<div class="code"><pre><code>request → cheap classifier → simple?  → small model → done
                           → complex? → frontier model → done
                           → ambiguous? → small model → verifier → escalate if low confidence</code></pre></div>
<p>Most requests take the cheap path. The expensive model handles the tail. Overall cost is dominated by the common case, which is cheap.</p>
<p>Two implementation notes that matter:</p>
<p><strong>The classifier can be the small model itself</strong>, or often a much simpler heuristic. Do not over-engineer the router — a regex and an input-length check gets you surprisingly far.</p>
<p><strong>Instrument the escalation rate.</strong> If it is climbing, either your traffic mix changed or your small-model prompts have degraded. That metric is the <a class="xref" href="/your-monitoring-is-measuring-the-wrong-nines/" title="Your monitoring is measuring the wrong nines">health check</a> for the whole architecture.</p>
<h2 id="the-caution">the caution<a class="anchor" href="#the-caution" aria-label="link to this section">#</a></h2>
<p>Small models fail differently than large ones. They do not fail <em>less</em> on the tasks they handle — they fail <em>more confidently</em> on the ones just outside their envelope.</p>
<p>A large model asked something beyond its ability will often hedge. A small model will answer, fluently and wrongly.</p>
<p>So: verify the output of small models where correctness matters. A cheap verifier — schema validation, a test run, a range check, a second model asked to critique — costs almost nothing and catches the category of failure that will otherwise reach production silently.</p>
<p>The cost savings are real. They come with a verification obligation, and the teams that skip it will find out in a quarter.</p>]]></content:encoded></item><item><title>Rate limits are a product decision, not an infrastructure one</title><link>https://readme.news/rate-limits-are-a-product-decision-not-an-infrastructure-one/</link><guid isPermaLink="true">https://readme.news/rate-limits-are-a-product-decision-not-an-infrastructure-one/</guid><pubDate>Thu, 31 Jul 2025 09:00:00 +0000</pubDate><description>When a tool&#x27;s economics change, the users find out through the limit. There&#x27;s a better way to do that.</description><content:encoded><![CDATA[<p>Several AI tool vendors have adjusted usage limits this month, in most cases tightening them for the heaviest users. The reactions have been loud and the underlying dynamic is worth separating from any particular company's decision.</p>
<h2 id="the-structural-problem">the structural problem<a class="anchor" href="#the-structural-problem" aria-label="link to this section">#</a></h2>
<p>A subscription product with unbounded variable cost per user is a bet that usage distribution stays roughly log-normal. Most users are light, some are heavy, the average works out.</p>
<p>Agentic AI tools break that assumption in a specific way: <strong>the heaviest users are not 10x the median, they are 1000x.</strong> An engineer running parallel agents continuously during work hours consumes a genuinely different order of magnitude than someone asking a few questions a day.</p>
<p>At that spread, flat-rate pricing does not work. There is no price that is both attractive to the median user and non-catastrophic for the top percentile. You either subsidize the heavy users from the light ones — which works until the heavy users are a larger share — or you introduce limits.</p>
<p>Everyone in this category is going to hit this. Most already have.</p>
<h2 id="the-part-that-is-avoidable">the part that is avoidable<a class="anchor" href="#the-part-that-is-avoidable" aria-label="link to this section">#</a></h2>
<p>The economics are not the failure. The communication is.</p>
<p>Here is the pattern that generates anger, which I have now watched play out at four companies:</p>
<ol><li>Launch with generous or unstated limits.</li><li>Users build workflows around the observed capacity.</li><li>Limits tighten, often announced after users notice.</li><li>Users discover the limit by hitting it mid-task.</li><li>The <a class="xref" href="/error-messages-are-a-user-interface/" title="Error messages are a user interface">error message</a> does not say when it resets or how much was used.</li></ol>
<p>Every step after the first is a choice.</p>
<h2 id="what-good-looks-like">what good looks like<a class="anchor" href="#what-good-looks-like" aria-label="link to this section">#</a></h2>
<p><strong>Publish the meter.</strong> If there is a limit, show consumption against it, continuously, before it is hit. Every cloud provider learned this a decade ago. An unmetered limit is a trap regardless of how generous it is.</p>
<p><strong>Give the number in the units the user thinks in.</strong> "You have used 60% of your weekly allowance" is useful. "Rate limit exceeded" is not. Neither is a token count, because nobody has intuition for tokens.</p>
<p><strong>Announce changes before they take effect, with a date.</strong> People will be annoyed. They will be much less annoyed than if they find out at 4 p.m. on a deadline.</p>
<p><strong>Degrade, do not cut off.</strong> Falling back to a cheaper model with a notice is almost always better than a hard stop. The user's task completes; they learn about the limit; nobody loses work.</p>
<p><strong>Make the expensive thing visible while it is happening.</strong> If a request is going to consume a large share of the budget, say so before running it. Users make reasonable decisions when they can see the cost.</p>
<h2 id="the-pricing-shape-that-actually-fits">the pricing shape that actually fits<a class="anchor" href="#the-pricing-shape-that-actually-fits" aria-label="link to this section">#</a></h2>
<p>My read is that this category converges on hybrid: a subscription that covers a defined baseline, plus metered usage above it, with a spend cap the user controls.</p>
<p>That is how cloud infrastructure priced itself, after a decade of the same argument, and for the same reason — the underlying cost is genuinely variable and pretending otherwise breaks in both directions. Flat pricing means either the vendor eats unbounded cost or the user hits a wall.</p>
<p>The version I want as a user: a dial that says "spend up to $X this month," a meter that shows where I am, and no surprises. That is not complicated, and it is strange that a category built by extremely sophisticated companies has mostly not shipped it.</p>
<h2 id="the-vendors-side-fairly">the vendor's side, fairly<a class="anchor" href="#the-vendors-side-fairly" aria-label="link to this section">#</a></h2>
<p>Serving these workloads is genuinely expensive and the costs are not well-predictable even to the vendor. Nobody had usage data for agentic coding tools two years ago because they did not exist.</p>
<p>Getting the pricing wrong initially is forgivable. Adjusting it is necessary. Doing it without a meter, without notice, and with an error message that tells the user nothing — that is the part that is just bad product work.</p>]]></content:encoded></item><item><title>GPT-4.5 is the end of an era, politely</title><link>https://readme.news/gpt-45-is-the-end-of-an-era-politely/</link><guid isPermaLink="true">https://readme.news/gpt-45-is-the-end-of-an-era-politely/</guid><pubDate>Fri, 28 Feb 2025 09:00:00 +0000</pubDate><description>A very large non-reasoning model arrives at very large prices, and mostly demonstrates why the field moved on.</description><content:encoded><![CDATA[<p>OpenAI released GPT-4.5 as a <a class="xref" href="/operator-and-the-long-road-to-an-agent-that-can-click/" title="Operator, and the long road to an agent that can click">research preview</a> this week. It is their largest model, it is not a reasoning model, and its API pricing is roughly an order of magnitude above GPT-4o.</p>
<p>The company's own framing is unusually candid: this is the last of the non-chain-of-thought line, it is better at the things large pretrained models are better at — world knowledge, writing quality, fewer hallucinations, something they describe as improved "EQ" — and it is not designed to compete on math and coding benchmarks against reasoning models.</p>
<p>That framing is correct and it is also an obituary.</p>
<h2 id="what-the-scaling-curve-says-now">what the scaling curve says now<a class="anchor" href="#what-the-scaling-curve-says-now" aria-label="link to this section">#</a></h2>
<p>For most of 2020 to 2023, the answer to "how do we get a better model" was "make it bigger." Scaling laws were the field's organizing principle. GPT-4.5 is what you get when you keep pulling that lever with 2024-era techniques, and what you get is: meaningfully better at some qualitative things, not competitive on the benchmarks people actually optimize for, and expensive enough that the economics are hostile.</p>
<p>Meanwhile, test-time compute — spending inference tokens on reasoning — produces larger gains on hard problems for far less capital. The lever moved.</p>
<p>This does not mean pretraining scale is dead. Reasoning models are built on pretrained base models and a better base makes a better reasoner. It means the <em>marginal</em> dollar goes to post-training and inference compute rather than to another pretraining order of magnitude.</p>
<h2 id="where-the-big-model-is-actually-better">where the big model is actually better<a class="anchor" href="#where-the-big-model-is-actually-better" aria-label="link to this section">#</a></h2>
<p>Worth being fair to it, because the discourse is going to flatten this into "GPT-4.5 flopped."</p>
<p>Large non-reasoning models are genuinely better at:</p>
<ul><li><strong>Writing that sounds like a person.</strong> Reasoning models often produce prose that reads like a report. This one does not.</li><li><strong>Broad factual recall.</strong> More parameters means more memorized world.</li><li><strong>Fewer confident fabrications</strong> on knowledge questions, per OpenAI's own hallucination evaluations.</li><li><strong>Following a conversation</strong> with implicit context over many turns.</li></ul>
<p>If your product is a writing tool, a support agent, or anything where tone and recall matter more than multi-step logic, a bigger base model is the right choice and always was.</p>
<h2 id="the-pricing-problem">the pricing problem<a class="anchor" href="#the-pricing-problem" aria-label="link to this section">#</a></h2>
<p>The price is the story for most developers. At those rates, the set of applications where GPT-4.5 is the correct economic choice is small. It is a model for cases where quality dominates cost, which is a real category and a narrow one.</p>
<p>Expect this to be the pattern going forward: a small number of very expensive models for the top of the quality curve, a large middle of cost-effective workhorses, and cheap small models absorbing everything routine. Route accordingly, and instrument your routing so you know what you are actually spending per feature.</p>
<h2 id="the-historical-note">the historical note<a class="anchor" href="#the-historical-note" aria-label="link to this section">#</a></h2>
<p>Someone will write a retrospective in a few years that treats February 2025 as the moment the pure-scale thesis visibly stopped being the main event. They will be oversimplifying, because these transitions are always gradual and the narrative is always cleaner in hindsight.</p>
<p>But they will not be wrong about the direction.</p>]]></content:encoded></item>
</channel>
</rss>
