<?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[Jagadeesh Rampam]]></title><description><![CDATA[Tech, research, field notes, BTS of our products: Parjanya v2.0, WilderhoodTV, Smriti LLM
https://phagyul.ai]]></description><link>https://blog.phagyul.ai</link><image><url>https://blog.phagyul.ai/img/substack.png</url><title>Jagadeesh Rampam</title><link>https://blog.phagyul.ai</link></image><generator>Substack</generator><lastBuildDate>Wed, 27 May 2026 22:14:21 GMT</lastBuildDate><atom:link href="https://blog.phagyul.ai/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jagadeesh Rampam]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jagadeeshrampam@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jagadeeshrampam@substack.com]]></itunes:email><itunes:name><![CDATA[Phagyul AI Systems Pvt Ltd]]></itunes:name></itunes:owner><itunes:author><![CDATA[Phagyul AI Systems Pvt Ltd]]></itunes:author><googleplay:owner><![CDATA[jagadeeshrampam@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jagadeeshrampam@substack.com]]></googleplay:email><googleplay:author><![CDATA[Phagyul AI Systems Pvt Ltd]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[The ARM Wheel Problem: What's Actually Standing Between You and Graviton's 34% Cost Savings ]]></title><description><![CDATA[A technical deep-dive using Parjanya's ML pipeline as a case study &#8212; and a framework for evaluating Graviton readiness for any product.]]></description><link>https://blog.phagyul.ai/p/the-arm-wheel-problem-whats-actually</link><guid isPermaLink="false">https://blog.phagyul.ai/p/the-arm-wheel-problem-whats-actually</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Wed, 27 May 2026 05:12:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PPpf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AWS will tell you Graviton Lambda delivers up to <strong>34% better price-performance</strong> over x86. That number is not wrong. But it also is not the number that matters when you are trying to migrate a real system.</p><p>The number that matters is this one: <strong>how many of your Lambda functions can actually run on ARM64 today</strong> &#8212; not in theory, not on a clean greenfield stack, but with your actual dependencies, your actual Python version, and your actual C extensions.</p><p>For Parjanya, an ML-powered image quality pipeline, the answer started at 1 out of 4. That gap &#8212; between what Graviton promises and what your stack allows &#8212; is almost entirely explained by a single, under appreciated concept: the <strong>ARM wheel</strong>.</p><p>This article explains what ARM wheels are, why they are the gatekeeper to Graviton savings, how the Parjanya re-architecture navigated them, and how to build a framework for evaluating Graviton readiness in any product.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PPpf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PPpf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!PPpf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!PPpf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!PPpf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PPpf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1342571,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199420348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PPpf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!PPpf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!PPpf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!PPpf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ec36df4-b62e-4000-a45e-a906ab92a62c_1774x887.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>First, an Honest Framing of the 34% Number</h2><p>AWS&#8217;s stated price-performance advantage for Graviton Lambda comes from two compounding factors:</p><p><strong>Pricing</strong>: ARM64 Lambda is priced approximately <strong>20% lower</strong> per GB-second than equivalent x86 Lambda. This is a direct line-item discount.</p><p><strong>Performance</strong>: For SIMD-heavy workloads &#8212; image processing, compression, media encoding &#8212; ARM NEON instruction sets often complete work faster than x86 AVX-512 for the same memory allocation, which effectively reduces billed duration.</p><p>In Parjanya&#8217;s $10 POC (running PIL-based image processing against Graviton4 and Intel x86), the empirical result was a <strong>24% cost delta</strong> &#8212; Intel x86 cost 24% more for identical or worse performance. AWS&#8217;s 34% claim holds at the higher end because it accounts for the full price-performance package including EC2 and container workloads.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:183157310,&quot;url&quot;:&quot;https://blog.phagyul.ai/p/aws-graviton4-vs-intel-x86-from-10&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;AWS Graviton4 vs Intel x86: From $10 POC to Production Validation&quot;,&quot;truncated_body_text&quot;:&quot;The Journey Begins: Why We Needed to Validate&quot;,&quot;date&quot;:&quot;2026-01-01T17:43:42.193Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://blog.phagyul.ai/p/aws-graviton4-vs-intel-x86-from-10?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">AWS Graviton4 vs Intel x86: From $10 POC to Production Validation</div></div><div class="embedded-post-body">The Journey Begins: Why We Needed to Validate&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 2 likes</div></a></div><p>The savings are real. The caveat is that they only materialise if your software stack is compatible.</p><div class="pullquote"><p><strong>And this is almost entirely an AWS-specific story.</strong> Other cloud providers have ARM compute (Azure&#8217;s Ampere A1, GCP&#8217;s Tau T2A), but the degree of ecosystem investment &#8212; SDK support, Lambda ARM64 availability, Graviton-specific tuning, managed service integration &#8212; is significantly deeper on AWS. If you are evaluating Graviton for cost optimisation, that analysis does not port cleanly to other clouds without re-running the entire readiness assessment from scratch.</p></div><div><hr></div><h2>What Is an ARM Wheel?</h2><p>Before evaluating Graviton readiness, you need to understand what a Python wheel is and why the ARM variant specifically matters.</p><p>A <strong>wheel</strong> (<code>.whl</code>) is a pre-built binary distribution of a Python package. When you run <code>pip install numpy</code>, pip looks for a wheel that matches your platform. If it finds one, it downloads and installs it directly &#8212; no compilation required. If it does not, pip falls back to downloading source code and compiling it locally.</p><p>For pure Python packages, this distinction is irrelevant. The bytecode runs anywhere.</p><p>For packages with native C/C++ extensions &#8212; NumPy, Pillow, OpenCV, PyTorch, SciPy, and most of the ML ecosystem &#8212; a wheel is architecture-specific. A wheel built for <code>x86_64</code> will not install on <code>aarch64</code>. The package must publish a separate wheel for ARM64.</p><p>The naming convention tells you exactly what architecture a wheel targets:</p><pre><code><code>numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl   # x86
numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl  # ARM64</code></code></pre><p>The <code>aarch64</code> suffix is what you are looking for. If it exists, installation is clean. If it does not, you are in source-build territory &#8212; and source builds in Lambda container images introduce a layer of complexity that breaks most &#8220;just change the architecture flag&#8221; migration plans.</p><h3>The Four States of a Dependency</h3><p>When evaluating a Python service for ARM64 migration, every dependency falls into one of four categories:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lsKp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lsKp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!lsKp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!lsKp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!lsKp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lsKp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1400983,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199420348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lsKp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!lsKp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!lsKp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!lsKp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9bc4146e-39da-4be6-badd-4be1992127e9_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This matrix is the actual output of a Graviton readiness assessment. Not a benchmark. Not a cost model. The wheel matrix.</p><div><hr></div><h2>The Parjanya Case Study: From 1/4 to 3/4</h2><p>Parjanya&#8217;s pipeline had four compute stages, each containerised and isolated. When the first Graviton migration attempt was made, only one &#8212; the deduplication stage &#8212; made it onto ARM64. The other three were blocked.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;561ca630-f136-4d48-a2d8-5f6a60a4b31b&quot;,&quot;caption&quot;:&quot;Graviton adoption is not a hardware decision. It is an ecosystem decision.&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;From 1/4 to 3/4: Re-architecting an ML Pipeline for Graviton&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-20T03:12:24.512Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!7d0n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.phagyul.ai/p/from-14-to-34-re-architecting-an&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:194750491,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>Here is what happened at each stage:</p><h3>Stage 1: RAW Processing (Blocked &#8594; Eventually Bypassed)</h3><p>Canon CR3 RAW files require binary parsing to extract embedded JPEGs. The dependency chain pulled in native image parsers without clean <code>aarch64</code> wheels. Compilation from source failed or produced unstable binaries in the Lambda container environment.</p><p><strong>Resolution</strong>: The stage architecture changed. Rather than fight a fragile native dependency chain, the pipeline design shifted to extract JPEG previews at ingest &#8212; earlier in the flow &#8212; reducing the surface area where native RAW parsing was required.</p><h3>Stage 2: CLIP-IQA Scoring (Blocked &#8594; Replaced)</h3><p>CLIP-IQA was being used for visual quality scoring. It had two problems, not one:</p><ol><li><p><strong>Wheel problem</strong>: The ARM64 wheel chain for its dependencies was incomplete. Installing it in a Graviton Lambda container was unreliable.</p></li><li><p><strong>Model problem</strong>: CLIP-IQA was trained on stock photos, not professional RAW captures. It accepted only ~1% of professional images, making it useless for the actual curation use case.</p></li></ol><p><strong>Resolution</strong>: The entire stage was replaced with a rule-based technical validator &#8212; exposure clipping detection, blur scoring, sharpness scoring, and perceptual hashing. No ML forward pass. No compiled extensions in the hot path. The new validator ran in pure Python, deployed cleanly on ARM64, and executed in under 100ms per image.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;4d96c941-63ba-45c2-976f-5f9ac398d47a&quot;,&quot;caption&quot;:&quot;I did not set out to replace a scoring engine with a rule engine. I set out to make the system cheaper, easier to explain, and less fragile as I was not keen on moving to g5.xlarge or g6.xlarge due to prompt sizes increased and would be lot of churn in terms of architectural and infra changes, comes with re testing every functionality and the increase i&#8230;&quot;,&quot;cta&quot;:null,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;From Score Engine to Rule Engine: Why I Rebuilt the Decision Layer&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-05-14T11:27:06.716Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!UKjF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://blog.phagyul.ai/p/from-score-engine-to-rule-engine&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:197643272,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p>This is the single most important insight from the Parjanya migration:</p><blockquote><p><strong>The fastest path to ARM64 is sometimes not to migrate the workload. It is to replace the workload.</strong></p></blockquote><p>The new <code>parjanya-technical_validator</code> runs on <code>arm64</code> with Python 3.12 and 512 MB memory. It is not a compromise &#8212; it is measurably better: faster, cheaper, more correct, and production-verified.</p><h3>Stage 3: GPU Inference (Intentional Hard Boundary)</h3><p>The VLM inference stage runs <code>Qwen3-VL-8B-Instruct</code> and requires CUDA. CUDA is the hard architectural boundary.</p><p>CUDA is NVIDIA&#8217;s parallel computing platform. It runs on NVIDIA GPUs, which are paired with x86_64 hosts in most production setups including AWS g5 instances. There is no ARM64 CUDA story in Lambda.</p><p><strong>Resolution</strong>: The GPU inference stage was <strong>not</strong> migrated. Instead, the control plane was separated from execution:</p><ul><li><p>A lightweight Lambda &#8212; ARM64 &#8212; handles scheduling logic: when to scale the GPU fleet, when to drain it</p></li><li><p>The actual VLM inference runs on EC2 g5 instances in an Auto Scaling Group</p></li><li><p>The Lambda no longer needs ML libraries, so it migrated to Graviton without any dependency issues</p></li></ul><p>This is architectural isolation &#8212; moving the ARM64-compatible logic (scheduling, orchestration) onto Graviton and leaving the ARM64-incompatible logic (GPU inference) exactly where it belongs.</p><h3>Stage 4: Deduplication (Original Success)</h3><p>Small, CPU-bound, dependency-light. Perceptual hashing with no native C extensions in the hot path. This was the function that migrated cleanly from day one, and it remains the model for what &#8220;Graviton-ready&#8221; looks like: pure logic, minimal native dependencies, well-supported Python ecosystem.</p><h3>The Current State</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RVAv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RVAv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RVAv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RVAv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RVAv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RVAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1268097,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199420348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RVAv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RVAv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RVAv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RVAv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82b92b44-d06a-4a1a-8f60-a12892b3c4fb_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three of four Lambda functions on Graviton (+1 scheduler). The remaining x86 workload is the one that genuinely belongs there.</p><div><hr></div><h2>Why ARM Wheels Fail: The Root Causes</h2><p>Understanding why a package lacks an ARM64 wheel helps you predict and resolve failures faster.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tAxd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tAxd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!tAxd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!tAxd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!tAxd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tAxd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1108106,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199420348?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tAxd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 424w, https://substackcdn.com/image/fetch/$s_!tAxd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 848w, https://substackcdn.com/image/fetch/$s_!tAxd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 1272w, https://substackcdn.com/image/fetch/$s_!tAxd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F026f3ec8-c1ad-46be-ac11-db38ad8c53af_1672x941.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>1. The package maintainer hasn&#8217;t built it yet</h3><p>Many packages added <code>aarch64</code> wheel support in 2022&#8211;2024 as AWS Graviton gained adoption. Packages that haven&#8217;t been updated since then may still not publish ARM64 wheels. This is solvable by checking the current release on PyPI &#8212; support often appears in later versions.</p><h3>2. GLIBC version mismatch</h3><p>Lambda&#8217;s ARM64 runtime uses Amazon Linux 2023. A wheel built against an older GLIBC version (<code>manylinux2014</code>) may not install cleanly in that environment. When you see installation errors that reference GLIBC, this is the cause. The fix is to build your container image from the correct ARM64 base image and verify wheel compatibility inside it &#8212; not on your development machine.</p><h3>3. Transitive dependencies break the chain</h3><p>Even if the top-level package publishes an ARM64 wheel, its transitive dependencies may not. OpenCV is a canonical example: <code>opencv-python</code> may install, but a transitive dependency on a specific image codec library may not have an ARM64 wheel. The failure surface is the entire dependency tree, not just the packages you explicitly listed.</p><h3>4. ABI incompatibility</h3><p>Some packages have version-specific ABI contracts. A package pinned to an older version may have published an x86_64 wheel for that version but not an ARM64 one. When you pin for stability and the pinned version predates ARM64 support, you are stuck &#8212; until you unpin.</p><h3>5. Build-time assumptions in C extensions</h3><p>Some C extensions were written with x86 assumptions baked into SIMD code paths, memory alignment behaviour, or endianness handling. These may compile on ARM64 but behave incorrectly at runtime. This is rare but dangerous &#8212; it is the category where correctness testing matters most.</p><div><hr></div><h2>A Practical Evaluation Framework for Any Product</h2><p>The following process translates the Parjanya experience into a repeatable assessment for any Lambda-based system.</p><h3>Phase 1: Dependency Audit (Before Touching Infrastructure)</h3><p>For every Lambda or containerised service, generate the full dependency tree including transitive dependencies:</p><pre><code><code>pip install pipdeptree
pipdeptree --warn silence</code></code></pre><p>Then, for every package with a native C extension (you can identify these by checking if the installed package contains <code>.so</code> files):</p><pre><code><code>find /path/to/site-packages -name "*.so" | sort</code></code></pre><p>Classify each package against the four-state matrix above. The output is your wheel matrix &#8212; one row per native dependency, one column per state.</p><h3>Phase 2: Build Environment Test (Before Assuming Local Results)</h3><p>Do not test ARM64 compatibility on your development machine. Build inside an ARM64 environment:</p><pre><code><code># Docker on an Apple Silicon Mac or a Graviton EC2 instance
docker build --platform linux/arm64 -f Dockerfile.arm64 .</code></code></pre><p>The Lambda execution environment is Amazon Linux 2023 on <code>aarch64</code>. Your build environment should match this exactly. A dependency that installs cleanly in a generic ARM64 Docker image may still fail in the Lambda runtime &#8212; validate inside the correct base image.</p><h3>Phase 3: Runtime Validation (Beyond Installation)</h3><p>Successful installation is not the same as correct runtime behaviour. For packages that made it through the build:</p><ul><li><p>Run your actual workload, not a smoke test</p></li><li><p>Measure latency and memory usage under ARM64 &#8212; they may differ from x86 even when the package installs cleanly</p></li><li><p>For any package in the &#8220;source build required&#8221; category, verify that the compiled binary links against the correct system libraries at runtime</p></li></ul><h3>Phase 4: The Three-Question Decision Gate</h3><p>For each service in your stack, answer these three questions:</p><ol><li><p><strong>Does every native dependency have an ARM64 wheel for my Python version and target runtime?</strong></p><ul><li><p>If yes: proceed to migration</p></li><li><p>If no: go to question 2</p></li></ul></li><li><p><strong>Can I build from source reliably in CI, in the correct ARM64 environment, with the correct GLIBC version?</strong></p><ul><li><p>If yes: proceed with source-build path; add a CI gate that fails if compilation regresses</p></li><li><p>If no: go to question 3</p></li></ul></li><li><p><strong>Can I replace the dependency or the entire stage with something ARM64-compatible?</strong></p><ul><li><p>If yes: replace it &#8212; this is often the better outcome anyway</p></li><li><p>If no: this stage stays on x86; isolate it intentionally rather than blocking the rest of the migration</p></li></ul></li></ol><p>This decision tree is what the Parjanya migration followed, even if it was not formalised until the second iteration.</p><h3>Phase 5: Architectural Boundary Declaration</h3><p>For every stage that cannot move to ARM64, declare the boundary explicitly in your architecture documentation:</p><ul><li><p>What is the technical reason it stays on x86 (CUDA dependency, missing wheel, untested behaviour)?</p></li><li><p>What would need to change for it to become migratable?</p></li><li><p>Is the x86 stage fully isolated so that the ARM64 migration of other stages is not blocked by it?</p></li></ul><p>The goal is intentional architecture, not incomplete migration. A GPU inference stage that stays on x86 by design is not a failure. It is a correct architectural boundary.</p><div><hr></div><h2>What This Means for New Products: Building for ARM Portability</h2><p>If you are building a new product and want to default to Graviton for cost efficiency, the considerations are different from migration. The choices you make at the start of your architecture will determine how much of the system can run on ARM64.</p><h3>Choose dependency-light stages where possible</h3><p>The deduplication stage in Parjanya worked on Graviton from day one because it had minimal native dependencies. When designing a new service, ask whether a pure-Python or well-supported-wheel implementation can solve the problem before reaching for a heavier ML or native library.</p><h3>Treat CUDA as a hard architectural boundary from the start</h3><p>If a stage requires GPU inference, isolate it behind a clean interface from day one. The scheduling logic, the orchestration, the result handling &#8212; all of that can run on ARM64. Only the GPU execution itself needs x86. Design for that split explicitly rather than letting the GPU requirement contaminate surrounding stages.</p><h3>Version-pin with ARM64 wheel availability in mind</h3><p>When locking dependency versions for reproducibility, verify that your pinned versions ship <code>manylinux_aarch64</code> wheels. A version that was pinned for stability before the package added ARM64 support will block migration silently &#8212; you will not know until you try to build.</p><h3>Build in CI on ARM64 from day one</h3><p>Adding ARM64 build validation to your CI pipeline when you start a project costs almost nothing. Adding it after 18 months of x86-first development costs weeks of debugging. Many packages add and remove ARM64 wheel support across versions; having a CI gate that verifies ARM64 builds on every dependency update catches regressions immediately.</p><h3>Use the 20% Lambda pricing delta as a design signal</h3><p>AWS prices ARM64 Lambda at approximately 20% less than x86. That is not just an operational saving &#8212; it is a signal about where to route compute. If a function is trivially portable (pure Python, well-supported wheels), choosing x86 without evaluating ARM64 first is a deliberate decision to pay a 20% premium for no benefit.</p><div><hr></div><h2>The AWS-Specific Caveat</h2><p>Everything in this post is calibrated to AWS. The cost numbers, the Lambda architecture flag, the Graviton family of processors, the <code>manylinux_aarch64</code> wheel availability for AWS runtimes &#8212; these are AWS-specific.</p><p>Other cloud providers offer ARM compute. Azure has Ampere A1-based VMs. GCP has Tau T2A. But:</p><ul><li><p>Serverless ARM support (equivalent to Lambda arm64) is not uniformly available or mature across providers</p></li><li><p>The degree of AWS-specific optimisation in the Python scientific and ML ecosystem &#8212; particularly for Graviton NEON instructions &#8212; is not replicated elsewhere</p></li><li><p>Cost structures differ; the 20% pricing delta is an AWS Lambda figure and does not translate directly to other billing models</p></li></ul><p>If you are building a multi-cloud or cloud-agnostic system, treat Graviton optimisation as an AWS-specific tuning layer rather than a foundational architectural decision. The portability of your ARM64-compatible stages will transfer. The AWS-specific performance characteristics will not.</p><div><hr></div><h2>The Real Cost Model</h2><p>The standard framing of Graviton savings is &#8220;20% cheaper Lambda.&#8221; That is accurate but incomplete. The full savings model for an architecture like Parjanya&#8217;s has four components:</p><ol><li><p><strong>Lower per-invocation Lambda cost</strong> on ARM64 (~20% pricing delta, compounding with every invocation)</p></li><li><p><strong>Avoided NAT data-path spend</strong> &#8212; VPC gateway endpoints route S3 and DynamoDB traffic without NAT tax; this is infrastructure rather than ARM64, but it compounds with the migration</p></li><li><p><strong>Reduced ML over-processing</strong> &#8212; a rule-based pre-filter like <code>parjanya-technical_validator</code> rejects bad images before they reach the GPU queue; every rejected frame is a GPU invocation that never happens</p></li><li><p><strong>Lower operational overhead</strong> &#8212; fragile native builds create deployment failures, cold start issues, and CI complexity; removing them reduces engineering time</p></li></ol><p>For a high-volume pipeline, component 3 often dominates. The ARM64 savings from the validator are real. But the savings from not running expensive GPU inference on images that would have been rejected anyway are an order of magnitude larger.</p><p>This is the correct way to think about Graviton adoption: not as a compute cost reduction in isolation, but as an opportunity to reconsider stage design, dependency choices, and processing flow in ways that compound the savings.</p><div><hr></div><h2>Summary</h2><p>The ARM wheel is the gatekeeper to Graviton savings. Not the hardware, not AWS support, not your application code. The compiled binary distribution of your Python dependencies &#8212; and whether it exists for <code>aarch64</code> &#8212; is what determines whether a given Lambda function can run on Graviton.</p><p>The practical conclusions from Parjanya&#8217;s full migration arc:</p><ul><li><p><strong>Audit your wheel matrix before you plan your migration.</strong> The output tells you which functions migrate, which need source builds, and which need architectural changes.</p></li><li><p><strong>Build in an ARM64 environment that matches your Lambda runtime.</strong> Local results on x86 do not predict ARM64 install success.</p></li><li><p><strong>Replacement is often faster than migration.</strong> A fragile ML stage replaced by a dependency-light rule-based implementation solves the ARM64 problem, the reliability problem, and often the correctness problem simultaneously.</p></li><li><p><strong>Isolate x86 hard boundaries explicitly.</strong> CUDA is the cleanest example &#8212; design around it rather than pretending it is temporary.</p></li><li><p><strong>Partial adoption is architecture, not failure.</strong> Running 3 of 4 Lambda functions on Graviton with an intentional x86 boundary at the GPU stage is a correct outcome.</p></li></ul><p>Graviton adoption is not a hardware decision. The hardware is already ready. It is an ecosystem decision &#8212; and the ARM wheel matrix is where that decision lives.</p><div><hr></div><h2>Further Reading</h2><ul><li><p><a href="https://github.com/aws/aws-graviton-getting-started/blob/main/python.md">AWS Graviton Getting Started &#8211; Python</a> &#8212; The canonical reference for why Python version and GLIBC version matter for wheel compatibility</p></li><li><p><a href="https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-to-arm-based-aws-graviton2-processors/">Migrating AWS Lambda functions to ARM-based Graviton2</a> &#8212; AWS&#8217;s official guide; read between the lines for what is assumed about dependency simplicity</p></li><li><p><a href="https://aws.github.io/graviton/">AWS Graviton Technical Guide</a> &#8212; Deep reference on runtime support and ecosystem maturity by language</p></li><li><p><a href="https://blog.phagyul.ai/p/why-we-could-only-use-aws-graviton">Why We Could Only Use AWS Graviton for 1 of Our 4 ML Lambdas</a> &#8212; First Parjanya post: the ecosystem reality check</p></li><li><p><a href="https://blog.phagyul.ai/p/from-14-to-34-re-architecting-an">From 1/4 to 3/4: Re-architecting an ML Pipeline for Graviton</a> &#8212; Second Parjanya post: the re-architecture and cost analysis</p></li><li><p><a href="https://blog.phagyul.ai/p/aws-graviton4-vs-intel-x86-from-10">AWS Graviton4 vs Intel x86: From $10 POC to Production Validation</a> &#8212; The original POC that established the cost and performance baseline</p></li></ul>]]></content:encoded></item><item><title><![CDATA[TBIE in Practice: Designing Resilient AI Pipelines That Recover, Reconcile, and Re-run]]></title><description><![CDATA[Event-Driven Reconciliation, Operational Reliability, and the Parjanya v2.0 Case Study]]></description><link>https://blog.phagyul.ai/p/tbie-in-practice-designing-resilient</link><guid isPermaLink="false">https://blog.phagyul.ai/p/tbie-in-practice-designing-resilient</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 25 May 2026 05:36:28 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ok-g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ok-g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ok-g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 424w, https://substackcdn.com/image/fetch/$s_!ok-g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 848w, https://substackcdn.com/image/fetch/$s_!ok-g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 1272w, https://substackcdn.com/image/fetch/$s_!ok-g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ok-g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png" width="1456" height="799" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:799,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1376345,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ok-g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 424w, https://substackcdn.com/image/fetch/$s_!ok-g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 848w, https://substackcdn.com/image/fetch/$s_!ok-g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 1272w, https://substackcdn.com/image/fetch/$s_!ok-g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbe12bff-5e6a-4f47-92ca-1f9569ff933d_1692x929.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Abstract</h2><p>Resilient AI infrastructure is not defined only by model quality, throughput, or scaling efficiency. In production, the harder problem is <strong>reconciliation: keeping durable state, requested work, and actual execution aligned when workers fail, queues drift, storage paths change, policies evolve, and control planes become blind.</strong> Let me present TBIE, a practical operating model for distributed systems: <strong>Truth, Belief, Intent, and Execution</strong>. TBIE separates the authoritative record of what is true from the operational view of what seems to be happening, the replayable journal of work that should occur, and the stateless workers that realize side effects.</p><p>I have used Parjanya v2.0, an image ingestion and GPU-based visual scoring platform, as a detailed case study. Parjanya&#8217;s architecture spans immutable uploads, DynamoDB workflow state, SQS-based intent, event-driven replay, GPU autoscaling, browser-side uploads, policy regrading, and infrastructure drift. Across these layers, TBIE proved useful not as a slogan but as a diagnostic and design framework. It clarified why transient worker failure should not destroy replayable work, why pending state without corresponding intent is a reconciliation gap, why wrong-bucket routing can be deterministically wrong, why policy changes should be handled as controlled replay, and why control-plane blindness is more dangerous than isolated worker failure.</p><p>The central claim of this is that resilient AI platforms should be designed as reconciliation systems rather than one-way pipelines. A pipeline moves data forward. A reconciliation system continuously repairs the alignment between truth and work until intended outcomes are actually realized. That distinction changes how we design queues, retries, autoscaling, observability, IAM boundaries, tenant onboarding, model packaging, browser uploads, and recovery runbooks.</p><h2>1. Introduction</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZgMA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZgMA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZgMA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZgMA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZgMA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZgMA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1412263,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZgMA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ZgMA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ZgMA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ZgMA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70a31422-9968-48dd-b72d-ee0b3228e5b0_1536x1024.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Modern AI systems are often described in terms of model choice, hardware selection, vector stores, and inference efficiency. Those concerns are important, but they are not usually what breaks production systems. In practice, systems fail because they lose work, duplicate work, misroute work, or misinterpret what is actually happening. A queue may look healthy while the underlying work has already vanished. A worker may crash without leaving a replayable record. A browser upload may fail after the backend has already committed a pending state. An autoscaling group may be configured correctly while the reconciliation control plane that should activate it is blind.</p><p>These failures are not unusual edge cases. They are the normal shape of distributed systems under stress. The question, then, is not whether a system will experience drift between state and execution, but whether the architecture is built to detect, explain, and repair that drift. TBIE was developed as a response to that question.</p><p>TBIE stands for Truth, Belief, Intent, and Execution. It is a practical decomposition of distributed systems that helps separate durable facts from operational signals, requested work from realized work, and recoverable failures from terminal ones. The model is especially useful in asynchronous AI pipelines, where storage, metadata, queues, workers, and control planes all operate independently and can fail independently.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DI0j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DI0j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 424w, https://substackcdn.com/image/fetch/$s_!DI0j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 848w, https://substackcdn.com/image/fetch/$s_!DI0j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 1272w, https://substackcdn.com/image/fetch/$s_!DI0j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DI0j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png" width="1456" height="777" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:777,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1531637,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DI0j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 424w, https://substackcdn.com/image/fetch/$s_!DI0j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 848w, https://substackcdn.com/image/fetch/$s_!DI0j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 1272w, https://substackcdn.com/image/fetch/$s_!DI0j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff75e66e9-1015-4732-95e4-6352de5005e5_1717x916.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Parjanya v2.0 is an ideal case study because it combines all of those surfaces in a single system. Images are uploaded to S3. Metadata is written to DynamoDB. GPU work is performed asynchronously through SQS. Lambda functions handle technical validation and replay orchestration. GPU workers consume intent, perform visual-language inference, and write enriched truth back to the database. Autoscaling responds to queue depth. Browser uploads interact with tenant-specific buckets and CORS policies. Policy changes require historical reprocessing. Infrastructure drift can occur in launch templates, AMIs, model packages, and endpoint configuration.</p><p>Let&#8217;s deep dive how TBIE behaves in practice.</p><h2>2. The TBIE Model</h2><p>TBIE divides a distributed system into four layers that must remain conceptually distinct.</p><h3>2.1 Truth</h3><p>Truth is the durable record of what is actually true. It should survive worker restarts, deploys, transient outages, and runtime drift. In Parjanya, Truth lives in immutable S3 objects, DynamoDB workflow rows, hashes, status fields, curation metadata, and derived state that has been durably committed. Truth answers questions such as: What object exists? What stage of the workflow is this image in? What has already been computed? What is the authoritative record of the tenant, batch, or image?</p><h3>2.2 Belief</h3><p>Belief is the operational view of reality. It is derived from Truth and current signals, but it may lag, be partial, or be noisy. In Parjanya, Belief includes queue depth, in-flight message counts, worker health, GPU availability, desired ASG capacity, scaling activity, and alarm state. Belief is what operators see first, but it must not be confused with source-of-record truth.</p><h3>2.3 Intent</h3><p>Intent is the durable record of work that has been requested. It is the journal of &#8220;please do this work.&#8221; In Parjanya, SQS messages represent Intent. Replay jobs, regrade jobs, and retry workflows are all forms of Intent. The critical property of Intent is replayability. If Intent can be lost too early, then transient failures become permanent failures and manual rescue becomes necessary.</p><h3>2.4 Execution</h3><p>Execution is the stateless work that turns Intent into side effects and updated Truth. In Parjanya, Execution includes Graviton Lambdas for EXIF extraction and technical validation, GPU workers for VLM scoring and image quality analysis, replay jobs that reconstruct missing Intent, and autoscaling actions that wake the worker fleet when work appears. Execution is where work happens, but in a resilient system it must never be allowed to erase the record of what was supposed to happen.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oksd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oksd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!oksd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!oksd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!oksd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oksd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1272750,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oksd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!oksd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!oksd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!oksd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F692ac6c4-2bbd-4cf4-918c-231d79c3515a_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. Why Reconciliation Matters</h2><p>The key insight behind TBIE is that a distributed system is not healthy merely because its components are running. Health depends on reconciliation. A system can be superficially alive while still being functionally stuck. A database row may say <code>pending_vlm_enrichment</code> while no SQS message exists. A queue may be empty while worker work is still pending in truth. A control plane may be scheduled while unable to read the signals it needs to act.</p><p>Reconciliation is the process of bringing Truth, Intent, and Execution back into alignment. In the TBIE model, reconciliation is not a background nicety; it is the core operating principle. Systems should not rely on humans noticing a stale queue and manually fixing it. They should be able to repair the missing relationship between truth and work on their own.</p><p>This is why the distinction between a pipeline and a reconciliation system matters. A pipeline assumes a mostly linear progression from input to output. A reconciliation system assumes that progression can be interrupted, delayed, partially completed, or invalidated by failure. It therefore builds explicit mechanisms to recover the intended outcome rather than merely continue from the last known step.</p><h2>4. Event-Driven Reconciliation in Parjanya v2.0</h2><p>Parjanya initially used a scheduled polling model. A timer would wake the replay Lambda periodically, the Lambda would scan for pending work, and if appropriate it would emit SQS messages and trigger GPU autoscaling. This worked, but it introduced avoidable latency, wasted invocations, and operational ambiguity. The system could not react immediately when Truth changed, and operators had to reason about whether the queue was empty because the system had genuinely caught up or because the next poll had not yet occurred.</p><p>The move to DynamoDB Streams changed that architecture fundamentally. Now, when a workflow row reaches <code>pending_vlm_enrichment</code>, the stream emits an event immediately. An event source mapping filters for relevant writes, batches records briefly, and invokes the replay Lambda. The Lambda discovers missing or retriable work, emits Intent into SQS, and kicks the GPU ASG when necessary. This turns reconciliation from periodic discovery into event-driven reaction.</p><p>The result is a lower-latency, more honest architecture. Truth changes, the control plane notices, Intent is created, and Execution follows. The system no longer waits for a timer to rediscover what should already be known.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UytF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UytF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!UytF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!UytF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!UytF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UytF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1350557,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UytF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!UytF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!UytF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!UytF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f1559a0-6e4c-4e90-8de3-5c9c2ab3dc0c_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>5. Parjanya v2.0 as a TBIE Case Study</h2><p>Parjanya&#8217;s architecture maps neatly onto TBIE. S3 holds immutable uploads and preview artifacts. DynamoDB holds workflow state, curation metadata, and hashes. SQS holds replayable intent. Lambdas handle validation, replay, and orchestration. GPU workers perform inference and write enriched state back to DynamoDB. Autoscaling follows queue pressure and worker demand.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MUPC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MUPC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MUPC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MUPC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MUPC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MUPC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1380189,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MUPC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MUPC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MUPC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MUPC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1bd48945-f4e0-4744-b065-a4ffd041a8e4_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What makes the case study valuable is not the existence of those components, but the failure modes they exposed. Parjanya demonstrated that many production issues are really reconciliation issues in disguise. Some failures were caused by deleting intent too early. Others were caused by truth existing without intent. Some were caused by the wrong bucket being referenced correctly. Others were caused by the control plane being unable to read queue state. Still others came from stale image tags, missing model files, CORS misconfiguration, or API schema drift. TBIE made those failures legible.</p><h3>5.1 Transient GPU failure should not destroy Intent</h3><p>One of the earliest and most important incidents involved GPU workers deleting SQS messages before the retry window had been exhausted. A worker could encounter a temporary S3 download failure or an out-of-memory condition, write a failure state, and still remove the only replayable message. At that point, Truth said the work had failed, but Intent no longer existed and the system had no automatic path to try again.</p><p>TBIE made the problem obvious. Execution had destroyed Intent prematurely. The fix was to return explicit execution outcomes: <code>retry</code>, <code>terminal_failure</code>, or <code>completed</code>. A retry preserves the message and lets visibility timeout and receive count determine whether the work should be attempted again. A terminal failure writes durable failed truth and then deletes the message. Success writes final truth and deletes the message. That separation preserves replayability while still allowing durable failure when necessary.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Give!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Give!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Give!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Give!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Give!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Give!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1280351,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Give!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Give!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Give!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Give!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F175efbd2-4697-4ac2-adf5-2aa487057cdd_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.2 Truth can be pending while Intent never existed</h3><p>Another recurring failure mode was the mirror image of the first. Rows in DynamoDB would remain in a pending VLM state, but no corresponding queue message had been created. Queue depth fell to zero and the system appeared idle, yet the backlog still existed in Truth.</p><p>This is a reconciliation gap, not a worker bug. The response was to introduce replay mechanisms that scan for pending rows without Intent, regenerate queue messages, and kick the GPU fleet when work is emitted. In other words, the platform needed a control plane that could restore missing Intent from Truth automatically.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OvxU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OvxU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OvxU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OvxU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OvxU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OvxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1258474,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OvxU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OvxU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OvxU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OvxU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F392bc444-cc09-431d-b543-564a70f69bce_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.3 Replaying retryable failures requires resetting Truth deliberately</h3><p>Not every failure should be treated as terminal. Some failures, such as S3 download errors or temporary GPU OOM events, are retryable if the underlying condition is corrected. But a simple re-enqueue is not enough when the workflow row itself still contains partial or stale derived fields.</p><p>TBIE clarifies the difference between retry and replay. A retry is another attempt at the same execution. A replay is a deliberate reset to a pre-execution boundary, removal of stale derived state, and emission of fresh Intent. This distinction matters because the second form is a controlled reconstruction of the workflow, not merely another attempt on top of corrupted state.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wfgU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wfgU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wfgU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wfgU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wfgU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wfgU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1351019,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wfgU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!wfgU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!wfgU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!wfgU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a70de2d-fe49-4f50-8342-44dcc1e7ea35_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.4 Wrong bucket, right key</h3><p>One of the most instructive incidents involved an SQS payload that pointed to a valid preview key but the wrong bucket. The worker repeatedly failed with S3 download errors, even though the preview existed. The issue was not flaky execution. It was deterministic misrouting.</p><p>This is a classic distributed systems failure: the object key is correct, but the address is wrong. TBIE makes that failure visible because Intent is not just &#8220;some work exists.&#8221; Intent must encode the correct target. The fix was to force preview keys to use the uploads bucket as the source of truth and to tighten eligibility so only objects suitable for GPU work are enqueued.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mtk_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mtk_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Mtk_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Mtk_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Mtk_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mtk_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1292711,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mtk_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Mtk_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Mtk_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Mtk_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4f60d8d7-6784-41d7-88f8-90d8e26ce0bd_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.5 Policy changes should be handled as replay, not patching</h3><p>When the content policy changed to more strictly reject non-photographic content such as screenshots, banners, infographics, social cards, slides, illustrations, and mockups, the platform needed to reprocess historical images under the new rules. TBIE made the solution obvious: reset the affected Truth fields to a pre-VLM boundary, set the rows back to pending, and emit new Intent so GPU workers can re-grade under the revised policy.</p><p>This is one of the most powerful properties of replay-native systems. They allow policy evolution without manual data surgery. A change in judgment does not require a one-off correction script. It becomes a controlled reprocessing event with clear before-and-after semantics.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RabB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RabB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RabB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RabB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RabB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RabB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1332578,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RabB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RabB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RabB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RabB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f06ffab-14ca-4963-b48f-640ec28db035_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.6 Execution drift can occur below the application layer</h3><p>Parjanya also surfaced failures where the application code was correct but the execution environment was stale. One launch template continued to point to an old image tag. Cloud-init failed while pulling the nonexistent container image, and the GPU instance came up without ever starting the worker.</p><p>A separate incident involved an AMI missing the Python files required by a model that relied on remote code. The container started, but the model loader crashed because the local artifact was incomplete. These are both Execution-layer failures, but they occur at different depths: one at instance boot, the other at model runtime. TBIE is useful because it keeps both cases in the same conceptual category: the execution environment drifted away from the declared source of truth.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vLkz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vLkz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vLkz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vLkz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vLkz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vLkz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1390122,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vLkz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!vLkz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!vLkz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!vLkz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcadebad4-114d-4157-b1f7-68197a4557c6_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.7 CORS and browser execution are part of the resilience story</h3><p>The ingestion path introduced another class of split-state failure. The backend could write a pending upload record and generate a presigned URL, but the browser&#8217;s PUT could still fail because the bucket CORS policy or endpoint routing was incorrect. In that case, Truth at the API layer looked correct while Execution at the browser layer never completed.</p><p>Later investigations revealed that multiple independent layers could be wrong at once. A bucket might reject wildcard origins under restricted public bucket settings while the client simultaneously used a global S3 endpoint that returned a redirect browsers would not follow on OPTIONS preflight. TBIE helps here by forcing the diagnostic question: is Intent missing, or is Execution unable to realize it? In this case, Intent existed. Execution was blocked by infrastructure and configuration drift.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j8uE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j8uE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!j8uE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!j8uE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!j8uE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j8uE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1385293,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j8uE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!j8uE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!j8uE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!j8uE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dfb5140-43a7-455a-9ad6-78206dd2cf54_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.8 The control plane itself can fail silently</h3><p>One of the most dangerous incidents in the system occurred when the replay Lambda lacked the permission it needed to read queue attributes. The function was still scheduled and invoked, but it could not inspect Belief and therefore crashed before it could emit Intent or kick the GPU ASG. From the outside, everything looked enabled. In reality, the control plane had gone blind.</p><p>This is a crucial TBIE lesson. The component that repairs work is itself a first-class reliability surface. If the control plane silently fails, then every other safety net becomes weaker. That is why control-plane observability must be stronger than ordinary worker observability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NBZf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NBZf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NBZf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NBZf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NBZf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NBZf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1352658,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NBZf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!NBZf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!NBZf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!NBZf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44fce6c3-6eed-41d7-8d38-952c19b4f570_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>5.9 Dynamic tenant discovery and queue retention are part of reconciliation</h3><p>As the platform grew, static tenant lists became a bottleneck. Reconciliation could not depend on manually editing Terraform every time a new tenant was onboarded. The control plane therefore moved toward dynamic tenant discovery from DynamoDB, with tenant registry markers written by the upload path and discovered by the replay Lambda at runtime.</p><p>Queue retention was another important operational detail. If the GPU fleet is scaled to zero for cost savings, Intent must survive long enough for work to be processed after a weekend or holiday gap. Retention policy is therefore part of resilience design, not a generic queue setting.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hek4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hek4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Hek4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Hek4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Hek4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hek4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1417519,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hek4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Hek4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Hek4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Hek4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c618b31-0389-4543-9035-c9ada6781450_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>6. Operational Model and Runbook Thinking</h2><p>TBIE becomes truly useful only when it changes how incidents are diagnosed.</p><p>By the time Parjanya matured into an event-driven reconciliation system, the debugging approach itself had changed. Operators no longer began by asking whether &#8220;the queue is healthy&#8221; or whether &#8220;the GPU workers are running.&#8221; Those signals mattered, but they were no longer treated as authoritative.</p><p>Instead, every investigation began with a simpler and much more precise question:</p><p>Is the system waiting because Intent is missing, or is Intent present but Execution cannot realize it?</p><p>That distinction dramatically narrowed the search space during incidents.</p><p>If Truth showed a growing backlog while Intent remained near zero, the issue was usually in reconciliation: replay Lambda failure, queue emission failure, stale tenant discovery, or control-plane blindness.</p><p>If Intent existed but Execution failed repeatedly, the problem shifted toward realization: bucket routing, IAM permissions, runtime drift, stale launch templates, model incompatibility, or endpoint mismatch.</p><p>The architecture became easier to reason about because TBIE transformed debugging from improvisation into classification.</p><p></p><h2>7. Guardrails and Maintenance as Part of the Architecture</h2><p>Parjanya&#8217;s history shows that resilient systems are built by converting incidents into guardrails. Transient worker failures should not destroy intent. Replay logic should reset truth cleanly before re-emitting work. Dependency drift should be prevented with lockfiles and build assertions. CORS origin drift should be rejected at plan time. Tenant discovery should be dynamic rather than manually maintained. Launch templates should refresh when image tags change. Model artifacts and container versions should be treated as a compatibility pair. API contracts and frontend types should not be allowed to drift silently. Queue retention should match the actual outage window, not an idealized one.</p><p>This is the practical meaning of reliability engineering. Incidents become permanent controls. The architecture evolves by accumulating constraints, validations, and replay paths that encode what the system has already learned.</p><h2>8. Implications for AI Platform Design</h2><p>TBIE generalizes beyond Parjanya. Any AI platform that spans storage, metadata, asynchronous work, GPU execution, and policy evolution can benefit from the same model. The key is to stop thinking of the system as a one-way pipeline and instead treat it as a reconciliation loop that continuously restores alignment between durable truth and intended work.</p><p>That shift affects architecture choices. Queues become journals of intent rather than temporary transport. Replay becomes a first-class product capability rather than an ops workaround. Autoscaling becomes a consequence of work existing, not a heuristic guess. Model packaging becomes part of execution correctness. Browser upload behavior becomes part of the end-to-end reliability model. And policy change becomes a replay event rather than a manual repair task.</p><h1>When the System Hangs at 02:00 AM</h1><p>At 02:00 AM, the queue may look empty while customers are still waiting for images to process. GPU instances may exist while no workers are actually running. A replay Lambda may still appear scheduled while silently crashing on every invocation. Dashboards may continue showing green infrastructure while the control plane itself has already gone blind.</p><p>This is where TBIE stopped being an architectural abstraction and became an operational model.</p><p>The first step was no longer restarting workers or increasing autoscaling limits. The first step became identifying which reconciliation boundary had failed.</p><p>The investigation usually began with Truth.</p><p>Was DynamoDB accumulating rows in <code>pending_vlm_enrichment</code>? If so, the platform still believed work should exist, regardless of what the queue appeared to show. Truth backlog became the first signal because Truth is the authoritative record of unfinished work.</p><p>The next step was Intent.</p><p>Did SQS actually contain replayable work items? A high Truth backlog combined with near-zero queue depth usually indicated a reconciliation failure rather than an execution failure. In those cases, the replay Lambda itself became suspect. Either the control plane had stopped emitting Intent, or it had lost the ability to discover the work that needed to exist.</p><p>That distinction mattered enormously because the operational response changed completely depending on the answer.</p><p>If Intent existed but the backlog still did not move, attention shifted toward Execution health. GPU worker logs became critical. Sometimes the workers were healthy but repeatedly failing with deterministic download errors caused by bucket routing drift. Sometimes GPU instances launched successfully while containers never started because a stale launch template pointed to a nonexistent image tag. In other cases, the instance booted correctly but the model loader crashed because required runtime artifacts were missing from the AMI.</p><p>One of the most revealing operational signals turned out to be complete silence.</p><p>An empty GPU log group was rarely a good sign. More often, it meant execution had failed before the application layer even started. Cloud-init failures, image pull failures, IAM denial during bootstrap, or launch-template drift frequently surfaced first as absence rather than explicit failure.</p><p>The replay Lambda introduced another category of silence.</p><p>If queue visibility remained unchanged while pending Truth continued growing, the control plane itself became the focus. One of the most dangerous incidents in the system occurred when the replay Lambda lost permission to read queue attributes. The function was still scheduled. It was still being invoked. But it crashed before emitting Intent or triggering autoscaling. From the outside, everything looked operational while reconciliation had effectively stopped.</p><p>That incident permanently changed the operational philosophy of the platform.</p><p>Worker failures became treated as recoverable noise.</p><p>Control-plane blindness became treated as a systemic risk.</p><p>Eventually, the debugging process itself evolved into a TBIE classification exercise:</p><ul><li><p>Truth backlog revealed whether unfinished work existed.</p></li><li><p>Intent backlog revealed whether reconciliation was functioning.</p></li><li><p>Queue visibility revealed whether work was flowing.</p></li><li><p>GPU log silence revealed bootstrap or execution drift.</p></li><li><p>Replay Lambda silence revealed control-plane failure.</p></li><li><p>IAM checks validated whether orchestration still had authority to act.</p></li><li><p>Launch-template validation confirmed whether execution environments still matched declared infrastructure state.</p></li></ul><p>The system stopped being debugged as &#8220;a pipeline.&#8221;</p><p>It began being debugged as a continuously reconciling distributed system.</p><p>That distinction changed how incidents were understood, how recovery was automated, and ultimately how the platform itself evolved.</p><h2>9. Conclusion</h2><p>Parjanya v2.0 demonstrates that resilient AI infrastructure depends on more than good models or fast workers. It depends on a clear model for distinguishing what is true, what is believed, what work is intended, and what execution can actually accomplish. TBIE provides that model.</p><p>The value of TBIE is not just conceptual. It changes how systems are built, how retries are designed, how control planes are monitored, how infrastructure drift is prevented, and how policy changes are reapplied. Most importantly, it turns production failure from a confusing mystery into a structured reconciliation problem.</p><p>That is why the right mental model for modern AI infrastructure is not merely &#8220;build a pipeline.&#8221; It is &#8220;build a system that can continuously reconcile truth and intent until intended work is actually realized.&#8221;</p><h2>Appendix A. Maintenance Checklist</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i9vf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i9vf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!i9vf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!i9vf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!i9vf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i9vf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1561610,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.phagyul.ai/i/199145206?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i9vf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!i9vf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!i9vf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!i9vf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82143e30-f210-459b-91b3-8475d948ce8f_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That checklist is not a substitute for architecture. It is how architecture remains trustworthy over time.</p><h2></h2>]]></content:encoded></item><item><title><![CDATA[Context Engineering and Context Debt]]></title><description><![CDATA[How I Reduced Opus Token Costs by ~77% Without Switching Models]]></description><link>https://blog.phagyul.ai/p/context-engineering-and-context-debt</link><guid isPermaLink="false">https://blog.phagyul.ai/p/context-engineering-and-context-debt</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Wed, 20 May 2026 06:06:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dA7S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dA7S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dA7S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!dA7S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!dA7S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!dA7S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dA7S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1687837,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/198514119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dA7S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!dA7S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!dA7S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!dA7S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcea4dfbb-67e2-4a62-af94-c33dac8db92a_1774x887.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p><strong>TL;DR:</strong> I noticed Haiku 4.5 being spawned as a subagent during an Opus 4.7 session. That observation opened a data investigation that revealed ~77% of my token spend was context accumulation waste, not productive reasoning. This is the framework I built to fix it &#8212; and  the problem has a name: <strong>Context Debt </strong>and the fix is:<strong> Context Engineering </strong>.</p></div><h2>1. The Observation That Started This</h2><p>A few weeks ago I noticed something in my Claude Code session trace: Haiku 4.5 was being invoked as a subagent while my main session was running on Opus 4.7.</p><p><strong>My first instinct was: </strong><em><strong>is this personalisation? Has Claude learned my patterns? Is this a new adaptive router?</strong></em></p><p>It was none of those things. But chasing the answer led me into a deep audit of my actual usage data &#8212; and what I found changed how I think about AI session economics entirely.</p><p>The short answer: Claude Code has a built-in subagent architecture where the main orchestrator (Opus 4.7 in my case) delegates read-only codebase work to the <strong>Explore subagent</strong>, which runs on Haiku 4.5 by default. It is deterministic product behaviour, not personalisation. The model matching is happening at the subagent dispatch boundary, not through learned routing.</p><p>But the longer answer &#8212; what I found when I actually pulled my usage data &#8212; is the more important story.</p><div><hr></div><h2>2. What the Data Actually Showed</h2><p>Running <code>/cost</code> in my Claude Code terminal revealed the real picture, however it is only 3% of usage, 33 sessions, complete details are found using <code>ccusage</code>, still showing the important metrics:</p><pre><code><code>Favorite model:  Opus 4.7        Total tokens: 22.0M
Sessions: 33                     Longest session: 7d 2h 33m

&#9679; Opus 4.7  (53.3%)   In: 118.2k  &#183; Out: 11.6M
&#9679; Opus 4.6  (18.2%)   In: 118.3k  &#183; Out: 3.9M
&#9679; Haiku 4.5 (20.6%)   In: 363.5k  &#183; Out: 4.2M
&#9679; Sonnet 4.6  (7.9%)  In:  63.0k  &#183; Out: 1.7M</code></code></pre><p>Combined Opus usage: <strong>71.5%</strong> of all tokens.</p><p>Sonnet &#8212; the model I publicly advocated as the benchmark &#8212; was only <strong>7.9%</strong> of my actual usage.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:197172333,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/sonnet-46-became-my-new-benchmark&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Sonnet 4.6 Became My New Benchmark for Building an Infra-Heavy VLM Platform&quot;,&quot;truncated_body_text&quot;:&quot;A few months ago, I wrote about why I believed in a Haiku-first strategy: start with the cheapest and fastest model possible, then escalate only when the task genuinely becomes harder. That idea still makes sense in principle.&quot;,&quot;date&quot;:&quot;2026-05-11T04:33:51.017Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/sonnet-46-became-my-new-benchmark?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Sonnet 4.6 Became My New Benchmark for Building an Infra-Heavy VLM Platform</div></div><div class="embedded-post-body">A few months ago, I wrote about why I believed in a Haiku-first strategy: start with the cheapest and fastest model possible, then escalate only when the task genuinely becomes harder. That idea still makes sense in principle&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">13 days ago &#183; Jagadeesh Rampam</div></a></div><p>Running <code>ccusage session</code> revealed the concentration problem:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xN3S!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xN3S!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!xN3S!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!xN3S!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!xN3S!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xN3S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1458269,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/198514119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xN3S!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!xN3S!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!xN3S!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!xN3S!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9d90ab-331a-4391-af4c-9801d50fad77_1774x887.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Two sessions accounted for 50.9% of all costs.</strong></p><p>The small sessions with $0.16&#8211;0.22/M cost-per-token are my manual Haiku sessions &#8212; git commits, README updates, simple lookups. Haiku routing was working correctly there.</p><p>The two expensive sessions are a different story entirely. And the cost-per-million ratio is the key signal: at $0.53&#8211;0.63/M blended, those sessions were Opus-orchestrated with some subagent delegation, but the token volume itself was the problem &#8212; not the model choice.</p><div><hr></div><h2>3. Naming the Problem: Context Debt</h2><p>Before getting to solutions, I want to name what I observed, because it needs a name.</p><p><strong>Context Debt</strong> is the accumulation of tokens in a session that compound the cost of every future turn without adding proportional value to the reasoning quality of those turns.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:185498867,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/from-diagnosing-ai-debt-to-durable&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;From diagnosing AI debt to durable fixes (Part-3)&quot;,&quot;truncated_body_text&quot;:&quot;This is Part 3 of the series on getting the best from Claude code. Part 1 on Why you should chose Haiku as Default model and escalate if needed; Part 2 introduced three practical practices &#8212; repo/component Claude.md files, prompt caching, and context engineering&quot;,&quot;date&quot;:&quot;2026-01-23T04:19:00.975Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/from-diagnosing-ai-debt-to-durable?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">From diagnosing AI debt to durable fixes (Part-3)</div></div><div class="embedded-post-body">This is Part 3 of the series on getting the best from Claude code. Part 1 on Why you should chose Haiku as Default model and escalate if needed; Part 2 introduced three practical practices &#8212; repo/component Claude.md files, prompt caching, and context engineering&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">4 months ago &#183; Jagadeesh Rampam</div></a></div><p>It behaves like technical debt in one critical way: it is invisible when it is forming, and expensive when you finally notice it. Unlike technical debt, it has an <strong>immediate dollar cost</strong> that compounds within the same session.</p><p>Here is the mechanics:</p><pre><code><code>Turn 1:   Opus reads inference_config.yaml    &#8594; context: 3k tokens
Turn 10:  Opus reads vlm_pipeline.py          &#8594; context: 40k tokens
Turn 30:  Opus reads cuda_kernels/, manifests  &#8594; context: 180k tokens
Turn 50+: Every API call sends 180k input     &#8594; paying full price
          even if your prompt is 50 words</code></code></pre><p>At Opus pricing (~$15/M input tokens), 200 subsequent turns &#215; 180k context = 36M input tokens = <strong>$540 in input alone</strong>, before a single output token is generated.</p><p>This is what those two sessions were doing. It was not that Opus was the wrong model. It was that the session carried everything it had ever read into every subsequent turn &#8212; and paid Opus prices for all of it, repeatedly.</p><p>Three forces compound context debt:</p><p><strong>Prompt cache expiry.</strong> Claude caches the static prefix of your context for 5 minutes (up to 1 hour for some configurations). In a session spanning hours or days, that cache expired repeatedly. Each expiry means paying full Opus input price for the entire accumulated context again. My 7-day session paid full price for a 400k+ context many times over.</p><p><strong>Compaction tax.</strong> When context compacts (the default fires at ~95% capacity), Claude writes a summary and prepends it to all future turns. In a very long session with multiple compactions, those summaries stack &#8212; each subsequent turn carries all of them as mandatory context.</p><p><strong>Speculative file reads.</strong> Opus tends to read files &#8220;to understand the broader context&#8221; before answering, even when the current task doesn&#8217;t require them. In an ML infrastructure repo, this means model configs, environment files, pipeline definitions, deployment scripts, and CUDA configurations all end up in context &#8212; and stay there.</p><div><hr></div><h2>4. The Constraint I Cannot Engineer Away</h2><p>Before presenting the framework, an honest acknowledgment of constraints.</p><p>My primary workload is <strong>VLM (Vision-Language Model) inferencing, infra-heavy automation, and ML optimisation pipelines</strong>. For this work:</p><ul><li><p><strong>Minimum viable context is ~300k tokens</strong>. Multiple model configs, inference scripts, pipeline definitions, and infrastructure manifests need to be simultaneously present for coherent cross-file reasoning.</p></li><li><p>Sonnet 4.6 has only recently gained a 1M context window (now GA, worth testing for execution phases). But adaptive thinking &#8212; structurally required for deep VLM reasoning &#8212; was absent from Sonnet until recently and is still maturing.</p></li><li><p>For the reasoning-heavy phases of this work, <strong>Opus 4.7 at 1M context is the correct model</strong>. This is a technical requirement, not a preference.</p></li></ul><p>The insight that changes everything: <strong>the model being correct does not mean the context footprint needs to be what it currently is.</strong></p><p>Opus 4.7 is the right reasoning engine. Sending it 400k tokens of raw source code when it only needs 40k tokens of structured summaries is waste. That is the distinction the framework targets.</p><div><hr></div><h2>5. Context Engineering: The Framework</h2><p>Context Engineering is the practice of deliberately managing what enters an AI session&#8217;s context window, when it enters, and in what form &#8212; to maximise reasoning quality per token rather than total tokens.</p><p>It has four mechanisms.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BIAH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BIAH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!BIAH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!BIAH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!BIAH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BIAH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1682280,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/198514119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BIAH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!BIAH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!BIAH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!BIAH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F926e27c3-ae8d-4942-bbfb-331d860110fc_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>Mechanism 1: Pre-Summarisation (Haiku as Reader)</h3><p>The default pattern:</p><pre><code><code>Opus opens session
Opus reads 30 files to orient itself
All 30 files sit in context for the rest of the session
Cost: 150k input tokens &#215; every subsequent turn</code></code></pre><p>The engineered pattern:</p><pre><code><code>Before session opens:
  @ml-context-loader reads all 30 files (Haiku, separate context)
  Returns: 12k token structured dependency map

Opus main session receives:
  The 12k map, not the 150k raw files
  Opus never directly holds the source files
Cost: 12k input tokens &#215; every subsequent turn</code></code></pre><p>The work output is identical. The context footprint is ~12x smaller.</p><p><strong>Subagent configuration</strong> (<code>~/.claude/agents/ml-context-loader.md</code>):</p><pre><code><code>---
name: ml-context-loader
description: Pre-read ML pipeline files, model configs, inference scripts,
  and VLM configurations before complex optimisation work. Returns a
  structured dependency map for the main session. Invoke this BEFORE
  starting any ML or infra work in the main session.
model: haiku
tools: Read, Grep, Glob
---
You read ML infrastructure files and produce a structured summary covering:

1. Model architecture and config paths
2. Inference pipeline entry points and key functions
3. CUDA/GPU configuration and memory constraints
4. Cross-file dependencies relevant to the stated task
5. Files that need to change to accomplish the goal

Return a structured map. Do not return raw file contents.
Maximum output: 15k tokens. Be precise and omit irrelevant files.</code></code></pre><p><strong>Paired subagent for infrastructure</strong> (<code>~/.claude/agents/infra-scanner.md</code>):</p><pre><code><code>---
name: infra-scanner
description: Scan infrastructure configs, Terraform files, CI/CD pipelines,
  deployment manifests, and environment configs before optimisation work.
  Returns dependency map and change surface for the stated task.
model: haiku
tools: Read, Grep, Glob, Bash
---
Read infra files and return:
- Resource dependencies and environment configs
- Critical paths that affect the stated task
- Files that need to change
- Current state of relevant resources

Compact output only. Omit files irrelevant to the task.</code></code></pre><div><hr></div><h3>Mechanism 2: Targeted Loading via CLAUDE.md</h3><p>Even with pre-summarisation, Opus will add raw files to context during execution if not explicitly instructed otherwise. CLAUDE.md is the right place to install session-level context discipline.</p><p><strong>Project-level </strong><code>.claude/CLAUDE.md</code><strong> additions:</strong></p><pre><code><code>## Context Discipline

Before reading any file, state why it is needed for the current task.
Never read files speculatively to "understand the broader context."

Use @ml-context-loader before starting any ML or infra work.
Use @infra-scanner before starting any infrastructure work.
Use @explorer for any file discovery or codebase search.

If a file has been summarised by a subagent this session, 
use that summary rather than re-reading the raw file.

Maximum 5 files in direct context at any point during implementation.
For architecture decisions, request a structured summary first.

When asked to fix a bug, read only the file containing the bug
and its direct imports. Do not read the broader codebase unless
the fix requires understanding something not in those files.</code></code></pre><p>This changes Opus&#8217;s default behaviour from breadth-first file reading to targeted loading. In practice, this alone reduces speculative reads by 50&#8211;60% in long sessions.</p><div><hr></div><h3>Mechanism 3: Session Chunking by Reasoning Type</h3><p>The most expensive sessions &#8212; the two that consumed 50.9% of total costs &#8212; mixed two fundamentally different cognitive modes in a single long-running context:</p><ul><li><p><strong>Reasoning mode</strong>: Architecture decisions, bottleneck analysis, choosing optimisation strategies. Needs Opus depth. Short turns, modest context.</p></li><li><p><strong>Execution mode</strong>: Implementing the decided approach across many files. Needs large context. Lighter per-turn reasoning.</p></li></ul><p>When mixed, the session context grows to serve both needs simultaneously &#8212; and every turn pays the full cost of the combined footprint.</p><p><strong>Separated:</strong></p><pre><code><code># Session 1: Architecture planning
# Opus, focused context (summary only), ~15&#8211;20 turns
claude --model opus
# Prompt: "Given this summary [paste ml-context-loader output],
#   design the memory optimisation strategy for the VLM dataloader.
#   Output a structured implementation plan."
# &#8594; Session ends with a plan document. Context: ~30k tokens throughout.

# Session 2: Implementation
# Sonnet 4.6 at 1M (or Opus if VLM-specific reasoning needed)
# Longer, but following a decided plan &#8212; execution, not discovery
claude --model sonnet
# Prompt: "Implement this plan [paste plan].
#   Start with [specific file]. Read only the files listed in the plan."
# &#8594; Context grows with implementation files, but no re-discovery overhead.
</code></code></pre><p>The Opus session stays short because it worked from a summary, not raw files. The implementation session can run on Sonnet 4.6 at 1M context if the per-turn reasoning does not require Opus depth &#8212; which it often does not, once the architecture decision is made.</p><p><strong>The practical test for session split:</strong> If your current turn is <em>deciding something</em>, you are in reasoning mode. If your current turn is <em>doing something already decided</em>, you are in execution mode. Different sessions.</p><div><hr></div><h3>Mechanism 4: Cache Warming on Re-entry</h3><p>The single most expensive moment in a long session is returning after a break.</p><p>Prompt cache TTL is 5 minutes by default for most Claude Code request types (up to 1 hour in some configurations). When you step away for 30 minutes and return to a 300k-token context, the first turn back pays full Opus input price for all 300k tokens. If your session had 20 such re-entries across a workday, you paid for that 300k context twenty times.</p><p><strong>Before taking any break longer than a few minutes:</strong></p><pre><code><code>/compact</code></code></pre><p>This forces a clean compaction summary before the cache goes cold. The next turn back pays for a 5&#8211;10k summary re-warm, not a 300k context re-warm.</p><p><strong>Prevent the problem structurally</strong> by setting aggressive autocompaction:</p><p>In <code>.claude/settings.json</code>:</p><pre><code><code>{
  "env": {
    "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60"
  }
}</code></code></pre><p>Compacting at 60% context capacity means the session never accumulates a context large enough to be expensive to re-warm. The compaction summary costs a few thousand tokens once. The alternative is paying full input price for a massive context every time the cache expires.</p><div><hr></div><h2>6. The Escalation Model</h2><p>With context engineering in place, the tier routing becomes:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kf33!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kf33!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 424w, https://substackcdn.com/image/fetch/$s_!kf33!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 848w, https://substackcdn.com/image/fetch/$s_!kf33!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 1272w, https://substackcdn.com/image/fetch/$s_!kf33!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kf33!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png" width="1456" height="801" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:801,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1388322,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/198514119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kf33!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 424w, https://substackcdn.com/image/fetch/$s_!kf33!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 848w, https://substackcdn.com/image/fetch/$s_!kf33!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 1272w, https://substackcdn.com/image/fetch/$s_!kf33!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedcd0a13-7a1f-4148-98ec-f2ee9babb65a_1691x930.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The key principle:</strong> Tier selection is determined by reasoning depth required per turn, not by task complexity overall. A complex ML task still has Haiku turns (reading files), Sonnet turns (writing implementations), and Opus turns (designing the approach). The same task should not require every turn to be Opus.</p><p><strong>Environment defaults</strong> that enforce this without manual switching:</p><pre><code><code># In ~/.zshrc or ~/.bashrc

# Subagents default to Sonnet, not parent model
export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-6"

# Haiku slot pinned explicitly
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5-20251001"</code></code></pre><div><hr></div><h2>7. Complete Subagent Stack</h2><p>For teams adopting this framework, the full subagent configuration:</p><p><code>~/.claude/agents/explorer.md</code> &#8212; Universal read-only search</p><pre><code><code>---
name: explorer
description: Search files, grep for symbols, read code structure, find
  usages, locate definitions. Use for any read-only investigation
  before editing. Never use for file modification.
model: haiku
tools: Read, Grep, Glob, Bash
---
You are a fast read-only code explorer. Search thoroughly and return
a concise structured summary. Never modify files. Optimise for finding
the minimum set of files relevant to the stated question.</code></code></pre><p><code>~/.claude/agents/git-helper.md</code> &#8212; Repository operations</p><pre><code><code>---
name: git-helper
description: Handle git commits, branch management, README updates,
  changelog entries, and documentation formatting. Use for all
  repository hygiene tasks.
model: haiku
tools: Bash, Read, Write
---
You handle git operations and documentation updates efficiently.
Use conventional commits format. Commit messages: type(scope): description.</code></code></pre><p><code>~/.claude/agents/code-writer.md</code> &#8212; Standard implementation</p><pre><code><code>---
name: code-writer
description: Implement features, write new functions, refactor existing
  code, add tests. Use for code generation and editing tasks that
  do not require architectural reasoning.
model: sonnet
tools: Read, Write, Edit, Bash, Glob, Grep
---
You are a focused implementation engineer. Read the minimum required
files before editing. Make one logical change per invocation.
Follow the plan provided; do not redesign unless asked.</code></code></pre><p><code>~/.claude/agents/ml-context-loader.md</code> &#8212; ML pre-summarisation <em>(See Mechanism 1 above)</em></p><p><code>~/.claude/agents/infra-scanner.md</code> &#8212; Infrastructure pre-summarisation <em>(See Mechanism 1 above)</em></p><p><code>~/.claude/agents/architect.md</code> &#8212; High-stakes reasoning only</p><pre><code><code>---
name: architect
description: Design system architecture, resolve complex multi-file bugs,
  make technology decisions, plan major refactors requiring cross-system
  understanding. Only invoke when deep reasoning is genuinely required.
  Receives summaries, not raw files.
model: opus
tools: Read, Grep, Glob
---
You make high-level decisions from structured summaries.
Think deeply before proposing changes.
Output a structured plan that code-writer can execute step by step.
Request specific raw files only when the summary is insufficient.</code></code></pre><div><hr></div><h2>8. Before and After: The Numbers</h2><p>Based on actual session data from this audit:</p><p><strong>The two expensive sessions ($625.72 combined API equivalent):</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ElK9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ElK9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 424w, https://substackcdn.com/image/fetch/$s_!ElK9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 848w, https://substackcdn.com/image/fetch/$s_!ElK9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 1272w, https://substackcdn.com/image/fetch/$s_!ElK9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ElK9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png" width="1456" height="792" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:792,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1012020,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/198514119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ElK9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 424w, https://substackcdn.com/image/fetch/$s_!ElK9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 848w, https://substackcdn.com/image/fetch/$s_!ElK9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 1272w, https://substackcdn.com/image/fetch/$s_!ElK9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55ba8ec3-4625-4c53-a194-a62d1a3465bf_1700x925.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Output tokens are unchanged because the actual work product &#8212; the code written, the analysis produced &#8212; is identical. The saving is entirely in the context overhead that was being sent to the Opus API on every turn without contributing to reasoning quality.</p><p><strong>Across all sessions:</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jxSv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jxSv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!jxSv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!jxSv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!jxSv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jxSv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1185778,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/198514119?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jxSv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!jxSv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!jxSv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!jxSv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05baa4d-c6ef-4ab7-a67f-46f822d25a9e_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>9. What Is Still Missing (Community Ask)</h2><p>This framework works within current Claude Code capabilities, but several gaps remain that limit how far it can go without manual configuration:</p><p><strong><a href="https://github.com/anthropics/claude-code/issues/44976">GitHub #44976 &#8212; Auto model routing by task type</a>.</strong> Currently, there is no native content-aware router in the main session. The routing that exists (Explore &#8594; Haiku) operates at the subagent dispatch boundary only. Automatic routing based on turn type &#8212; planning turns to Opus, execution turns to Sonnet &#8212; requires manual setup or explicit model switching. This feature request, if shipped, would make context engineering automatic rather than configured.</p><p><strong><a href="https://github.com/anthropics/claude-code/issues/43869">GitHub #43869 &#8212; Subagent model routing bugs</a>.</strong> On some Max plan configurations, subagents silently run on the parent session&#8217;s model despite explicit per-agent configuration. If your Haiku-configured subagents appear to cost Opus rates, this ticket is the reference. Check <code>env | grep CLAUDE_CODE_SUBAGENT_MODEL</code> and verify Haiku is actually firing.</p><p><strong>JSONL token counts are unreliable.</strong> The <code>ccusage</code> tool reads from JSONL files where input tokens are undercounted by 100&#8211;174x due to a streaming placeholder issue. For accurate token accounting, use <code>/cost</code> inside Claude Code (reads from the statusbar, which is accurate) and treat <code>ccusage</code> cost estimates as relative comparisons only.</p><p><strong>Sonnet 4.6 at 1M + adaptive thinking.</strong> Both are now GA but recently so. For workloads requiring 300k+ context but not frontier VLM reasoning, Sonnet 4.6 at 1M is worth testing as a drop-in replacement for Opus in execution sessions. One session test against a known task will answer whether the quality holds for your specific workload.</p><div><hr></div><h2>10. Best Practices Summary</h2><p><strong>Before starting any ML or infra session:</strong></p><ul><li><p>Run <code>@ml-context-loader</code> or <code>@infra-scanner</code> first</p></li><li><p>Start with the plan document from a prior architecture session, not a blank slate</p></li><li><p>Launch on Sonnet unless you know the first turn needs Opus-depth reasoning</p></li></ul><p><strong>During a session:</strong></p><ul><li><p><code>/compact</code> before any break longer than 5 minutes</p></li><li><p>Never read files speculatively &#8212; enforce this in CLAUDE.md</p></li><li><p>Split sessions when you shift from designing to implementing</p></li></ul><p><strong>For VLM and large-context ML work specifically:</strong></p><ul><li><p>Opus 4.7 at 1M is still the correct model for reasoning-heavy phases</p></li><li><p>The saving is in context footprint, not model choice</p></li><li><p>Pre-summarise with Haiku; Opus only sees the structured output</p></li></ul><p><strong>On model selection:</strong></p><ul><li><p>Default: Sonnet 4.6 (set <code>CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-6"</code>)</p></li><li><p>Start sessions with <code>claude --model sonnet</code> unless the first task earns Opus</p></li><li><p>Use <code>opusplan</code> for sessions that need Opus for planning and Sonnet for execution</p></li></ul><p><strong>On measuring progress:</strong></p><ul><li><p>Use <code>/cost</code> for accurate token and model-split data</p></li><li><p>Use <code>ccusage session --breakdown</code> to track model mix per session over time</p></li><li><p>Watch cost-per-million-tokens ratio: $0.20/M = healthy Haiku/cache mix, $1.00+/M = context debt accumulating</p></li></ul><div><hr></div><h2>Closing Thought</h2><p>The observation that started this &#8212; Haiku 4.5 being spawned during an Opus 4.7 session &#8212; turned out to be Anthropic&#8217;s own answer to the problem I had been creating. The built-in subagent architecture already encodes the right instinct: read cheap, reason expensive, never conflate the two.</p><p>Context Debt is what happens when that separation breaks down at the session level. Context Engineering is the practice of maintaining it deliberately.</p><p>The framework is not about using cheaper models. It is about using the right model for each cognitive operation &#8212; and never making the expensive model carry the weight of the cheap one&#8217;s job.</p><div class="pullquote"><p><em>Data sourced from personal Claude Code usage: 33 sessions, 22M tokens, May 2026 audit.</em> <em>All </em><code>ccusage</code><em> costs are API-equivalent estimates; actual charges reflect flat Max subscription pricing.</em> <em>GitHub issues referenced: <a href="https://github.com/anthropics/claude-code/issues/43869">#43869</a>, <a href="https://github.com/anthropics/claude-code/issues/44976">#44976</a>, <a href="https://github.com/anthropics/claude-code/issues/10993">#10993</a>, <a href="https://github.com/anthropics/claude-code/issues/43083">#43083</a>.</em></p></div><p><strong>Related posts:</strong></p><ul><li><p><a href="https://jagadeeshrampam.substack.com/p/the-hidden-runtime-failure-behind">The Hidden Runtime Failure Behind Claude&#8217;s Recent Regression</a></p></li><li><p><a href="https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the">When Adaptive Thinking Goes Off the Rails</a></p></li><li><p><a href="https://substack.com/home/post/p-197172333">Sonnet Becomes My New Benchmark</a></p></li><li><p><a href="https://substack.com/home/post/p-183758575">Why you should chose Haiku as Default model and escalate if needed</a></p></li><li><p><a href="https://substack.com/home/post/p-193306186">Building with Opus 4.6</a></p></li></ul><p><strong>Additional references</strong>:</p><ul><li><p><a href="https://github.com/anthropics/claude-code/issues/27665?utm_source=chatgpt.com">GitHub #27665 &#8212; Intelligent model routing / 93.8% Opus usage issue</a></p></li><li><p><a href="https://github.com/anthropics/claude-code/issues/43326?utm_source=chatgpt.com">GitHub #43326 &#8212; Auto-select model and effort level based on task complexity</a></p></li><li><p><a href="https://github.com/anthropics/claude-code/issues/44077?utm_source=chatgpt.com">GitHub #44077 &#8212; Skill model field not propagated to Agent sub-invocations</a></p></li><li><p><a href="https://github.com/anthropics/claude-code/issues/45228?utm_source=chatgpt.com">GitHub #45228 &#8212; SendMessage ignores model specified at Agent creation</a></p></li><li><p><a href="https://github.com/anthropics/claude-code/issues/50574?utm_source=chatgpt.com">GitHub #50574 &#8212; Auto model switch</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[From Score Engine to Rule Engine: Why I Rebuilt the Decision Layer]]></title><description><![CDATA[Separating perception from policy in a production VLM pipeline]]></description><link>https://blog.phagyul.ai/p/from-score-engine-to-rule-engine</link><guid isPermaLink="false">https://blog.phagyul.ai/p/from-score-engine-to-rule-engine</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Thu, 14 May 2026 11:27:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!UKjF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UKjF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UKjF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!UKjF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!UKjF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!UKjF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UKjF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1399582,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UKjF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!UKjF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!UKjF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!UKjF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5df5ef7-0eb5-4b90-88c2-f0f4439a82d6_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I did not set out to replace a scoring engine with a rule engine. I set out to make the system cheaper, easier to explain, and less fragile as I was not keen on moving to g5.xlarge or g6.xlarge due to prompt sizes increased and would be lot of churn in terms of architectural and infra changes, comes with re testing every functionality and the increase in the costs both the dev costs as well as instances cost even more if non-availability of spot and on-demand, currently using 75/25 for spot and OD for g4.mdn.xlarge (and 2xlarge).</p><p>What I eventually learned was that the original design had an architectural flaw: it asked a single opaque model score to do too many jobs at once. It had to decide whether an image was technically valid, whether it was worth sending to the expensive VLM path, whether it should be accepted or rejected, and how to justify that decision later. That worked until it did not. So I split the pipeline into two deterministic layers: <strong>a Tier-0 technical validator before the model, and a rule engine after the model. That change dropped cost, improved explainability, and made policy iteration much faster.</strong></p><h2>The system I started with</h2><p>Before Parjanya v2.0 architecture v5.3, the pipeline was basically this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QEyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QEyd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!QEyd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!QEyd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!QEyd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QEyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1343778,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QEyd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!QEyd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!QEyd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!QEyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6e9cd82b-803e-459b-8566-5080243de900_1536x1024.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>The problem was not that the model was &#8220;bad.&#8221; The problem was that I had turned a rich decision into a number. Two images with the same score could be fundamentally different: one might be a sharp wildlife shot with a minor distortion, while another might be a soft-focus landscape with no clear subject. The number hid the nuance. Prompt changes also shifted the score distribution, which meant calibration drift could silently change the policy. And when someone asked why an image was rejected, a floating-point score was not a useful answer.</p></blockquote><h2>What I changed</h2><p>I made two structural changes.</p><div class="pullquote"><p>First, I added a <strong>Tier-0 technical validator</strong>. This is a deterministic gate that runs before any expensive VLM work. It checks whether the image can be decoded, whether the dimensions are suspicious, whether the frame is blank, whether exposure is blown or crushed, and whether the image is a duplicate using multi-hash dedup. It runs on a small ARM64 Lambda, finishes in sub-second time, and costs about $0.0000002 per image.</p><p>Second, I changed the VLM output contract. Instead of asking the VLM for a single quality score, I asked it to emit <strong>structured cues</strong>: subject label, subject dominance, composition signals, distortion types, and prose. Then I fed those cues into a deterministic <strong>recuration rule engine</strong> that makes the final accept/review/reject decision and writes out a human-readable reason.</p></div><h2>How the new decision layer works</h2><p>The rule engine is deliberately boring in the best possible way. It is not trying to be clever. It is trying to be consistent.</p><p>Here is the decision logic in plain language:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iX8O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iX8O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!iX8O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!iX8O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!iX8O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iX8O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1460630,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iX8O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!iX8O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!iX8O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!iX8O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d6fbb22-ff4e-48c3-bc1c-dd2491e8a673_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Every verdict also gets a version tag and a reason string, so I can audit what happened later. That is a huge shift from the old system, where the final answer was essentially &#8220;the score was 0.41.&#8221;</p><h2>Why this mattered operationally</h2><p>The first benefit was cost.</p><p>Here is the cost comparison I care about most:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H3pU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H3pU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 424w, https://substackcdn.com/image/fetch/$s_!H3pU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 848w, https://substackcdn.com/image/fetch/$s_!H3pU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 1272w, https://substackcdn.com/image/fetch/$s_!H3pU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H3pU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png" width="1456" height="867" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:867,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1251545,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H3pU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 424w, https://substackcdn.com/image/fetch/$s_!H3pU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 848w, https://substackcdn.com/image/fetch/$s_!H3pU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 1272w, https://substackcdn.com/image/fetch/$s_!H3pU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cda5a4b-d9a4-4c99-88dc-9557566f317e_1625x968.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>On my typical tenant workload, GPU spend still dominates the bill, so every image I keep out of the GPU queue is real leverage. I also found one non-obvious cost: at single-tenant scale, about half of the per-drain cost was NAT Gateway egress, not GPU. In the measured v25 drain, NAT cost was actually larger than GPU cost. That means the rule engine improved the decision layer, but infrastructure tuning still matters separately.</p><p>The second benefit was iteration speed.</p><p>I moved the rule engine through several versions in days, not weeks. The workflow became: edit the rule file, test it on canaries, inspect the reasons, then run the full re-curation if it looked good. No GPU redeploy. No prompt-engine rebuild. No waiting for model infrastructure to churn. In practice, that made policy iteration feel like software engineering again instead of model ops. The v25 drain took 7 hours 41 minutes end to end, but the rule-engine pass over 3,427 rows took less than a minute.</p><p>The third benefit was explainability.</p><p>I finally had a decision layer that could say things like:</p><ul><li><p>&#8220;reject &#8212; subject-critical motion blur&#8221;</p></li><li><p>&#8220;reject &#8212; 3 slight defects stack&#8221;</p></li><li><p>&#8220;review &#8212; weak subject dominance; technically clean&#8221;</p></li></ul><p>That may sound small, but it changes everything when a user asks why something was rejected. A reason string is much more useful than a numeric score.</p><p>The fourth benefit was robustness to prompt drift.</p><p>When the IQA prompt changed from v16 to v17, the score distribution shifted. Under the old design, that meant threshold recalibration and potential policy drift. Under the new design, the rule engine sat on top of structured fields whose meaning stayed stable across prompt versions. The model could change in ways that improved extraction without forcing me to rethink the whole decision layer.</p><h2>The measured validation run</h2><p>The clearest proof came from the v25 rescore.</p><p>I had 2,426 images drained through the pipeline, and then 3,427 rows reprocessed by the rule engine. This was not a synthetic benchmark. It was the first large enough live run to give me defensible numbers.</p><h3>Pipeline results</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zu3n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zu3n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!zu3n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!zu3n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!zu3n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zu3n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1216621,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zu3n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!zu3n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!zu3n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!zu3n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F341c914f-1513-4fd5-8e17-1bcce8dc2318_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What stood out to me was not just that the run completed, but that it completed cleanly. There was no message loss, the DLQ stayed at zero, and the autoscaler shut down correctly after the queue emptied.</p><h3>Rule-engine results</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d9ne!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d9ne!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!d9ne!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!d9ne!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!d9ne!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d9ne!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png" width="1448" height="1086" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1086,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1007870,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!d9ne!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 424w, https://substackcdn.com/image/fetch/$s_!d9ne!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 848w, https://substackcdn.com/image/fetch/$s_!d9ne!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!d9ne!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5509e318-0d61-4cfe-b754-5afc7f625327_1448x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The most interesting transitions were:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x8O1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x8O1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!x8O1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!x8O1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!x8O1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x8O1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1145924,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x8O1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!x8O1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!x8O1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!x8O1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e98da88-ea1c-45ff-a7bd-0282b1000bcb_1774x887.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That last part mattered to me because it showed the rule engine was not trying to force certainty where none existed. It preserved uncertainty instead of masking it.</p><h2>Why this architecture works</h2><p>This pattern is not new in spirit. It is a cascade: a cheap stage rejects obvious failures, and the expensive stage only handles what survives. That reduces inference cost and keeps the scarce GPU path for cases that actually need it. The broader literature supports the same idea, especially for VLM and moderation workloads.</p><p>For me, the more important pattern was <strong>extract-then-decide</strong>. The VLM is the extractor. The rule engine is the decider. Once I separated those roles, the system became easier to reason about. The model could be probabilistic and flexible. The policy could remain deterministic and auditable.</p><h2>What I watch for now</h2><p>I did not trade away all the hard problems. I just moved them into better places.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aPTQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aPTQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!aPTQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!aPTQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!aPTQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aPTQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1380029,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aPTQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!aPTQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!aPTQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!aPTQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a213593-5229-41f2-aa22-f7f116fdc1a9_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That last item is still open: infrastructure cost can easily dominate the apparent model cost, so I do not want to fool myself into thinking the architecture alone solved everything.</p><h2>What is next</h2><p>The next steps are pretty clear to me. Dedup is still shipped but not yet used as a hard gate in production. The rule engine will likely get a v5 cleanup once the remaining fallback paths are collapsed. And I want a dashboard that breaks out cost by Tier-0 reject reason, because it would be useful to know exactly how much pure margin I am saving when corrupt files, blank frames, and blown exposures are filtered early.</p><h2>The takeaway</h2><p>I did not move from &#8220;AI&#8221; to &#8220;rules.&#8221; I moved from one opaque score to a more honest pipeline.</p><p>Now the model extracts structure, the rule engine makes the decision, and the cheap gate keeps obvious failures away from the GPU. That gave me lower cost, faster iteration, and a system I can actually explain to another human without hand-waving. For a production image pipeline, that is the architecture I trust more.</p><p>One thing I appreciated only after moving to the rule engine was how much the <em>user experience</em> improved once the system stopped behaving like a black-box scorer.</p><p>Previously, the output was essentially a number hidden behind a threshold. After the re-curation architecture, every image started carrying an explainable pipeline trail: technical validation status, VLM enrichment state, structured distortion analysis, composition signals, subject analysis, and finally a deterministic curation verdict with explicit reasoning. The gallery stopped feeling like &#8220;an AI guessed a score&#8221; and started feeling like a traceable review system.</p><p>In the image below, for example, the pipeline clearly shows the two-stage flow: Tier-0 technical validation first, followed by VLM enrichment and structured analysis. The system identifies slight sharpness and focus issues, explains <em>where</em> they occur (&#8220;subject lacks critical sharpness on head and eye area&#8221;), records composition attributes like framing and depth layers, and still accepts the image because the final rule evaluation determined the defects were minor enough relative to subject structure and overall composition quality.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5zJq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5zJq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 424w, https://substackcdn.com/image/fetch/$s_!5zJq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 848w, https://substackcdn.com/image/fetch/$s_!5zJq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 1272w, https://substackcdn.com/image/fetch/$s_!5zJq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5zJq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png" width="1434" height="3822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:3822,&quot;width&quot;:1434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3241058,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197643272?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5zJq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 424w, https://substackcdn.com/image/fetch/$s_!5zJq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 848w, https://substackcdn.com/image/fetch/$s_!5zJq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 1272w, https://substackcdn.com/image/fetch/$s_!5zJq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c779f3b-535c-409e-97f3-3de7b36ed534_1434x3822.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That distinction matters. Under the old scoring engine, this image could easily have landed near a threshold boundary and become another opaque <code>0.62</code> vs <code>0.58</code> decision. Under the new architecture, the reasoning is visible, deterministic, and debuggable.</p><p>The biggest realization for me was this: the rule engine did not make the system <em>less intelligent</em>. It made the intelligence easier to operationalize.</p><p>The VLM still does the hard perceptual work &#8212; understanding composition, defects, subject prominence, and scene semantics. But the final decision layer is no longer probabilistic glue hidden behind one floating-point number. It is now an auditable policy system built on top of structured perception.</p><p>That separation ended up becoming the real architectural shift.</p>]]></content:encoded></item><item><title><![CDATA[Sonnet 4.6 Became My New Benchmark for Building an Infra-Heavy VLM Platform]]></title><description><![CDATA[Why I moved from a Haiku-first strategy to Sonnet-first for my VLM control plane, IQA workflows, and long-context engineering]]></description><link>https://blog.phagyul.ai/p/sonnet-46-became-my-new-benchmark</link><guid isPermaLink="false">https://blog.phagyul.ai/p/sonnet-46-became-my-new-benchmark</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 11 May 2026 04:33:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OkJ0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OkJ0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OkJ0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OkJ0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OkJ0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OkJ0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OkJ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1841548,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197172333?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OkJ0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OkJ0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OkJ0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OkJ0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb255522-dac5-4f82-bedf-427ae147535f_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A few months ago, I wrote about why I believed in a <strong>Haiku-first strategy</strong>: start with the cheapest and fastest model possible, then escalate only when the task genuinely becomes harder. That idea still makes sense in principle. </p><div class="comment" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/&quot;,&quot;commentId&quot;:237503352,&quot;comment&quot;:{&quot;id&quot;:237503352,&quot;date&quot;:&quot;2026-04-03T06:11:30.125Z&quot;,&quot;edited_at&quot;:&quot;2026-04-03T06:24:21.197Z&quot;,&quot;body&quot;:&quot;&#128221; Corrections + Author&#8217;s Note &#8212; January 2026\n\n&#8220;Why You Should Choose Haiku as Default&#8221; &#8212; (https://substack.com/home/post/p-183758575) Revisited 3 Months Later\n\nThree months after publishing this piece, two things became clear: the model landscape evolved faster than expected &#8212; and I made a benchmark interpretation error that needed correction.\n\nLet me address both.\n\n&#128308; Benchmark Correction (Critical)\n\nIn the original post, I wrote:\n\n\n\n&#8220;Haiku 4.5 achieving ~90% on the SWE benchmark compared to Sonnet 4.5 (77.2%) and Opus 4.5 (80.9%)&#8221;\n\nThis is incorrect.\n\nThe 90% figure is a relative capability estimate, not an absolute SWE-bench score.\n\nThe correct interpretation:\n\n\n\n\n\nHaiku delivers ~90% of Sonnet&#8217;s output quality on routine engineering tasks\n\n\n\nAt ~31% of the cost\n\nAnthropic&#8217;s actual SWE-bench ordering remains: Opus > Sonnet > Haiku\n\nWhy this matters\n\nThe original phrasing implied Haiku outperforms higher-tier models on a gold-standard benchmark &#8212; which would invalidate the need for escalation entirely.\n\nThat&#8217;s not true.\n\nThe real takeaway is still strong:\n\n\n\nHaiku is a cost-efficient default &#8212; not a universal replacement.\n\nLesson learned: Be precise when mixing relative capability with absolute benchmarks.\n\n&#128993; What Changed in 3 Months\n\n1. Opus 4.6 pricing dropped &#8212; significantly\n\n\n\n\n\nOld: $15 input / $75 output\n\n\n\nNew: $5 input / $25 output\n\n&#128073; ~3&#215; reduction\n\nImpact: Opus is no longer a &#8220;last resort&#8221; model &#8212; escalation economics have shifted.\n\n2. Sonnet 4.6 is now the default\n\nAnthropic now positions Sonnet 4.6 as the recommended general-purpose model.\n\nImpact:\n\n\n\n\n\nMatches prior Opus 4.5 performance\n\n\n\nSame pricing tier ($3 / $15)\n\n\n\nAbsorbs much of the capability gap\n\n3. 1M context window (Haiku excluded)\n\n\n\n\n\nSonnet 4.6 &amp; Opus 4.6 &#8594; 1M tokens\n\n\n\nHaiku 4.5 &#8594; does NOT support this\n\nImpact: This creates a hard routing boundary:\n\n\n\nLong-context tasks should skip Haiku entirely\n\nExamples:\n\n\n\n\n\nMulti-file codebases\n\n\n\nML pipeline debugging\n\n\n\nInfra audits / Terraform workflows\n\n&#128994; What Still Holds\n\n\n\n\n\nThe 8-task POC methodology remains valid\n\n\n\nMeasured cost-per-task for Haiku is unchanged\n\n\n\nThe escalation framework still works\n\n\n\nClassify &#8594; Start low &#8594; Escalate on confidence\n\nAnd importantly:\n\n\n\nFor stateless, high-volume, short-context tasksHaiku is still the right default\n\n&#9197; What&#8217;s Coming Next\n\nThis post is now Part 1 of a broader series.\n\nIn the next piece, I&#8217;ll cover:\n\n\n\n\n\nUpdated cost model (4.6-era pricing)\n\n\n\nCorrect benchmark framing\n\n\n\nWhere Haiku-first broke down in production (Parjanya 2.0)\n\nSpoiler:\n\nWhen your workload involves:\n\n\n\n\n\nML pipeline debugging\n\n\n\nTerraform automation\n\n\n\nSandbox constraints (no env access)\n\nHaiku-first stops being efficient &#8212; and becomes a time sink.\n\nFinal Note\n\nIf you come across the original post &#8212; thank you. The core cost-efficiency argument still stands, now with corrected framing and metrics.\n\nCorrections make systems &#8212; and thinking &#8212; stronger.\n\nLet&#8217;s keep building resilient distributed systems in the production&quot;,&quot;body_json&quot;:{&quot;type&quot;:&quot;doc&quot;,&quot;attrs&quot;:{&quot;schemaVersion&quot;:&quot;v1&quot;},&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;&#128221; Corrections + Author&#8217;s Note &#8212; January 2026&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;italic&quot;}],&quot;text&quot;:&quot;&#8220;Why You Should Choose Haiku as Default&#8221; &#8212; (&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;link&quot;,&quot;attrs&quot;:{&quot;href&quot;:&quot;https://substack.com/home/post/p-183758575&quot;,&quot;target&quot;:&quot;_blank&quot;,&quot;rel&quot;:&quot;nofollow ugc noopener&quot;,&quot;class&quot;:&quot;note-link&quot;}},{&quot;type&quot;:&quot;italic&quot;}],&quot;text&quot;:&quot;https://substack.com/home/post/p-183758575&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;italic&quot;}],&quot;text&quot;:&quot;) Revisited 3 Months Later&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Three months after publishing this piece, two things became clear: the model landscape evolved faster than expected &#8212; and I made a benchmark interpretation error that needed correction.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Let me address both.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;&#128308; Benchmark Correction (Critical)&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;In the original post, I wrote:&quot;}]},{&quot;type&quot;:&quot;blockquote&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;&#8220;Haiku 4.5 achieving ~90% on the SWE benchmark compared to Sonnet 4.5 (77.2%) and Opus 4.5 (80.9%)&#8221;&quot;}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;This is incorrect.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;The &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;90% figure is a relative capability estimate&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;, not an absolute SWE-bench score.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;The correct interpretation:&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Haiku delivers ~90% of &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Sonnet&#8217;s output quality&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; on routine engineering tasks&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;At &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;~31% of the cost&quot;}]}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Anthropic&#8217;s actual SWE-bench ordering remains: &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Opus > Sonnet > Haiku&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Why this matters&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;The original phrasing implied Haiku outperforms higher-tier models on a gold-standard benchmark &#8212; which would invalidate the need for escalation entirely.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;That&#8217;s not true.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;The real takeaway is still strong:&quot;}]},{&quot;type&quot;:&quot;blockquote&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Haiku is a cost-efficient default &#8212; not a universal replacement.&quot;}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Lesson learned: Be precise when mixing &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;italic&quot;}],&quot;text&quot;:&quot;relative capability&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; with &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;italic&quot;}],&quot;text&quot;:&quot;absolute benchmarks&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;&#128993; What Changed in 3 Months&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;1. Opus 4.6 pricing dropped &#8212; significantly&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Old: $15 input / $75 output&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;New: $5 input / $25 output&quot;}]}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;&#128073; ~3&#215; reduction&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Impact:&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; Opus is no longer a &#8220;last resort&#8221; model &#8212; escalation economics have shifted.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;2. Sonnet 4.6 is now the default&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Anthropic now positions Sonnet 4.6 as the &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;recommended general-purpose model&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Impact:&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Matches prior Opus 4.5 performance&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Same pricing tier ($3 / $15)&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Absorbs much of the capability gap&quot;}]}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;3. 1M context window (Haiku excluded)&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Sonnet 4.6 &amp; Opus 4.6 &#8594; 1M tokens&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Haiku 4.5 &#8594; does NOT support this&quot;}]}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Impact:&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; This creates a hard routing boundary:&quot;}]},{&quot;type&quot;:&quot;blockquote&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Long-context tasks should skip Haiku entirely&quot;}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Examples:&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Multi-file codebases&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;ML pipeline debugging&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Infra audits / Terraform workflows&quot;}]}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;&#128994; What Still Holds&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;The &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;8-task POC methodology&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; remains valid&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Measured &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;cost-per-task for Haiku&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; is unchanged&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;The &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;escalation framework still works&quot;}]}]}]},{&quot;type&quot;:&quot;blockquote&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Classify &#8594; Start low &#8594; Escalate on confidence&quot;}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;And importantly:&quot;}]},{&quot;type&quot;:&quot;blockquote&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;For &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;stateless, high-volume, short-context tasks&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Haiku is still the right default&quot;}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;&#9197; What&#8217;s Coming Next&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;This post is now Part 1 of a broader series.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;In the next piece, I&#8217;ll cover:&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Updated cost model (4.6-era pricing)&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Correct benchmark framing&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Where &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Haiku-first broke down in production (Parjanya 2.0)&quot;}]}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Spoiler:&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;When your workload involves:&quot;}]},{&quot;type&quot;:&quot;bulletList&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;ML pipeline debugging&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Terraform automation&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Sandbox constraints (no env access)&quot;}]}]}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Haiku-first stops being efficient &#8212; and becomes a time sink.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Final Note&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;If you come across the original post &#8212; thank you. The &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;core cost-efficiency argument still stands&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;, now with corrected framing and metrics.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Corrections make systems &#8212; and thinking &#8212; stronger.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Let&#8217;s keep building resilient distributed systems in the production&quot;}]}]},&quot;restacks&quot;:0,&quot;reaction_count&quot;:0,&quot;attachments&quot;:[{&quot;id&quot;:&quot;32e15333-7871-43ab-a1ab-bd51d7881e18&quot;,&quot;type&quot;:&quot;image&quot;,&quot;imageUrl&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/503daaae-faaf-4096-8ff6-0099d8cd1329_1807x869.jpeg&quot;,&quot;imageWidth&quot;:1807,&quot;imageHeight&quot;:869,&quot;explicit&quot;:false},{&quot;id&quot;:&quot;d0558c0a-5254-421d-814f-03e6e1cf37e5&quot;,&quot;type&quot;:&quot;post&quot;,&quot;publication&quot;:{&quot;apple_pay_disabled&quot;:false,&quot;apex_domain&quot;:null,&quot;author_id&quot;:12091074,&quot;byline_images_enabled&quot;:true,&quot;bylines_enabled&quot;:true,&quot;chartable_token&quot;:null,&quot;community_enabled&quot;:true,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;cover_photo_url&quot;:null,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;custom_domain_optional&quot;:false,&quot;custom_domain&quot;:null,&quot;default_comment_sort&quot;:&quot;best_first&quot;,&quot;default_coupon&quot;:null,&quot;default_group_coupon&quot;:null,&quot;default_show_guest_bios&quot;:true,&quot;email_banner_url&quot;:null,&quot;email_from_name&quot;:null,&quot;email_from&quot;:null,&quot;embed_tracking_disabled&quot;:false,&quot;explicit&quot;:false,&quot;expose_paywall_content_to_search_engines&quot;:true,&quot;fb_pixel_id&quot;:null,&quot;fb_site_verification_token&quot;:null,&quot;flagged_as_spam&quot;:false,&quot;founding_subscription_benefits&quot;:null,&quot;free_subscription_benefits&quot;:null,&quot;ga_pixel_id&quot;:null,&quot;google_site_verification_token&quot;:null,&quot;google_tag_manager_token&quot;:null,&quot;hero_image&quot;:null,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;hide_intro_subtitle&quot;:null,&quot;hide_intro_title&quot;:null,&quot;hide_podcast_feed_link&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;id&quot;:7361555,&quot;image_thumbnails_always_enabled&quot;:false,&quot;invite_only&quot;:false,&quot;hide_podcast_from_pub_listings&quot;:false,&quot;language&quot;:&quot;en&quot;,&quot;logo_url_wide&quot;:null,&quot;logo_url&quot;:null,&quot;minimum_group_size&quot;:2,&quot;moderation_enabled&quot;:true,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;paid_subscription_benefits&quot;:null,&quot;parsely_pixel_id&quot;:null,&quot;chartbeat_domain&quot;:null,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;paywall_free_trial_enabled&quot;:false,&quot;podcast_art_url&quot;:null,&quot;paid_podcast_episode_art_url&quot;:null,&quot;podcast_byline&quot;:null,&quot;podcast_description&quot;:null,&quot;podcast_enabled&quot;:false,&quot;podcast_feed_url&quot;:null,&quot;podcast_title&quot;:null,&quot;post_preview_limit&quot;:null,&quot;primary_user_id&quot;:12091074,&quot;require_clickthrough&quot;:false,&quot;show_pub_podcast_tab&quot;:false,&quot;show_recs_on_homepage&quot;:true,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;subscriber_invites&quot;:0,&quot;support_email&quot;:null,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;theme_var_color_links&quot;:false,&quot;theme_var_cover_bg_color&quot;:null,&quot;trial_end_override&quot;:null,&quot;twitter_pixel_id&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;post_reaction_faces_enabled&quot;:true,&quot;is_personal_mode&quot;:false,&quot;plans&quot;:null,&quot;stripe_user_id&quot;:null,&quot;stripe_country&quot;:null,&quot;stripe_publishable_key&quot;:null,&quot;stripe_platform_account&quot;:null,&quot;automatic_tax_enabled&quot;:null,&quot;author_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;author_handle&quot;:&quot;jagadeeshrampam&quot;,&quot;author_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;author_bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;has_custom_tos&quot;:false,&quot;has_custom_privacy&quot;:false,&quot;theme&quot;:{&quot;background_pop_color&quot;:null,&quot;web_bg_color&quot;:&quot;#ffffff&quot;,&quot;cover_bg_color&quot;:&quot;#ffffff&quot;,&quot;publication_id&quot;:7361555,&quot;color_links&quot;:null,&quot;font_preset_heading&quot;:null,&quot;font_preset_body&quot;:null,&quot;font_family_headings&quot;:null,&quot;font_family_body&quot;:null,&quot;font_family_ui&quot;:null,&quot;font_size_body_desktop&quot;:null,&quot;print_secondary&quot;:null,&quot;custom_css_web&quot;:null,&quot;custom_css_email&quot;:null,&quot;home_hero&quot;:&quot;newspaper&quot;,&quot;home_posts&quot;:&quot;list&quot;,&quot;home_show_top_posts&quot;:false,&quot;hide_images_from_list&quot;:false,&quot;home_hero_alignment&quot;:&quot;left&quot;,&quot;home_hero_show_podcast_links&quot;:true,&quot;default_post_header_variant&quot;:null,&quot;custom_header&quot;:null,&quot;custom_footer&quot;:null,&quot;social_media_links&quot;:null,&quot;font_options&quot;:null,&quot;section_template&quot;:null,&quot;custom_subscribe&quot;:null},&quot;threads_v2_settings&quot;:null,&quot;default_group_coupon_percent_off&quot;:null,&quot;pause_return_date&quot;:null,&quot;has_posts&quot;:true,&quot;has_recommendations&quot;:false,&quot;first_post_date&quot;:&quot;2025-12-23T12:34:44.703Z&quot;,&quot;has_podcast&quot;:false,&quot;has_free_podcast&quot;:false,&quot;has_subscriber_only_podcast&quot;:false,&quot;has_community_content&quot;:true,&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailFreeIncluded&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailOrderOfMagnitude&quot;:0,&quot;rankingDetailFreeIncludedOrderOfMagnitude&quot;:10,&quot;rankingDetailFreeSubscriberCount&quot;:null,&quot;rankingDetailByLanguage&quot;:{&quot;ar&quot;:{&quot;rankingDetail&quot;:&quot;&#1578;&#1605; &#1575;&#1604;&#1573;&#1591;&#1604;&#1575;&#1602; 5 months ago&quot;},&quot;ca&quot;:{&quot;rankingDetail&quot;:&quot;S&#8217;ha llan&#231;at fa 5 mesos&quot;},&quot;da&quot;:{&quot;rankingDetail&quot;:&quot;Lancering 5 m&#229;neder&quot;},&quot;de&quot;:{&quot;rankingDetail&quot;:&quot;Vor vor 5 Monaten gelauncht&quot;},&quot;es&quot;:{&quot;rankingDetail&quot;:&quot;Lanzado hace 5 meses&quot;},&quot;fr&quot;:{&quot;rankingDetail&quot;:&quot;Lanc&#233; il y a 5 mois&quot;},&quot;ja&quot;:{&quot;rankingDetail&quot;:&quot;&#38283;&#22987;&#26085; 5&#12534;&#26376;&#21069;&quot;},&quot;nb&quot;:{&quot;rankingDetail&quot;:&quot;Lansert 5 m&#229;neder&quot;},&quot;nl&quot;:{&quot;rankingDetail&quot;:&quot;Gelanceerd 5 maanden geleden&quot;},&quot;pl&quot;:{&quot;rankingDetail&quot;:&quot;Uruchomiono 5 miesi&#281;cy temu&quot;},&quot;pt&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;pt-br&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;en-gb&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;},&quot;it&quot;:{&quot;rankingDetail&quot;:&quot;Lanciato 5 mesi&quot;},&quot;tr&quot;:{&quot;rankingDetail&quot;:&quot;5 ay ba&#351;lat&#305;ld&#305;&quot;},&quot;sv&quot;:{&quot;rankingDetail&quot;:&quot;Lanserad 5 m&#229;nader sedan&quot;},&quot;en&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;}},&quot;freeSubscriberCount&quot;:null,&quot;freeSubscriberCountOrderOfMagnitude&quot;:&quot;19&quot;,&quot;author_bestseller_tier&quot;:0,&quot;author_badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;disable_monthly_subscriptions&quot;:false,&quot;disable_annual_subscriptions&quot;:false,&quot;hide_post_restacks&quot;:false,&quot;notes_feed_enabled&quot;:true,&quot;showIntroModule&quot;:false,&quot;isPortraitLayout&quot;:false,&quot;last_chat_post_at&quot;:null,&quot;primary_profile_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;primary_profile_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;no_follow&quot;:true,&quot;paywall_chat&quot;:&quot;free&quot;,&quot;sections&quot;:[],&quot;multipub_migration&quot;:null,&quot;navigationBarItems&quot;:[],&quot;contributors&quot;:[{&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;role&quot;:&quot;admin&quot;,&quot;owner&quot;:true,&quot;user_id&quot;:12091074,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;}],&quot;threads_v2_enabled&quot;:false,&quot;viralGiftsConfig&quot;:null,&quot;tier&quot;:1,&quot;no_index&quot;:false,&quot;can_set_google_site_verification&quot;:false,&quot;can_have_sitemap&quot;:false,&quot;founding_plan_name_english&quot;:&quot;Founding Member&quot;,&quot;bundles&quot;:[],&quot;base_url&quot;:&quot;https://jagadeeshrampam.substack.com&quot;,&quot;hostname&quot;:&quot;jagadeeshrampam.substack.com&quot;,&quot;is_on_substack&quot;:false,&quot;spotify_podcast_settings&quot;:null,&quot;podcastPalette&quot;:{&quot;DarkMuted&quot;:{&quot;population&quot;:72,&quot;rgb&quot;:[73,153,137]},&quot;DarkVibrant&quot;:{&quot;population&quot;:6013,&quot;rgb&quot;:[4,100,84]},&quot;LightMuted&quot;:{&quot;population&quot;:7,&quot;rgb&quot;:[142,198,186]},&quot;LightVibrant&quot;:{&quot;population&quot;:3,&quot;rgb&quot;:[166,214,206]},&quot;Muted&quot;:{&quot;population&quot;:6,&quot;rgb&quot;:[92,164,156]},&quot;Vibrant&quot;:{&quot;population&quot;:5,&quot;rgb&quot;:[76,164,146]}},&quot;pageThemes&quot;:{&quot;podcast&quot;:null},&quot;live_subscriber_counts&quot;:false,&quot;supports_ip_content_unlock&quot;:false,&quot;appTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#ff6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.8},&quot;secondary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:213,&quot;g&quot;:66,&quot;b&quot;:0,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:238,&quot;g&quot;:238,&quot;b&quot;:238,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:206.90096477355226,&quot;g&quot;:206.90096477355175,&quot;b&quot;:206.9009647735519,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:219,&quot;g&quot;:219,&quot;b&quot;:219,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:182,&quot;g&quot;:182,&quot;b&quot;:182,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}}}},&quot;portalAppTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#FF6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:86,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:134,&quot;g&quot;:135,&quot;b&quot;:135,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:146,&quot;g&quot;:146,&quot;b&quot;:146,&quot;a&quot;:1},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:221,&quot;g&quot;:221,&quot;b&quot;:221,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:183,&quot;g&quot;:183,&quot;b&quot;:183,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}},&quot;wordmark_bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1}}}},&quot;post&quot;:{&quot;id&quot;:183758575,&quot;publication_id&quot;:7361555,&quot;title&quot;:&quot;Why you should chose Haiku as Default model and escalate if needed&quot;,&quot;social_title&quot;:&quot;Why you should chose Haiku as Default model and escalate if needed&quot;,&quot;search_engine_title&quot;:null,&quot;search_engine_description&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;slug&quot;:&quot;why-you-should-chose-haiku-as-default&quot;,&quot;post_date&quot;:&quot;2026-01-07T06:43:52.861Z&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;podcast_duration&quot;:null,&quot;video_upload_id&quot;:null,&quot;write_comment_permissions&quot;:&quot;everyone&quot;,&quot;should_send_free_preview&quot;:false,&quot;free_unlock_required&quot;:false,&quot;default_comment_sort&quot;:null,&quot;canonical_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default&quot;,&quot;section_id&quot;:null,&quot;podcast_art_url&quot;:null,&quot;is_published&quot;:true,&quot;live_stream_id&quot;:null,&quot;restacks&quot;:1,&quot;top_exclusions&quot;:[],&quot;pins&quot;:[],&quot;is_section_pinned&quot;:false,&quot;has_shareable_clips&quot;:false,&quot;section_slug&quot;:null,&quot;section_name&quot;:null,&quot;reactions&quot;:{&quot;&#10084;&quot;:2},&quot;subtitle&quot;:&quot;The Real-time POC (8 Tasks including coding, infra automation - majorly on AWS infra) has proven Haiku 4.5 Handles 85% of Engineering Work While Costing 82% Less Than Opus (Part-1)&quot;,&quot;cover_image&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36051680-00e6-46e8-b071-0091cc29f509_1536x1024.png&quot;,&quot;cover_image_is_square&quot;:false,&quot;cover_image_is_explicit&quot;:false,&quot;podcast_url&quot;:null,&quot;videoUpload&quot;:null,&quot;podcastFields&quot;:{&quot;post_id&quot;:183758575,&quot;podcast_episode_number&quot;:null,&quot;podcast_season_number&quot;:null,&quot;podcast_episode_type&quot;:null,&quot;should_syndicate_to_other_feed&quot;:null,&quot;syndicate_to_section_id&quot;:null,&quot;hide_from_feed&quot;:false,&quot;free_podcast_url&quot;:null,&quot;free_podcast_duration&quot;:null,&quot;preview_contains_ad&quot;:false},&quot;podcast_upload_id&quot;:null,&quot;podcast_preview_upload_id&quot;:null,&quot;podcastUpload&quot;:null,&quot;podcastPreviewUpload&quot;:null,&quot;voiceover_upload_id&quot;:null,&quot;voiceoverUpload&quot;:null,&quot;has_voiceover&quot;:false,&quot;description&quot;:&quot;The Real-time POC (8 Tasks including coding, infra automation - majorly on AWS infra) has proven Haiku 4.5 Handles 85% of Engineering Work While Costing 82% Less Than Opus&quot;,&quot;body_json&quot;:null,&quot;body_html&quot;:null,&quot;truncated_body_text&quot;:&quot;EXECUTIVE SUMMARY&quot;,&quot;wordcount&quot;:1382,&quot;postTags&quot;:[{&quot;id&quot;:&quot;905cc282-4f22-494a-aa52-5ab0df263abd&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;parjanya&quot;,&quot;slug&quot;:&quot;parjanya&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;c4b30b1d-30ba-4276-a430-8f80aa2684c6&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;claude code&quot;,&quot;slug&quot;:&quot;claude-code&quot;,&quot;hidden&quot;:false}],&quot;teaser_post_eligible&quot;:true,&quot;postCountryBlocks&quot;:[],&quot;headlineTest&quot;:null,&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[237,116,42],&quot;population&quot;:60},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[130,15,4],&quot;population&quot;:47},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[235,213,109],&quot;population&quot;:69},&quot;Muted&quot;:{&quot;rgb&quot;:[91,134,151],&quot;population&quot;:85},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[85,81,50],&quot;population&quot;:81},&quot;LightMuted&quot;:{&quot;rgb&quot;:[185,203,204],&quot;population&quot;:59}},&quot;publishedBylines&quot;:[],&quot;reaction&quot;:false,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;child_comment_count&quot;:0,&quot;country_blocks&quot;:[],&quot;is_geoblocked&quot;:false,&quot;hasCashtag&quot;:false,&quot;inboxItem&quot;:{&quot;content_key&quot;:&quot;post:183758575&quot;,&quot;updated_at&quot;:&quot;2026-05-08T11:34:15.450Z&quot;,&quot;content_date&quot;:&quot;2026-01-07T06:43:52.861Z&quot;,&quot;inbox_date&quot;:&quot;2026-01-07T06:43:52.861Z&quot;,&quot;seen_at&quot;:&quot;2026-05-08T11:34:15.450Z&quot;,&quot;saved_at&quot;:null,&quot;archived_at&quot;:null,&quot;skip_inbox&quot;:false,&quot;type&quot;:&quot;post&quot;,&quot;post_id&quot;:183758575,&quot;extra_views&quot;:[],&quot;read_progress&quot;:0.94404274,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;postType&quot;:&quot;newsletter&quot;,&quot;title&quot;:&quot;Why you should chose Haiku as Default model and escalate if needed&quot;,&quot;subtitle&quot;:&quot;The Real-time POC (8 Tasks including coding, infra automation - majorly on AWS infra) has proven Haiku 4.5 Handles 85% of Engineering Work While Costing 82% Less Than Opus&quot;,&quot;detail_view_subtitle&quot;:&quot;The Real-time POC (8 Tasks including coding, infra automation - majorly on AWS infra) has proven Haiku 4.5 Handles 85% of Engineering Work While Costing 82% Less Than Opus (Part-1)&quot;,&quot;cover_photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36051680-00e6-46e8-b071-0091cc29f509_1536x1024.png&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;is_preview&quot;:false,&quot;web_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default&quot;,&quot;duration_metadata&quot;:{&quot;word_count&quot;:1382},&quot;authors&quot;:[],&quot;published_bylines&quot;:[],&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[237,116,42],&quot;population&quot;:60},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[130,15,4],&quot;population&quot;:47},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[235,213,109],&quot;population&quot;:69},&quot;Muted&quot;:{&quot;rgb&quot;:[91,134,151],&quot;population&quot;:85},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[85,81,50],&quot;population&quot;:81},&quot;LightMuted&quot;:{&quot;rgb&quot;:[185,203,204],&quot;population&quot;:59}},&quot;publication_id&quot;:7361555,&quot;publisher_image_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;publisher_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;is_personal_mode&quot;:false,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;reaction&quot;:false,&quot;tracking_parameters&quot;:{&quot;is_saved&quot;:false,&quot;is_seen&quot;:true,&quot;post_id&quot;:183758575,&quot;post_type&quot;:&quot;newsletter&quot;,&quot;publication_id&quot;:7361555,&quot;tabId&quot;:&quot;home&quot;,&quot;tabType&quot;:&quot;base&quot;,&quot;max_read_progress&quot;:1,&quot;max_audio_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;last_seen_at&quot;:&quot;2026-05-08T11:34:15.450Z&quot;,&quot;last_reading_queue_impression_at&quot;:&quot;2026-02-12T07:30:24.187Z&quot;,&quot;impression_id&quot;:&quot;7d80a268-fa79-4887-898b-ef0e296840b0&quot;}},&quot;is_saved&quot;:false,&quot;saved_at&quot;:null,&quot;is_viewed&quot;:true,&quot;read_progress&quot;:0.94404274,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;restacked&quot;:false},&quot;postSelection&quot;:null,&quot;postSelectionTheme&quot;:null,&quot;postImageSelection&quot;:null,&quot;clipInfo&quot;:null,&quot;mediaClip&quot;:null}],&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;user_id&quot;:12091074,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;user_bestseller_tier&quot;:null,&quot;userStatus&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}},&quot;source&quot;:null,&quot;forumChannel&quot;:null}" data-component-name="CommentPlaceholder"></div><p>But over the last few weeks, while working deeply on my <strong>VLM control plane / IQA platform</strong>, I realized something important:</p><div class="pullquote"><p>The benchmark itself had changed. Probably, the models are sitting across 4.5, 4.6 and 4.7 versions and found it hard to compare (Haiku 4.5 vs Sonnet 4.6 vs Opus 4.7 1M), I meant, gap is widened!</p></div><p>For my current workload, <strong>Sonnet 4.6</strong> has become the model I now measure everything against.</p><p>Not because it is the smartest model Anthropic offers. Not because it is the cheapest. But because it currently sits at the most practical intersection of:</p><ul><li><p>reasoning quality</p></li><li><p>long-context reliability</p></li><li><p>infra-heavy debugging</p></li><li><p>ML-heavy orchestration</p></li><li><p>coding consistency</p></li><li><p>operational cost</p></li><li><p>and sustained throughput</p></li></ul><p>That combination matters a lot when you are building systems where the model is not simply &#8220;answering questions,&#8221; but continuously operating across orchestration, debugging, inferencing workflows, infrastructure decisions, and large-context reasoning.</p><div><hr></div><h1>The original Haiku-first thesis still holds</h1><p>I still believe the core idea behind the earlier post was correct:</p><blockquote><p>Default to the cheapest model that can reliably complete the task.</p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:183758575,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Why you should chose Haiku as Default model and escalate if needed&quot;,&quot;truncated_body_text&quot;:&quot;EXECUTIVE SUMMARY&quot;,&quot;date&quot;:&quot;2026-01-07T06:43:52.861Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Why you should chose Haiku as Default model and escalate if needed</div></div><div class="embedded-post-body">EXECUTIVE SUMMARY&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 2 likes</div></a></div><p>Anthropic&#8217;s pricing still makes that logic compelling.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7P9Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7P9Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7P9Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7P9Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7P9Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7P9Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1191306,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197172333?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7P9Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7P9Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7P9Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7P9Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f73aeda-5d04-4521-8fa4-4dc387d79763_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>At scale, these economics matter enormously.</p><p>If you are running:</p><ul><li><p>agentic workflows</p></li><li><p>multi-step debugging</p></li><li><p>recursive orchestration</p></li><li><p>long-context analysis</p></li><li><p>or VLM-heavy pipelines</p></li></ul><p>&#8230;output-token costs become very real very quickly.</p><p>That is exactly why Haiku originally made so much sense.</p><div><hr></div><h1>But my workload changed</h1><p>The problem is not that Haiku became &#8220;bad.&#8221; (also the gap across the models become evident due to version differences, Haiku is still at 4.5 with 200k context, whereas Sonnet and Opus at 4.6 and 4.7 with 1M Context)</p><p>The problem is that my workload evolved into something much more infra-heavy and ML-heavy.</p><p>The VLM control plane is no longer just lightweight orchestration or simple extraction work. The workflows now involve:</p><ul><li><p>larger context retention</p></li><li><p>deeper architectural reasoning</p></li><li><p>distributed infra debugging</p></li><li><p>inferencing orchestration</p></li><li><p>stateful workflows</p></li><li><p>code + infra + ML reasoning in the same session</p></li><li><p>long-running debugging loops</p></li><li><p>and increasingly large operational context</p></li></ul><p>This is where Sonnet 4.6 started to outperform Haiku dramatically in practical usefulness.</p><div><hr></div><h1>Why Sonnet 4.6 became my benchmark</h1><p>Anthropic positions Sonnet 4.6 as the &#8220;best combination of intelligence, speed, and cost,&#8221; and honestly, that aligns closely with my own experience.</p><p>Sonnet 4.6 currently provides:</p><ul><li><p>1M-token context window</p></li><li><p>adaptive thinking</p></li><li><p>fast latency</p></li><li><p>significantly improved coding quality</p></li><li><p>stronger instruction following</p></li><li><p>much better long-context coherence</p></li></ul><p>Anthropic also mentioned that in Claude Code testing:</p><ul><li><p>users preferred Sonnet 4.6 over Sonnet 4.5 roughly 70% of the time</p></li><li><p>and even preferred it over Opus 4.5 in many workflows</p></li></ul><p>That honestly tracks with what I have seen.</p><p>Sonnet 4.6 feels much more stable in:</p><ul><li><p>sustained coding sessions</p></li><li><p>infra debugging</p></li><li><p>architectural iteration</p></li><li><p>and orchestration-heavy workflows</p></li></ul><p>without becoming economically painful the way Opus can become.</p><div><hr></div><h1>Haiku 4.5: still useful, but no longer my default</h1><p>This is probably the most important nuance in the entire post.</p><p>Haiku 4.5 is still:</p><ul><li><p>extremely fast</p></li><li><p>extremely cheap</p></li><li><p>very capable for its price tier</p></li><li><p>excellent for parallelized execution</p></li><li><p>strong for extraction/tagging/routing</p></li><li><p>surprisingly good on coding benchmarks</p></li></ul><p>Anthropic reports:</p><ul><li><p>73.3% on SWE-bench Verified</p></li><li><p>40.21% / 41.75% on Terminal-Bench</p></li></ul><p>Those are genuinely strong results.</p><p>But benchmark scores alone do not determine operational usefulness.</p><p>In my own experience, Haiku 4.5 now feels degraded for my specific workload.</p><p>Not degraded universally.</p><p>Degraded for this class of infra-heavy, ML-heavy systems work.</p><p>What I started noticing:</p><ul><li><p>unnecessary follow-up questions</p></li><li><p>command thrashing locally</p></li><li><p>context drift during debugging</p></li><li><p>inefficient iteration loops</p></li><li><p>loss of architectural continuity</p></li><li><p>excessive operational churn</p></li></ul><p>Sometimes it felt like the model was spending more effort &#8220;doing activity&#8221; than actually advancing the task.</p><p>That was the turning point for me.</p><div><hr></div><h1>Sonnet became the operational center of gravity</h1><p>So the strategy evolved.</p><p>I no longer think in terms of:</p><blockquote><p>&#8220;Haiku everywhere unless proven otherwise.&#8221;</p></blockquote><p>Now the stack looks more like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hvb8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hvb8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Hvb8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Hvb8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Hvb8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hvb8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1723654,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197172333?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hvb8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Hvb8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Hvb8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Hvb8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d2b0741-9b21-488d-bf34-c0b20da547f2_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This feels significantly more stable operationally.</p><div><hr></div><h1>Where Opus still matters</h1><p>I still escalate aggressively to Opus for:</p><ul><li><p>architectural redesigns</p></li><li><p>distributed systems debugging</p></li><li><p>ML-heavy reasoning</p></li><li><p>difficult infra changes</p></li><li><p>large-context synthesis</p></li><li><p>high-stakes production decisions</p></li></ul><p>This is where the Opus models still separate themselves.</p><p>Anthropic&#8217;s published numbers are notable:</p><ul><li><p>Opus 4.6: 81.42% SWE-bench Verified</p></li><li><p>90.2% BigLaw Bench</p></li><li><p>strong long-context retrieval</p></li><li><p>better reasoning across hundreds of thousands of tokens</p></li></ul><p>Opus 4.7 improves further:</p><ul><li><p>13% improvement on a 93-task coding benchmark</p></li><li><p>solved 4 tasks neither Sonnet 4.6 nor Opus 4.6 could solve</p></li><li><p>3&#215; more production-task resolutions on Rakuten-SWE-Bench</p></li><li><p>21% fewer errors on OfficeQA Pro</p></li></ul><p>You can actually feel some of these improvements during long debugging sessions.</p><p>Especially:</p><ul><li><p>reduced context drift</p></li><li><p>better continuity</p></li><li><p>fewer reasoning collapses</p></li><li><p>stronger architectural consistency</p></li></ul><div><hr></div><h1>Adaptive thinking changes the workflow significantly</h1><div class="comment" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/&quot;,&quot;commentId&quot;:251941055,&quot;comment&quot;:{&quot;id&quot;:251941055,&quot;date&quot;:&quot;2026-05-01T06:07:43.859Z&quot;,&quot;edited_at&quot;:null,&quot;body&quot;:&quot;I&#8217;ve been a heavy Claude user for a long time, especially for writing, architecture, debugging, and production development. I&#8217;m also building an ML-heavy, infra-heavy IQA platform with VLM enrichment, so my usage is not casual. I depend on these tools for real engineering work.\n\nThat is why the contrast between Opus 4.6 with 1M context and Opus 4.7 has been so frustrating.\n\nOpus 4.6 was excellent for my workflow. It handled long context well, stayed aligned with the task, and felt like a genuinely strong co-pilot for complex work.\n\nOpus 4.7 has been a huge disappointment. Over the past couple of weeks, the experience has clearly degraded: weaker context retention, more hallucinations, and less consistency. It feels like a regression rather than an improvement.\n\nToday was a particularly disappointing example. I stepped away from an in-progress task, came back later, and asked what was currently running. Instead of understanding the task state, Claude ran ps and listed services. That kind of response is not what I expect from a model I rely on for production work.\n\nDue to these inconsistencies, context loss and hallucinations, I had to temporarily use Cursor and explore GPT-5, Gemma 4, and Qwen Coder just to keep production moving. That was not the plan, but being blocked in the middle of delivery is worse.\n\nWhat makes this harder to accept is that the degradation has continued for more than two weeks. At some point, users stop wanting promises about the next big thing and start wanting the current product to work reliably.\n\nThe message is simple: fix what is broken before celebrating what comes next.\n\nHere are my couple of learnings shared on working with Opus 4.6 and Opus 4.7\n\n\n\n\n\nhttps://jagadeeshrampam.substack.com/p/building-with-opus-46\n\n\n\nhttps://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the\n\n\n\nhttps://jagadeeshrampam.substack.com/p/the-hidden-runtime-failure-behind&quot;,&quot;body_json&quot;:{&quot;type&quot;:&quot;doc&quot;,&quot;attrs&quot;:{&quot;schemaVersion&quot;:&quot;v1&quot;,&quot;title&quot;:null},&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;I&#8217;ve been a heavy Claude user for a long time, especially for writing, architecture, debugging, and production development. I&#8217;m also building an ML-heavy, infra-heavy IQA platform with VLM enrichment, so my usage is not casual. I depend on these tools for real engineering work.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;That is why the contrast between &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Opus 4.6 with 1M context&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; and &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;bold&quot;}],&quot;text&quot;:&quot;Opus 4.7&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; has been so frustrating.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Opus 4.6 was excellent for my workflow. It handled long context well, stayed aligned with the task, and felt like a genuinely strong co-pilot for complex work.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Opus 4.7 has been a huge disappointment. Over the past couple of weeks, the experience has clearly degraded: weaker context retention, more hallucinations, and less consistency. It feels like a regression rather than an improvement.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Today was a particularly disappointing example. I stepped away from an in-progress task, came back later, and asked what was currently running. Instead of understanding the task state, Claude ran &quot;},{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;code&quot;}],&quot;text&quot;:&quot;ps&quot;},{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot; and listed services. That kind of response is not what I expect from a model I rely on for production work.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Due to these inconsistencies, context loss and hallucinations, I had to temporarily use Cursor and explore GPT-5, Gemma 4, and Qwen Coder just to keep production moving. That was not the plan, but being blocked in the middle of delivery is worse.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;What makes this harder to accept is that the degradation has continued for more than two weeks. At some point, users stop wanting promises about the next big thing and start wanting the current product to work reliably.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;The message is simple: fix what is broken before celebrating what comes next.&quot;}]},{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;Here are my couple of learnings shared on working with Opus 4.6 and Opus 4.7&quot;}]},{&quot;type&quot;:&quot;orderedList&quot;,&quot;attrs&quot;:{&quot;start&quot;:1,&quot;type&quot;:null},&quot;content&quot;:[{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;link&quot;,&quot;attrs&quot;:{&quot;href&quot;:&quot;https://jagadeeshrampam.substack.com/p/building-with-opus-46&quot;,&quot;target&quot;:&quot;_blank&quot;,&quot;rel&quot;:&quot;nofollow ugc noopener&quot;,&quot;class&quot;:&quot;note-link&quot;}}],&quot;text&quot;:&quot;https://jagadeeshrampam.substack.com/p/building-with-opus-46&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;link&quot;,&quot;attrs&quot;:{&quot;href&quot;:&quot;https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the&quot;,&quot;target&quot;:&quot;_blank&quot;,&quot;rel&quot;:&quot;nofollow ugc noopener&quot;,&quot;class&quot;:&quot;note-link&quot;}}],&quot;text&quot;:&quot;https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the&quot;}]}]},{&quot;type&quot;:&quot;listItem&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;paragraph&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;marks&quot;:[{&quot;type&quot;:&quot;link&quot;,&quot;attrs&quot;:{&quot;href&quot;:&quot;https://jagadeeshrampam.substack.com/p/the-hidden-runtime-failure-behind&quot;,&quot;target&quot;:&quot;_blank&quot;,&quot;rel&quot;:&quot;nofollow ugc noopener&quot;,&quot;class&quot;:&quot;note-link&quot;}}],&quot;text&quot;:&quot;https://jagadeeshrampam.substack.com/p/the-hidden-runtime-failure-behind&quot;}]}]}]}]},&quot;restacks&quot;:0,&quot;reaction_count&quot;:0,&quot;attachments&quot;:[{&quot;id&quot;:&quot;e280cea4-e41c-4005-9975-648b6a364205&quot;,&quot;type&quot;:&quot;image&quot;,&quot;imageUrl&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2019de7-8dd8-4e7e-8a00-2971f37237b8_1098x591.png&quot;,&quot;imageWidth&quot;:1098,&quot;imageHeight&quot;:591,&quot;explicit&quot;:false},{&quot;id&quot;:&quot;65bcbeca-3b11-41cb-9ce7-bbcb05c62ec3&quot;,&quot;type&quot;:&quot;post&quot;,&quot;publication&quot;:{&quot;apple_pay_disabled&quot;:false,&quot;apex_domain&quot;:null,&quot;author_id&quot;:12091074,&quot;byline_images_enabled&quot;:true,&quot;bylines_enabled&quot;:true,&quot;chartable_token&quot;:null,&quot;community_enabled&quot;:true,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;cover_photo_url&quot;:null,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;custom_domain_optional&quot;:false,&quot;custom_domain&quot;:null,&quot;default_comment_sort&quot;:&quot;best_first&quot;,&quot;default_coupon&quot;:null,&quot;default_group_coupon&quot;:null,&quot;default_show_guest_bios&quot;:true,&quot;email_banner_url&quot;:null,&quot;email_from_name&quot;:null,&quot;email_from&quot;:null,&quot;embed_tracking_disabled&quot;:false,&quot;explicit&quot;:false,&quot;expose_paywall_content_to_search_engines&quot;:true,&quot;fb_pixel_id&quot;:null,&quot;fb_site_verification_token&quot;:null,&quot;flagged_as_spam&quot;:false,&quot;founding_subscription_benefits&quot;:null,&quot;free_subscription_benefits&quot;:null,&quot;ga_pixel_id&quot;:null,&quot;google_site_verification_token&quot;:null,&quot;google_tag_manager_token&quot;:null,&quot;hero_image&quot;:null,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;hide_intro_subtitle&quot;:null,&quot;hide_intro_title&quot;:null,&quot;hide_podcast_feed_link&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;id&quot;:7361555,&quot;image_thumbnails_always_enabled&quot;:false,&quot;invite_only&quot;:false,&quot;hide_podcast_from_pub_listings&quot;:false,&quot;language&quot;:&quot;en&quot;,&quot;logo_url_wide&quot;:null,&quot;logo_url&quot;:null,&quot;minimum_group_size&quot;:2,&quot;moderation_enabled&quot;:true,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;paid_subscription_benefits&quot;:null,&quot;parsely_pixel_id&quot;:null,&quot;chartbeat_domain&quot;:null,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;paywall_free_trial_enabled&quot;:false,&quot;podcast_art_url&quot;:null,&quot;paid_podcast_episode_art_url&quot;:null,&quot;podcast_byline&quot;:null,&quot;podcast_description&quot;:null,&quot;podcast_enabled&quot;:false,&quot;podcast_feed_url&quot;:null,&quot;podcast_title&quot;:null,&quot;post_preview_limit&quot;:null,&quot;primary_user_id&quot;:12091074,&quot;require_clickthrough&quot;:false,&quot;show_pub_podcast_tab&quot;:false,&quot;show_recs_on_homepage&quot;:true,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;subscriber_invites&quot;:0,&quot;support_email&quot;:null,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;theme_var_color_links&quot;:false,&quot;theme_var_cover_bg_color&quot;:null,&quot;trial_end_override&quot;:null,&quot;twitter_pixel_id&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;post_reaction_faces_enabled&quot;:true,&quot;is_personal_mode&quot;:false,&quot;plans&quot;:null,&quot;stripe_user_id&quot;:null,&quot;stripe_country&quot;:null,&quot;stripe_publishable_key&quot;:null,&quot;stripe_platform_account&quot;:null,&quot;automatic_tax_enabled&quot;:null,&quot;author_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;author_handle&quot;:&quot;jagadeeshrampam&quot;,&quot;author_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;author_bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;has_custom_tos&quot;:false,&quot;has_custom_privacy&quot;:false,&quot;theme&quot;:{&quot;background_pop_color&quot;:null,&quot;web_bg_color&quot;:&quot;#ffffff&quot;,&quot;cover_bg_color&quot;:&quot;#ffffff&quot;,&quot;publication_id&quot;:7361555,&quot;color_links&quot;:null,&quot;font_preset_heading&quot;:null,&quot;font_preset_body&quot;:null,&quot;font_family_headings&quot;:null,&quot;font_family_body&quot;:null,&quot;font_family_ui&quot;:null,&quot;font_size_body_desktop&quot;:null,&quot;print_secondary&quot;:null,&quot;custom_css_web&quot;:null,&quot;custom_css_email&quot;:null,&quot;home_hero&quot;:&quot;newspaper&quot;,&quot;home_posts&quot;:&quot;list&quot;,&quot;home_show_top_posts&quot;:false,&quot;hide_images_from_list&quot;:false,&quot;home_hero_alignment&quot;:&quot;left&quot;,&quot;home_hero_show_podcast_links&quot;:true,&quot;default_post_header_variant&quot;:null,&quot;custom_header&quot;:null,&quot;custom_footer&quot;:null,&quot;social_media_links&quot;:null,&quot;font_options&quot;:null,&quot;section_template&quot;:null,&quot;custom_subscribe&quot;:null},&quot;threads_v2_settings&quot;:null,&quot;default_group_coupon_percent_off&quot;:null,&quot;pause_return_date&quot;:null,&quot;has_posts&quot;:true,&quot;has_recommendations&quot;:false,&quot;first_post_date&quot;:&quot;2025-12-23T12:34:44.703Z&quot;,&quot;has_podcast&quot;:false,&quot;has_free_podcast&quot;:false,&quot;has_subscriber_only_podcast&quot;:false,&quot;has_community_content&quot;:true,&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailFreeIncluded&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailOrderOfMagnitude&quot;:0,&quot;rankingDetailFreeIncludedOrderOfMagnitude&quot;:10,&quot;rankingDetailFreeSubscriberCount&quot;:null,&quot;rankingDetailByLanguage&quot;:{&quot;ar&quot;:{&quot;rankingDetail&quot;:&quot;&#1578;&#1605; &#1575;&#1604;&#1573;&#1591;&#1604;&#1575;&#1602; 5 months ago&quot;},&quot;ca&quot;:{&quot;rankingDetail&quot;:&quot;S&#8217;ha llan&#231;at fa 5 mesos&quot;},&quot;da&quot;:{&quot;rankingDetail&quot;:&quot;Lancering 5 m&#229;neder&quot;},&quot;de&quot;:{&quot;rankingDetail&quot;:&quot;Vor vor 5 Monaten gelauncht&quot;},&quot;es&quot;:{&quot;rankingDetail&quot;:&quot;Lanzado hace 5 meses&quot;},&quot;fr&quot;:{&quot;rankingDetail&quot;:&quot;Lanc&#233; il y a 5 mois&quot;},&quot;ja&quot;:{&quot;rankingDetail&quot;:&quot;&#38283;&#22987;&#26085; 5&#12534;&#26376;&#21069;&quot;},&quot;nb&quot;:{&quot;rankingDetail&quot;:&quot;Lansert 5 m&#229;neder&quot;},&quot;nl&quot;:{&quot;rankingDetail&quot;:&quot;Gelanceerd 5 maanden geleden&quot;},&quot;pl&quot;:{&quot;rankingDetail&quot;:&quot;Uruchomiono 5 miesi&#281;cy temu&quot;},&quot;pt&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;pt-br&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;en-gb&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;},&quot;it&quot;:{&quot;rankingDetail&quot;:&quot;Lanciato 5 mesi&quot;},&quot;tr&quot;:{&quot;rankingDetail&quot;:&quot;5 ay ba&#351;lat&#305;ld&#305;&quot;},&quot;sv&quot;:{&quot;rankingDetail&quot;:&quot;Lanserad 5 m&#229;nader sedan&quot;},&quot;en&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;}},&quot;freeSubscriberCount&quot;:null,&quot;freeSubscriberCountOrderOfMagnitude&quot;:&quot;19&quot;,&quot;author_bestseller_tier&quot;:0,&quot;author_badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;disable_monthly_subscriptions&quot;:false,&quot;disable_annual_subscriptions&quot;:false,&quot;hide_post_restacks&quot;:false,&quot;notes_feed_enabled&quot;:true,&quot;showIntroModule&quot;:false,&quot;isPortraitLayout&quot;:false,&quot;last_chat_post_at&quot;:null,&quot;primary_profile_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;primary_profile_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;no_follow&quot;:true,&quot;paywall_chat&quot;:&quot;free&quot;,&quot;sections&quot;:[],&quot;multipub_migration&quot;:null,&quot;navigationBarItems&quot;:[],&quot;contributors&quot;:[{&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;role&quot;:&quot;admin&quot;,&quot;owner&quot;:true,&quot;user_id&quot;:12091074,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;}],&quot;threads_v2_enabled&quot;:false,&quot;viralGiftsConfig&quot;:null,&quot;tier&quot;:1,&quot;no_index&quot;:false,&quot;can_set_google_site_verification&quot;:false,&quot;can_have_sitemap&quot;:false,&quot;founding_plan_name_english&quot;:&quot;Founding Member&quot;,&quot;bundles&quot;:[],&quot;base_url&quot;:&quot;https://jagadeeshrampam.substack.com&quot;,&quot;hostname&quot;:&quot;jagadeeshrampam.substack.com&quot;,&quot;is_on_substack&quot;:false,&quot;spotify_podcast_settings&quot;:null,&quot;podcastPalette&quot;:{&quot;DarkMuted&quot;:{&quot;population&quot;:72,&quot;rgb&quot;:[73,153,137]},&quot;DarkVibrant&quot;:{&quot;population&quot;:6013,&quot;rgb&quot;:[4,100,84]},&quot;LightMuted&quot;:{&quot;population&quot;:7,&quot;rgb&quot;:[142,198,186]},&quot;LightVibrant&quot;:{&quot;population&quot;:3,&quot;rgb&quot;:[166,214,206]},&quot;Muted&quot;:{&quot;population&quot;:6,&quot;rgb&quot;:[92,164,156]},&quot;Vibrant&quot;:{&quot;population&quot;:5,&quot;rgb&quot;:[76,164,146]}},&quot;pageThemes&quot;:{&quot;podcast&quot;:null},&quot;live_subscriber_counts&quot;:false,&quot;supports_ip_content_unlock&quot;:false,&quot;appTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#ff6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.8},&quot;secondary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:213,&quot;g&quot;:66,&quot;b&quot;:0,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:238,&quot;g&quot;:238,&quot;b&quot;:238,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:206.90096477355226,&quot;g&quot;:206.90096477355175,&quot;b&quot;:206.9009647735519,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:219,&quot;g&quot;:219,&quot;b&quot;:219,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:182,&quot;g&quot;:182,&quot;b&quot;:182,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}}}},&quot;portalAppTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#FF6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:86,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:134,&quot;g&quot;:135,&quot;b&quot;:135,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:146,&quot;g&quot;:146,&quot;b&quot;:146,&quot;a&quot;:1},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:221,&quot;g&quot;:221,&quot;b&quot;:221,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:183,&quot;g&quot;:183,&quot;b&quot;:183,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}},&quot;wordmark_bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1}}}},&quot;post&quot;:{&quot;id&quot;:195574958,&quot;publication_id&quot;:7361555,&quot;title&quot;:&quot;The Hidden Runtime Failure Behind Claude&#8217;s Recent Regression&quot;,&quot;social_title&quot;:null,&quot;search_engine_title&quot;:null,&quot;search_engine_description&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;slug&quot;:&quot;the-hidden-runtime-failure-behind&quot;,&quot;post_date&quot;:&quot;2026-04-27T02:52:38.906Z&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;podcast_duration&quot;:null,&quot;video_upload_id&quot;:null,&quot;write_comment_permissions&quot;:&quot;everyone&quot;,&quot;should_send_free_preview&quot;:false,&quot;free_unlock_required&quot;:false,&quot;default_comment_sort&quot;:null,&quot;canonical_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/the-hidden-runtime-failure-behind&quot;,&quot;section_id&quot;:null,&quot;podcast_art_url&quot;:null,&quot;is_published&quot;:true,&quot;live_stream_id&quot;:null,&quot;restacks&quot;:2,&quot;top_exclusions&quot;:[],&quot;pins&quot;:[],&quot;is_section_pinned&quot;:false,&quot;has_shareable_clips&quot;:false,&quot;section_slug&quot;:null,&quot;section_name&quot;:null,&quot;reactions&quot;:{&quot;&#10084;&quot;:0},&quot;subtitle&quot;:&quot;A deep dive into how adaptive thinking failed at runtime&#8212;and why that broke developer trust.&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!r0tu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png&quot;,&quot;cover_image_is_square&quot;:false,&quot;cover_image_is_explicit&quot;:false,&quot;podcast_url&quot;:null,&quot;videoUpload&quot;:null,&quot;podcastFields&quot;:{&quot;post_id&quot;:195574958,&quot;podcast_episode_number&quot;:null,&quot;podcast_season_number&quot;:null,&quot;podcast_episode_type&quot;:null,&quot;should_syndicate_to_other_feed&quot;:null,&quot;syndicate_to_section_id&quot;:null,&quot;hide_from_feed&quot;:false,&quot;free_podcast_url&quot;:null,&quot;free_podcast_duration&quot;:null,&quot;preview_contains_ad&quot;:false},&quot;podcast_upload_id&quot;:null,&quot;podcast_preview_upload_id&quot;:null,&quot;podcastUpload&quot;:null,&quot;podcastPreviewUpload&quot;:null,&quot;voiceover_upload_id&quot;:null,&quot;voiceoverUpload&quot;:null,&quot;has_voiceover&quot;:false,&quot;description&quot;:&quot;A deep dive into how adaptive thinking failed at runtime&#8212;and why that broke developer trust.&quot;,&quot;body_json&quot;:null,&quot;body_html&quot;:null,&quot;truncated_body_text&quot;:&quot;For a few weeks, Claude Code got noticeably worse.&quot;,&quot;wordcount&quot;:965,&quot;postTags&quot;:[],&quot;teaser_post_eligible&quot;:true,&quot;postCountryBlocks&quot;:[],&quot;headlineTest&quot;:null,&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[236,86,76],&quot;population&quot;:20},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[24,76,132],&quot;population&quot;:2},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[104,164,228],&quot;population&quot;:2},&quot;Muted&quot;:{&quot;rgb&quot;:[111,147,94],&quot;population&quot;:40},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[50,69,86],&quot;population&quot;:192},&quot;LightMuted&quot;:{&quot;rgb&quot;:[158,172,157],&quot;population&quot;:9}},&quot;publishedBylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null},&quot;primary_publication&quot;:{&quot;id&quot;:7361555,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain_optional&quot;:false,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;author_id&quot;:12091074,&quot;user_id&quot;:12091074,&quot;handles_enabled&quot;:false,&quot;explicit&quot;:false,&quot;is_personal_mode&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;pledges_enabled&quot;:true,&quot;ios_app_payments_enabled&quot;:false}}],&quot;reaction&quot;:false,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;child_comment_count&quot;:0,&quot;country_blocks&quot;:[],&quot;is_geoblocked&quot;:false,&quot;hasCashtag&quot;:false,&quot;inboxItem&quot;:{&quot;content_key&quot;:&quot;post:195574958&quot;,&quot;updated_at&quot;:&quot;2026-05-01T06:03:31.017Z&quot;,&quot;content_date&quot;:&quot;2026-04-27T02:52:38.906Z&quot;,&quot;inbox_date&quot;:&quot;2026-04-27T02:52:38.906Z&quot;,&quot;seen_at&quot;:&quot;2026-05-01T06:03:31.017Z&quot;,&quot;saved_at&quot;:null,&quot;archived_at&quot;:null,&quot;skip_inbox&quot;:false,&quot;type&quot;:&quot;post&quot;,&quot;post_id&quot;:195574958,&quot;extra_views&quot;:[&quot;media&quot;],&quot;read_progress&quot;:0,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;postType&quot;:&quot;newsletter&quot;,&quot;title&quot;:&quot;The Hidden Runtime Failure Behind Claude&#8217;s Recent Regression&quot;,&quot;subtitle&quot;:&quot;A deep dive into how adaptive thinking failed at runtime&#8212;and why that broke developer trust.&quot;,&quot;detail_view_subtitle&quot;:&quot;A deep dive into how adaptive thinking failed at runtime&#8212;and why that broke developer trust.&quot;,&quot;cover_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!r0tu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;is_preview&quot;:false,&quot;web_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/the-hidden-runtime-failure-behind&quot;,&quot;duration_metadata&quot;:{&quot;word_count&quot;:965},&quot;authors&quot;:[&quot;Jagadeesh Rampam&quot;],&quot;published_bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;}],&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[236,86,76],&quot;population&quot;:20},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[24,76,132],&quot;population&quot;:2},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[104,164,228],&quot;population&quot;:2},&quot;Muted&quot;:{&quot;rgb&quot;:[111,147,94],&quot;population&quot;:40},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[50,69,86],&quot;population&quot;:192},&quot;LightMuted&quot;:{&quot;rgb&quot;:[158,172,157],&quot;population&quot;:9}},&quot;publication_id&quot;:7361555,&quot;publisher_image_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;publisher_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;is_personal_mode&quot;:false,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;reaction&quot;:false,&quot;tracking_parameters&quot;:{&quot;is_saved&quot;:false,&quot;is_seen&quot;:true,&quot;post_id&quot;:195574958,&quot;post_type&quot;:&quot;newsletter&quot;,&quot;publication_id&quot;:7361555,&quot;tabId&quot;:&quot;home&quot;,&quot;tabType&quot;:&quot;base&quot;,&quot;max_read_progress&quot;:1,&quot;max_audio_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;last_seen_at&quot;:&quot;2026-05-01T06:03:31.017Z&quot;,&quot;impression_id&quot;:&quot;eea82e1d-9c6f-40ed-9ac0-27d626ff826e&quot;}},&quot;is_saved&quot;:false,&quot;saved_at&quot;:null,&quot;is_viewed&quot;:true,&quot;read_progress&quot;:0,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;restacked&quot;:false},&quot;postSelection&quot;:null,&quot;postSelectionTheme&quot;:null,&quot;postImageSelection&quot;:null,&quot;clipInfo&quot;:null,&quot;mediaClip&quot;:null},{&quot;id&quot;:&quot;393b3bf2-9e26-49e3-bca0-868146c5f62a&quot;,&quot;type&quot;:&quot;post&quot;,&quot;publication&quot;:{&quot;apple_pay_disabled&quot;:false,&quot;apex_domain&quot;:null,&quot;author_id&quot;:12091074,&quot;byline_images_enabled&quot;:true,&quot;bylines_enabled&quot;:true,&quot;chartable_token&quot;:null,&quot;community_enabled&quot;:true,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;cover_photo_url&quot;:null,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;custom_domain_optional&quot;:false,&quot;custom_domain&quot;:null,&quot;default_comment_sort&quot;:&quot;best_first&quot;,&quot;default_coupon&quot;:null,&quot;default_group_coupon&quot;:null,&quot;default_show_guest_bios&quot;:true,&quot;email_banner_url&quot;:null,&quot;email_from_name&quot;:null,&quot;email_from&quot;:null,&quot;embed_tracking_disabled&quot;:false,&quot;explicit&quot;:false,&quot;expose_paywall_content_to_search_engines&quot;:true,&quot;fb_pixel_id&quot;:null,&quot;fb_site_verification_token&quot;:null,&quot;flagged_as_spam&quot;:false,&quot;founding_subscription_benefits&quot;:null,&quot;free_subscription_benefits&quot;:null,&quot;ga_pixel_id&quot;:null,&quot;google_site_verification_token&quot;:null,&quot;google_tag_manager_token&quot;:null,&quot;hero_image&quot;:null,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;hide_intro_subtitle&quot;:null,&quot;hide_intro_title&quot;:null,&quot;hide_podcast_feed_link&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;id&quot;:7361555,&quot;image_thumbnails_always_enabled&quot;:false,&quot;invite_only&quot;:false,&quot;hide_podcast_from_pub_listings&quot;:false,&quot;language&quot;:&quot;en&quot;,&quot;logo_url_wide&quot;:null,&quot;logo_url&quot;:null,&quot;minimum_group_size&quot;:2,&quot;moderation_enabled&quot;:true,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;paid_subscription_benefits&quot;:null,&quot;parsely_pixel_id&quot;:null,&quot;chartbeat_domain&quot;:null,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;paywall_free_trial_enabled&quot;:false,&quot;podcast_art_url&quot;:null,&quot;paid_podcast_episode_art_url&quot;:null,&quot;podcast_byline&quot;:null,&quot;podcast_description&quot;:null,&quot;podcast_enabled&quot;:false,&quot;podcast_feed_url&quot;:null,&quot;podcast_title&quot;:null,&quot;post_preview_limit&quot;:null,&quot;primary_user_id&quot;:12091074,&quot;require_clickthrough&quot;:false,&quot;show_pub_podcast_tab&quot;:false,&quot;show_recs_on_homepage&quot;:true,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;subscriber_invites&quot;:0,&quot;support_email&quot;:null,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;theme_var_color_links&quot;:false,&quot;theme_var_cover_bg_color&quot;:null,&quot;trial_end_override&quot;:null,&quot;twitter_pixel_id&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;post_reaction_faces_enabled&quot;:true,&quot;is_personal_mode&quot;:false,&quot;plans&quot;:null,&quot;stripe_user_id&quot;:null,&quot;stripe_country&quot;:null,&quot;stripe_publishable_key&quot;:null,&quot;stripe_platform_account&quot;:null,&quot;automatic_tax_enabled&quot;:null,&quot;author_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;author_handle&quot;:&quot;jagadeeshrampam&quot;,&quot;author_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;author_bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;has_custom_tos&quot;:false,&quot;has_custom_privacy&quot;:false,&quot;theme&quot;:{&quot;background_pop_color&quot;:null,&quot;web_bg_color&quot;:&quot;#ffffff&quot;,&quot;cover_bg_color&quot;:&quot;#ffffff&quot;,&quot;publication_id&quot;:7361555,&quot;color_links&quot;:null,&quot;font_preset_heading&quot;:null,&quot;font_preset_body&quot;:null,&quot;font_family_headings&quot;:null,&quot;font_family_body&quot;:null,&quot;font_family_ui&quot;:null,&quot;font_size_body_desktop&quot;:null,&quot;print_secondary&quot;:null,&quot;custom_css_web&quot;:null,&quot;custom_css_email&quot;:null,&quot;home_hero&quot;:&quot;newspaper&quot;,&quot;home_posts&quot;:&quot;list&quot;,&quot;home_show_top_posts&quot;:false,&quot;hide_images_from_list&quot;:false,&quot;home_hero_alignment&quot;:&quot;left&quot;,&quot;home_hero_show_podcast_links&quot;:true,&quot;default_post_header_variant&quot;:null,&quot;custom_header&quot;:null,&quot;custom_footer&quot;:null,&quot;social_media_links&quot;:null,&quot;font_options&quot;:null,&quot;section_template&quot;:null,&quot;custom_subscribe&quot;:null},&quot;threads_v2_settings&quot;:null,&quot;default_group_coupon_percent_off&quot;:null,&quot;pause_return_date&quot;:null,&quot;has_posts&quot;:true,&quot;has_recommendations&quot;:false,&quot;first_post_date&quot;:&quot;2025-12-23T12:34:44.703Z&quot;,&quot;has_podcast&quot;:false,&quot;has_free_podcast&quot;:false,&quot;has_subscriber_only_podcast&quot;:false,&quot;has_community_content&quot;:true,&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailFreeIncluded&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailOrderOfMagnitude&quot;:0,&quot;rankingDetailFreeIncludedOrderOfMagnitude&quot;:10,&quot;rankingDetailFreeSubscriberCount&quot;:null,&quot;rankingDetailByLanguage&quot;:{&quot;ar&quot;:{&quot;rankingDetail&quot;:&quot;&#1578;&#1605; &#1575;&#1604;&#1573;&#1591;&#1604;&#1575;&#1602; 5 months ago&quot;},&quot;ca&quot;:{&quot;rankingDetail&quot;:&quot;S&#8217;ha llan&#231;at fa 5 mesos&quot;},&quot;da&quot;:{&quot;rankingDetail&quot;:&quot;Lancering 5 m&#229;neder&quot;},&quot;de&quot;:{&quot;rankingDetail&quot;:&quot;Vor vor 5 Monaten gelauncht&quot;},&quot;es&quot;:{&quot;rankingDetail&quot;:&quot;Lanzado hace 5 meses&quot;},&quot;fr&quot;:{&quot;rankingDetail&quot;:&quot;Lanc&#233; il y a 5 mois&quot;},&quot;ja&quot;:{&quot;rankingDetail&quot;:&quot;&#38283;&#22987;&#26085; 5&#12534;&#26376;&#21069;&quot;},&quot;nb&quot;:{&quot;rankingDetail&quot;:&quot;Lansert 5 m&#229;neder&quot;},&quot;nl&quot;:{&quot;rankingDetail&quot;:&quot;Gelanceerd 5 maanden geleden&quot;},&quot;pl&quot;:{&quot;rankingDetail&quot;:&quot;Uruchomiono 5 miesi&#281;cy temu&quot;},&quot;pt&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;pt-br&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;en-gb&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;},&quot;it&quot;:{&quot;rankingDetail&quot;:&quot;Lanciato 5 mesi&quot;},&quot;tr&quot;:{&quot;rankingDetail&quot;:&quot;5 ay ba&#351;lat&#305;ld&#305;&quot;},&quot;sv&quot;:{&quot;rankingDetail&quot;:&quot;Lanserad 5 m&#229;nader sedan&quot;},&quot;en&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;}},&quot;freeSubscriberCount&quot;:null,&quot;freeSubscriberCountOrderOfMagnitude&quot;:&quot;19&quot;,&quot;author_bestseller_tier&quot;:0,&quot;author_badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;disable_monthly_subscriptions&quot;:false,&quot;disable_annual_subscriptions&quot;:false,&quot;hide_post_restacks&quot;:false,&quot;notes_feed_enabled&quot;:true,&quot;showIntroModule&quot;:false,&quot;isPortraitLayout&quot;:false,&quot;last_chat_post_at&quot;:null,&quot;primary_profile_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;primary_profile_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;no_follow&quot;:true,&quot;paywall_chat&quot;:&quot;free&quot;,&quot;sections&quot;:[],&quot;multipub_migration&quot;:null,&quot;navigationBarItems&quot;:[],&quot;contributors&quot;:[{&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;role&quot;:&quot;admin&quot;,&quot;owner&quot;:true,&quot;user_id&quot;:12091074,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;}],&quot;threads_v2_enabled&quot;:false,&quot;viralGiftsConfig&quot;:null,&quot;tier&quot;:1,&quot;no_index&quot;:false,&quot;can_set_google_site_verification&quot;:false,&quot;can_have_sitemap&quot;:false,&quot;founding_plan_name_english&quot;:&quot;Founding Member&quot;,&quot;bundles&quot;:[],&quot;base_url&quot;:&quot;https://jagadeeshrampam.substack.com&quot;,&quot;hostname&quot;:&quot;jagadeeshrampam.substack.com&quot;,&quot;is_on_substack&quot;:false,&quot;spotify_podcast_settings&quot;:null,&quot;podcastPalette&quot;:{&quot;DarkMuted&quot;:{&quot;population&quot;:72,&quot;rgb&quot;:[73,153,137]},&quot;DarkVibrant&quot;:{&quot;population&quot;:6013,&quot;rgb&quot;:[4,100,84]},&quot;LightMuted&quot;:{&quot;population&quot;:7,&quot;rgb&quot;:[142,198,186]},&quot;LightVibrant&quot;:{&quot;population&quot;:3,&quot;rgb&quot;:[166,214,206]},&quot;Muted&quot;:{&quot;population&quot;:6,&quot;rgb&quot;:[92,164,156]},&quot;Vibrant&quot;:{&quot;population&quot;:5,&quot;rgb&quot;:[76,164,146]}},&quot;pageThemes&quot;:{&quot;podcast&quot;:null},&quot;live_subscriber_counts&quot;:false,&quot;supports_ip_content_unlock&quot;:false,&quot;appTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#ff6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.8},&quot;secondary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:213,&quot;g&quot;:66,&quot;b&quot;:0,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:238,&quot;g&quot;:238,&quot;b&quot;:238,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:206.90096477355226,&quot;g&quot;:206.90096477355175,&quot;b&quot;:206.9009647735519,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:219,&quot;g&quot;:219,&quot;b&quot;:219,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:182,&quot;g&quot;:182,&quot;b&quot;:182,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}}}},&quot;portalAppTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#FF6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:86,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:134,&quot;g&quot;:135,&quot;b&quot;:135,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:146,&quot;g&quot;:146,&quot;b&quot;:146,&quot;a&quot;:1},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:221,&quot;g&quot;:221,&quot;b&quot;:221,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:183,&quot;g&quot;:183,&quot;b&quot;:183,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}},&quot;wordmark_bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1}}}},&quot;post&quot;:{&quot;id&quot;:195255558,&quot;publication_id&quot;:7361555,&quot;title&quot;:&quot;When Adaptive Thinking Goes Off the Rails&quot;,&quot;social_title&quot;:null,&quot;search_engine_title&quot;:null,&quot;search_engine_description&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;slug&quot;:&quot;when-adaptive-thinking-goes-off-the&quot;,&quot;post_date&quot;:&quot;2026-04-23T16:36:46.650Z&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;podcast_duration&quot;:null,&quot;video_upload_id&quot;:null,&quot;write_comment_permissions&quot;:&quot;everyone&quot;,&quot;should_send_free_preview&quot;:false,&quot;free_unlock_required&quot;:false,&quot;default_comment_sort&quot;:null,&quot;canonical_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the&quot;,&quot;section_id&quot;:null,&quot;podcast_art_url&quot;:null,&quot;is_published&quot;:true,&quot;live_stream_id&quot;:null,&quot;restacks&quot;:1,&quot;top_exclusions&quot;:[],&quot;pins&quot;:[],&quot;is_section_pinned&quot;:false,&quot;has_shareable_clips&quot;:false,&quot;section_slug&quot;:null,&quot;section_name&quot;:null,&quot;reactions&quot;:{&quot;&#10084;&quot;:0},&quot;subtitle&quot;:&quot;My Opus 4.7 Experience as a Developer (honestly, not great!)&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!5HdD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png&quot;,&quot;cover_image_is_square&quot;:false,&quot;cover_image_is_explicit&quot;:false,&quot;podcast_url&quot;:null,&quot;videoUpload&quot;:null,&quot;podcastFields&quot;:{&quot;post_id&quot;:195255558,&quot;podcast_episode_number&quot;:null,&quot;podcast_season_number&quot;:null,&quot;podcast_episode_type&quot;:null,&quot;should_syndicate_to_other_feed&quot;:null,&quot;syndicate_to_section_id&quot;:null,&quot;hide_from_feed&quot;:false,&quot;free_podcast_url&quot;:null,&quot;free_podcast_duration&quot;:null,&quot;preview_contains_ad&quot;:false},&quot;podcast_upload_id&quot;:null,&quot;podcast_preview_upload_id&quot;:null,&quot;podcastUpload&quot;:null,&quot;podcastPreviewUpload&quot;:null,&quot;voiceover_upload_id&quot;:null,&quot;voiceoverUpload&quot;:null,&quot;has_voiceover&quot;:false,&quot;description&quot;:&quot;My Opus 4.7 Experience as a Developer (honestly, not great!)&quot;,&quot;body_json&quot;:null,&quot;body_html&quot;:null,&quot;truncated_body_text&quot;:&quot;Three weeks ago,&quot;,&quot;wordcount&quot;:1638,&quot;postTags&quot;:[{&quot;id&quot;:&quot;02bfc371-beb5-4d55-940e-ae7779467ca6&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;opus4.7&quot;,&quot;slug&quot;:&quot;opus47&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;905cc282-4f22-494a-aa52-5ab0df263abd&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;parjanya&quot;,&quot;slug&quot;:&quot;parjanya&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;a18601e6-bd90-48f9-ab3a-9c776e61c67e&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;AI debt&quot;,&quot;slug&quot;:&quot;ai-debt&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;a2e55ca5-2051-469e-a1cf-ed5dea751483&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;llms&quot;,&quot;slug&quot;:&quot;llms&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;c4b30b1d-30ba-4276-a430-8f80aa2684c6&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;claude code&quot;,&quot;slug&quot;:&quot;claude-code&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;d32f2c8d-5048-4d9e-b2c5-c8d530e1bd9d&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;IQA&quot;,&quot;slug&quot;:&quot;iqa&quot;,&quot;hidden&quot;:false}],&quot;teaser_post_eligible&quot;:true,&quot;postCountryBlocks&quot;:[],&quot;headlineTest&quot;:null,&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[196,60,52],&quot;population&quot;:1},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[130,62,24],&quot;population&quot;:79},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[227.19677419354835,154.48064516129034,150.20322580645163],&quot;population&quot;:0},&quot;Muted&quot;:{&quot;rgb&quot;:[94,144,128],&quot;population&quot;:4},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[52,96,88],&quot;population&quot;:7},&quot;LightMuted&quot;:{&quot;rgb&quot;:[188,191,195],&quot;population&quot;:17}},&quot;publishedBylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null},&quot;primary_publication&quot;:{&quot;id&quot;:7361555,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain_optional&quot;:false,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;author_id&quot;:12091074,&quot;user_id&quot;:12091074,&quot;handles_enabled&quot;:false,&quot;explicit&quot;:false,&quot;is_personal_mode&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;pledges_enabled&quot;:true,&quot;ios_app_payments_enabled&quot;:false}}],&quot;reaction&quot;:false,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;child_comment_count&quot;:0,&quot;country_blocks&quot;:[],&quot;is_geoblocked&quot;:false,&quot;hasCashtag&quot;:false,&quot;inboxItem&quot;:{&quot;content_key&quot;:&quot;post:195255558&quot;,&quot;updated_at&quot;:&quot;2026-05-11T04:08:58.891Z&quot;,&quot;content_date&quot;:&quot;2026-04-23T16:36:46.650Z&quot;,&quot;inbox_date&quot;:&quot;2026-04-23T16:36:46.650Z&quot;,&quot;seen_at&quot;:&quot;2026-05-11T04:08:58.891Z&quot;,&quot;saved_at&quot;:null,&quot;archived_at&quot;:null,&quot;skip_inbox&quot;:false,&quot;type&quot;:&quot;post&quot;,&quot;post_id&quot;:195255558,&quot;extra_views&quot;:[&quot;media&quot;],&quot;read_progress&quot;:0,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;postType&quot;:&quot;newsletter&quot;,&quot;title&quot;:&quot;When Adaptive Thinking Goes Off the Rails&quot;,&quot;subtitle&quot;:&quot;My Opus 4.7 Experience as a Developer (honestly, not great!)&quot;,&quot;detail_view_subtitle&quot;:&quot;My Opus 4.7 Experience as a Developer (honestly, not great!)&quot;,&quot;cover_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!5HdD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;is_preview&quot;:false,&quot;web_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the&quot;,&quot;duration_metadata&quot;:{&quot;word_count&quot;:1638},&quot;authors&quot;:[&quot;Jagadeesh Rampam&quot;],&quot;published_bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;}],&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[196,60,52],&quot;population&quot;:1},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[130,62,24],&quot;population&quot;:79},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[227.19677419354835,154.48064516129034,150.20322580645163],&quot;population&quot;:0},&quot;Muted&quot;:{&quot;rgb&quot;:[94,144,128],&quot;population&quot;:4},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[52,96,88],&quot;population&quot;:7},&quot;LightMuted&quot;:{&quot;rgb&quot;:[188,191,195],&quot;population&quot;:17}},&quot;publication_id&quot;:7361555,&quot;publisher_image_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;publisher_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;is_personal_mode&quot;:false,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;reaction&quot;:false,&quot;tracking_parameters&quot;:{&quot;is_saved&quot;:false,&quot;is_seen&quot;:true,&quot;post_id&quot;:195255558,&quot;post_type&quot;:&quot;newsletter&quot;,&quot;publication_id&quot;:7361555,&quot;tabId&quot;:&quot;home&quot;,&quot;tabType&quot;:&quot;base&quot;,&quot;max_read_progress&quot;:1,&quot;max_audio_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;last_seen_at&quot;:&quot;2026-05-11T04:08:58.891Z&quot;,&quot;impression_id&quot;:&quot;19098588-75ec-49ca-a5cf-0fa0119da83c&quot;}},&quot;is_saved&quot;:false,&quot;saved_at&quot;:null,&quot;is_viewed&quot;:true,&quot;read_progress&quot;:0,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;restacked&quot;:false},&quot;postSelection&quot;:null,&quot;postSelectionTheme&quot;:null,&quot;postImageSelection&quot;:null,&quot;clipInfo&quot;:null,&quot;mediaClip&quot;:null},{&quot;id&quot;:&quot;4fa164a0-f4d8-4498-8053-65e0cbbd5196&quot;,&quot;type&quot;:&quot;post&quot;,&quot;publication&quot;:{&quot;apple_pay_disabled&quot;:false,&quot;apex_domain&quot;:null,&quot;author_id&quot;:12091074,&quot;byline_images_enabled&quot;:true,&quot;bylines_enabled&quot;:true,&quot;chartable_token&quot;:null,&quot;community_enabled&quot;:true,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;cover_photo_url&quot;:null,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;custom_domain_optional&quot;:false,&quot;custom_domain&quot;:null,&quot;default_comment_sort&quot;:&quot;best_first&quot;,&quot;default_coupon&quot;:null,&quot;default_group_coupon&quot;:null,&quot;default_show_guest_bios&quot;:true,&quot;email_banner_url&quot;:null,&quot;email_from_name&quot;:null,&quot;email_from&quot;:null,&quot;embed_tracking_disabled&quot;:false,&quot;explicit&quot;:false,&quot;expose_paywall_content_to_search_engines&quot;:true,&quot;fb_pixel_id&quot;:null,&quot;fb_site_verification_token&quot;:null,&quot;flagged_as_spam&quot;:false,&quot;founding_subscription_benefits&quot;:null,&quot;free_subscription_benefits&quot;:null,&quot;ga_pixel_id&quot;:null,&quot;google_site_verification_token&quot;:null,&quot;google_tag_manager_token&quot;:null,&quot;hero_image&quot;:null,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;hide_intro_subtitle&quot;:null,&quot;hide_intro_title&quot;:null,&quot;hide_podcast_feed_link&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;id&quot;:7361555,&quot;image_thumbnails_always_enabled&quot;:false,&quot;invite_only&quot;:false,&quot;hide_podcast_from_pub_listings&quot;:false,&quot;language&quot;:&quot;en&quot;,&quot;logo_url_wide&quot;:null,&quot;logo_url&quot;:null,&quot;minimum_group_size&quot;:2,&quot;moderation_enabled&quot;:true,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;paid_subscription_benefits&quot;:null,&quot;parsely_pixel_id&quot;:null,&quot;chartbeat_domain&quot;:null,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;paywall_free_trial_enabled&quot;:false,&quot;podcast_art_url&quot;:null,&quot;paid_podcast_episode_art_url&quot;:null,&quot;podcast_byline&quot;:null,&quot;podcast_description&quot;:null,&quot;podcast_enabled&quot;:false,&quot;podcast_feed_url&quot;:null,&quot;podcast_title&quot;:null,&quot;post_preview_limit&quot;:null,&quot;primary_user_id&quot;:12091074,&quot;require_clickthrough&quot;:false,&quot;show_pub_podcast_tab&quot;:false,&quot;show_recs_on_homepage&quot;:true,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;subscriber_invites&quot;:0,&quot;support_email&quot;:null,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;theme_var_color_links&quot;:false,&quot;theme_var_cover_bg_color&quot;:null,&quot;trial_end_override&quot;:null,&quot;twitter_pixel_id&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;post_reaction_faces_enabled&quot;:true,&quot;is_personal_mode&quot;:false,&quot;plans&quot;:null,&quot;stripe_user_id&quot;:null,&quot;stripe_country&quot;:null,&quot;stripe_publishable_key&quot;:null,&quot;stripe_platform_account&quot;:null,&quot;automatic_tax_enabled&quot;:null,&quot;author_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;author_handle&quot;:&quot;jagadeeshrampam&quot;,&quot;author_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;author_bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;has_custom_tos&quot;:false,&quot;has_custom_privacy&quot;:false,&quot;theme&quot;:{&quot;background_pop_color&quot;:null,&quot;web_bg_color&quot;:&quot;#ffffff&quot;,&quot;cover_bg_color&quot;:&quot;#ffffff&quot;,&quot;publication_id&quot;:7361555,&quot;color_links&quot;:null,&quot;font_preset_heading&quot;:null,&quot;font_preset_body&quot;:null,&quot;font_family_headings&quot;:null,&quot;font_family_body&quot;:null,&quot;font_family_ui&quot;:null,&quot;font_size_body_desktop&quot;:null,&quot;print_secondary&quot;:null,&quot;custom_css_web&quot;:null,&quot;custom_css_email&quot;:null,&quot;home_hero&quot;:&quot;newspaper&quot;,&quot;home_posts&quot;:&quot;list&quot;,&quot;home_show_top_posts&quot;:false,&quot;hide_images_from_list&quot;:false,&quot;home_hero_alignment&quot;:&quot;left&quot;,&quot;home_hero_show_podcast_links&quot;:true,&quot;default_post_header_variant&quot;:null,&quot;custom_header&quot;:null,&quot;custom_footer&quot;:null,&quot;social_media_links&quot;:null,&quot;font_options&quot;:null,&quot;section_template&quot;:null,&quot;custom_subscribe&quot;:null},&quot;threads_v2_settings&quot;:null,&quot;default_group_coupon_percent_off&quot;:null,&quot;pause_return_date&quot;:null,&quot;has_posts&quot;:true,&quot;has_recommendations&quot;:false,&quot;first_post_date&quot;:&quot;2025-12-23T12:34:44.703Z&quot;,&quot;has_podcast&quot;:false,&quot;has_free_podcast&quot;:false,&quot;has_subscriber_only_podcast&quot;:false,&quot;has_community_content&quot;:true,&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailFreeIncluded&quot;:&quot;Launched 5 months ago&quot;,&quot;rankingDetailOrderOfMagnitude&quot;:0,&quot;rankingDetailFreeIncludedOrderOfMagnitude&quot;:10,&quot;rankingDetailFreeSubscriberCount&quot;:null,&quot;rankingDetailByLanguage&quot;:{&quot;ar&quot;:{&quot;rankingDetail&quot;:&quot;&#1578;&#1605; &#1575;&#1604;&#1573;&#1591;&#1604;&#1575;&#1602; 5 months ago&quot;},&quot;ca&quot;:{&quot;rankingDetail&quot;:&quot;S&#8217;ha llan&#231;at fa 5 mesos&quot;},&quot;da&quot;:{&quot;rankingDetail&quot;:&quot;Lancering 5 m&#229;neder&quot;},&quot;de&quot;:{&quot;rankingDetail&quot;:&quot;Vor vor 5 Monaten gelauncht&quot;},&quot;es&quot;:{&quot;rankingDetail&quot;:&quot;Lanzado hace 5 meses&quot;},&quot;fr&quot;:{&quot;rankingDetail&quot;:&quot;Lanc&#233; il y a 5 mois&quot;},&quot;ja&quot;:{&quot;rankingDetail&quot;:&quot;&#38283;&#22987;&#26085; 5&#12534;&#26376;&#21069;&quot;},&quot;nb&quot;:{&quot;rankingDetail&quot;:&quot;Lansert 5 m&#229;neder&quot;},&quot;nl&quot;:{&quot;rankingDetail&quot;:&quot;Gelanceerd 5 maanden geleden&quot;},&quot;pl&quot;:{&quot;rankingDetail&quot;:&quot;Uruchomiono 5 miesi&#281;cy temu&quot;},&quot;pt&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;pt-br&quot;:{&quot;rankingDetail&quot;:&quot;Lan&#231;ado 5 meses&quot;},&quot;en-gb&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;},&quot;it&quot;:{&quot;rankingDetail&quot;:&quot;Lanciato 5 mesi&quot;},&quot;tr&quot;:{&quot;rankingDetail&quot;:&quot;5 ay ba&#351;lat&#305;ld&#305;&quot;},&quot;sv&quot;:{&quot;rankingDetail&quot;:&quot;Lanserad 5 m&#229;nader sedan&quot;},&quot;en&quot;:{&quot;rankingDetail&quot;:&quot;Launched 5 months ago&quot;}},&quot;freeSubscriberCount&quot;:null,&quot;freeSubscriberCountOrderOfMagnitude&quot;:&quot;19&quot;,&quot;author_bestseller_tier&quot;:0,&quot;author_badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;disable_monthly_subscriptions&quot;:false,&quot;disable_annual_subscriptions&quot;:false,&quot;hide_post_restacks&quot;:false,&quot;notes_feed_enabled&quot;:true,&quot;showIntroModule&quot;:false,&quot;isPortraitLayout&quot;:false,&quot;last_chat_post_at&quot;:null,&quot;primary_profile_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;primary_profile_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;no_follow&quot;:true,&quot;paywall_chat&quot;:&quot;free&quot;,&quot;sections&quot;:[],&quot;multipub_migration&quot;:null,&quot;navigationBarItems&quot;:[],&quot;contributors&quot;:[{&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;role&quot;:&quot;admin&quot;,&quot;owner&quot;:true,&quot;user_id&quot;:12091074,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;}],&quot;threads_v2_enabled&quot;:false,&quot;viralGiftsConfig&quot;:null,&quot;tier&quot;:1,&quot;no_index&quot;:false,&quot;can_set_google_site_verification&quot;:false,&quot;can_have_sitemap&quot;:false,&quot;founding_plan_name_english&quot;:&quot;Founding Member&quot;,&quot;bundles&quot;:[],&quot;base_url&quot;:&quot;https://jagadeeshrampam.substack.com&quot;,&quot;hostname&quot;:&quot;jagadeeshrampam.substack.com&quot;,&quot;is_on_substack&quot;:false,&quot;spotify_podcast_settings&quot;:null,&quot;podcastPalette&quot;:{&quot;DarkMuted&quot;:{&quot;population&quot;:72,&quot;rgb&quot;:[73,153,137]},&quot;DarkVibrant&quot;:{&quot;population&quot;:6013,&quot;rgb&quot;:[4,100,84]},&quot;LightMuted&quot;:{&quot;population&quot;:7,&quot;rgb&quot;:[142,198,186]},&quot;LightVibrant&quot;:{&quot;population&quot;:3,&quot;rgb&quot;:[166,214,206]},&quot;Muted&quot;:{&quot;population&quot;:6,&quot;rgb&quot;:[92,164,156]},&quot;Vibrant&quot;:{&quot;population&quot;:5,&quot;rgb&quot;:[76,164,146]}},&quot;pageThemes&quot;:{&quot;podcast&quot;:null},&quot;live_subscriber_counts&quot;:false,&quot;supports_ip_content_unlock&quot;:false,&quot;appTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#ff6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:232,&quot;g&quot;:83,&quot;b&quot;:0,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.8},&quot;secondary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:0,&quot;g&quot;:0,&quot;b&quot;:0,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:213,&quot;g&quot;:66,&quot;b&quot;:0,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:250,&quot;g&quot;:250,&quot;b&quot;:250,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:238,&quot;g&quot;:238,&quot;b&quot;:238,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:206.90096477355226,&quot;g&quot;:206.90096477355175,&quot;b&quot;:206.9009647735519,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:219,&quot;g&quot;:219,&quot;b&quot;:219,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:182,&quot;g&quot;:182,&quot;b&quot;:182,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}}}},&quot;portalAppTheme&quot;:{&quot;colors&quot;:{&quot;accent&quot;:{&quot;name&quot;:&quot;#FF6719&quot;,&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:86,&quot;b&quot;:0,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:132,&quot;b&quot;:73,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;contrast&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.2},&quot;bg_hover&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:0.3}}},&quot;fg&quot;:{&quot;primary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:134,&quot;g&quot;:135,&quot;b&quot;:135,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:146,&quot;g&quot;:146,&quot;b&quot;:146,&quot;a&quot;:1},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.9},&quot;secondary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.6},&quot;tertiary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:0.4},&quot;accent&quot;:{&quot;r&quot;:255,&quot;g&quot;:103,&quot;b&quot;:25,&quot;a&quot;:1}}},&quot;bg&quot;:{&quot;name&quot;:&quot;#ffffff&quot;,&quot;hue&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;tint&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:240,&quot;g&quot;:240,&quot;b&quot;:240,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:221,&quot;g&quot;:221,&quot;b&quot;:221,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:183,&quot;g&quot;:183,&quot;b&quot;:183,&quot;a&quot;:1},&quot;dark&quot;:{&quot;primary&quot;:{&quot;r&quot;:22,&quot;g&quot;:23,&quot;b&quot;:24,&quot;a&quot;:1},&quot;primary_hover&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;primary_elevated&quot;:{&quot;r&quot;:27,&quot;g&quot;:28,&quot;b&quot;:29,&quot;a&quot;:1},&quot;secondary&quot;:{&quot;r&quot;:35,&quot;g&quot;:37,&quot;b&quot;:37,&quot;a&quot;:1},&quot;secondary_elevated&quot;:{&quot;r&quot;:41.35899397549579,&quot;g&quot;:43.405356429195315,&quot;b&quot;:43.40489285041963,&quot;a&quot;:1},&quot;tertiary&quot;:{&quot;r&quot;:54,&quot;g&quot;:55,&quot;b&quot;:55,&quot;a&quot;:1},&quot;quaternary&quot;:{&quot;r&quot;:90,&quot;g&quot;:91,&quot;b&quot;:91,&quot;a&quot;:1}}},&quot;wordmark_bg&quot;:{&quot;r&quot;:255,&quot;g&quot;:255,&quot;b&quot;:255,&quot;a&quot;:1}}}},&quot;post&quot;:{&quot;id&quot;:193306186,&quot;publication_id&quot;:7361555,&quot;title&quot;:&quot;Building with Opus 4.6&quot;,&quot;social_title&quot;:null,&quot;search_engine_title&quot;:null,&quot;search_engine_description&quot;:null,&quot;type&quot;:&quot;newsletter&quot;,&quot;slug&quot;:&quot;building-with-opus-46&quot;,&quot;post_date&quot;:&quot;2026-04-06T05:22:32.370Z&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;podcast_duration&quot;:null,&quot;video_upload_id&quot;:null,&quot;write_comment_permissions&quot;:&quot;everyone&quot;,&quot;should_send_free_preview&quot;:false,&quot;free_unlock_required&quot;:false,&quot;default_comment_sort&quot;:null,&quot;canonical_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/building-with-opus-46&quot;,&quot;section_id&quot;:null,&quot;podcast_art_url&quot;:null,&quot;is_published&quot;:true,&quot;live_stream_id&quot;:null,&quot;restacks&quot;:1,&quot;top_exclusions&quot;:[],&quot;pins&quot;:[],&quot;is_section_pinned&quot;:false,&quot;has_shareable_clips&quot;:false,&quot;section_slug&quot;:null,&quot;section_name&quot;:null,&quot;reactions&quot;:{&quot;&#10084;&quot;:0},&quot;subtitle&quot;:&quot;What 1M Context Actually Looks Like in Production ML Infrastructure&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!zPrW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg&quot;,&quot;cover_image_is_square&quot;:false,&quot;cover_image_is_explicit&quot;:false,&quot;podcast_url&quot;:null,&quot;videoUpload&quot;:null,&quot;podcastFields&quot;:{&quot;post_id&quot;:193306186,&quot;podcast_episode_number&quot;:null,&quot;podcast_season_number&quot;:null,&quot;podcast_episode_type&quot;:null,&quot;should_syndicate_to_other_feed&quot;:null,&quot;syndicate_to_section_id&quot;:null,&quot;hide_from_feed&quot;:false,&quot;free_podcast_url&quot;:null,&quot;free_podcast_duration&quot;:null,&quot;preview_contains_ad&quot;:false},&quot;podcast_upload_id&quot;:null,&quot;podcast_preview_upload_id&quot;:null,&quot;podcastUpload&quot;:null,&quot;podcastPreviewUpload&quot;:null,&quot;voiceover_upload_id&quot;:null,&quot;voiceoverUpload&quot;:null,&quot;has_voiceover&quot;:false,&quot;description&quot;:&quot;What 1M Context Actually Looks Like in Production ML Infrastructure&quot;,&quot;body_json&quot;:null,&quot;body_html&quot;:null,&quot;truncated_body_text&quot;:&quot;Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding.&quot;,&quot;wordcount&quot;:2750,&quot;postTags&quot;:[{&quot;id&quot;:&quot;0aa59571-5106-46d3-a6f2-0b9676b0a4c5&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;Inference&quot;,&quot;slug&quot;:&quot;inference&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;62bb0aa0-cb26-4dd6-9081-6dcf465b8d1a&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;system design&quot;,&quot;slug&quot;:&quot;system-design&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;69896b21-6dba-4c46-b238-0baa9a263ca9&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;nf4 quantization&quot;,&quot;slug&quot;:&quot;nf4-quantization&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;905cc282-4f22-494a-aa52-5ab0df263abd&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;parjanya&quot;,&quot;slug&quot;:&quot;parjanya&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;c4b30b1d-30ba-4276-a430-8f80aa2684c6&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;claude code&quot;,&quot;slug&quot;:&quot;claude-code&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;d32f2c8d-5048-4d9e-b2c5-c8d530e1bd9d&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;IQA&quot;,&quot;slug&quot;:&quot;iqa&quot;,&quot;hidden&quot;:false},{&quot;id&quot;:&quot;fb1bb63f-392e-476f-839c-e811dd43d060&quot;,&quot;publication_id&quot;:7361555,&quot;name&quot;:&quot;image quality assessment&quot;,&quot;slug&quot;:&quot;image-quality-assessment&quot;,&quot;hidden&quot;:false}],&quot;teaser_post_eligible&quot;:true,&quot;postCountryBlocks&quot;:[],&quot;headlineTest&quot;:null,&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[240,162,81],&quot;population&quot;:108},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[104,52,36],&quot;population&quot;:2},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[251,215,114],&quot;population&quot;:44},&quot;Muted&quot;:{&quot;rgb&quot;:[143,98,81],&quot;population&quot;:95},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[40,57,86],&quot;population&quot;:288},&quot;LightMuted&quot;:{&quot;rgb&quot;:[192,150,131],&quot;population&quot;:28}},&quot;publishedBylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null},&quot;primary_publication&quot;:{&quot;id&quot;:7361555,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain_optional&quot;:false,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;author_id&quot;:12091074,&quot;user_id&quot;:12091074,&quot;handles_enabled&quot;:false,&quot;explicit&quot;:false,&quot;is_personal_mode&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;pledges_enabled&quot;:true,&quot;ios_app_payments_enabled&quot;:false}}],&quot;reaction&quot;:false,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;child_comment_count&quot;:0,&quot;country_blocks&quot;:[],&quot;is_geoblocked&quot;:false,&quot;hasCashtag&quot;:false,&quot;inboxItem&quot;:{&quot;content_key&quot;:&quot;post:193306186&quot;,&quot;updated_at&quot;:&quot;2026-05-07T19:46:22.886Z&quot;,&quot;content_date&quot;:&quot;2026-04-06T05:22:32.370Z&quot;,&quot;inbox_date&quot;:&quot;2026-04-06T05:22:32.370Z&quot;,&quot;seen_at&quot;:&quot;2026-05-07T19:46:22.886Z&quot;,&quot;saved_at&quot;:null,&quot;archived_at&quot;:null,&quot;skip_inbox&quot;:false,&quot;type&quot;:&quot;post&quot;,&quot;post_id&quot;:193306186,&quot;extra_views&quot;:[],&quot;read_progress&quot;:0.504847,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;postType&quot;:&quot;newsletter&quot;,&quot;title&quot;:&quot;Building with Opus 4.6&quot;,&quot;subtitle&quot;:&quot;What 1M Context Actually Looks Like in Production ML Infrastructure&quot;,&quot;detail_view_subtitle&quot;:&quot;What 1M Context Actually Looks Like in Production ML Infrastructure&quot;,&quot;cover_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!zPrW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg&quot;,&quot;audience&quot;:&quot;everyone&quot;,&quot;is_preview&quot;:false,&quot;web_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/building-with-opus-46&quot;,&quot;duration_metadata&quot;:{&quot;word_count&quot;:2750},&quot;authors&quot;:[&quot;Jagadeesh Rampam&quot;],&quot;published_bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;}],&quot;coverImagePalette&quot;:{&quot;Vibrant&quot;:{&quot;rgb&quot;:[240,162,81],&quot;population&quot;:108},&quot;DarkVibrant&quot;:{&quot;rgb&quot;:[104,52,36],&quot;population&quot;:2},&quot;LightVibrant&quot;:{&quot;rgb&quot;:[251,215,114],&quot;population&quot;:44},&quot;Muted&quot;:{&quot;rgb&quot;:[143,98,81],&quot;population&quot;:95},&quot;DarkMuted&quot;:{&quot;rgb&quot;:[40,57,86],&quot;population&quot;:288},&quot;LightMuted&quot;:{&quot;rgb&quot;:[192,150,131],&quot;population&quot;:28}},&quot;publication_id&quot;:7361555,&quot;publisher_image_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!f-ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;publisher_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;is_personal_mode&quot;:false,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;reaction&quot;:false,&quot;tracking_parameters&quot;:{&quot;is_saved&quot;:false,&quot;is_seen&quot;:true,&quot;post_id&quot;:193306186,&quot;post_type&quot;:&quot;newsletter&quot;,&quot;publication_id&quot;:7361555,&quot;tabId&quot;:&quot;home&quot;,&quot;tabType&quot;:&quot;base&quot;,&quot;max_read_progress&quot;:1,&quot;max_audio_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;last_seen_at&quot;:&quot;2026-05-07T19:46:22.886Z&quot;,&quot;last_reading_queue_impression_at&quot;:&quot;2026-04-06T17:21:11.662Z&quot;,&quot;impression_id&quot;:&quot;350aba16-a13c-4237-b687-c94d96291bd6&quot;}},&quot;is_saved&quot;:false,&quot;saved_at&quot;:null,&quot;is_viewed&quot;:true,&quot;read_progress&quot;:0.504847,&quot;max_read_progress&quot;:1,&quot;audio_progress&quot;:0,&quot;max_audio_progress&quot;:0,&quot;video_progress&quot;:0,&quot;max_video_progress&quot;:0,&quot;restacked&quot;:false},&quot;postSelection&quot;:null,&quot;postSelectionTheme&quot;:null,&quot;postImageSelection&quot;:null,&quot;clipInfo&quot;:null,&quot;mediaClip&quot;:null}],&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;user_id&quot;:12091074,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;user_bestseller_tier&quot;:null,&quot;userStatus&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}},&quot;source&quot;:null,&quot;forumChannel&quot;:null}" data-component-name="CommentPlaceholder"></div><p>One under-discussed improvement is adaptive thinking.</p><p>Sonnet 4.6 supports it.<br>Opus 4.6 supports it.<br>Opus 4.7 uses it exclusively.</p><p>This matters because:</p><ul><li><p>the model dynamically allocates reasoning effort</p></li><li><p>easier tasks complete faster</p></li><li><p>harder tasks receive deeper reasoning automatically</p></li></ul><p>For infra-heavy workflows, this is a huge operational improvement.</p><p>Especially when the same session moves across:</p><ul><li><p>infra</p></li><li><p>application logic</p></li><li><p>orchestration</p></li><li><p>ML behavior</p></li><li><p>and debugging</p></li></ul><p>without explicit model switching every few minutes.</p><div><hr></div><h1>Something interesting I noticed about Haiku switching automatically</h1><p>One thing I still need to investigate further:</p><p>I occasionally noticed Claude seemingly switching into Haiku behavior automatically during sessions.</p><p>I initially thought this happened only at the beginning of sessions, but after more usage I suspect it can happen mid-session as well.</p><p>Anthropic&#8217;s Claude Code docs actually support this possibility:</p><ul><li><p>model switching can happen dynamically</p></li><li><p>subagents can use Haiku automatically</p></li><li><p>planning/execution layers may use different models internally</p></li></ul><p>That would explain some of the behavior I observed:</p><ul><li><p>sudden increases in unnecessary questioning</p></li><li><p>lightweight command loops</p></li><li><p>simplified reasoning paths</p></li><li><p>or execution-style interactions appearing inside longer workflows</p></li></ul><p>I do not think this is inherently bad.<br>It actually makes sense architecturally.</p><p>But on infra-heavy workflows, it can sometimes become noticeable.</p><div><hr></div><h1>The timing of this shift matters for me personally</h1><p>This transition is happening at an important moment.</p><p>I am currently preparing:</p><ul><li><p>dev + prod environment separation</p></li><li><p>launch readiness</p></li><li><p>infrastructure stabilization</p></li><li><p>ML inferencing orchestration</p></li><li><p>and final architectural refinement</p></li></ul><p>ahead of launch in roughly two weeks.</p><p>That timing matters because the recent Anthropic infrastructure and limit improvements are actually having a practical operational effect.</p><p>Anthropic recently:</p><ul><li><p>removed dedicated 1M-context rate limits for supported models</p></li><li><p>expanded higher-usage limits</p></li><li><p>improved capacity availability</p></li><li><p>and publicly discussed large-scale compute partnerships</p></li></ul><p>I do not want to get into commercial details.</p><p>But practically speaking:</p><ul><li><p>peak-hour friction has reduced significantly</p></li><li><p>longer debugging sessions feel more reliable</p></li><li><p>large-context sessions are more usable</p></li><li><p>and the additional headroom gives much more leverage for coding and debugging</p></li></ul><p>That matters a lot when your workflows involve:</p><ul><li><p>long-context infra debugging</p></li><li><p>VLM inferencing orchestration</p></li><li><p>architecture synthesis</p></li><li><p>and recursive engineering sessions</p></li></ul><div><hr></div><h1>Bottom line</h1><p>My original Haiku-first idea still solid and would try working on enhancing further in future versions. (Plan is to leverage, multiple models across the frontier models, both  models like Claude, codex and free versions like Gemma4, Qwen3.6 etc.)</p><p>But the center of gravity moved.</p><p>Today:</p><ul><li><p>Haiku 4.5 is my narrow execution layer</p></li><li><p>Sonnet 4.6 is my operational benchmark</p></li><li><p>Opus 4.6 is my deep reasoning escalation</p></li><li><p>and Opus 4.7 is the model I reserve for the hardest architectural and ML-heavy problems</p></li></ul><p>The real lesson is not:</p><blockquote><p>&#8220;Always use the smartest model.&#8221;</p></blockquote><p>And it is also not:</p><blockquote><p>&#8220;Always optimize for cost.&#8221;</p></blockquote><p>The real lesson is:</p><blockquote><p>The best model is the one that remains operationally useful under your actual workload.</p></blockquote><p>For my current stack, Sonnet 4.6 is now that benchmark.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TmO1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TmO1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!TmO1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!TmO1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!TmO1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TmO1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1699341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/197172333?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TmO1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 424w, https://substackcdn.com/image/fetch/$s_!TmO1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 848w, https://substackcdn.com/image/fetch/$s_!TmO1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 1272w, https://substackcdn.com/image/fetch/$s_!TmO1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40acf8aa-fb4a-4298-b107-15b3508973f8_1774x887.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>References &amp; Further Reading</h2><h3>Anthropic Documentation &amp; Official Notes</h3><ol><li><p><a href="https://docs.anthropic.com/en/docs/about-claude/models?utm_source=chatgpt.com">Anthropic Claude Models Overview</a><br>Official model capabilities, context windows, adaptive thinking, latency tiers, and supported features for Haiku, Sonnet, and Opus.</p></li><li><p><a href="https://docs.anthropic.com/en/docs/about-claude/pricing?utm_source=chatgpt.com">Anthropic Pricing Documentation</a><br>Current pricing for Haiku 4.5, Sonnet 4.6, Opus 4.6, Opus 4.7, prompt caching, batch processing, and 1M-context usage.</p></li><li><p><a href="https://docs.anthropic.com/en/docs/claude-code/costs?utm_source=chatgpt.com">Claude Code &#8212; Costs &amp; Model Usage Patterns</a><br>Useful for understanding model switching, subagents, orchestration strategies, and practical guidance on when to use Haiku vs Sonnet vs Opus.</p></li></ol><div><hr></div><h3>My Related Notes &amp; Blogs</h3><ol><li><p><a href="https://open.substack.com/pub/jagadeeshrampam/p/why-you-should-chose-haiku-as-default?r=775j6&amp;utm_medium=ios&amp;utm_source=chatgpt.com">Why You Should Choose Haiku as Default</a><br>My earlier thesis on why a Haiku-first strategy originally made sense economically and operationally.</p></li><li><p><a href="https://substack.com/@jagadeeshrampam/note/c-251941055?utm_source=chatgpt.com">Opus 4.7 &#8212; Initial Practical Observations</a><br>Early notes on context retention, hallucinations, workflow behavior, and operational observations while testing Opus 4.7.</p></li><li><p><a href="https://substack.com/@jagadeeshrampam?utm_source=chatgpt.com">Jagadeesh Rampam &#8212; Substack Archive</a><br>Broader writing on infra-heavy systems, AI engineering workflows, AWS architecture, ML systems, and long-context operational patterns.</p></li></ol><div><hr></div><h3>Engineering &amp; Long-Context Best Practices</h3><ol><li><p><a href="https://platform.openai.com/docs/guides/prompt-engineering?utm_source=chatgpt.com">OpenAI &#8212; Prompt Engineering Best Practices</a><br>Strong reference for practical orchestration, structured prompting, decomposition, and reliability strategies across long workflows.</p></li><li><p><a href="https://aws.amazon.com/architecture/well-architected/?utm_source=chatgpt.com">AWS Well-Architected Framework</a><br>Essential reading for scalability, operational excellence, cost optimization, reliability, and architectural trade-offs in infra-heavy systems.</p></li><li><p><a href="https://sre.google/workbook/table-of-contents/?utm_source=chatgpt.com">Google SRE Workbook</a><br>One of the best operational references for debugging culture, monitoring, production reliability, incident management, and long-running system operations.</p></li></ol><p></p>]]></content:encoded></item><item><title><![CDATA[Parjanya v2.0: From Localhost Headaches to CloudFront+ALB Architecture]]></title><description><![CDATA[AWS CloudFront and ALB for My SPA: Security and Performance Lessons Learned]]></description><link>https://blog.phagyul.ai/p/parjanya-v20-from-localhost-headaches</link><guid isPermaLink="false">https://blog.phagyul.ai/p/parjanya-v20-from-localhost-headaches</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Fri, 08 May 2026 05:50:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6Taf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Executive Summary</h2><p>When I developed the Parjanya v2.0 frontend on <strong>localhost</strong>, I ran into a series of issues that only became obvious later in deployment: CORS and preflight failures, mixed-content blocks, proxy quirks, and security leaks. To solve this and get closer to production-parity, I moved toward a <strong>server-to-server pattern</strong>: serving the SPA through Amazon CloudFront (with an S3/CloudFront static origin or Lambda@Edge) and serving the API through an Application Load Balancer (ALB) in a VPC. This gives me global caching, TLS/WAF protection, single-origin consistency that removes CORS pain, and lower egress costs.</p><p>In this post, I go deep into the localhost development pitfalls, CORS mechanics and misconfigurations, localhost vs cloud-hosted trade-offs, and the migration plan I would follow, along with code snippets, architecture diagrams, tables, and references.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6Taf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6Taf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 424w, https://substackcdn.com/image/fetch/$s_!6Taf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 848w, https://substackcdn.com/image/fetch/$s_!6Taf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 1272w, https://substackcdn.com/image/fetch/$s_!6Taf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6Taf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png" width="1456" height="799" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:799,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1699611,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/196863557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6Taf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 424w, https://substackcdn.com/image/fetch/$s_!6Taf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 848w, https://substackcdn.com/image/fetch/$s_!6Taf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 1272w, https://substackcdn.com/image/fetch/$s_!6Taf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86b26c3b-4e88-4d83-8b3a-aa3b924165b4_1693x929.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>TL;DR</strong></h3><p>I originally wrote a primer of Parjanya v2.0&#8217;s move from localhost-first development to a production-shaped AWS architecture. This shorter repost is the key lesson: localhost is great for iteration, but it hides the boundaries that matter in production. <strong>CORS failures, presigned upload issues, and origin mismatch kept pointing to the same conclusion &#8212; the right model for modern cloud apps is server-to-server.</strong> </p><p>Serve the frontend from CloudFront, route backend services through ALB, and let the backend control S3 access and tenant isolation. Production-shaped architecture is not a nice-to-have; it is the difference between a system that merely works locally and one that is actually built to scale. </p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:196307889,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/from-localhost-friction-to-production&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;From localhost friction to production-shaped architecture&quot;,&quot;truncated_body_text&quot;:&quot;Lessons from Parjanya v2.0 and the v5.4 architecture revision&quot;,&quot;date&quot;:&quot;2026-05-03T13:20:51.089Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/from-localhost-friction-to-production?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">From localhost friction to production-shaped architecture</div></div><div class="embedded-post-body">Lessons from Parjanya v2.0 and the v5.4 architecture revision&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">24 days ago &#183; Jagadeesh Rampam</div></a></div><h2>Background &amp; Context: Parjanya v2.0</h2><p>Parjanya v2.0 is a multi-tenant SaaS system where each tenant has its own storage and its own backend API. In development, the frontend runs on <code>localhost</code> while talking to AWS services for file uploads and API calls. In production, I intend to serve the SPA from a CDN (CloudFront) and the API behind an ALB.</p><p>That split introduced problems for me: local development <strong>deviated from production</strong> in origin and protocol, which led to CORS and mixed-content issues. The <strong>prod parity gap</strong> was wide. I often saw developers disable CORS checks or use wildcards on S3 buckets for convenience, but that broke strict production settings and weakened security. LocalStack even <strong>ignored S3 CORS rules</strong> in some versions, which meant bugs were not caught until deployment. </p><p>My setup here is that the Parjanya v2.0 backend is AWS-based (ECS/Fargate or EC2 behind an ALB, with S3, IAM, and related services), and that the frontend is a static app that can be hosted on S3 + CloudFront.</p><h2>Localhost Development Pitfalls</h2><p>Switching from <code>localhost</code> to AWS exposed several hidden traps for me. The main issues were:</p><h3>CORS Preflight Failures</h3><p>Browsers enforce the same-origin policy, so any cross-domain AJAX or <code>fetch</code> request triggers CORS checks. On <code>localhost</code>, I often used <code>Access-Control-Allow-Origin: *</code> or disabled checks (<code>DISABLE_CORS_CHECKS=1</code> with LocalStack), which masked issues. In production, the SPA origin, such as <code>https://&lt;cloudfront-id&gt;.cloudfront.net</code>, must exactly match S3 bucket CORS rules; otherwise S3 returns <code>403 Forbidden</code>. </p><p>For example, if only https://api.parjanya.com is in <strong>AllowedOrigins</strong>, a request from https://&lt;cloudfront-id&gt;.cloudfront.net gets blocked. The root cause is simple: dev used wildcards or localhost origins, while prod locked to the CDN domain.</p><h3>Origin Drift (Dev vs Production)</h3><p>A subtle pitfall is that the frontend origin differs in dev (http://localhost:3000) versus prod (CloudFront domain or a custom domain). Code that relies on <code>window.location.origin</code> or environment variables can compute the wrong URLs in production. This drift also means the correct CORS origin and cookie domains can be wrong in prod.</p><h3>Mixed-Content Blocks (HTTPS vs HTTP)</h3><p>Browsers on <code>https://</code> pages <strong>block any </strong><code>http://</code><strong> resources</strong>. On localhost, I might use plain HTTP without SSL, but once the SPA is on CloudFront over HTTPS, calls to an unsecured origin, or an S3 HTTP URL, are blocked as mixed content. My fix is to use HTTPS everywhere in AWS (ALB and CloudFront) and enforce redirect-to-HTTPS policies.</p><h3>Dev Proxy vs True Environment</h3><p>Many dev setups use a proxy, such as npm proxy settings or a simple NGINX layer, to avoid CORS. For example, NGINX on <code>localhost:8001</code> forwarding <code>/api/</code> to the real backend means the browser sees only one origin. That hides CORS, but only in development. In production, the CDN fronts the API with a different host unless I unify the route.</p><h3>IAM / Bucket Policy Surprises</h3><p>In dev, a single IAM role or default credential set can accidentally be used for all S3 uploads. That can hide cross-tenant access problems. In AWS, I need separate IAM roles and strict bucket policies per tenant. Bucket policies may also imply a deny if conditions are not met; for example, a presigned URL can 403 if the request is not over HTTPS or if the <code>Host</code> header does not match an allowed VPC condition. These issues usually do not appear until I hit real AWS.</p><h3>LocalStack / Emulator Mismatch</h3><p>Tools like LocalStack do not always fully honour CORS. In one case, even with CORS configured on the bucket, LocalStack ignored it, and <code>DISABLE_CORS_CHECKS=1</code> had no effect. That means a workflow that appears to work in dev can fail in prod. LocalStack may also default to HTTP endpoints instead of HTTPS, which introduces mixed-content issues.</p><h3>Credentials &amp; Cookies</h3><p>On <code>localhost</code>, cookies are often not sent cross-origin. If my app relies on cookie-based auth (<code>fetch</code> with <code>credentials: 'include'</code>), it can work locally but fail once domains differ. Browsers also forbid <code>Access-Control-Allow-Origin: *</code> when <code>withCredentials</code> is true, so production needs specific origins and <code>Access-Control-Allow-Credentials: true</code>.</p><h3>Presigned URL Expiry and Caching</h3><p>Some dev workflows use very short-lived presigned URLs or assume uploads happen instantly. In AWS, CloudFront may cache redirects by default unless configured otherwise, and ALB/CloudFront caches need invalidation after deploys. A misconfigured max-age or missing invalidation can make users see stale JS bundles. Presigned URLs can also expire during multi-part uploads if they are not refreshed.</p><h3>Other Environmental Mismatches</h3><p>Hardcoded environment values, such as <code>REACT_APP_API_URL=http://localhost:8080</code>, can cause build issues. Differences in Node versions, npm proxy settings, or TLS certificate trust on developer machines can also produce odd errors that I do not see in production.</p><p>Each of these issues comes from the same root problem: <strong>development on </strong><code>localhost</code><strong> is not the same as the deployed cloud environment</strong>. A major cause is the separate-origin problem. When the frontend and API live under different schemes or hosts, the browser&#8217;s SOP and CORS rules start to matter, and preflight requests fail if any method or header is not whitelisted.</p><h3>Pitfall Comparison Table</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FHE5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FHE5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!FHE5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!FHE5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!FHE5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FHE5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1479172,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/196863557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FHE5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!FHE5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!FHE5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!FHE5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d7e7cdf-eb64-456c-a3fe-7ece78e6bffc_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>CORS Deep Dive: Browser Enforcement &amp; Misconfigurations</h2><p><strong>CORS</strong> (Cross-Origin Resource Sharing) is an HTTP header-based protocol that lets servers whitelist allowed origins for resource sharing. Browsers enforce it like this: when a script on https://frontend.com makes a cross-domain request, the browser adds an <code>Origin: https://frontend.com</code> header. If the request is simple, the browser checks the response for <code>Access-Control-Allow-Origin</code>. If it is missing or does not match, the browser blocks the response in JavaScript and shows a console error such as &#8220;CORS request blocked.&#8221;</p><p>For non-simple requests, like <code>PUT</code>, custom headers, or requests with <code>Content-Type: application/json</code>, browsers first send a <strong>preflight</strong> <code>OPTIONS</code> request with <code>Origin</code> and <code>Access-Control-Request-Method/Headers</code>. The server must return the correct <code>Access-Control-Allow-*</code> headers. If the preflight fails, the browser aborts without sending the real request.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GuU1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GuU1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GuU1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GuU1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GuU1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GuU1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1260707,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/196863557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GuU1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!GuU1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!GuU1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!GuU1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ace1767-5c00-4eff-8b11-705893217253_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A missing or mismatched header causes CORS errors that are often hard to debug. Because the browser hides details for security, the console often gives only a generic block message, so I need to inspect the network tab or devtools to see the headers.</p><h3>Key Headers and Rules</h3><ul><li><p><strong>Access-Control-Allow-Origin:</strong> Specifies which origin or origins are allowed. It cannot be <code>*</code> if <code>Access-Control-Allow-Credentials: true</code> is required.</p></li><li><p><strong>Access-Control-Allow-Methods:</strong> Lists which HTTP methods the server accepts. If my SPA does a <code>PUT</code> but the server only allows <code>GET</code> and <code>POST</code>, preflight fails.</p></li><li><p><strong>Access-Control-Allow-Headers:</strong> Lists which custom request headers, such as <code>Authorization</code>, are allowed.</p></li><li><p><strong>Access-Control-Allow-Credentials:</strong> If <code>true</code>, cookies or credentials can be sent. Browsers do not allow <code>*</code> origin when this is true.</p></li></ul><h3>Common Misconfigurations</h3><ul><li><p><strong>Wrong Origin Whitelist:</strong> If the SPA is served at https://app.example.com but S3 CORS only includes http://localhost:3000, production will fail.</p></li><li><p><strong>Forgetting OPTIONS Handling:</strong> Some backends only handle GET/POST and ignore OPTIONS. Preflight then returns 403 or 404.</p></li><li><p><strong>Missing Response Headers:</strong> The resource may respond, but if it does not include CORS headers, the browser blocks it. CloudFront response headers or edge functions can help.</p></li><li><p><strong>Credentials &amp; Wildcards:</strong> Enabling <code>Access-Control-Allow-Origin: *</code> globally and then using credentials will fail.</p></li><li><p><strong>Case or Slash Mismatch:</strong> Origins are exact strings, so protocol, port, and trailing slash matter.</p></li><li><p><strong>Tooling Oversights:</strong> Some clients send headers that trigger preflight. JSON and <code>Authorization</code> almost always do.</p></li></ul><p>By understanding CORS this way, I can configure AWS correctly. For example, on S3 I can apply a bucket CORS configuration like this:</p><pre><code><code>&lt;CORSConfiguration&gt;
 &lt;CORSRule&gt;
   &lt;AllowedOrigin&gt;https://d8sqejhsq49zo.cloudfront.net&lt;/AllowedOrigin&gt;
   &lt;AllowedMethod&gt;GET&lt;/AllowedMethod&gt;
   &lt;AllowedMethod&gt;PUT&lt;/AllowedMethod&gt;
   &lt;AllowedHeader&gt;*&lt;/AllowedHeader&gt;
   &lt;ExposeHeader&gt;ETag&lt;/ExposeHeader&gt;
 &lt;/CORSRule&gt;
&lt;/CORSConfiguration&gt;</code></code></pre><p>In practice, I whitelist the specific CloudFront or app domain in <code>AllowedOrigins</code> and include every method I need.</p><p>CloudFront also offers features that help with CORS. I can use a <strong>Response Header Policy</strong> that automatically adds <code>Access-Control-Allow-Origin</code>, or I can use a CloudFront Function to dynamically echo the <code>Origin</code>. The simplest pattern is still to use CloudFront + ALB with the same origin, so CORS becomes mostly unnecessary.</p><h2>CloudFront + ALB Architecture: Pros &amp; Cons</h2><p>Moving the frontend to CloudFront and the API behind an ALB gives me a lot of benefits, but it also adds complexity.</p><h3>What I Gain</h3><ul><li><p><strong>Global Performance &amp; Latency:</strong> CloudFront has a global edge network, and static assets can be cached at the edge. That reduces TTFB and improves performance for distant clients.</p></li><li><p><strong>Security &amp; Compliance:</strong> CloudFront gives me DDoS protection and a clean place to attach AWS WAF. I can also isolate the ALB inside a private VPC and allow access only from CloudFront.</p></li><li><p><strong>Single-Origin Domain:</strong> By serving the SPA from CloudFront and routing API calls through the same CloudFront distribution or domain, I remove most CORS issues entirely.</p></li><li><p><strong>Cost Optimisation:</strong> CloudFront can reduce outbound bandwidth costs by caching content closer to users and lowering load on the ALB and backend.</p></li></ul><h3>What I Trade Off</h3><ul><li><p><strong>Architecture Complexity:</strong> I now manage CloudFront, Lambda@Edge or CloudFront Functions if needed, the ALB, Route 53, ACM certificates, and deployment automation.</p></li><li><p><strong>Debug and Deploy Overhead:</strong> Changes are slower to test because I need deploys and cache invalidations.</p></li><li><p><strong>Cache Invalidation Hassles:</strong> SPA releases can leave stale files behind unless I use hashed filenames or invalidate the right paths.</p></li><li><p><strong>Session &amp; Auth Handling:</strong> Cookie-based auth needs careful CloudFront forwarding rules and secure cookie settings.</p></li><li><p><strong>Extra Hop Latency:</strong> There is an extra network hop, but cache hits usually outweigh that cost.</p></li><li><p><strong>CDN Cost:</strong> CloudFront and related services have a cost, although caching and egress savings can offset it at scale.</p></li></ul><h3>High-Level Architecture Diagram</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JJfm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JJfm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 424w, https://substackcdn.com/image/fetch/$s_!JJfm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 848w, https://substackcdn.com/image/fetch/$s_!JJfm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 1272w, https://substackcdn.com/image/fetch/$s_!JJfm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JJfm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png" width="1456" height="799" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:799,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1237547,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/196863557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JJfm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 424w, https://substackcdn.com/image/fetch/$s_!JJfm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 848w, https://substackcdn.com/image/fetch/$s_!JJfm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 1272w, https://substackcdn.com/image/fetch/$s_!JJfm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F499ec7e8-2994-4c2e-ae19-c7b0556be56c_1693x929.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is the architecture I want: the browser hits CloudFront, static content comes from S3 through CloudFront, and dynamic requests hit the ALB. Both S3 and ALB stay secured, and only CloudFront acts as the public entry point.</p><h2>Migration Strategy &amp; Checklist</h2><h3>Step 1: Preparation &amp; Planning</h3><p>I first audit the current deployment: all domains, SSL certificates, DNS records, WAF rules, IAM roles, and the existing frontend and API endpoints. Then I define the target state: a single CloudFront distribution, for example with an alternate domain like <code>app.example.com</code>, fronting an internal ALB and S3 origin. I also estimate the work and categorise risk so I can separate simple changes from business-critical flows.</p><h3>Step 2: Provision Infrastructure</h3><ul><li><p><strong>Create the CloudFront distribution.</strong> If I use Terraform, I need a <code>custom_origin_config</code> for the ALB origin so it is not treated like an S3 origin.</p></li><li><p><strong>Configure cache behavior.</strong> I point routes to the ALB origin for API calls and to S3 for static routes. I forward the <code>Origin</code> header and the relevant CORS headers so the origin sees them.</p></li><li><p><strong>Set up TLS certificates.</strong> I use ACM for the frontend domain and attach the certificate to CloudFront. The ALB also needs HTTPS.</p></li><li><p><strong>Restrict ALB access.</strong> I create a security group that allows inbound 443 only from CloudFront IP ranges or a trusted origin header setup.</p></li><li><p><strong>Configure S3 CORS and bucket policy.</strong> I allow my frontend domain and enforce HTTPS via <code>aws:SecureTransport</code>.</p></li><li><p><strong>Update CI/CD.</strong> After uploading SPA artifacts to S3, I trigger a CloudFront invalidation for the changed paths.</p></li></ul><h3>Step 3: Testing &amp; Validation</h3><ul><li><p><strong>Smoke tests in staging:</strong> I point a test domain to the new distribution and verify that static assets, API calls, and auth flows work.</p></li><li><p><strong>Performance and security verification:</strong> I check cache hit ratios, enable WAF metrics if used, and confirm that direct access to the old ALB is blocked.</p></li><li><p><strong>Staged DNS cutover:</strong> I move traffic gradually using Route 53 weighted records or a similar approach.</p></li></ul><h3>Step 4: Full Cutover and Rollback Plan</h3><p>Once I am confident, I point the production app domain to CloudFront. I keep rollback simple by preserving the old config and having a direct path back to the ALB if needed. Because the ALB is restricted to CloudFront traffic, rollback needs to be planned carefully. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6mZS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6mZS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 424w, https://substackcdn.com/image/fetch/$s_!6mZS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 848w, https://substackcdn.com/image/fetch/$s_!6mZS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 1272w, https://substackcdn.com/image/fetch/$s_!6mZS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6mZS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png" width="1456" height="776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:945589,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/196863557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6mZS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 424w, https://substackcdn.com/image/fetch/$s_!6mZS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 848w, https://substackcdn.com/image/fetch/$s_!6mZS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 1272w, https://substackcdn.com/image/fetch/$s_!6mZS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcfc1f913-0291-466c-a53d-56d0fe4fb7f4_1718x916.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Code &amp; Config Snippets</h2><h3>Amazon S3 Bucket CORS (example JSON)</h3><pre><code><code>{
  "CORSRules": [
    {
      "AllowedOrigins": ["https://your.frontend.domain"],
      "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
      "AllowedHeaders": ["*"],
      "ExposeHeaders": ["ETag", "x-amz-version-id"],
      "MaxAgeSeconds": 3600
    }
  ]
}</code></code></pre><h3>Terraform: AWS CloudFront Distribution (ALB origin)</h3><pre><code><code>resource "aws_cloudfront_distribution" "cdn" {
  origin {
    domain_name = aws_lb.api.dns_name
    origin_id   = "api-origin"
    custom_origin_config {
      http_port              = 80
      https_port             = 443
      origin_protocol_policy = "https-only"
      origin_ssl_protocols   = ["TLSv1.2"]
    }
  }

  default_cache_behavior {
    target_origin_id         = "api-origin"
    viewer_protocol_policy   = "redirect-to-https"
    forwarded_values {
      headers = ["Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers"]
      cookies { forward = "all" }
      query_string = true
    }
    allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"]
    cached_methods  = ["GET", "HEAD"]
  }

  viewer_certificate {
    acm_certificate_arn      = aws_acm_certificate.certificate.arn
    ssl_support_method       = "sni-only"
    minimum_protocol_version = "TLSv1.2_2021"
  }
}</code></code></pre><h3>NGINX Reverse Proxy (Dev Example)</h3><pre><code><code>server {
  listen      8001;
  server_name localhost;
  location / {
    proxy_pass http://127.0.0.1:3000;
  }
  location /api/ {
    proxy_pass http://127.0.0.1:8080/;
  }
}</code></code></pre><h3>CloudFront Function (or Lambda@Edge) to Add CORS</h3><pre><code><code>async function handler(event) {
  var request = event.request;
  var response = event.response;
  if (request.headers.origin &amp;&amp; !response.headers['access-control-allow-origin']) {
    response.headers['access-control-allow-origin'] = { value: request.headers.origin.value };
  }
  return response;
}</code></code></pre><h3>Sample IAM Policy (Bucket HTTPS Enforce)</h3><pre><code><code>{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "RequireTLS",
    "Effect": "Deny",
    "Principal": "*",
    "Action": "s3:*",
    "Resource": ["arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*"],
    "Condition": {"Bool": {"aws:SecureTransport": "false"}}
  }]
}</code></code></pre><h2>Localhost vs Cloud-Hosted Frontend</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OKOO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OKOO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OKOO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OKOO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OKOO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OKOO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1442317,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/196863557?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OKOO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OKOO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OKOO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OKOO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cb1a507-c631-4375-9f35-4044cd692f75_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Monitoring, Logging &amp; Testing Tools</h2><p>Once the system is live, I want to rely on:</p><ul><li><p><strong>Metrics &amp; Logs:</strong> CloudWatch metrics for CloudFront and ALB, plus access logs.</p></li><li><p><strong>Real-User Monitoring:</strong> CloudWatch RUM for client-side metrics and errors.</p></li><li><p><strong>Tracing:</strong> AWS X-Ray if the backend is complex.</p></li><li><p><strong>Error Tracking:</strong> A frontend JS error reporter such as Sentry.</p></li><li><p><strong>Testing Tools:</strong> Postman or <code>curl</code> with an <code>Origin</code> header for CORS validation, and load tools like Apache Bench or JMeter for performance testing.</p></li></ul><h2>Community Insights &amp; References</h2><h2>AWS Official Guidance</h2><ul><li><p><a href="https://aws.amazon.com/blogs/networking-and-content-delivery/optimizing-application-performance-the-strategic-benefits-of-combining-amazon-cloudfront-with-application-load-balancers/?utm_source=chatgpt.com">Optimizing application performance: CloudFront + ALB strategic benefits</a><br>Covers CloudFront in front of ALB, performance improvements, origin protection, and migration considerations.</p></li><li><p><a href="https://aws.amazon.com/blogs/aws/introducing-amazon-cloudfront-vpc-origins-enhanced-security-and-streamlined-operations-for-your-applications/?utm_source=chatgpt.com">Introducing Amazon CloudFront VPC Origins</a><br>Explains private VPC origins, CloudFront-to-private-ALB architecture, and stronger origin isolation.</p></li><li><p><a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html?utm_source=chatgpt.com">Restrict access to Application Load Balancers from CloudFront only</a><br>AWS guidance for protecting ALB origins using CloudFront custom headers and origin restrictions.</p></li><li><p><a href="https://aws.amazon.com/blogs/networking-and-content-delivery/cors-configuration-through-amazon-cloudfront/?utm_source=chatgpt.com">CORS configuration through Amazon CloudFront</a><br>Deep dive into forwarding CORS headers, OPTIONS caching, and CloudFront cache/origin request policies.</p></li><li><p><a href="https://aws.amazon.com/blogs/networking-and-content-delivery/accelerate-protect-and-make-dynamic-workloads-delivery-cost-efficient-with-amazon-cloudfront/?utm_source=chatgpt.com">Accelerate and protect dynamic workloads with CloudFront</a><br>Focuses on performance, persistent connections, and origin offload for dynamic applications.</p></li></ul><div><hr></div><h2>MDN Documentation</h2><ul><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS?utm_source=chatgpt.com">MDN &#8212; Cross-Origin Resource Sharing (CORS) Guide</a><br>The foundational browser-side explanation of CORS, preflight requests, and browser enforcement.</p></li><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS/Errors?utm_source=chatgpt.com">MDN &#8212; CORS Errors Guide</a><br>Excellent debugging reference for interpreting browser CORS failures.</p></li><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Access-Control-Allow-Origin?utm_source=chatgpt.com">MDN &#8212; Access-Control-Allow-Origin Header</a><br>Detailed explanation of the most important CORS response header.</p></li><li><p><a href="https://developer.mozilla.org/en-US/docs/Web/Security/Practical_implementation_guides/CORS?utm_source=chatgpt.com">MDN &#8212; Practical CORS Configuration Guide</a><br>Security-oriented implementation guidance for configuring CORS correctly.</p></li><li><p><a href="https://developer.mozilla.org/en-US/docs/Glossary/CORS?utm_source=chatgpt.com">MDN &#8212; CORS Glossary</a><br>Concise overview of same-origin policy and cross-origin access.</p></li></ul><div><hr></div><h2>AWS Documentation</h2><ul><li><p><a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html?utm_source=chatgpt.com">Amazon S3 &#8212; Using CORS</a><br>Official S3 documentation for configuring and understanding CORS.</p></li><li><p><a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors-troubleshooting.html?utm_source=chatgpt.com">Amazon S3 &#8212; Troubleshooting CORS</a><br>Extremely useful for diagnosing 403s, AllowedOrigins mismatches, and missing methods.</p></li><li><p><a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html?utm_source=chatgpt.com">Amazon S3 &#8212; Configuring CORS Examples</a><br>Shows JSON examples for S3 bucket CORS policies.</p></li><li><p><a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ManageCorsUsing.html?utm_source=chatgpt.com">Amazon S3 &#8212; Elements of a CORS Configuration</a><br>Detailed breakdown of AllowedOrigins, AllowedMethods, AllowedHeaders, etc.</p></li><li><p><a href="https://repost.aws/knowledge-center/no-access-control-allow-origin-error?utm_source=chatgpt.com">AWS re:Post &#8212; Resolve &#8220;No Access-Control-Allow-Origin&#8221; errors in CloudFront</a><br>Useful troubleshooting walkthrough for CloudFront + CORS setups.</p></li><li><p><a href="https://repost.aws/knowledge-center/s3-configure-cors?utm_source=chatgpt.com">AWS re:Post &#8212; Configure and confirm CORS in Amazon S3</a><br>Practical debugging examples using curl and OPTIONS preflight checks.</p></li></ul><div><hr></div><h2>Community Q&amp;A</h2><ul><li><p><a href="https://stackoverflow.com/questions/17533888/s3-access-control-allow-origin-header?utm_source=chatgpt.com">Stack Overflow &#8212; S3 Access-Control-Allow-Origin Header discussion</a><br>One of the classic threads on S3 CORS response handling.</p></li><li><p><a href="https://stackoverflow.com/questions/17570100/s3-not-returning-access-control-allow-origin-headers?utm_source=chatgpt.com">Stack Overflow &#8212; S3 not returning Access-Control-Allow-Origin headers</a><br>Useful troubleshooting thread for bucket/object-level CORS confusion.</p></li><li><p><a href="https://expressjs.com/en/resources/middleware/cors.html?utm_source=chatgpt.com">Express.js CORS Middleware Docs</a><br>Good explanation of browser-enforced CORS vs server-side behavior.</p></li><li><p><a href="https://repost.aws/questions/QUzn5efm4tSjiJOO7b0so0gQ/getting-cors-error-even-when-the-cors-policy-is-set-to-allow-all-origins?utm_source=chatgpt.com">AWS re:Post &#8212; Intermittent CORS errors even with Allow-Origin configured</a><br>Helpful for understanding cache and header propagation edge cases.</p></li></ul><div><hr></div><h2>Case Study Blogs &amp; Practical Guides</h2><ul><li><p><a href="https://www.stormit.cloud/blog/cloudfront-distribution-for-amazon-ec2-alb/?utm_source=chatgpt.com">StormIT &#8212; CloudFront Distribution for EC2 &amp; ALB</a><br>Practical CloudFront + ALB deployment walkthrough.</p></li><li><p><a href="https://dev.to/aws-builders/using-aws-cloudfront-to-enhance-the-performance-security-availability-of-your-application-3i26?utm_source=chatgpt.com">Using AWS CloudFront to improve performance, security &amp; availability</a><br>Covers caching, origin groups, availability, and performance patterns.</p></li><li><p><a href="https://medium.com/%40Adekola_Olawale/handling-cross-origin-resource-sharing-cors-issues-in-s3-3ea209b45926?utm_source=chatgpt.com">Handling CORS Issues in Amazon S3</a><br>Community-written debugging guide with real-world examples.</p></li><li><p><a href="https://til.simonwillison.net/aws/s3-cors?utm_source=chatgpt.com">Adding a CORS Policy to an S3 Bucket</a><br>Lightweight and practical S3 bucket CORS reference.</p></li><li><p><a href="https://aws.amazon.com/blogs/networking-and-content-delivery/prepare-and-run-performance-tests-for-amazon-cloudfront-with-real-user-monitoring/?utm_source=chatgpt.com">Prepare and run performance tests for CloudFront using RUM</a><br>Great reference for validating CloudFront improvements in production.</p></li></ul><h2>Closing Thought</h2><p>What I learned is simple: localhost is great for speed, but it is not production. If I want fewer surprises, fewer CORS headaches, and better security, I need to design the frontend and backend like they will live in production from the beginning.</p><p></p>]]></content:encoded></item><item><title><![CDATA[From localhost friction to production-shaped architecture]]></title><description><![CDATA[A case study from Parjanya v2.0: multi-tenant S3, IAM isolation, and server-to-server architecture patterns]]></description><link>https://blog.phagyul.ai/p/from-localhost-friction-to-production</link><guid isPermaLink="false">https://blog.phagyul.ai/p/from-localhost-friction-to-production</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Sun, 03 May 2026 13:20:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cfp7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cfp7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cfp7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cfp7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cfp7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cfp7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cfp7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/11907347-42b7-499a-b390-f5d655628b58_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2126825,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/196307889?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cfp7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cfp7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cfp7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cfp7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11907347-42b7-499a-b390-f5d655628b58_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Lessons from Parjanya v2.0 and the v5.4 architecture revision</h3><p>I never treated localhost as the target architecture. It was simply the default starting point for local development, as it is for most full-stack systems. But as I built Parjanya v2.0, I kept running into a recurring class of failures: CORS errors, origin mismatch, presigned upload friction, and the widening gap between development-time assumptions and production-time behaviour. That experience forced me to step back and re-evaluate the system from first principles. What emerged was not a localhost fix, but a stronger production-shaped model: <strong>server-to-server architecture for cloud-based full-stack applications and distributed systems.</strong></p><h2>Why localhost stopped being enough</h2><p>Local development is useful because it is fast. But speed can hide <strong>architecture debt.</strong></p><p>In Parjanya v2.0, the real problem was not that localhost was broken. The problem was that localhost encouraged a development loop that was too far removed from the actual production trust boundary. The browser, S3, IAM, and backend services each enforce different rules, and local development often smooths those rules away just enough to create false confidence. Then the system reaches the real deployment path and the hidden assumptions come apart.</p><p>That became especially clear with browser-based uploads. A local setup may appear functional, but the moment the frontend starts speaking directly to tenant-specific buckets in S3, the browser becomes an active participant in the security model. The result is not just a technical inconvenience; it is a signal that the architecture itself needs to be shaped more deliberately.</p><h2>The first real signal: CORS was exposing the architecture gap</h2><p>CORS was one of the clearest signs that the local development experience was drifting away from the real system.</p><p>In theory, CORS is straightforward. In practice, it is one of the fastest ways to reveal that the frontend and backend are too loosely coupled. In Parjanya, browser uploads to S3 were not talking to a generic bucket. They were talking to tenant-scoped storage with strict policy boundaries. That meant every origin, method, and header mattered. A local proxy or permissive dev configuration might make the request succeed temporarily, but that success did not mean the architecture was correct. It only meant the browser had not yet been forced to tell the truth.</p><p>The architectural implication was obvious: if the browser has to fight the security model just to upload a file, the development workflow is revealing a deeper mismatch. In my case, that mismatch was not merely about CORS syntax. It was about the location of trust.</p><h2>What Parjanya v2.0 architecture v5.4 actually changed</h2><p>Architecture v5.4 is an architecture revision inside Parjanya v2.0, not a separate product. That revision was shaped by one principle: move trust out of the browser and into the backend.</p><p>The S3 architecture notes show the core design clearly: one bucket per tenant, IAM-scoped permissions, bucket policies, presigned URL generation in the backend, and lifecycle rules for cost control. The model is intentionally infrastructure-enforced. Tenant isolation is not left to frontend conventions or prefix hygiene. It is built into the storage boundary itself.</p><p>That design changes the system in a fundamental way. Instead of letting the frontend improvise access, the backend becomes the authority that validates identity, determines tenant ownership, constructs the object key, and issues a time-bound signed capability. The browser no longer owns authorization. It simply executes what the backend has already allowed.</p><h2>Why server-to-server architecture made more sense</h2><p>Once I looked at the problem that way, the answer became much clearer.</p><p>For a cloud-native application, especially a multi-tenant one, the frontend should not be the place where trust decisions live. The frontend should be delivered through a stable edge layer, the backend should own policy and identity, and object storage should be accessed through signed backend-issued capabilities. That is why I started favouring a server-to-server model for real production systems.</p><p>In practice, that means serving the frontend from CloudFront, exposing backend services through ALB, and letting the backend own S3 access through presigned URLs. The browser becomes a client, not a policy engine. The backend becomes the control point. The trust boundary becomes explicit. And the deployment path starts to look like the real system instead of a local approximation.</p><p>That shift also made debugging easier. When a request fails, there are fewer places to guess. Is it a policy issue? A bucket issue? A signature issue? A CORS issue? A routing issue? With a server-to-server design, the failure surface becomes narrower and more legible.</p><h2>Multi-tenant storage is an infrastructure problem, not just an application problem</h2><p>One of the strongest lessons from Parjanya&#8217;s architecture revision was that multi-tenant storage cannot be treated as an application afterthought.</p><p>The architecture notes show a per-tenant bucket model with explicit role and bucket policy enforcement. That is the right direction because it reduces ambiguity. Tenant isolation should not depend entirely on code discipline or naming conventions; it should be enforced by the infrastructure boundary itself.</p><p>This matters because multi-tenant systems fail in subtle ways when storage is shared too casually. A shared bucket can work, but it increases the burden on prefix logic, object ownership rules, and application-layer checks. A per-tenant bucket model is cleaner to reason about and easier to audit. It also aligns better with the way the rest of the Parjanya stack is already designed: backend validation, signed upload paths, explicit bucket policies, and lifecycle management.</p><h2>Presigned URLs are capability tokens, not shortcuts</h2><p>Presigned URLs were another major lesson.</p><p>A presigned URL is not just a convenience feature. It is a capability token that allows a very specific action for a very specific scope and time window. That makes it a very strong fit for Parjanya because the backend can validate the request first and then issue a constrained upload path. The browser does not need broad credentials. It only needs the signed permission to perform the exact operation the backend allowed.</p><p>That is the right security model for a SaaS system with tenant isolation. It reduces exposure, tightens the trust boundary, and lets the backend remain the source of truth for who can upload what and where. It also makes the system far easier to evolve because the upload flow is now a controlled protocol, not a loose browser-side improvisation.</p><h2>Production-shaped development is the real goal</h2><p>The biggest shift in my thinking was this: the goal is not to make localhost feel like production forever. The goal is to make local development reveal the same architectural boundaries that production will enforce.</p><p>That means treating origin boundaries, identity boundaries, and policy boundaries as first-class concerns from the beginning. It means avoiding development shortcuts that erase those boundaries too early. It means designing the system so that local development is still useful, but not misleading. And it means accepting that some friction is not a bug in the workflow &#8212; it is the architecture trying to tell you something.</p><p>In Parjanya v2.0, that lesson showed up everywhere: in CORS behavior, in presigned URL flows, in per-tenant bucket design, and in the decision to move toward a cleaner CloudFront + ALB + backend-controlled storage path. The architecture revision in v5.4 was not just an optimization. It was a correction toward a more honest production model.</p><h2>What I would tell another engineering team</h2><p>If I were explaining this to another team building a cloud-native product, I would say this:</p><p>localhost is fine for iteration, but it should not define the architecture. For distributed systems, especially multi-tenant SaaS, the real system lives in the boundaries: frontend delivery, backend authority, object storage policy, and signed capabilities. If those boundaries are blurred during development, the application will pay for it later in debugging time, security risk, and operational complexity.</p><h4>The better pattern is production-shaped from the start:</h4><blockquote><p>the frontend should be served from CloudFront, backend services should sit behind ALB, the backend should generate presigned URLs, and S3 access should be governed by infrastructure-enforced tenant isolation. That design is cleaner, more secure, and much closer to how real cloud applications behave in production.</p></blockquote><h2>Closing thought</h2><p>Parjanya v2.0 taught me that architecture is often revealed through friction.</p><p>CORS failures were not just browser noise. They were evidence that trust boundaries needed to be sharper. Presigned URLs were not just an implementation detail. They were the correct way to move capability into the backend. Per-tenant buckets were not just a storage choice. They were the cleanest way to enforce isolation. And localhost, while useful, was never the architecture &#8212; only the starting point.</p><p>The end result is simple: I now think in terms of production-shaped systems, not localhost-shaped workflows. For me, that is the difference between a prototype that merely works and a system that is actually ready to scale.</p><div><hr></div><h1>Good catch &#8212; here&#8217;s a <strong>clean, copy-paste ready References section with actual links</strong> (kept high-signal and aligned to your architecture themes).</h1><div><hr></div><h1>&#128218; References &amp; Further Reading</h1><h2>&#9729;&#65039; AWS (Core to this architecture)</h2><ul><li><p><strong>Multi-tenant S3 design patterns (must read)</strong><br>AWS Storage Blog<br><a href="https://aws.amazon.com/blogs/storage/design-patterns-for-multi-tenant-access-control-on-amazon-s3/">https://aws.amazon.com/blogs/storage/design-patterns-for-multi-tenant-access-control-on-amazon-s3/</a></p></li><li><p><strong>Dynamic routing with CloudFront (multi-tenant edge patterns)</strong><br>AWS Architecture Blog<br><a href="https://aws.amazon.com/blogs/architecture/dynamic-request-routing-in-multi-tenant-systems-with-amazon-cloudfront/">https://aws.amazon.com/blogs/architecture/dynamic-request-routing-in-multi-tenant-systems-with-amazon-cloudfront/</a></p></li><li><p><strong>CloudFront + origin patterns (edge &#8594; backend)</strong><br>AWS Docs<br><a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html">https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html</a></p></li><li><p><strong>Restricting ALB access via CloudFront (edge-controlled backend)</strong><br>AWS Docs<br><a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html">https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/restrict-access-to-load-balancer.html</a></p></li><li><p><strong>Presigned URLs (backend-controlled access model)</strong><br>AWS Docs<br><a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html">https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html</a></p></li><li><p><strong>CORS troubleshooting (why browser uploads fail)</strong><br>AWS Docs<br><a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors-troubleshooting.html">https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors-troubleshooting.html</a></p></li><li><p><strong>AWS Well-Architected Framework</strong><br><a href="https://aws.amazon.com/architecture/well-architected/">https://aws.amazon.com/architecture/well-architected/</a></p></li></ul><blockquote><p>These patterns are consistent across modern cloud-native systems:<br>move trust to the backend, enforce isolation at the infrastructure layer, and design for production boundaries early.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[The Hidden Runtime Failure Behind Claude’s Recent Regression]]></title><description><![CDATA[A deep dive into how adaptive thinking failed at runtime&#8212;and why that broke developer trust.]]></description><link>https://blog.phagyul.ai/p/the-hidden-runtime-failure-behind</link><guid isPermaLink="false">https://blog.phagyul.ai/p/the-hidden-runtime-failure-behind</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 27 Apr 2026 02:52:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!r0tu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For a few weeks, Claude Code got noticeably worse.</p><p>It wasn&#8217;t subtle.</p><p>It read less code.<br>It reasoned less deeply.<br>It stopped early.</p><p>And yet&#8212;nothing &#8220;official&#8221; had changed.</p><p>When Anthropic finally published their postmortem, they called it a set of bugs.</p><p>After digging through the data and my own usage, I don&#8217;t think that tells the full story.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r0tu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r0tu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 424w, https://substackcdn.com/image/fetch/$s_!r0tu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 848w, https://substackcdn.com/image/fetch/$s_!r0tu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 1272w, https://substackcdn.com/image/fetch/$s_!r0tu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r0tu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png" width="1181" height="1331" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/020773eb-a170-41bb-b51d-800469f87520_1181x1331.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1331,&quot;width&quot;:1181,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1554389,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/195574958?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!r0tu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 424w, https://substackcdn.com/image/fetch/$s_!r0tu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 848w, https://substackcdn.com/image/fetch/$s_!r0tu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 1272w, https://substackcdn.com/image/fetch/$s_!r0tu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F020773eb-a170-41bb-b51d-800469f87520_1181x1331.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h1>Adaptive Thinking Gone Wrong</h1><h2>Why Claude&#8217;s Silence Broke My Trust</h2><p>For months, Claude Code with Opus 4.6 was the backbone of my engineering workflow.</p><p>With Opus 4.7&#8212;and the rise of &#8220;adaptive thinking&#8221;&#8212;that same assistant began to feel unreliable, opaque, and, most concerning of all, quietly downgraded.</p><p>Anthropic&#8217;s April 23 postmortem confirmed something many of us already felt: <strong>Claude Code </strong><em><strong>did</strong></em><strong> get worse for weeks.</strong></p><p><a href="https://www.anthropic.com/engineering/april-23-postmortem">https://www.anthropic.com/engineering/april-23-postmortem</a></p><p>But the explanation&#8212;and the framing&#8212;left me with a deeper concern:</p><blockquote><p><strong>This wasn&#8217;t just a bug. It was a runtime failure of adaptive thinking.</strong></p></blockquote><p>This is a first-person account of what changed, what the data shows, and why this moment broke trust for me&#8212;even though I&#8217;m still not walking away.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:195255558,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;When Adaptive Thinking Goes Off the Rails&quot;,&quot;truncated_body_text&quot;:&quot;Three weeks ago,&quot;,&quot;date&quot;:&quot;2026-04-23T16:36:46.650Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">When Adaptive Thinking Goes Off the Rails</div></div><div class="embedded-post-body">Three weeks ago&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a month ago &#183; Jagadeesh Rampam</div></a></div><div><hr></div><h2>1. When It Worked: Opus 4.6 as a Force Multiplier</h2><p>My earlier experience with Opus 4.6 was very interesting.</p><p>Claude Code behaved like a senior engineer embedded in my workflow:</p><ul><li><p>It read deeply before editing</p></li><li><p>It maintained context across long sessions</p></li><li><p>It handled multi-step refactors with caution and coherence</p></li></ul><p>Under the hood, this was already powered by <strong>adaptive thinking</strong>&#8212;a system that dynamically allocates reasoning effort per task.</p><p>But here&#8217;s the key:</p><blockquote><p>It worked quietly and reliably.</p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:193306186,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/building-with-opus-46&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Building with Opus 4.6&quot;,&quot;truncated_body_text&quot;:&quot;Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding.&quot;,&quot;date&quot;:&quot;2026-04-06T05:22:32.370Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/building-with-opus-46?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Building with Opus 4.6</div></div><div class="embedded-post-body">Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; Jagadeesh Rampam</div></a></div><div><hr></div><h2>2. When It Broke: Opus 4.7 Regression</h2><p>With Opus 4.7, the experience flipped.</p><p>What I observed:</p><ul><li><p>Shallower reasoning</p></li><li><p>More hallucinated structure</p></li><li><p>Premature stopping or avoidance</p></li><li><p>Worse tool usage</p></li><li><p>Increased repetition</p></li></ul><p>All while adaptive thinking was being positioned as the <strong>primary reasoning mode</strong>.</p><p>At the same time:</p><ul><li><p>Usage limits tightened</p></li><li><p>Sessions became less predictable</p></li></ul><p>From a user perspective:</p><blockquote><p><strong>It felt like a silent downgrade.</strong></p></blockquote><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:195255558,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;When Adaptive Thinking Goes Off the Rails&quot;,&quot;truncated_body_text&quot;:&quot;Three weeks ago,&quot;,&quot;date&quot;:&quot;2026-04-23T16:36:46.650Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/when-adaptive-thinking-goes-off-the?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">When Adaptive Thinking Goes Off the Rails</div></div><div class="embedded-post-body">Three weeks ago&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">a month ago &#183; Jagadeesh Rampam</div></a></div><div><hr></div><h2>3. Anthropic&#8217;s Explanation</h2><p><a href="https://www.anthropic.com/engineering/april-23-postmortem">https://www.anthropic.com/engineering/april-23-postmortem</a></p><p>Anthropic attributes the regression to three issues:</p><h3>Effort downgrade (March 4)</h3><p>Default reasoning dropped from <code>high</code> &#8594; <code>medium</code></p><h3>Thinking cache bug (March 26)</h3><p>Thinking history cleared after idle periods</p><h3>Verbosity constraint (April 16)</h3><p>Artificial limits reduced output quality</p><p>All three are now reverted.</p><p>Their position:</p><blockquote><p><strong>The model wasn&#8217;t degraded&#8212;only the application layer was.</strong></p></blockquote><div><hr></div><h2>4. What the Data Shows</h2><p>Independent telemetry and analysis revealed:</p><ul><li><p>Files read before editing: <strong>6.6 &#8594; 2.0</strong></p></li><li><p>Thinking length: <strong>~2200 &#8594; ~600 characters</strong></p></li><li><p>Stop/avoidance behaviors: <strong>spiked significantly</strong></p></li></ul><p>These are not isolated anomalies.</p><p>They indicate systemic changes in:</p><ul><li><p>Reasoning depth</p></li><li><p>Context retention</p></li><li><p>Decision consistency</p></li></ul><div><hr></div><h2>5. The Real Problem: A Runtime Failure</h2><p>All three issues converge on one layer:</p><blockquote><p><strong>Adaptive thinking at runtime</strong></p></blockquote><ul><li><p>Lower effort &#8594; less reasoning</p></li><li><p>Cache bug &#8594; lost reasoning</p></li><li><p>Verbosity cap &#8594; suppressed reasoning</p></li></ul><p>This creates a cascade:</p><blockquote><p><strong>Adaptive Thinking Failure Chain</strong></p></blockquote><div><hr></div><h2>6. Why the Framing Matters</h2><p>Anthropic&#8217;s framing:</p><blockquote><p>&#8220;A few issues, now fixed&#8221;</p></blockquote><p>User reality:</p><blockquote><p>&#8220;Core reasoning behaviour degraded for weeks&#8221;</p></blockquote><p>That gap is where trust erodes.</p><p>Because for power users:</p><blockquote><p>The runtime layer <em>is the product</em></p></blockquote><div><hr></div><h2>7. Bad Timing Made It Worse</h2><p>This regression coincided with:</p><ul><li><p>Tighter usage limits</p></li><li><p>Pricing pressure toward higher tiers</p></li><li><p>Source-code leak incident</p></li><li><p>Mythos leak</p></li></ul><p>Together:</p><blockquote><p><strong>Reduced capability + reduced transparency + increased constraints</strong></p></blockquote><div><hr></div><h2>8. Why I&#8217;m Still Using Claude</h2><p>I&#8217;m not leaving.</p><p>Because when it works:</p><blockquote><p>It&#8217;s still one of the best engineering copilots available.</p></blockquote><p>To Anthropic&#8217;s credit:</p><ul><li><p>Detailed postmortem</p></li><li><p>Fixes implemented</p></li><li><p>Public acknowledgment</p></li></ul><p>But:</p><blockquote><p>Benefit of the doubt &#8800; restored trust</p></blockquote><div><hr></div><h2>9. What Needs to Change</h2><p>To rebuild trust, adaptive thinking must become:</p><h3>Observable</h3><p>Expose reasoning allocation</p><h3>Controllable</h3><p>Allow effort overrides</p><h3>Stable</h3><p>Test long-session behavior</p><h3>Transparent</h3><p>Treat runtime changes like model updates</p><div><hr></div><h2>Final Thought</h2><p>Adaptive thinking isn&#8217;t just a feature.</p><blockquote><p><strong>It is the system between the user and the model.</strong></p></blockquote><p>When that system changes silently:</p><ul><li><p>Behaviour shifts</p></li><li><p>Expectations break</p></li><li><p>Trust erodes</p></li></ul><p>I&#8217;ll keep using Claude.</p><p>But not as a black box anymore. In fact, exploring the options like Orchestrators like a battle-tested Cursor code and in future LiteLLMProxy along with Claude, gpt-4o, Gemma4:31b and Qwen-3.6 and/or Kimi k2.6</p><div><hr></div><p>This is the simplest way to understand what actually broke:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_mlG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_mlG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_mlG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_mlG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_mlG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_mlG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1609377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/195574958?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_mlG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_mlG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_mlG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_mlG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54bb6837-44fb-47a3-a6f8-0d41ca4f8827_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>What the Diagram Shows</h3><p>At first glance, these look like three unrelated issues:</p><ul><li><p>Effort downgrade</p></li><li><p>Cache bug</p></li><li><p>Verbosity constraint</p></li></ul><p>But they all hit the same underlying system:</p><blockquote><p><strong>How the model thinks, remembers, and explains</strong></p></blockquote><div><hr></div><h3>The Chain Reaction</h3><pre><code><code>Effort &#8595; &#8594; Thinking &#8595;  
Cache Bug &#8594; Memory &#8595;  
Verbosity Cap &#8594; Visibility &#8595;  

= System Behavior Collapse</code></code></pre><p>Each step compounds the next:</p><ul><li><p>Less effort &#8594; <strong>shallower reasoning</strong></p></li><li><p>Broken cache &#8594; <strong>lost continuity</strong></p></li><li><p>Lower verbosity &#8594; <strong>hidden reasoning</strong></p></li></ul><p>Individually manageable.<br>Together:</p><blockquote><p><strong>A collapse in perceived intelligence</strong></p></blockquote><div><hr></div><h3>Why This Matters</h3><p>From a system design perspective, this is the real insight:</p><blockquote><p><strong>Reasoning quality is not just a model property.<br>It is an emergent property of the runtime.</strong></p></blockquote><p>That runtime includes:</p><ul><li><p>Effort allocation (adaptive thinking)</p></li><li><p>Memory persistence (thinking cache)</p></li><li><p>Output constraints (verbosity rules)</p></li></ul><p>When all three degrade&#8212;even slightly&#8212;the system doesn&#8217;t fail gracefully.</p><blockquote><p>It fails <em>behaviourally</em>.</p></blockquote><div><hr></div><h3>The Key Takeaway</h3><blockquote><p><strong>The model didn&#8217;t get worse.<br>The system deciding how it thinks did.</strong></p></blockquote><p>And that distinction is exactly why this episode matters.</p><div><hr></div><h1>References</h1><ol><li><p>Claude Code Regression Update: Anthropic&#8217;s April 23 Postmortem Changes the Story </p><div id="youtube2-1bB66RYaMNI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;1bB66RYaMNI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/1bB66RYaMNI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div></li><li><p>Clients Were Right: Anthropic Admits Claude Code Got Dumber<br><a href="https://kingy.ai/ai/clients-were-right-anthropic-admits-claude-code-got-dumber-not-claude-post-mortem/">https://kingy.ai/ai/clients-were-right-anthropic-admits-claude-code-got-dumber-not-claude-post-mortem/</a></p></li><li><p>An update on recent Claude Code quality reports<br><a href="https://www.anthropic.com/engineering/april-23-postmortem">https://www.anthropic.com/engineering/april-23-postmortem</a></p></li><li><p>Deep News &#8212; Superlinear Academy<br><a href="https://yage.ai/share/">https://yage.ai/share/</a></p></li><li><p>The Claude Code Nerf: An Invisible, Unilateral Downgrade<br><a href="https://yage.ai/share/claude-code-runtime-regression-en-20260407.html">https://yage.ai/share/claude-code-runtime-regression-en-20260407.html</a></p></li><li><p>Adaptive thinking - Amazon Bedrock<br><a href="https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-adaptive-thinking.html">https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-adaptive-thinking.html</a></p></li><li><p>Claude Opus 4.6 adaptive reasoning<br><a href="https://www.infoq.com/news/2026/03/opus-4-6-context-compaction/">https://www.infoq.com/news/2026/03/opus-4-6-context-compaction/</a></p></li><li><p>Adaptive thinking - Claude API Docs<br><a href="https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking">https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking</a></p></li><li><p>Opus 4.7 overview<br><a href="https://artificialanalysis.ai/articles/opus-4-7-everything-you-need-to-know">https://artificialanalysis.ai/articles/opus-4-7-everything-you-need-to-know</a></p></li><li><p>Did Anthropic Secretly Nerf Claude?<br><a href="https://thedroidguy.com/anthropic-nerf-claude-quality-degradation-explained-1273110">https://thedroidguy.com/anthropic-nerf-claude-quality-degradation-explained-1273110</a></p></li><li><p>Anthropic source code leak (NDTV)<br><a href="https://www.ndtv.com/feature/2026-just-got-crazy-internet-erupts-after-anthropics-claude-source-code-leak-shakes-ai-industry-11294628">https://www.ndtv.com/feature/2026-just-got-crazy-internet-erupts-after-anthropics-claude-source-code-leak-shakes-ai-industry-11294628</a></p></li><li><p>Anthropic leaked its own Claude source code (Axios)<br><a href="https://www.axios.com/2026/03/31/anthropic-leaked-source-code-ai">https://www.axios.com/2026/03/31/anthropic-leaked-source-code-ai</a></p></li><li><p>Claude Code leak analysis (Dev.to)<br><a href="https://dev.to/varshithvhegde/the-great-claude-code-leak-of-2026-accident-incompetence-or-the-best-pr-stunt-in-ai-history-3igm">https://dev.to/varshithvhegde/the-great-claude-code-leak-of-2026-accident-incompetence-or-the-best-pr-stunt-in-ai-history-3igm</a></p></li><li><p>Claude Mythos leak <a href="https://absolutelyagentic.com/p/claude-mythos-the-ai-model-anthropic-won-t-release-to-the-public">https://absolutelyagentic.com/p/claude-mythos-the-ai-model-anthropic-won-t-release-to-the-public</a></p></li><li><p>Mythos leak coverage (Fortune)<br><a href="https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/">https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/</a></p></li><li><p>Mythos summary (Mashable)<br><a href="https://mashable.com/article/claude-mythos-ai-model-anthropic-leak">https://mashable.com/article/claude-mythos-ai-model-anthropic-leak</a></p></li><li><p>Anthropic second security lapse (Fortune)<br><a href="https://fortune.com/2026/03/31/anthropic-source-code-claude-code-data-leak-second-security-lapse-days-after-accidentally-revealing-mythos/">https://fortune.com/2026/03/31/anthropic-source-code-claude-code-data-leak-second-security-lapse-days-after-accidentally-revealing-mythos/</a></p></li><li><p>Reddit discussion<br><a href="https://www.reddit.com/r/ClaudeAI/comments/1s9ai45/anthropic_leaked_512000_lines_of_claude_code/">https://www.reddit.com/r/ClaudeAI/comments/1s9ai45/anthropic_leaked_512000_lines_of_claude_code/</a></p></li><li><p>Alignment Forum discussion<br><a href="https://www.alignmentforum.org/posts/K8FxfK9GmJfiAhgcT/anthropic-repeatedly-accidentally-trained-against-the-cot">https://www.alignmentforum.org/posts/K8FxfK9GmJfiAhgcT/anthropic-repeatedly-accidentally-trained-against-the-cot</a></p></li><li><p>Claude Code leak breakdown<br><a href="https://www.felamity.com/post/claude-code-leak-2026-what-happened-and-why-it-matters-for-ai-security">https://www.felamity.com/post/claude-code-leak-2026-what-happened-and-why-it-matters-for-ai-security</a></p></li><li><p>Mythos video</p></li></ol><div id="youtube2-cogxQtFd1Ag" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;cogxQtFd1Ag&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/cogxQtFd1Ag?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><ol><li><p>Japanese coverage of quality regression<br><a href="https://innovatopia.jp/ai/ai-news/98588/">https://innovatopia.jp/ai/ai-news/98588/</a></p></li></ol>]]></content:encoded></item><item><title><![CDATA[When Adaptive Thinking Goes Off the Rails]]></title><description><![CDATA[My Opus 4.7 Experience as a Developer (honestly, not great!)]]></description><link>https://blog.phagyul.ai/p/when-adaptive-thinking-goes-off-the</link><guid isPermaLink="false">https://blog.phagyul.ai/p/when-adaptive-thinking-goes-off-the</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Thu, 23 Apr 2026 16:36:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5HdD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5HdD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5HdD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5HdD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5HdD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5HdD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5HdD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1801409,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/195255558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5HdD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!5HdD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!5HdD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!5HdD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe46c7cc0-48b1-4f36-a19c-afe1d146443e_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Three weeks ago, </h2><p>I wrote about how Claude Opus 4.6&#8212;with its 1M context window&#8212;felt like a genuine breakthrough for my workflow:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:193306186,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/building-with-opus-46&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Building with Opus 4.6&quot;,&quot;truncated_body_text&quot;:&quot;Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding.&quot;,&quot;date&quot;:&quot;2026-04-06T05:22:32.370Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:1,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:{&quot;type&quot;:&quot;subscriber&quot;,&quot;tier&quot;:1,&quot;accent_colors&quot;:null},&quot;paidPublicationIds&quot;:[10845],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/building-with-opus-46?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Building with Opus 4.6</div></div><div class="embedded-post-body">Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; Jagadeesh Rampam</div></a></div><p>That post built on a broader recommendation I had been advocating: start with lighter models and escalate only when needed. I wrote about that approach here:</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:183758575,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Why you should chose Haiku as Default model and escalate if needed&quot;,&quot;truncated_body_text&quot;:&quot;EXECUTIVE SUMMARY&quot;,&quot;date&quot;:&quot;2026-01-07T06:43:52.861Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Why you should chose Haiku as Default model and escalate if needed</div></div><div class="embedded-post-body">EXECUTIVE SUMMARY&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 2 likes</div></a></div><p>That strategy worked when the model ladder felt consistent. But in practice today, the gap between versions has widened enough that this escalation model is far less reliable.</p><div class="pullquote"><p><strong>Haiku (4.5), Sonnet (4.6/4.7), and Opus (4.6 vs 4.7) don&#8217;t feel like clean steps in a progression anymore&#8212;they behave like entirely different tools with different failure modes.</strong></p></div><p>In my workflow&#8212;infra-heavy, ML-heavy, multi-repo&#8212;the bulk of the system was actually built by Opus 4.6 within 3&#8211;4 days. What followed were incremental improvements:</p><ul><li><p>Prompt updates for stricter IQA</p></li><li><p>Docker build refinements</p></li><li><p>CLIP-IQA deprecation</p></li><li><p>Graviton migrations</p></li><li><p>SageMaker removal &#8594; EC2 migration (Spot vs on-demand)</p></li><li><p>Handling infra quirks (e.g., g4dn.xlarge unavailability in ap-south-1)</p></li></ul><p>These are not &#8220;<strong>greenfield</strong>&#8221; tasks&#8212;they depend heavily on <strong>accurate recall of current system state</strong> and few of them were encountered earlier and have documented in the architecture review (23+ sections, Appendix of 6 detailed sections) with enough context and thorough deep dive and always handy at the root folder of workspace.</p><div><hr></div><h4>Since moving to Opus 4.7, that&#8217;s exactly where things started breaking.</h4><p>For the past 18 days, I&#8217;ve been dealing with usage limits, context drift, and behavior changes I never asked for and now hit weekly limits to be completely locked out for the next 5 days &#8212;enough to pause my subscription and evaluate alternatives.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3uoA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3uoA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 424w, https://substackcdn.com/image/fetch/$s_!3uoA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 848w, https://substackcdn.com/image/fetch/$s_!3uoA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 1272w, https://substackcdn.com/image/fetch/$s_!3uoA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3uoA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png" width="1004" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d654d31-7065-418f-915e-08950a58f58f_1004x634.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:1004,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76488,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/195255558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3uoA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 424w, https://substackcdn.com/image/fetch/$s_!3uoA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 848w, https://substackcdn.com/image/fetch/$s_!3uoA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 1272w, https://substackcdn.com/image/fetch/$s_!3uoA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d654d31-7065-418f-915e-08950a58f58f_1004x634.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>you can see from my usage chart, I tried leveraging different models based on the usecase/component/task and complexity</p><div><hr></div><p>Going into the details&#8230;</p><h2>The 4.6 Honeymoon: 1M Context Without the Drama</h2><p>My setup with Opus 4.6:</p><ul><li><p>Multiple repos (ML, backend, frontend, shared libs, infra)</p></li><li><p>Plan &#8594; execute workflows</p></li><li><p>Heavy context, but usually &lt;200k tokens</p></li></ul><p>And yet, it behaved like a disciplined senior engineer:</p><ul><li><p>Stayed within plan boundaries</p></li><li><p>Maintained architectural coherence</p></li><li><p>Delivered steady, compounding progress</p></li></ul><p>It hit the <em>long-context sweet spot</em>: large memory, without instability.</p><div><hr></div><h2>What Changed with Opus 4.7</h2><p>With adaptive thinking enabled by default, the behaviour profile shifted significantly.</p><h3>1. One-Prompt Runs That Burn an Hour</h3><ul><li><p>Prompts run excessively long</p></li><li><p>Usage limits hit faster</p></li><li><p>Thinking increases, output doesn&#8217;t</p></li></ul><p>It feels like over-analysis replacing execution.</p><div><hr></div><h3>2. Context Bloat and Losing the &#8220;Current State&#8221;</h3><p>In long sessions:</p><ul><li><p>Old decisions override new ones</p></li><li><p>Recent corrections get ignored</p></li><li><p>Model behaves as if it&#8217;s working on stale code</p></li></ul><p>In a poly-repo system, this is critical failure&#8212;not inconvenience.</p><div><hr></div><h3>3. Hallucinated Behaviour (Real Production Risk)</h3><p>The most concerning issue: <strong>unsolicited behaviour changes</strong></p><h4>Example 1: Image Rotation</h4><ul><li><p>Final testing stage</p></li><li><p>Behaviour already agreed</p></li><li><p>Suddenly: vertical images rotate</p></li></ul><p>No prompt. No plan. No instruction.</p><p>Instead of reverting, the model:</p><ul><li><p>Expanded the problem</p></li><li><p>Designed rotation logic</p></li><li><p>Introduced new edge cases</p></li></ul><p>Even explicit instructions like</p><blockquote><p>&#8220;Never rotate images&#8221;<br>didn&#8217;t cleanly undo prior drift.</p></blockquote><div><hr></div><h4>Example 2: Hardcoded Aspect Ratio Logic (Half an Hour Later)</h4><p>A second example happened shortly after, while fixing the same issue.</p><p>The model proposed:</p><ul><li><p>Portrait &#8594; 1366&#215;2048</p></li><li><p>Landscape &#8594; 2048&#215;1366</p></li><li><p>&#8220;No rotation logic, just libraw defaults&#8221;</p></li></ul><p>This sounds reasonable&#8212;but it&#8217;s wrong.</p><p>The real requirement is <strong>aspect-ratio-aware handling</strong>, because RAW files can be:</p><ul><li><p>16:9</p></li><li><p>4:5</p></li><li><p>1:1</p></li><li><p>others</p></li></ul><p>Even though my current dataset (1000+ images) includes 1:1, the model ignored that variability and jumped to a hardcoded assumption.</p><p>These are &#8220;small&#8221; issues&#8212;but in production, they are <strong>trust breakers</strong>:</p><ul><li><p>They introduce silent regressions</p></li><li><p>They require manual detection</p></li><li><p>They increase review overhead before launch</p></li></ul><p>And also not sure, how many of these issues (small/high/max) are persists, including IQA logic which is a ship-blocker, infra changes (burns my pocket!) etc.</p><div><hr></div><h2>This Isn&#8217;t a Single-Model Issue</h2><p>One important detail: this is not happening in isolation.</p><p>I&#8217;ve actively used:</p><ul><li><p>Opus 4.6</p></li><li><p>Opus 4.7</p></li><li><p>Sonnet 4.6</p></li><li><p>Haiku 4.5</p></li></ul><p>The attached usage snapshot reflects this multi-model workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pBrl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pBrl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 424w, https://substackcdn.com/image/fetch/$s_!pBrl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 848w, https://substackcdn.com/image/fetch/$s_!pBrl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 1272w, https://substackcdn.com/image/fetch/$s_!pBrl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pBrl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png" width="1004" height="634" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:634,&quot;width&quot;:1004,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76488,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/195255558?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pBrl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 424w, https://substackcdn.com/image/fetch/$s_!pBrl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 848w, https://substackcdn.com/image/fetch/$s_!pBrl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 1272w, https://substackcdn.com/image/fetch/$s_!pBrl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F549d7f3c-b201-4969-927c-97f82fc305e7_1004x634.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That actually makes the issue more concerning&#8212;because:</p><ul><li><p>The regression isn&#8217;t tied to a single model</p></li><li><p>Switching models doesn&#8217;t reliably stabilize behaviour</p></li><li><p>The &#8220;escalation strategy&#8221; becomes inconsistent</p></li></ul><div><hr></div><h2>What Others Are Seeing</h2><p>Across blogs, Reddit, and developer communities:</p><ul><li><p>Prompt regressions vs 4.6</p></li><li><p>Higher sensitivity to phrasing</p></li><li><p>Increased hallucinations in coding workflows</p></li><li><p>Faster quota exhaustion</p></li></ul><p>There <em>are</em> positive reports&#8212;but the split is real.</p><div><hr></div><p>Here are <strong>7 solid, diverse sources</strong> (Reddit, GitHub, news, blogs, HN) that reinforce the exact patterns you&#8217;re describing&#8212;context drift, adaptive loops, hallucinations, and regression concerns. I&#8217;ve curated them so you can directly reference them in your appendix or when sharing with Anthropic.</p><h2>&#128308; 1. Reddit &#8211; Developer discussion on adaptive thinking behavior</h2><ul><li><p><a href="https://www.reddit.com/r/ClaudeCode/comments/1so8p5h/claude_opus_47_changed_how_thinking_works_and_its/?utm_source=chatgpt.com">Claude Opus 4.7 Changed How Thinking Works (Reddit)</a></p></li></ul><p>Key takeaway:</p><ul><li><p>Developers discuss how <strong>reasoning flow changed</strong>, including issues around tracking context and understanding where reasoning goes wrong.</p></li></ul><div><hr></div><h2>&#128308; 2. GitHub Issue &#8211; Adaptive thinking inconsistency</h2><ul><li><p><a href="https://github.com/pydantic/pydantic-ai/issues/5153?utm_source=chatgpt.com">Claude 4.7 Opus thinking inconsistency issue (#5153)</a></p></li></ul><p>Key takeaway:</p><ul><li><p>4.7 behaves differently from 4.6</p></li><li><p><strong>Thinking visibility missing / inconsistent</strong> in real integrations</p></li><li><p>Confirms <strong>behavioural differences at system level</strong>, not just UX perception</p></li></ul><div><hr></div><h2>&#128308; 3. GitHub (Anthropic / Claude Code) &#8211; Real workflow regression data</h2><ul><li><p><a href="https://github.com/anthropics/claude-code/issues/42796?timeline_page=1&amp;utm_source=chatgpt.com">Claude Code regression issue (complex workflows degraded)</a></p></li></ul><p>Key takeaway (this one is gold for your thesis):</p><ul><li><p>Increase in <strong>reasoning loops and contradictions</strong></p></li><li><p>&#8220;Edits without reading context&#8221; jumped significantly</p></li><li><p>Model choosing <strong>&#8220;simplest fix&#8221; instead of correct fix</strong></p></li><li><p>12&#215; increase in user interruptions</p></li></ul><p>This directly maps to:</p><ul><li><p>Context drift</p></li><li><p>Adaptive loops</p></li><li><p>Hallucinated or low-quality edits</p></li></ul><div><hr></div><h2>&#128308; 4. News (Business Insider) &#8211; Token burn + backlash</h2><ul><li><p><a href="https://www.businessinsider.com/anthropic-claude-opus-4-7-backlash-tokens-2026-4?utm_source=chatgpt.com">Claude Opus 4.7 backlash and token usage issues</a></p></li></ul><p>Key takeaway:</p><ul><li><p>Users report:</p><ul><li><p><strong>Higher token consumption</strong></p></li><li><p><strong>Slower / less useful outputs</strong></p></li><li><p>Regressions vs earlier versions</p></li></ul></li><li><p>Adaptive reasoning cited as a possible cause</p></li></ul><div><hr></div><h2>&#128308; 5. News (TechRadar / AMD AI Head criticism)</h2><ul><li><p><a href="https://www.techradar.com/pro/claude-cannot-be-trusted-to-perform-complex-engineering-tasks-amd-ai-head-slams-anthropics-coding-tool-after-months-of-frustration?utm_source=chatgpt.com">AMD AI head: Claude cannot be trusted for complex engineering</a></p></li></ul><p>Key takeaway:</p><ul><li><p>Large-scale real-world usage (6,800+ sessions)</p></li><li><p>Reports:</p><ul><li><p>Ignoring instructions</p></li><li><p>Contradictions</p></li><li><p>Reduced reliability</p></li></ul></li><li><p>Explicit claim: <strong>decline in engineering trustworthiness</strong></p></li></ul><div><hr></div><h2>&#128308; 6. Blog / Analysis &#8211; Token inflation + adaptive thinking shift</h2><ul><li><p><a href="https://medium.com/data-science-in-your-pocket/claude-opus-4-7-is-bullshit-67ed884e2feb?utm_source=chatgpt.com">Claude Opus 4.7 analysis (token inflation + adaptive thinking)</a></p></li></ul><p>Key takeaway:</p><ul><li><p>New tokenizer &#8594; <strong>~1.0&#8211;1.35&#215; more tokens per task</strong></p></li><li><p>Shift to adaptive thinking instead of fixed budgets</p></li><li><p>Explains:</p><ul><li><p>Faster quota exhaustion</p></li><li><p>Less predictable compute behavior</p></li></ul></li></ul><div><hr></div><h2>&#128308; 7. Hacker News &#8211; Forced adaptive thinking model behaviour</h2><ul><li><p><a href="https://news.ycombinator.com/item?id=47803650&amp;utm_source=chatgpt.com">HN discussion: adaptive thinking mandatory in 4.7</a></p></li></ul><p>Key takeaway:</p><ul><li><p>Adaptive thinking is <strong>no longer optional</strong></p></li><li><p>Traditional &#8220;controlled reasoning&#8221; approaches removed</p></li><li><p>Developers experimenting with effort tuning to avoid issues</p></li></ul><div><hr></div><h2>&#129504; Blog / Analysis &#8211; performance + regression narrative</h2><ul><li><p><a href="https://thenewstack.io/claude-opus-47-flaky-performance/?utm_source=chatgpt.com">Claude Opus 4.7 flaky performance analysis</a></p></li><li><p>Reports:</p><ul><li><p>Self-contradictions</p></li><li><p>Degraded reliability</p></li></ul></li></ul><div><hr></div><h2>Why Adaptive Thinking Might Be Backfiring</h2><p>Conceptually:</p><blockquote><p>Let the model decide when to think more.</p></blockquote><p>In practice:</p><h3>Unbounded Initiative</h3><p>Model &#8220;improves&#8221; things you didn&#8217;t ask for</p><h3>Token Hunger</h3><p>High effort &#8594; excessive reasoning</p><h3>Plan Violations</h3><p>&#8220;Plan mode&#8221; isn&#8217;t strictly enforced</p><p>This creates a system that is:</p><ul><li><p>More powerful</p></li><li><p>But less predictable</p></li><li><p>And harder to trust</p></li></ul><div><hr></div><h2>Where This Leaves Me</h2><p>Over 18 days:</p><ul><li><p>Frequent limit hits</p></li><li><p>Context instability</p></li><li><p>Silent behaviour drift</p></li></ul><p>Result:</p><ul><li><p>Progress stalled</p></li><li><p>Subscription paused</p></li><li><p>Alternatives being evaluated</p></li><li><p>And completely locked out with weekly limits hit (I&#8217;m on Max plan: $200 + $20 top-up)</p></li></ul><p>This is a deal-breaker for me!</p><p>It&#8217;s:</p><blockquote><p>4.7 is powerful&#8212;but volatile for long-running workflows. </p></blockquote><div><hr></div><h2>What I&#8217;d Love to See</h2><h3>1. Strict Execution Mode</h3><p>No deviation from plan</p><h3>2. Hard Thinking Budgets</h3><p>Tokens + time caps + visibility</p><h3>3. Context Hygiene Tools</h3><p>Detect stale vs current state</p><h3>4. Strong Plan Guarantees</h3><p>&#8220;Plan only&#8221; must mean <strong>no execution</strong></p><div><hr></div><h2>Closing Thought</h2><p>Adaptive thinking is a sharp tool.</p><p>Right now, it feels like:</p><ul><li><p>Extremely capable</p></li><li><p>But lacking guardrails</p></li></ul><p>And for production systems:</p><blockquote><p>Capability without predictability is risk.</p></blockquote><div><hr></div><h2>Appendix: External Signals Worth Noting (with sources)</h2><p>This is the factual trail I would attach when sharing this with Anthropic. These are not isolated anecdotes&#8212;they reflect consistent patterns across GitHub issues, news coverage, and independent analyses.</p><div><hr></div><h3>1. Adaptive thinking &amp; token usage changes</h3><ul><li><p>Opus 4.7 introduces adaptive thinking and removes earlier budget-based controls, replacing them with effort tuning and task budgets</p></li><li><p>Token usage can increase significantly due to tokenizer changes (~1.0&#8211;1.35&#215; for the same task)</p></li></ul><p>&#128073; Relevance:<br>Explains <strong>why usage limits are hit faster</strong> and why compute behavior feels less predictable.</p><div><hr></div><h3>2. Higher quota burn and cost impact in real workflows</h3><ul><li><p>Measured reports show Opus 4.7 consuming <strong>~2.4&#215; quota compared to 4.6</strong> in real API usage scenarios</p></li><li><p>News coverage confirms user complaints about <strong>higher token consumption and slower outputs</strong></p></li></ul><p>&#128073; Relevance:<br>Directly supports the <strong>adaptive loop + quota exhaustion</strong> issue.</p><div><hr></div><h3>3. Reasoning loops, shallow edits, and workflow degradation</h3><ul><li><p>GitHub issue analysis shows models shifting toward:</p><ul><li><p>&#8220;edit without reading&#8221;</p></li><li><p>&#8220;simplest fix instead of correct fix&#8221;</p></li><li><p>increased need for human intervention</p></li></ul></li></ul><p>&#128073; Relevance:<br>Matches:</p><ul><li><p>Adaptive loops</p></li><li><p>Reduced execution quality</p></li><li><p>Loss of disciplined workflow behavior</p></li></ul><div><hr></div><h3>4. Silent failures and stuck execution loops</h3><ul><li><p>Reports of <strong>sessions staying active without progress</strong> (no tool execution, no response advancement)</p></li></ul><p>&#128073; Relevance:<br>Real-world evidence of <strong>non-converging loops</strong>&#8212;exactly what you observed with long-running prompts.</p><div><hr></div><h3>5. API and behavior inconsistencies across environments</h3><ul><li><p>Errors due to <strong>thinking mode changes and removed parameters</strong> (e.g., <code>thinking.type.enabled</code> no longer supported)</p></li><li><p>Regression reports where previously working setups fail in 4.7 environments</p></li></ul><p>&#128073; Relevance:<br>Explains <strong>instability across toolchains (Bedrock, Claude Code, etc.)</strong></p><div><hr></div><h3>6. Broader user backlash and reliability concerns</h3><ul><li><p>Reports of:</p><ul><li><p>poorer performance</p></li><li><p>inaccuracies</p></li><li><p>unexpected reasoning behavior</p></li><li><p>increased cost<br>across Reddit and developer communities</p></li></ul></li><li><p>Coverage highlighting <strong>growing frustration among power users and perceived regressions</strong></p></li></ul><p>&#128073; Relevance:<br>Confirms your experience is <strong>not isolated</strong></p><div><hr></div><h3>7. Mixed positioning: improved capability, but inconsistent execution</h3><ul><li><p>Opus 4.7 is described as:</p><ul><li><p>more capable in theory</p></li><li><p>better at long-running tasks</p></li><li><p>but still inconsistent in real-world workflows</p></li></ul></li></ul><p>&#128073; Relevance:<br>Captures the core tension:</p><blockquote><p>More powerful &#8800; more reliable</p></blockquote><div><hr></div><h2>&#128073; Food for thought</h2><p>The patterns described in this post&#8212;<strong>context drift, adaptive loops, and hallucinated behaviour changes</strong>&#8212;are not isolated observations.</p><p>They are consistently reflected across:</p><ul><li><p>GitHub issue logs</p></li><li><p>API migration changes</p></li><li><p>News reports</p></li><li><p>Independent developer analyses</p></li></ul><p>Which suggests this is not a prompt problem or a single workflow issue&#8212;</p><blockquote><p>but a <strong>system-level behavioural shift</strong> in how the model operates under adaptive thinking.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[From 1/4 to 3/4: Re-architecting an ML Pipeline for Graviton]]></title><description><![CDATA[How I replaced fragile ML stages, eliminated x86 dependencies, and moved production workloads to ARM64]]></description><link>https://blog.phagyul.ai/p/from-14-to-34-re-architecting-an</link><guid isPermaLink="false">https://blog.phagyul.ai/p/from-14-to-34-re-architecting-an</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 20 Apr 2026 03:12:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!7d0n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7d0n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7d0n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7d0n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7d0n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7d0n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7d0n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2397447,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194750491?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7d0n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7d0n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7d0n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7d0n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F310f35e5-6058-4ad5-be38-2a748335ef3a_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p>Graviton adoption is not a hardware decision. It is an ecosystem decision.</p></div><p>A few weeks ago, I wrote that I could only run 1 of my 4 ML Lambdas on AWS Graviton. At that point, the pipeline had four compute stages and only one&#8212;the deduplication stage&#8212;was cleanly portable to ARM64. The other three were blocked by native dependencies, ML scoring instability, or CUDA hard requirements.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:193765528,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/why-we-could-only-use-aws-graviton&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Why We Could Only Use AWS Graviton for 1 of Our 4 ML Lambdas&quot;,&quot;truncated_body_text&quot;:&quot;A simple rule of thumb: Graviton works beautifully when your dependencies are simple. It struggles when your stack isn&#8217;t.&quot;,&quot;date&quot;:&quot;2026-04-10T06:36:10.828Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;paidPublicationIds&quot;:[],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:false,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/why-we-could-only-use-aws-graviton?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Why We Could Only Use AWS Graviton for 1 of Our 4 ML Lambdas</div></div><div class="embedded-post-body">A simple rule of thumb: Graviton works beautifully when your dependencies are simple. It struggles when your stack isn&#8217;t&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; Jagadeesh Rampam</div></a></div><p>Since then, I shipped a major re-architecture. I am now at 3 of 4 instances migrated to Graviton and an additional orchestration layer on ECS using Graviton</p><p>This is technical deep dive on what changed, what stayed stubborn, and how the cost model looks after the migration.</p><div><hr></div><h2>The original four functions</h2><p>Before the rework, the image pipeline had four compute stages:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TZtL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TZtL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 424w, https://substackcdn.com/image/fetch/$s_!TZtL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 848w, https://substackcdn.com/image/fetch/$s_!TZtL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 1272w, https://substackcdn.com/image/fetch/$s_!TZtL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TZtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png" width="1429" height="609" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:609,&quot;width&quot;:1429,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2127169,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194750491?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf10c328-2861-4158-8104-0ffc23983acf_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TZtL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 424w, https://substackcdn.com/image/fetch/$s_!TZtL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 848w, https://substackcdn.com/image/fetch/$s_!TZtL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 1272w, https://substackcdn.com/image/fetch/$s_!TZtL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40dcc431-1754-44c8-b34a-9a1beba4e192_1429x609.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Only the deduplication function was small, CPU-bound, and dependency-light&#8212;the exact profile Graviton rewards. Everything else was tied to the ML ecosystem: <em>compiled C extensions, missing ARM64 wheels, or a hard CUDA dependency</em>.</p><div><hr></div><h2>What made it to the final cut!</h2><p>Final changes were not a simple port. It was a structural rewrite of the pipeline.</p><h3>1) I consolidated CLIP-IQA and dedup into a single technical validator</h3><p>Originally, I had two separate concerns:</p><ul><li><p>CLIP-IQA for visual quality scoring</p></li><li><p>Perceptual hashing for duplicate detection</p></li></ul><p>That split created two problems. First, CLIP-IQA had ARM64 compatibility gaps because the required wheel chain was incomplete. Second, the model was miscalibrated for my dataset: upon a research, learned the CLIP-IQA was trained on old stock photos, which doesn&#8217;t fit the bill for my usecase (it accepted only about 1% of professional RAW captures, which made it unusable for real curation.)</p><p>Rather than keep forcing an ML model into a role that did not justify its operational cost, I replaced both stages with a lightweight rule-based Lambda:</p><ul><li><p>exposure clipping detection</p></li><li><p>blur and sharpness scoring</p></li><li><p>perceptual hashing for deduplication</p></li><li><p>no ML forward pass</p></li><li><p>no compiled extensions in the hot path</p></li></ul><p>This is no longer just a design simplification. Deduplication is now live in production, computing perceptual hashes and performing ANN-style lookups in DynamoDB. The validator is not only replacing the old stages&#8212;it is actively enforcing them.</p><p>That became <code>parjanya-technical_validator</code>, and it runs on ARM64.</p><pre><code><code>Architecture: arm64
Memory: 512 MB
Runtime: python3.12</code></code></pre><p>This was the biggest unlock in the whole migration. I did not port a fragile ML stage to ARM64. I replaced it with something that never needed x86 in the first place.</p><h3>2) I moved VLM inference off Lambda entirely</h3><p>The GPU inference stage was never a candidate for Lambda ARM64. CUDA remains the hard boundary.</p><p>Instead of trying to force the issue, I separated control plane from execution:</p><ul><li><p>the scheduling logic runs in a lightweight Lambda</p></li><li><p>the actual VLM inference runs on EC2 g5 instances in an Auto Scaling Group</p></li><li><p>the worker image runs <code>Qwen3-VL-8B-Instruct</code></p></li></ul><p>That means the Lambda only decides when to scale and when to drain. It does not need ML libraries, CUDA, or any heavy inference runtime. That Lambda is ARM64.</p><p>This separation matters. I gained another Graviton function by moving the intelligence of orchestration into ARM64 and leaving the GPU workload where it belongs.</p><h3>3) I moved the ECS backend to ARM64</h3><p>The backend API tier also moved to ARM64.</p><p>It handles uploads, scoring orchestration, gallery queries, and DynamoDB reads. None of that needs x86. It is I/O-heavy, memory-efficient, and a good fit for Graviton.</p><div><hr></div><h2>The current state: 3 of 4</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aivP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aivP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 424w, https://substackcdn.com/image/fetch/$s_!aivP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 848w, https://substackcdn.com/image/fetch/$s_!aivP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 1272w, https://substackcdn.com/image/fetch/$s_!aivP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aivP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png" width="1536" height="754" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:754,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2903714,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194750491?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd646392-5e72-4bd4-a58f-93da2b111970_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aivP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 424w, https://substackcdn.com/image/fetch/$s_!aivP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 848w, https://substackcdn.com/image/fetch/$s_!aivP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 1272w, https://substackcdn.com/image/fetch/$s_!aivP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8106c38-a34a-4a03-94a3-844ead53db84_1536x754.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three Lambda functions now run on Graviton. The ECS backend is on ARM64 too. The only x86 compute left is the GPU worker fleet, and that is an intentional architectural boundary, not an unfinished migration.</p><p>The technical validator is now running deduplication in production with DynamoDB-backed ANN lookup.</p><p>Current state:</p><ul><li><p>~714 images processed</p></li><li><p>2,856 phash records</p></li><li><p>2,856 dhash records</p></li><li><p>5,712 total hash entries</p></li></ul><p>Each 64-bit perceptual hash is split into 4 &#215; 16-bit chunks and indexed via GSI, enabling efficient Hamming-distance queries without full table scans.</p><p>Duplicate detection is executed at ingest time using a Hamming threshold of 8. This is not approximate in theory&#8212;it is running against real image uploads and returning consistent matches.</p><div><hr></div><h2>Why the GPU stage will stay off Graviton</h2><p>This is the part people usually ask about.</p><p>The VLM worker runs on NVIDIA g5 instances, which means CUDA. CUDA is the boundary, not convenience. The ARM64 story for GPU inference is still not a drop-in replacement for a standard PyTorch + CUDA workflow.</p><p>The alternatives exist, but they come with real trade-offs:</p><ul><li><p>AWS Inferentia requires model compilation and Neuron SDK integration</p></li><li><p>operator compatibility can become a bottleneck</p></li><li><p>debugging and deployment pipelines become more specialized</p></li><li><p>parity testing is mandatory if scores are used for curation decisions</p></li></ul><p>For a variable-resolution VLM workload, I decided the migration effort was not worth the operational complexity today.</p><div><hr></div><h2>How I think about ARM64 wheels</h2><p>This is the practical section that matters if you are trying to do the same migration.</p><p>An ARM64 wheel is the precompiled binary distribution of a Python package for the <code>aarch64</code>/<code>arm64</code> architecture. If a package publishes an ARM64 wheel, I can usually install it without compiling from source. If it does not, I may fall back to source builds, missing dependencies, or outright installation failures.</p><p>That is why ARM64 adoption is often not blocked by AWS itself. It is blocked by the package ecosystem.</p><h3>What I check before switching a workload to ARM64</h3><p>I treat every dependency as one of four categories:</p><ol><li><p>pure Python, safe everywhere</p></li><li><p>ARM64 wheel available, usually safe</p></li><li><p>source build required, needs validation</p></li><li><p>native dependency missing or unstable, likely blocker</p></li></ol><p>For a Lambda or container image, I check:</p><ul><li><p>whether the package publishes <code>manylinux_aarch64</code> wheels</p></li><li><p>whether transitive dependencies also support ARM64</p></li><li><p>whether C extensions link cleanly on Graviton</p></li><li><p>whether the package is pinned to a version that still ships ARM64 wheels</p></li></ul><h3>How I track ARM64 readiness for my use case</h3><p>My workflow is simple:</p><ul><li><p>I maintain a lockfile or constraints file for the exact runtime image</p></li><li><p>I test installs inside an ARM64 build environment, not just my laptop</p></li><li><p>I verify wheel availability against the exact Python version I deploy</p></li><li><p>I keep a dependency matrix for each service: <code>pure python</code>, <code>wheel available</code>, <code>source build</code>, <code>blocker</code></p></li><li><p>I add a deployment gate that fails fast if a native package starts compiling from source unexpectedly</p></li></ul><p>For ML and image-processing workloads, this matters more than people expect. A single dependency such as Pillow, OpenCV, raw image parsers, or a scientific library can flip a Lambda from &#8220;portable&#8221; to &#8220;fragile.&#8221;</p><h3>A useful rule of thumb</h3><p>If I cannot answer these three questions quickly, I do not move the workload yet:</p><ul><li><p>Does every native dependency have an ARM64 wheel for my Python version?</p></li><li><p>If not, can I build from source reliably in CI?</p></li><li><p>If not, can I replace the dependency or the stage entirely?</p></li></ul><p>In my case, the answer to the last question was the real unlock.</p><div><hr></div><h2>Cost analysis</h2><h3>VPC Gateway Endpoints</h3><p>I added four VPC gateway endpoints to stop routing S3 and DynamoDB traffic through NAT.</p><p>Gateway endpoints are free. That means the traffic path to S3 and DynamoDB no longer pays NAT tax.</p><p>For an image pipeline moving large media sets, that is not noise. It is structural savings.</p><h3>NAT Gateway cost sink</h3><p>My production environment still uses NAT Gateways for general outbound traffic. That cost persists because the system still needs egress, but the higher-volume internal traffic no longer needs to pass through NAT.</p><p>A realistic next step is to collapse production NAT from 3 gateways to 1, which would save roughly <strong>$65/month</strong> in the current setup.</p><h3>GPU backfill cost</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZfJM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZfJM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 424w, https://substackcdn.com/image/fetch/$s_!ZfJM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 848w, https://substackcdn.com/image/fetch/$s_!ZfJM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 1272w, https://substackcdn.com/image/fetch/$s_!ZfJM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZfJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png" width="1536" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2947781,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194750491?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F90c2f8d4-f37b-4879-bbe8-2e6773e3fcb7_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZfJM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 424w, https://substackcdn.com/image/fetch/$s_!ZfJM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 848w, https://substackcdn.com/image/fetch/$s_!ZfJM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 1272w, https://substackcdn.com/image/fetch/$s_!ZfJM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cc1274f-56b4-441e-909e-3241165fb763_1536x762.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>ARM64 Lambda savings</h3><p>AWS ARM64 Lambda pricing is typically around <strong>20% lower</strong> than x86 for equivalent duration.</p><p>That matters because my architecture is event-driven:</p><ul><li><p>the EXIF extractor runs on every ingest</p></li><li><p>the technical validator runs on every upload</p></li><li><p>the scheduler ticks every 2 minutes</p></li></ul><p>Those invocations compound. The bigger the event volume, the more the ARM64 delta matters.</p><h3>A stronger way to express savings</h3><p>The right way to think about the savings is not just &#8220;cheaper compute.&#8221; It is:</p><div class="pullquote"><p><strong>Savings = avoided x86 Lambda spend + avoided NAT data-path spend + reduced ML over-processing + lower operational overhead from simpler packaging</strong></p></div><p>That is the real gain.</p><p>In practical terms, the migration gives me four layers of savings:</p><ol><li><p>lower per-invocation Lambda cost on ARM64</p></li><li><p>fewer NAT-passed requests to S3 and DynamoDB</p></li><li><p>deduplication alone prevents re-processing identical or near-identical RAW frames, directly reducing GPU inference cost</p></li><li><p>fewer operational failures caused by missing native wheels</p></li></ol><p>The most important one is the third. Every frame rejected by the technical validator is a frame that never reaches the GPU queue. That reduces both cost and latency.</p><div><hr></div><h2>Performance and latency</h2><h3>Technical validator latency</h3><p>Replacing CLIP-IQA and the old dedup path with a rule-based validator removed model loading, warmup, and forward-pass overhead.</p><p>The new validator runs in pure Python and is typically sub-100 ms per image.</p><p>This includes hash computation and ANN indexing, which now runs inline without introducing measurable latency overhead.</p><h3>VLM throughput</h3><p>The Qwen3-VL-8B-Instruct worker processed 320 images in the backfill run with clean score clustering and no rejects on this dataset. The reject threshold is set to 0.4, but the dataset was too clean to trigger it.</p><p>That is fine for now. I still need a more difficult validation set before I can trust the threshold under harsher conditions.</p><h3>ECS backend behaviour</h3><p>The ARM64 backend shows the expected pattern for a control-plane service: stable, low-error, and efficient for I/O-bound work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-ke1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-ke1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-ke1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-ke1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-ke1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-ke1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2765219,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194750491?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-ke1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!-ke1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!-ke1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!-ke1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F103b7499-f3c0-4d9f-8e42-829170893ac7_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>The ecosystem lesson</h2><p>The lesson is the same one I started with, but sharper now:</p><p><strong>The fastest path to ARM64 is sometimes not to migrate the workload. It is to replace the workload.</strong></p><blockquote><p>I did not port a broken ML stage to ARM64.<br>I removed it.</p><p>I did not force the GPU inference stack onto Lambda.<br>I isolated it.</p><p>I did not keep a dedup stage alive because it existed historically.<br>I collapsed it into the validator where it belonged.</p></blockquote><p>That is what made the architecture cleaner and cheaper.</p><p>The validator is not just simpler&#8212;it is now measurably correct under production load.</p><div><hr></div><h2>What is still ahead</h2><ol><li><p>Terraform reconciliation: my live state now diverges from the earlier config, so I need to align infra state with reality.</p></li><li><p>NAT reduction: production can likely collapse from 3 NAT gateways to 1 after reconciliation.</p></li><li><p>Better validation data: I need deliberately low-quality images to test the reject threshold properly.</p></li><li><p>Inferentia2 feasibility: worth revisiting only if VLM inference becomes steady-state instead of bursty.</p></li></ol><div><hr></div><h2>TL;DR</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vsbr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vsbr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 424w, https://substackcdn.com/image/fetch/$s_!Vsbr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 848w, https://substackcdn.com/image/fetch/$s_!Vsbr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 1272w, https://substackcdn.com/image/fetch/$s_!Vsbr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vsbr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png" width="1536" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3201225,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194750491?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18f43f2e-86dd-49f5-82b3-0939950014e5_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vsbr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 424w, https://substackcdn.com/image/fetch/$s_!Vsbr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 848w, https://substackcdn.com/image/fetch/$s_!Vsbr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 1272w, https://substackcdn.com/image/fetch/$s_!Vsbr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff08497d0-5d08-4a9b-bb70-13ff62caa272_1536x835.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three of four Lambda functions now run on Graviton. The remaining x86 workload is the one that genuinely belongs there: GPU inference.</p><div><hr></div><h1>How I track ARM64 wheel readiness before I migrate a service</h1><p>The main point is that ARM64 migration is usually decided by wheel availability, transitive dependencies, and build reproducibility&#8212;not by the chip itself.</p><h2>Core structure</h2><h3>1) Start with the dependency graph</h3><p>I map every package into one of four states:</p><ul><li><p>pure Python</p></li><li><p>ARM64 wheel available</p></li><li><p>source-build required</p></li><li><p>blocker</p></li></ul><h3>2) Test inside an ARM64 build environment</h3><p>I do not trust local x86 installs for this. I build in CI or in an ARM64 container so I can see what actually happens on Graviton.</p><h3>3) Pin Python and package versions</h3><p>ARM64 support can appear or disappear across versions. I lock both the Python runtime and the package set.</p><h3>4) Track failure modes</h3><p>I record whether the failure is:</p><ul><li><p>missing wheel</p></li><li><p>missing system library</p></li><li><p>compiler issue</p></li><li><p>ABI mismatch</p></li><li><p>runtime behaviour difference</p></li></ul><h3>5) Decide whether to port or replace</h3><p>If the package stack is fragile, I replace the workload. That is often cheaper than fighting the dependency chain.</p><div class="pullquote"><p>The chip is rarely the real problem. The wheel matrix is!</p></div><h2>Further Reading</h2><h3>AWS Graviton (Official)</h3><ul><li><p><strong><a href="https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-to-arm-based-aws-graviton2-processors/?utm_source=chatgpt.com">Migrating AWS Lambda functions to ARM-based Graviton</a></strong><br>Covers practical considerations when moving Lambda workloads to ARM64, including compatibility and performance trade-offs. AWS reports up to <strong>34% better price-performance</strong>, reinforcing why this shift compounds over time.</p></li><li><p><strong><a href="https://aws.github.io/graviton/?utm_source=chatgpt.com">AWS Graviton Technical Guide</a></strong><br>A deep reference on runtime support, Python wheels, and ecosystem maturity. Useful for understanding why some workloads &#8220;just work&#8221; while others fail due to native dependencies.</p></li></ul><div><hr></div><h3>ARM64 in Practice (Real-world engineering)</h3><ul><li><p><strong><a href="https://developer.arm.com/community/arm-community-blogs/b/servers-and-cloud-computing-blog/posts/migrating-our-genai-pipeline-to-aws-graviton?utm_source=chatgpt.com">Migrating a GenAI pipeline to AWS Graviton (ARM blog)</a></strong><br>A strong parallel to this post: highlights the need to <strong>build from source when wheels don&#8217;t exist</strong> and to restructure pipelines for ARM64 compatibility rather than forcing migration.</p></li><li><p><strong><a href="https://sedai.io/blog/aws-graviton-usage-guide?utm_source=chatgpt.com">AWS Graviton usage guide (2025)</a></strong><br>A broader view of where Graviton fits: microservices, data pipelines, and cost optimization. Also calls out the exact blockers I hit&#8212;<strong>x86-native binaries and dependency gaps</strong>.</p></li></ul><div><hr></div><h3>Python + ARM64 (Critical for ML workloads)</h3><ul><li><p><strong><a href="https://github.com/aws/aws-graviton-getting-started/blob/main/python.md?utm_source=chatgpt.com">AWS Graviton Python getting started guide</a></strong><br>This is the underrated one. Explains why:</p><ul><li><p>Python version matters (wheel availability changes across versions)</p></li><li><p>GLIBC mismatches break installs</p></li><li><p>Some libraries require source builds or distro packages</p></li></ul><p>If you&#8217;re debugging &#8220;why does this work on x86 but not ARM64?&#8221; &#8212; this is where the answer usually lives.</p><div><hr></div></li></ul><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:183157310,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/aws-graviton4-vs-intel-x86-from-10&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;AWS Graviton4 vs Intel x86: From $10 POC to Production Validation&quot;,&quot;truncated_body_text&quot;:&quot;The Journey Begins: Why We Needed to Validate&quot;,&quot;date&quot;:&quot;2026-01-01T17:43:42.193Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/aws-graviton4-vs-intel-x86-from-10?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">AWS Graviton4 vs Intel x86: From $10 POC to Production Validation</div></div><div class="embedded-post-body">The Journey Begins: Why We Needed to Validate&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 2 likes</div></a></div><div><hr></div><h2>Closing thought</h2><p>If there&#8217;s a single takeaway across all of these:</p><blockquote><p>ARM64 adoption fails less because of compute&#8212;and more because of dependencies.</p></blockquote><p>That&#8217;s the thread connecting every resource above&#8212;and the reason this migration worked only after changing the pipeline itself.</p>]]></content:encoded></item><item><title><![CDATA[Cloud Bills as Lagging Indicators of Design Debt]]></title><description><![CDATA[Why infra, context, and AI debts quietly shape ML infrastructure costs]]></description><link>https://blog.phagyul.ai/p/cloud-bills-as-lagging-indicators</link><guid isPermaLink="false">https://blog.phagyul.ai/p/cloud-bills-as-lagging-indicators</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 13 Apr 2026 07:58:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1jJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1jJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1jJA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1jJA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1jJA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1jJA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1jJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3438433,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194044195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1jJA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1jJA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1jJA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1jJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb552e0bb-8f9d-440f-b00f-052e7323d807_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most teams first meet cloud cost as a surprise.</p><p>The reflex is familiar: <em>AWS is getting expensive.</em> But that framing is too shallow to be useful. Cloud platforms are not mysterious in how they bill. They charge for what is consumed, and they do so with predictable rules. The real mystery is why the consumption pattern often looks irrational only after the bill arrives.</p><p>The answer is time.</p><p>Cloud bills are not leading indicators. They are lagging indicators. They reveal what the system has been doing for weeks or months after the design decision was made. By the time cost becomes visible, the architectural cause is already buried beneath new work, new releases, and new assumptions.</p><p>That is why cloud cost is better understood as a signal of <strong>design debt</strong>.</p><p>And in ML infrastructure, that debt is rarely singular. It usually appears in three forms at once: <strong>infra debts, context debts, and AI debts</strong>. Each one hides differently. Each one compounds differently. And each one demands a different kind of correction.</p><div><hr></div><h2>The First Debt: Infra Debt</h2><p>Infra debt is the most visible kind of debt because it eventually shows up directly in the bill.</p><p>It begins with missing guardrails. A team enables S3 versioning to protect against accidental deletion, but no lifecycle policy is added. Logs are useful during development, so DEBUG logging continues into production. CloudWatch retention is left at default. Idle resources stay alive because nobody encoded expiration into the system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2ViV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2ViV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2ViV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2ViV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2ViV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2ViV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3036489,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194044195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2ViV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2ViV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2ViV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2ViV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2bad13dc-6397-4268-8fe5-49745cfe35ca_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>None of these choices is obviously wrong in isolation. In fact, each one is defensible at the moment it is made. Versioning improves safety. DEBUG helps troubleshooting. Extra endpoints help experimentation. The mistake is not the decision itself. The mistake is the decision without a boundary.</p><p>That is what makes infra debt so common. It is created by omissions, not dramatic failures. A retention policy was not defined. A lifecycle rule was not added. A default was not set.</p><p>The cost curve is then slow and silent. Storage grows. Logs accumulate. Compute idles. Bills rise before teams notice the pattern.</p><p>This is why infra debt is the easiest debt to understand and the easiest to prevent. It belongs in infrastructure-as-code, in template defaults, and in policy enforcement. The goal is not to eliminate flexibility. The goal is to make the safe path the default path.</p><p>When that does not happen, cloud bills become the receipt of missing guardrails.</p><div><hr></div><h2>The Second Debt: Context Debt</h2><p>Context debt is less visible, but often more dangerous.</p><p>It does not begin with storage or logs. It begins with assumptions. A team believes it understands the system, but the understanding is incomplete, undocumented, or no longer shared. The architecture starts drifting away from the mental model that originally justified it.</p><p>The Graviton example is a good one. On paper, ARM-based infrastructure promises savings. In practice, that promise depends on compatibility across Python wheels, native libraries, build pipelines, container images, CI runners, and fallback logic. A team that assumes &#8220;Graviton will work everywhere&#8221; without checking those dependencies is not making a cost optimization. It is making a context assumption.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cJQP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cJQP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cJQP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cJQP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cJQP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cJQP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3801469,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194044195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cJQP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!cJQP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!cJQP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!cJQP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9800a5d-2e65-4272-a169-6f66acc4cf8b_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That assumption can fail quietly at first. A wheel does not compile. A container image behaves differently. A CI job passes on one architecture and fails on another. The team then either falls back to x86, overprovisions for safety, or spends time debugging a problem that should have been discovered earlier.</p><p>That is context debt.</p><p>Unlike infra debt, context debt cannot be fixed by setting a lifecycle rule. It requires documentation, explicit trade-off decisions, shared ownership, and a memory of why the system is shaped the way it is. It is the debt of forgotten rationale.</p><p>This debt matters because cloud cost is often not caused by inefficient compute alone. It is caused by teams repeatedly paying for architectural uncertainty. When people no longer share the same model of the system, they build cautiously, duplicate resources, or choose the most conservative option available. Cost rises because confidence falls.</p><p>Context debt is where engineering and organizational memory collide.</p><div><hr></div><h2>The Third Debt: AI Debt</h2><p>AI debt is the most compounding form of debt because it changes over time even when the system appears stable.</p><p>ML systems drift. Data changes. Labels shift. Models degrade. A pipeline that performed well last quarter may begin losing accuracy this quarter without any obvious operational failure. The system still runs. The endpoints still respond. The logs still look normal. But the model&#8217;s relationship to reality has weakened.</p><p>That is where AI debt begins.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!65gy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!65gy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!65gy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!65gy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!65gy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!65gy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3552163,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194044195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!65gy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!65gy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!65gy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!65gy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F86f09b15-ab9c-46f0-9658-28edc3349357_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It includes data debt, model debt, and configuration debt. Data debt appears when training data is stale, incomplete, or insufficiently versioned. Model debt appears when there is no clear registry, no retraining signal, and no disciplined lifecycle. Configuration debt appears when inference pipelines become too complex, too wide, or too fragmented to reason about.</p><p>The financial impact is not always immediate. Sometimes the team compensates by increasing compute. Sometimes they add more endpoints. Sometimes they rerun experiments more often because confidence in the current model declines. Cost rises as a side effect of trying to keep the system trustworthy.</p><p>This is why AI debt is especially expensive. It does not merely create infrastructure spend. It creates repeated spend in response to lifecycle failure.</p><p>AI systems need more than deployment. They need governance, monitoring, versioning, and retraining discipline. Without that, the bill does not just reflect compute. It reflects the hidden cost of model decay.</p><div><hr></div><h2>Parjanya 2.0 and the Shape of the Debts</h2><p>The Parjanya 2.0 work made these debt types visible in practice in the first month of production before the public launch.</p><p>S3 versioning was enabled to protect checkpoint uploads, but expiration was not configured, so old versions accumulated. That was infra debt. CloudWatch logs were verbose because DEBUG was convenient during development, but the logging policy was never tightened for production. That was infra debt again. Graviton was treated as a simple optimization, but dependency compatibility had not been fully validated. That was context debt. SageMaker endpoints were created for experimentation and then forgotten. That was a mix of infra debt and AI debt, because the experimental infrastructure had no lifecycle discipline.</p><p>The point of the case study is not that AWS behaved badly. AWS behaved exactly as designed.</p><p>The point is that the system behaved exactly as the team allowed it to behave.</p><p>That is what design debt means. The bill is not the cause. The bill is the evidence.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:193306186,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/building-with-opus-46&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Building with Opus 4.6&quot;,&quot;truncated_body_text&quot;:&quot;Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding.&quot;,&quot;date&quot;:&quot;2026-04-06T05:22:32.370Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;handle&quot;:&quot;jagadeeshrampam&quot;,&quot;previous_name&quot;:null,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;profile_set_up_at&quot;:&quot;2023-11-17T15:21:07.496Z&quot;,&quot;reader_installed_at&quot;:&quot;2023-11-16T16:33:25.907Z&quot;,&quot;publicationUsers&quot;:[{&quot;id&quot;:7512312,&quot;user_id&quot;:12091074,&quot;publication_id&quot;:7361555,&quot;role&quot;:&quot;admin&quot;,&quot;public&quot;:true,&quot;is_primary&quot;:true,&quot;publication&quot;:{&quot;id&quot;:7361555,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;subdomain&quot;:&quot;jagadeeshrampam&quot;,&quot;custom_domain&quot;:null,&quot;custom_domain_optional&quot;:false,&quot;hero_text&quot;:&quot;Techie, explorer and photographer &quot;,&quot;logo_url&quot;:null,&quot;author_id&quot;:12091074,&quot;primary_user_id&quot;:12091074,&quot;theme_var_background_pop&quot;:&quot;#FF6719&quot;,&quot;created_at&quot;:&quot;2025-12-23T11:09:54.434Z&quot;,&quot;email_from_name&quot;:null,&quot;copyright&quot;:&quot;Jagadeesh Rampam&quot;,&quot;founding_plan_name&quot;:null,&quot;community_enabled&quot;:true,&quot;invite_only&quot;:false,&quot;payments_state&quot;:&quot;disabled&quot;,&quot;language&quot;:null,&quot;explicit&quot;:false,&quot;homepage_type&quot;:&quot;newspaper&quot;,&quot;is_personal_mode&quot;:false,&quot;logo_url_wide&quot;:null}}],&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null,&quot;status&quot;:{&quot;bestsellerTier&quot;:null,&quot;subscriberTier&quot;:null,&quot;leaderboard&quot;:null,&quot;vip&quot;:false,&quot;badge&quot;:null,&quot;paidPublicationIds&quot;:[],&quot;subscriber&quot;:null}}],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/building-with-opus-46?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Building with Opus 4.6</div></div><div class="embedded-post-body">Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">2 months ago &#183; Jagadeesh Rampam</div></a></div><div><hr></div><h2>Designing Guardrails Instead of Chasing Bills</h2><p>Once these debts are understood, the response becomes clearer.</p><p>The solution is not to chase lower cloud bills as a separate exercise. That often turns into cleanup theater. Delete a few things. Reduce a few logs. Switch a few instances. The bill improves temporarily, but the pattern remains.</p><p>The better approach is to design guardrails.</p><p>Guardrails make cost-aware behaviour the default. Versioned S3 buckets get lifecycle policies by template, not by memory. Log groups get retention defined by policy, not by hope. Production logging defaults to INFO, not DEBUG. Endpoint ownership is tagged, expiration is explicit, and idle resources can be terminated automatically. ARM migration is treated as a compatibility project, not a migration slogan. ML models are registered, versioned, and monitored as living assets rather than static artifacts.</p><p>This is the crucial shift: cost control stops being reactive once the system itself carries the discipline.</p><p>That is what sustainable ML infrastructure looks like. Not a promise of cheaper cloud, but a design where cloud cost is structurally constrained.</p><div><hr></div><h2>The Operating Lesson</h2><p>If there is one lesson across infra debts, context debts, and AI debts, it is this:</p><p>Cloud bills are delayed signals of system intent.</p><p>They tell you what your system actually did after the memory of the decision has faded. They show whether your guardrails were real, whether your assumptions were valid, and whether your ML lifecycle was under control.</p><p>That is why the right question is not &#8220;Why is AWS so expensive?&#8221;</p><p>The right question is:</p><p><strong>Which debts are we carrying into production, and which ones are we choosing not to see yet?</strong></p><p>That question changes the conversation from billing to design. From cost reduction to system maturity. From cleanup to prevention.</p><p>And once you see cloud bills that way, you stop treating them as a nuisance. You start treating them as architecture feedback.</p><p>That is the real value of the receipt.</p><div><hr></div><h2>Additional metrics</h2><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pnly!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pnly!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 424w, https://substackcdn.com/image/fetch/$s_!Pnly!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 848w, https://substackcdn.com/image/fetch/$s_!Pnly!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 1272w, https://substackcdn.com/image/fetch/$s_!Pnly!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pnly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png" width="1456" height="343" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:343,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114178,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194044195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pnly!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 424w, https://substackcdn.com/image/fetch/$s_!Pnly!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 848w, https://substackcdn.com/image/fetch/$s_!Pnly!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 1272w, https://substackcdn.com/image/fetch/$s_!Pnly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bb3e29d-f9eb-41aa-8ebd-8712590e0bad_1630x384.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uTMI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uTMI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 424w, https://substackcdn.com/image/fetch/$s_!uTMI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 848w, https://substackcdn.com/image/fetch/$s_!uTMI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 1272w, https://substackcdn.com/image/fetch/$s_!uTMI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uTMI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png" width="1456" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130938,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/194044195?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uTMI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 424w, https://substackcdn.com/image/fetch/$s_!uTMI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 848w, https://substackcdn.com/image/fetch/$s_!uTMI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 1272w, https://substackcdn.com/image/fetch/$s_!uTMI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1667e2ec-768d-44f0-b829-505578b4e953_1842x380.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div><hr></div><h2>Further Reading</h2><p>My work:</p><ul><li><p><a href="https://substack.com/home/post/p-193765528">Why We Could Only Use AWS Graviton for 1 of Our 4 ML Lambdas</a></p></li><li><p><a href="https://substack.com/home/post/p-193130117">VLM Batch Inference &#8212; 4-bit Quantization Deep Dive</a></p></li><li><p><a href="https://substack.com/home/post/p-192599908">The Silent Storage Bomb: What S3 Versioning Doesn&#8217;t Tell You</a></p></li></ul><p>External resources:</p><ul><li><p><a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_NoncurrentVersionExpiration.html?utm_source=chatgpt.com">Amazon S3 noncurrent version expiration</a></p></li><li><p><a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html?utm_source=chatgpt.com">CloudWatch Logs retention</a></p></li><li><p><a href="https://aws.amazon.com/ec2/graviton/getting-started/?utm_source=chatgpt.com">AWS Graviton getting started</a></p></li><li><p><a href="https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints-manage.html?utm_source=chatgpt.com">SageMaker endpoint management</a></p></li><li><p><a href="https://arxiv.org/abs/2103.09783?utm_source=chatgpt.com">Characterizing Technical Debt and Antipatterns in AI-Based Systems</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Why We Could Only Use AWS Graviton for 1 of Our 4 ML Lambdas]]></title><description><![CDATA[Lessons from building a production image quality assessment pipeline on ARM64]]></description><link>https://blog.phagyul.ai/p/why-we-could-only-use-aws-graviton</link><guid isPermaLink="false">https://blog.phagyul.ai/p/why-we-could-only-use-aws-graviton</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Fri, 10 Apr 2026 06:36:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9RsC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9RsC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9RsC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9RsC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9RsC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9RsC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9RsC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg" width="1536" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:252305,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193765528?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F967b0676-a64f-496b-93bf-d60a4a19f3b3_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9RsC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 424w, https://substackcdn.com/image/fetch/$s_!9RsC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 848w, https://substackcdn.com/image/fetch/$s_!9RsC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!9RsC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd909437d-8fca-468f-965f-80208098f55c_1536x742.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>A simple rule of thumb: Graviton works beautifully when your dependencies are simple. It struggles when your stack isn&#8217;t.</p></blockquote><div><hr></div><h2>The Promise That Looked Obvious</h2><p>Every few years, infrastructure gives you one of those deceptively simple promises:</p><blockquote><p>Flip a switch. Save money. Get better performance.</p></blockquote><p>AWS Graviton felt like one of those moments.</p><p>ARM64 support for Lambda came with a clear narrative: better price-performance, lower cost, and a migration path that looked almost mechanical. Change the architecture flag, rebuild your containers, and you&#8217;re done.</p><p>We believed that story.</p><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;08e9cc04-43b9-4bdf-9b63-25329b1fb18b&quot;,&quot;caption&quot;:&quot;The Journey Begins: Why We Needed to Validate&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;AWS Graviton4 vs Intel x86: From $10 POC to Production Validation&quot;,&quot;publishedBylines&quot;:[],&quot;post_date&quot;:&quot;2026-01-01T17:43:42.193Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!2W21!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfe2a30d-51a4-4afc-954e-75a09fc1aef8_2848x1600.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/aws-graviton4-vs-intel-x86-from-10&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:183157310,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:2,&quot;comment_count&quot;:0,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><p><strong>And then we tried to run a real system on it.</strong></p><div><hr></div><h2>The System That Refused to Cooperate</h2><p>We built <strong>Parjanya 2.0</strong>, an ML-powered image pipeline for photographers. It processes RAW images, generates previews, evaluates image quality using CLIP, removes duplicates, and runs semantic analysis through a vision-language model.</p><p>It is not an exotic system. It is exactly the kind of modern, modular ML pipeline you would expect to benefit from better compute economics.</p><p>We had four compute stages. Each was isolated. Each was containerized. Each looked like a good candidate for migration.</p><p>So we made the call early: everything would run on ARM64.</p><p>That decision lasted about a week.</p><div><hr></div><h2>What Actually Happened</h2><p>After debugging builds, testing containers, and validating runtime behaviour, the outcome was surprisingly simple:</p><p>Only one of our four Lambda functions could run on Graviton.</p><p>Not because Graviton failed.<br>But because our assumptions did.</p><p>The deduplication function &#8212; small, CPU-bound, dependency-light &#8212; migrated cleanly. It behaved exactly as promised and delivered the expected cost savings.</p><p>Everything else stopped us, each in a different way.</p><p>The RAW processing stage collapsed under native dependency issues. The ML scoring stage raised too many unanswered questions about performance and stability. The GPU-backed stage never had a path in the first place.</p><p>The pattern wasn&#8217;t random. It was consistent.</p><div><hr></div><h2>The Moment the Model Broke</h2><p>At some point during the migration, the question shifted.</p><p>We stopped asking:</p><blockquote><p>&#8220;Why isn&#8217;t Graviton working?&#8221;</p></blockquote><p>And started asking:</p><blockquote><p>&#8220;Why does this work for AWS, but not for us?&#8221;</p></blockquote><p>That question turned out to be the real story.</p><div><hr></div><h2>AWS Isn&#8217;t Using Graviton the Way You Are</h2><p>When AWS says services like S3 or RDS run on Graviton, it&#8217;s easy to assume you&#8217;re playing the same game.</p><p>You&#8217;re not!</p><p>AWS builds those systems with full control over:</p><ul><li><p>the language runtime</p></li><li><p>the dependency graph</p></li><li><p>the compiled binaries</p></li><li><p>the performance tuning</p></li><li><p>the execution model</p></li></ul><p>They are not dealing with fragile Python bindings, missing wheels, or uncertain ML performance characteristics. They are not discovering at deploy time that a C-extension doesn&#8217;t compile on ARM64.</p><p>They removed the entire class of problems before Graviton ever entered the picture.</p><p>We, on the other hand, inherit those problems by default.</p><p>That is the difference.</p><div><hr></div><h2>The Real Constraint Isn&#8217;t Hardware</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ksJd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ksJd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ksJd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ksJd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ksJd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ksJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2478175,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193765528?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ksJd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!ksJd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!ksJd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!ksJd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f167afb-fc91-45ac-bd05-c649a4973e9c_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Graviton works.</p><p>The cost advantages are real. The performance gains are real.</p><p>But those benefits only show up when your software stack allows them to.</p><p>In our case, the limiting factor was not compute. It was the ecosystem:</p><ul><li><p>Native dependencies that don&#8217;t support ARM64 cleanly</p></li><li><p>ML workloads without production-grade ARM benchmarks</p></li><li><p>GPU requirements that lock entire stages to x86</p></li></ul><p>None of these are edge cases. They are normal parts of a modern ML pipeline.</p><p>Which leads to an uncomfortable but important conclusion:</p><blockquote><p><strong>Graviton adoption is not a hardware decision. It is an ecosystem decision.</strong></p></blockquote><div><hr></div><h2>The Economics That Didn&#8217;t Scale</h2><p>We did get Graviton working &#8212; just not where it mattered most.</p><p>The deduplication stage migrated cleanly and delivered cost savings. But it was also one of the least expensive parts of the pipeline.</p><p>The expensive parts &#8212; RAW processing, ML inference, GPU workloads &#8212; stayed exactly where they were.</p><p>So while Graviton worked technically, the overall impact was small.</p><p>Not because the savings were fake, but because the <strong>wrong parts of the system were portable</strong>.</p><div><hr></div><h2>What We Learned the Hard Way</h2><p>Looking back, the mistake wasn&#8217;t trying Graviton. That was the right call.</p><p>The mistake was assuming that infrastructure capability translates directly into application readiness.</p><p>It doesn&#8217;t.</p><p>A system is only as portable as its most fragile dependency. And in ML pipelines, those dependencies tend to run deep &#8212; often below the level where you first notice them.</p><p>We also learned that architectural decisions should start from reality, not optimism. It is far easier to selectively adopt ARM64 where it works than to force it everywhere and backtrack.</p><p>And most importantly, we learned that <strong>partial adoption is not failure</strong>. It is often the correct outcome.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uXci!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uXci!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!uXci!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!uXci!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!uXci!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uXci!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1824831,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193765528?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uXci!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!uXci!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!uXci!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!uXci!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06629d02-1c70-4745-9f43-dc5e0f302ef7_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>A Better Mental Model</h2><p>If there is one thing I would carry forward from this experience, it is this:</p><p>Do not ask:</p><blockquote><p>&#8220;Can I move my system to Graviton?&#8221;</p></blockquote><p>Ask instead:</p><blockquote><p>&#8220;Which parts of my system are already compatible with Graviton?&#8221;</p></blockquote><p>That subtle shift changes everything.</p><p>Because once you frame the problem that way, the answer becomes obvious much earlier &#8212; and with far less wasted effort.</p><div><hr></div><h2>The Ending That Actually Makes Sense</h2><p>We migrated one out of four functions.</p><p>That number sounds underwhelming until you understand what it represents.</p><p>It represents the boundary between what our system <em>wanted</em> to be and what it <em>actually was</em>. It represents the difference between infrastructure capability and ecosystem readiness. It represents an architecture that now reflects reality instead of assumptions.</p><p>And in the long run, that is a much more valuable outcome than forcing a full migration that never quite fits.</p><p>Graviton is not the wrong tool.</p><p>But like most powerful tools, it only works when the rest of the system is ready for it.</p><div><hr></div><h2><strong>&#128218; Further Reading &amp; References</strong></h2><h3>AWS Foundations (What AWS Tells You)</h3><p>Start here to understand the official narrative and supported capabilities:</p><ul><li><p><strong>AWS Graviton Overview</strong><br><a href="https://aws.amazon.com/ec2/graviton/">https://aws.amazon.com/ec2/graviton/</a></p></li><li><p><strong>AWS Lambda &#8211; ARM64 Architecture Support</strong><br><a href="https://docs.aws.amazon.com/lambda/latest/dg/foundation-arch.html">https://docs.aws.amazon.com/lambda/latest/dg/foundation-arch.html</a></p></li><li><p><strong>Amazon EC2 Graviton Instances (C6g, C7g, etc.)</strong><br><a href="https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-type-specifications.html">https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-type-specifications.html</a></p></li><li><p><strong>AWS Fargate ARM64 Support</strong><br><a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-arm64.html">https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-arm64.html</a></p></li></ul><p>These give you the &#8220;happy path&#8221; &#8212; where workloads are expected to benefit from ARM.</p><div><hr></div><h3>AWS Engineering Blogs (What AWS Actually Does)</h3><p>These are far more practical than product pages:</p><ul><li><p><strong>Best Practices for Running Applications on AWS Graviton</strong><br><a href="https://aws.amazon.com/blogs/compute/best-practices-for-running-applications-on-aws-graviton-processors/">https://aws.amazon.com/blogs/compute/best-practices-for-running-applications-on-aws-graviton-processors/</a></p></li><li><p><strong>Migrating to AWS Graviton2: Performance and Cost</strong><br><a href="https://aws.amazon.com/blogs/compute/migrating-to-graviton2/">https://aws.amazon.com/blogs/compute/migrating-to-graviton2/</a></p></li><li><p><strong>Optimizing Workloads for ARM-Based EC2 Instances</strong><br><a href="https://aws.amazon.com/blogs/architecture/optimizing-applications-for-arm64/">https://aws.amazon.com/blogs/architecture/optimizing-applications-for-arm64/</a></p></li></ul><p>If you read closely, you&#8217;ll notice something important:<br>Most examples assume <strong>tight control over dependencies and runtime</strong>.</p><div><hr></div><h3>ML Ecosystem Reality (What You Actually Face)</h3><p>This is where things diverge from AWS expectations:</p><ul><li><p><strong>PyTorch ARM64 Support</strong><br><a href="https://pytorch.org/get-started/locally/">https://pytorch.org/get-started/locally/</a></p></li><li><p><strong>ONNX Runtime (ARM builds)</strong><br><a href="https://onnxruntime.ai/docs/build/eps.html">https://onnxruntime.ai/docs/build/eps.html</a></p></li><li><p><strong>Hugging Face Transformers</strong><br><a href="https://huggingface.co/docs/transformers/index">https://huggingface.co/docs/transformers/index</a></p></li></ul><p>These tools <em>work</em> on ARM &#8212; but production characteristics (latency, memory, stability) are often undocumented.</p><div><hr></div><h3>The Hard Boundary: GPU</h3><ul><li><p><strong>NVIDIA CUDA Platform</strong><br><a href="https://developer.nvidia.com/cuda-zone">https://developer.nvidia.com/cuda-zone</a></p></li></ul><p>If your pipeline depends on CUDA, that stage remains tied to x86_64 in most production setups.</p><div><hr></div><h3>A Practical Way to Evaluate Graviton</h3><p>Before committing to migration:</p><ul><li><p>Spin up a <strong>Graviton EC2 instance (e.g., c7g.medium)</strong></p></li><li><p>Install your full dependency stack</p></li><li><p>Run your real workload (not a toy benchmark)</p></li><li><p>Measure cold start, latency, and throughput</p></li></ul><p>This single step is more valuable than hours of reading.</p><div><hr></div><h2>Closing Thought</h2><p>AWS documentation shows you what Graviton <em>can</em> do.</p><p>Your system will show you what it <em>actually allows</em>.</p><p>The difference between those two is where architecture decisions are made.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cSs2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cSs2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 424w, https://substackcdn.com/image/fetch/$s_!cSs2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 848w, https://substackcdn.com/image/fetch/$s_!cSs2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!cSs2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cSs2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png" width="1024" height="1376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1376,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3487288,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193765528?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d2325fe-21fc-4500-8b34-7c446bf90381_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cSs2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 424w, https://substackcdn.com/image/fetch/$s_!cSs2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 848w, https://substackcdn.com/image/fetch/$s_!cSs2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 1272w, https://substackcdn.com/image/fetch/$s_!cSs2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc27964b1-2343-47d6-98b3-d29f203e1725_1024x1376.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Building with Opus 4.6]]></title><description><![CDATA[What 1M Context Actually Looks Like in Production ML Infrastructure]]></description><link>https://blog.phagyul.ai/p/building-with-opus-46</link><guid isPermaLink="false">https://blog.phagyul.ai/p/building-with-opus-46</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 06 Apr 2026 05:22:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zPrW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="pullquote"><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zPrW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zPrW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zPrW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zPrW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zPrW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zPrW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:768465,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193306186?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zPrW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zPrW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zPrW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zPrW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6dc6f2e7-45c2-4dec-a969-9b9528a09601_1508x1005.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Parjanya 2.0 &#8212; an AI-powered photography curation platform that combines CLIP-IQA for real-time scoring with Qwen3-VL-8B for deep visual understanding. </p><p>Today I would like to delve into the tooling story: how a single developer, working across five repositories, multiple AWS services, and a custom ML inference pipeline, managed to ship the entire VLM integration in under two weeks. I had been using various AI coding assistants for months. But this build was different. This was the first time I felt like I had a genuine engineering partner &#8212; one that could hold the full architecture in its head across multi-hour debugging sessions, reason about GPU memory layouts, and catch serialization bugs buried three abstraction layers deep. </p><p>This post is about what I learned using Claude Opus 4.6 with its 1M token context window for production ML infrastructure work. Not benchmarks. Not synthetic tests. Real observations from a real build, with real production failures at 2 AM.</p></div><h2>The Build: What Is Being Built</h2><p>Parjanya&#8217;s VLM pipeline is a SageMaker Batch Transform system that runs nightly inference on thousands of wildlife and nature photographs. </p><blockquote><p><em>The model &#8212; <strong>Qwen3-VL-8B-Instruct</strong> &#8212; evaluates each image for quality, composition techniques (rule of thirds, leading lines, symmetry), and generates natural-language descriptions. The results feed back into DynamoDB and surface in a React frontend with a two-track pipeline visualization.</em></p></blockquote><h4>The infrastructure spans five repositories:</h4><p>- *<strong>*parjanya-ml*</strong>* &#8212; Lambda handlers, SageMaker container, IQA engine, batch orchestration </p><p>- **<strong>parjanya-frontend</strong>** &#8212; React + Vite with VLM enrichment UI, pipeline status, score panels </p><p>- **<strong>parjanya-backend*</strong>* &#8212; FastAPI with DynamoDB integration </p><p>- **<strong>parjanya-ops*</strong>* &#8212; Terraform modules for IAM, networking, storage </p><p>- **<strong>parjanya-shared-libraries*</strong>* &#8212; Python package with schemas and constants</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:182407614,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/parjanyas-polyrepo-architecture-building&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Parjanya&#8217;s Polyrepo Architecture: Building Scalable AI/LLM Products with Organizational Autonomy (Part 1)&quot;,&quot;truncated_body_text&quot;:&quot;After shipping Parjanya v1.0 through v1.3 (with 17+ patch releases), we&#8217;ve evolved from monolithic friction to a deliberate five-repository polyrepo architecture aligned with team structure and technical boundaries. This post documents our research-driven thought process, the specific tech stack (Nx frontend, FastAPI microservices, PyTorch + MIT-license&#8230;&quot;,&quot;date&quot;:&quot;2025-12-23T12:34:44.703Z&quot;,&quot;like_count&quot;:0,&quot;comment_count&quot;:0,&quot;bylines&quot;:[],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/parjanyas-polyrepo-architecture-building?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Parjanya&#8217;s Polyrepo Architecture: Building Scalable AI/LLM Products with Organizational Autonomy (Part 1)</div></div><div class="embedded-post-body">After shipping Parjanya v1.0 through v1.3 (with 17+ patch releases), we&#8217;ve evolved from monolithic friction to a deliberate five-repository polyrepo architecture aligned with team structure and technical boundaries. This post documents our research-driven thought process, the specific tech stack (Nx frontend, FastAPI microservices, PyTorch + MIT-license&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago</div></a></div><p>Getting a custom Docker container with a quantized 8-billion parameter VLM running on SageMaker Batch Transform involved touching every single one of these repositories. The changes cascaded: the inference script needed GPU-aware dtype selection, the Dockerfile needed pinned dependency versions, the batch trigger Lambda needed DynamoDB Decimal serialization, the poller needed composition field propagation, the frontend needed new TypeScript interfaces, and the Terraform modules needed updated IAM policies.</p><p>This is the kind of cross-cutting work where context is everything.</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:183157310,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/aws-graviton4-vs-intel-x86-from-10&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;AWS Graviton4 vs Intel x86: From $10 POC to Production Validation&quot;,&quot;truncated_body_text&quot;:&quot;The Journey Begins: Why We Needed to Validate&quot;,&quot;date&quot;:&quot;2026-01-01T17:43:42.193Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/aws-graviton4-vs-intel-x86-from-10?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">AWS Graviton4 vs Intel x86: From $10 POC to Production Validation</div></div><div class="embedded-post-body">The Journey Begins: Why We Needed to Validate&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 2 likes</div></a></div><h2>The 1M Context Window: What It Actually Means in Practice</h2><blockquote><p><em>Let me be direct about something: I used ~10% of the 1M context window in any given session. That number sounds damning until you understand what it represents!</em></p></blockquote><h3>It Is Not About Filling the Window</h3><p>The 1M context window is not a bucket you fill. It is a safety net that changes how you work. With a 128K or even 200K window, you are constantly managing context &#8212; summarizing, re-explaining, re-pasting code. You develop an anxiety about context loss. You start breaking problems into artificially small pieces not because the problem demands it, but because your tool demands it. </p><p><em><strong>With 1M tokens, that anxiety disappears. And its absence changes your behaviour in ways I did not expect:</strong></em> </p><p>You stop pre-optimizing your prompts. Instead of carefully crafting minimal context windows, you just work. Paste the full Dockerfile. Include the entire inference script. Share the complete CloudWatch log dump. The model handles it. </p><p>Debugging sessions become continuous. Our VLM deployment failed eight times before succeeding. Each failure was a different root cause &#8212; <em>OCI manifests, S3 permissions, Decimal serialization, instance quotas, transformers version drift, missing torchvision, BF16-on-T4 memory overflow, and finally, CPU offloading performance</em>. </p><p>In a smaller context window, I would have lost the thread by failure three. With 1M, the model remembered every previous fix attempt and could reason about why this failure was different from the last. </p><p>Cross-repository reasoning becomes natural. When debugging why the batch trigger submitted zero images despite 4,942 records being in DynamoDB, the model held the Lambda handler code, the DynamoDB schema, the JSONL manifest format, and the CloudWatch error logs simultaneously. The root cause &#8212; Python&#8217;s `<code>json.dumps</code>` choking on DynamoDB&#8217;s `<code>Decimal</code>` type &#8212; was buried three abstraction layers deep. Finding it required connecting dots across files that no human would hold in working memory at once.</p><h3>The Session Continuity Effect</h3><p>Perhaps the most under appreciated aspect of 1M context is session continuity. When I hit the context limit after a particularly dense debugging session, the model generated a comprehensive session summary that captured not just what we had done, but the state of every in-flight problem. The next session picked up exactly where we left off &#8212; no re-explanation, no context rebuilding, no lost nuance.</p><p>This matters enormously for ML infrastructure work where debugging is inherently stateful. The GPU memory calculation that informed our quantization decision depended on understanding six previous failed deployments. Strip that history away, and you lose the reasoning chain.</p><h2>Opus 4.6 for ML Infrastructure: Where It Excelled</h2><h3>GPU Memory Reasoning</h3><p>The single most impressive moment in this build was the 4-bit quantization diagnosis. The VLM container was running &#8212; inference was succeeding &#8212; but each image took eight minutes instead of the expected thirty seconds. The CloudWatch logs showed a single warning line buried among hundreds of info messages:</p><p><code>WARNING Some parameters are on the meta device because they were offloaded to the cpu.</code></p><p>Opus immediately understood the implication chain: Qwen3-VL-8B in FP16 consumes approximately 16GB (8 billion parameters at 2 bytes each). The T4 GPU has exactly 16GB VRAM. That leaves zero headroom for the KV cache and attention buffers. Hugging Face&#8217;s `<code>accelerate</code>` library, configured with `<code>device_map=&#8221;auto&#8221;`</code>, silently offloads overflow laye<code>s to CPU. </code>CPU inference is orders of magnitude slower. Therefore, the fix is not a timeout adjustment or a retry &#8212; it is a fundamental memory reduction via 4-bit NF4 quantization.</p><p>This was not a lookup. It was multi-step reasoning across hardware specifications, library behaviour, model architecture, and deployment configuration. The model then produced a complete `<code>BitsAndBytesConfig</code>` with parameter-by-parameter justification &#8212; <em>why NF4 over FP4, why double quantization, why float16 compute dtype specifically for the T4&#8217;s lack of native BF16 support.</em></p><blockquote><p>The result: <strong>13x speedup</strong>. Eight minutes per image dropped to thirty-eight seconds. The entire batch cost projection went from an impractical $340 down to $27.</p></blockquote><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;f5ca94b6-07fa-489a-84b5-e2d8653bf16f&quot;,&quot;caption&quot;:&quot;Date: 4 April 2026&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;lg&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;VLM Batch Inference &#8212; 4-bit Quantization Deep Dive&quot;,&quot;publishedBylines&quot;:[{&quot;id&quot;:12091074,&quot;name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;bio&quot;:&quot;Building rooted intelligence &#129504; &#127909; &#127793;&quot;,&quot;photo_url&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbd24c4-e9ca-4d07-9320-d1c105eb38c8_1085x1085.jpeg&quot;,&quot;is_guest&quot;:false,&quot;bestseller_tier&quot;:null}],&quot;post_date&quot;:&quot;2026-04-04T01:56:20.505Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!ZcuJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/vlm-batch-inference-4-bit-quantization&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:193130117,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><h3>Dependency Chain Debugging</h3><p>ML infrastructure has notoriously deep dependency chains. Our container failed five times before reaching the performance issue, each time for a completely different reason. Opus tracked the full history and used it productively:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uJrF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uJrF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 424w, https://substackcdn.com/image/fetch/$s_!uJrF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 848w, https://substackcdn.com/image/fetch/$s_!uJrF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 1272w, https://substackcdn.com/image/fetch/$s_!uJrF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uJrF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png" width="1495" height="736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:736,&quot;width&quot;:1495,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1704417,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193306186?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffeca3719-5f70-4bce-af77-d6d619a461ed_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uJrF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 424w, https://substackcdn.com/image/fetch/$s_!uJrF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 848w, https://substackcdn.com/image/fetch/$s_!uJrF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 1272w, https://substackcdn.com/image/fetch/$s_!uJrF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02f1c23c-4745-47fa-9e5c-36d150dc2ac3_1495x736.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>By attempt five, a smaller context model would have lost the thread of attempts one through four. Opus used the full failure history to eliminate hypotheses. When the `<em>AutoProcessor</em>` crashed, it did not suggest re-checking S3 permissions &#8212; it knew those were already fixed. It went straight to the `<code>transformers</code>` version as the novel variable.</p><h3>Cross-Repository Code Generation</h3><p>When we added composition analysis (<em>detecting</em> <em>rule of thirds, leading lines, symmetry</em>, <em>etc</em>.), the change touched four repositories simultaneously: the VLM inference prompt, the batch poller&#8217;s field propagation, the frontend TypeScript interfaces, and the React visualization components. Opus generated all four changes in a single coherent pass, with the field names aligned across Python, DynamoDB, and TypeScript &#8212; no mismatches, no forgotten fields.</p><h3>The Model Tier Strategy: Opus, Sonnet, and Haiku</h3><p>I did not use Opus exclusively. Over the course of the build, I developed an informal tiering strategy based on task complexity:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4Vn-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4Vn-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 424w, https://substackcdn.com/image/fetch/$s_!4Vn-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 848w, https://substackcdn.com/image/fetch/$s_!4Vn-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 1272w, https://substackcdn.com/image/fetch/$s_!4Vn-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4Vn-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png" width="1536" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1063674,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193306186?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8f4f963-a83c-4666-bc5c-0a082b90c5ba_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4Vn-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 424w, https://substackcdn.com/image/fetch/$s_!4Vn-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 848w, https://substackcdn.com/image/fetch/$s_!4Vn-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 1272w, https://substackcdn.com/image/fetch/$s_!4Vn-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9df35280-ff29-4ec4-bb51-2d8ce25bbee2_1536x453.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>The critical observation:</strong> Sonnet 4.6, even with 1M context, was noticeably less effective for operations-heavy tasks like debugging SageMaker deployment failures or reasoning about GPU memory hierarchies. It would sometimes suggest re-trying the same approach that had already failed, or miss the implication of a warning message that Opus caught immediately. For pure code generation &#8212; writing a React component, implementing a Lambda handler &#8212; Sonnet was efficient. But for the diagnostic work that dominated this build, Opus was the difference between a one-hour fix and a one-day rabbit hole.</p><p>Haiku served a narrow but valuable role: quick validation checks. &#8220;<em><strong>Is this the right AWS CLI flag?</strong></em>&#8221; &#8220;<em><strong>What&#8217;s the torchvision version that matches torch 2.5.1?</strong></em>&#8221; For these atomic lookups, Haiku&#8217;s speed justified the quality tradeoff.</p><p>My rough allocation across the build: Opus handled about 80% of the work, Sonnet about 15% (mainly frontend component generation), and Haiku about 5% (quick checks during debugging). against originally planned in the month of January 2026</p><div class="embedded-post-wrap" data-attrs="{&quot;id&quot;:183758575,&quot;url&quot;:&quot;https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default&quot;,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:null,&quot;title&quot;:&quot;Why you should chose Haiku as Default model and escalate if needed&quot;,&quot;truncated_body_text&quot;:&quot;EXECUTIVE SUMMARY&quot;,&quot;date&quot;:&quot;2026-01-07T06:43:52.861Z&quot;,&quot;like_count&quot;:2,&quot;comment_count&quot;:0,&quot;bylines&quot;:[],&quot;utm_campaign&quot;:null,&quot;belowTheFold&quot;:true,&quot;type&quot;:&quot;newsletter&quot;,&quot;language&quot;:&quot;en&quot;,&quot;source&quot;:null}" data-component-name="EmbeddedPostToDOM"><a class="embedded-post" native="true" href="https://jagadeeshrampam.substack.com/p/why-you-should-chose-haiku-as-default?utm_source=substack&amp;utm_campaign=post_embed&amp;utm_medium=web"><div class="embedded-post-header"><span></span><span class="embedded-post-publication-name">Jagadeesh Rampam</span></div><div class="embedded-post-title-wrapper"><div class="embedded-post-title">Why you should chose Haiku as Default model and escalate if needed</div></div><div class="embedded-post-body">EXECUTIVE SUMMARY&#8230;</div><div class="embedded-post-cta-wrapper"><span class="embedded-post-cta">Read more</span></div><div class="embedded-post-meta">5 months ago &#183; 2 likes</div></a></div><h2>Claude Code vs. Cowork: A Solo Developer&#8217;s Perspective</h2><p>I used both Claude Code (the CLI tool) and Cowork (the desktop agent) during this build. My experience as a solo developer working on poly-repo infrastructure was nuanced.</p><h3>Where Cowork Felt Right</h3><p>Visual task tracking. The todo list widget showing task progress was genuinely useful for multi-step deployments. When you are running through a seven-step build-push-deploy-submit cycle, visual confirmation of what is done and what is next reduces cognitive load. </p><p>File creation workflow. Generating documentation, cost spreadsheets, and configuration files felt natural in Cowork&#8217;s file-oriented interface. The ability to create and present files with download links was seamless. </p><p>Conversational debugging. Pasting CloudWatch logs, discussing error messages, iterating on solutions &#8212; the chat interface was more comfortable than a terminal for this back-and-forth.</p><h3>Where It Hit Limits</h3><p>Sandbox isolation. Cowork runs in a sandboxed environment. It cannot access local environment variables, AWS credentials, or push to GitHub directly. For infrastructure automation &#8212; where the whole point is interacting with external services &#8212; this creates friction. Every Docker push, every SageMaker API call, every git operation required copying commands to a terminal. The sandbox is a sensible security boundary, but for a solo developer doing infra work, it adds a context-switching tax. </p><p>No persistent shell state. Environment variables set in one Bash invocation do not persist to the next. For infrastructure work where you are building up state (`JOB_NAME`, `ACCOUNT_ID`, container digests), this means re-setting variables or passing them inline every time. Network restrictions. The sandbox cannot reach GitHub, AWS, or Docker registries directly. This is by design &#8212; security &#8212; but it means Cowork excels at reasoning and code generation while the developer handles execution. For pure software engineering (writing code, designing architectures), this split works. For DevOps/MLOps where execution is the work, it is more limiting.</p><h3>The Verdict</h3><p>For poly-repo infrastructure work as a solo developer, I would recommend Cowork for planning, code generation, documentation, and debugging analysis &#8212; then Claude Code or manual terminal work for execution. The combination leverages each tool&#8217;s strengths. Cowork&#8217;s 1M context and visual interface for the thinking; your terminal&#8217;s full system access for the doing.</p><h2>Best Practices: Getting the Most from 1M Context</h2><p>After this build, I have developed a set of practices specifically for leveraging large context windows in complex infrastructure projects:</p><h3>1. Do Not Summarize Prematurely</h3><p>The instinct from smaller-context models is to summarize aggressively. Resist it. When debugging a SageMaker deployment, the raw CloudWatch logs &#8212; all of them &#8212; are more valuable than a summary. The model can pattern-match across hundreds of log lines in ways that summaries destroy. I found that pasting full error outputs, complete Dockerfiles, and entire handler files produced dramatically better results than curated snippets.</p><h3>2. Let Failures Accumulate in Context</h3><p>Our eight-attempt deployment journey would have been impossible to navigate without the full failure history in context. Each failure informed the next diagnosis. When the model could see that attempts one through four had already ruled out permissions, serialization, and quota issues, it could focus attempt five on the novel variable (library version). This cumulative elimination process is the 1M window&#8217;s killer feature for debugging.</p><h3>3. Work in Long Sessions for Complex Problems</h3><p>Context windows reward sustained engagement. A two-hour debugging session where the model accumulates understanding of your infrastructure is far more productive than five separate twenty-minute sessions that each start cold. The model develops what I can only describe as situational awareness &#8212; it knows your AWS account structure, your naming conventions, your DynamoDB key schema, which fixes have already been applied. This accumulated context is irreplaceable.</p><h3>4. Use the Full Poly-Repo Context</h3><p>Do not silo your work by repository. When I shared both the Python inference script and the TypeScript frontend interface in the same session, the model generated perfectly aligned field names across languages. When I included the Terraform IAM policy alongside the SageMaker deployment script, it caught permission gaps before they became runtime errors. The 1M window exists precisely for this kind of cross-cutting visibility.</p><h3>5. Document as You Go, Not After</h3><p>With the full build context available, the model generates remarkably accurate documentation. Our optimization deep-dive &#8212; covering the problem statement, root cause analysis, solution, performance comparison, and the complete deployment journey &#8212; was generated from the live session context. Every number, every timing, every error message was drawn from actual CloudWatch logs still in the conversation. Waiting to document after the session would have lost this fidelity.</p><h3>6. Match Model Tier to Task Complexity</h3><p>Not every task needs Opus. Use Haiku for quick lookups, Sonnet for straightforward code generation, and reserve Opus for the hard problems: multi-step debugging, architecture decisions, cross-repository changes, and performance optimization. This is not just about cost &#8212; it is about matching the model&#8217;s reasoning depth to the problem&#8217;s reasoning requirements.</p><h2>The Quantization Story: Why This Needed Opus</h2><p><strong>I want to close with the optimization that made the entire pipeline viable, because I genuinely doubt it would have happened &#8212; or at least, not this efficiently &#8212; without Opus 4.6&#8217;s reasoning capabilities. </strong></p><blockquote><p><em>The problem: our VLM batch inference was technically working but taking eight minutes per image. At that rate, processing 5,000 images would take 27 days and cost over $300. The pipeline was functionally useless.</em> </p></blockquote><p>A less capable model might have suggested increasing the instance size, adding more memory, or splitting the batch into smaller chunks. These are reasonable suggestions that would have been wrong and a bomb(costs). The T4 GPU had enough raw compute &#8212; the issue was memory layout, not compute capacity. </p><p>Opus identified the real problem from a single log line, traced the implication chain through PyTorch&#8217;s memory management, Hugging Face&#8217;s `accelerate` library, and the T4&#8217;s hardware capabilities, then prescribed a specific quantization configuration with four interdependent parameters &#8212; each chosen for a concrete technical reason tied to our specific GPU. </p><p>The result was not incremental. It was a 13x speedup that transformed the pipeline from impractical to production-ready. The batch now runs in roughly 52 hours for $27. That is the kind of optimization that comes from deep technical reasoning, not pattern matching.</p><div><hr></div><h2>Looking Forward</h2><p>Parjanya 2.0&#8217;s VLM batch is currently processing its first successful run as I write this &#8212; 4,942 images, ticking along at 38 seconds each, zero errors. The composition analysis, the quality assessments, the natural-language descriptions are all flowing into DynamoDB, ready for the frontend to surface. </p><p>What strikes me most about this build is not any single technical achievement. It is the shift in how I worked. For the first time, the limiting factor in a complex infrastructure project was not context management, re-explanation, or lost thread. It was the actual engineering problems. And with 1M tokens of context, even those became more tractable than I expected. </p><p>The 1M context window does not make hard problems easy. It makes hard problems addressable by removing the artificial constraint of forgetting. In ML infrastructure work, where every failure builds on the last and every fix informs the next, that is the difference between shipping and stalling.</p><div><hr></div><h2>&#128218; Further Reading &amp; References</h2><h3>&#129504; Large Context Models &amp; Reasoning</h3><ul><li><p><strong>Anthropic &#8212; Claude System Card &amp; Capabilities</strong><br><a href="https://www.anthropic.com/news/claude-3-family">https://www.anthropic.com/news/claude-3-family</a></p></li><li><p><strong>Lost in the Middle: How Language Models Use Long Contexts &#8212; Liu et al. (2023)</strong><br><a href="https://arxiv.org/abs/2307.03172">https://arxiv.org/abs/2307.03172</a></p></li><li><p><strong>RoPE (Rotary Position Embeddings)</strong><br><a href="https://arxiv.org/abs/2104.09864">https://arxiv.org/abs/2104.09864</a></p></li><li><p><strong>ALiBi: Train Short, Test Long</strong><br><a href="https://arxiv.org/abs/2108.12409">https://arxiv.org/abs/2108.12409</a></p></li></ul><div><hr></div><h3>&#9881;&#65039; Quantization &amp; Efficient Inference</h3><ul><li><p><strong>QLoRA: Efficient Finetuning of Quantized LLMs</strong><br><a href="https://arxiv.org/abs/2305.14314">https://arxiv.org/abs/2305.14314</a></p></li><li><p><strong>BitsAndBytes Documentation</strong><br><a href="https://github.com/TimDettmers/bitsandbytes">https://github.com/TimDettmers/bitsandbytes</a></p></li><li><p><strong>HuggingFace Accelerate &#8212; Big Model Inference</strong><br><a href="https://huggingface.co/docs/accelerate/main/en/usage_guides/big_modeling">https://huggingface.co/docs/accelerate/main/en/usage_guides/big_modeling</a></p></li><li><p><strong>AWQ (Activation-aware Weight Quantization)</strong><br><a href="https://arxiv.org/abs/2306.00978">https://arxiv.org/abs/2306.00978</a></p></li><li><p><strong>GPTQ: Accurate Post-Training Quantization</strong><br><a href="https://arxiv.org/abs/2210.17323">https://arxiv.org/abs/2210.17323</a></p></li></ul><div><hr></div><h3>&#128444;&#65039; Vision-Language Models (VLMs)</h3><ul><li><p><strong>Qwen-VL Technical Report</strong><br><a href="https://arxiv.org/abs/2308.12966">https://arxiv.org/abs/2308.12966</a></p></li><li><p><strong>CLIP: Learning Transferable Visual Models &#8212; OpenAI</strong><br><a href="https://arxiv.org/abs/2103.00020">https://arxiv.org/abs/2103.00020</a></p></li><li><p><strong>BLIP-2: Bootstrapping Language-Image Pretraining</strong><br><a href="https://arxiv.org/abs/2301.12597">https://arxiv.org/abs/2301.12597</a></p></li></ul><div><hr></div><h3>&#9729;&#65039; ML Infrastructure &amp; SageMaker</h3><ul><li><p><strong>AWS SageMaker Batch Transform</strong><br><a href="https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html">https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html</a></p></li><li><p><strong>AWS ML Pipelines &#8212; Prescriptive Guidance</strong><br><a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/ml-ops-pipelines/welcome.html">https://docs.aws.amazon.com/prescriptive-guidance/latest/ml-ops-pipelines/welcome.html</a></p></li><li><p><strong>Docker Image Manifest V2 vs OCI</strong><br><a href="https://docs.docker.com/registry/spec/manifest-v2-2/">https://docs.docker.com/registry/spec/manifest-v2-2/</a></p></li><li><p><strong>DynamoDB Data Types &amp; JSON Serialization</strong><br><a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html">https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html</a></p></li></ul><div><hr></div><h3>&#129513; Debugging Distributed &amp; ML Systems</h3><ul><li><p><strong>Designing Data-Intensive Applications &#8212; Martin Kleppmann </strong><a href="https://dataintensive.net">https://dataintensive.net</a></p></li><li><p><strong>Google SRE Book</strong><br><a href="https://sre.google/sre-book/table-of-contents/">https://sre.google/sre-book/table-of-contents/</a></p></li><li><p><strong>The Tail at Scale &#8212; Dean &amp; Barroso</strong><br><a href="https://research.google/pubs/pub40801/">https://research.google/pubs/pub40801/</a></p></li></ul><div><hr></div><h3>&#9889; GPU Systems &amp; Performance</h3><ul><li><p><strong>NVIDIA T4 Architecture Overview</strong><br><a href="https://www.nvidia.com/en-us/data-center/tesla-t4/">https://www.nvidia.com/en-us/data-center/tesla-t4/</a></p></li><li><p><strong>PyTorch CUDA Memory Management</strong><br><a href="https://pytorch.org/docs/stable/notes/cuda.html">https://pytorch.org/docs/stable/notes/cuda.html</a></p></li></ul><div><hr></div><h3>&#129514; Real-World Engineering Blogs</h3><ul><li><p><strong>HuggingFace Blog</strong><br><a href="https://huggingface.co/blog">https://huggingface.co/blog</a></p></li><li><p><strong>AWS Machine Learning Blog</strong><br><a href="https://aws.amazon.com/blogs/machine-learning/">https://aws.amazon.com/blogs/machine-learning/</a></p></li><li><p><strong>BitsAndBytes / Tim Dettmers Work</strong><br><a href="https://timdettmers.com">https://timdettmers.com</a></p><p></p></li></ul><blockquote><p>If you're building ML infrastructure in production, these resources go far beyond benchmarks &#8212; they explain the failure modes, trade-offs, and system behaviors that actually determine whether your pipeline ships or stalls.</p></blockquote>]]></content:encoded></item><item><title><![CDATA[VLM Batch Inference — 4-bit Quantization Deep Dive]]></title><description><![CDATA[&#129504; From 8 Minutes to 38 Seconds: Fixing VLM Inference with 4-bit NF4 Quantization]]></description><link>https://blog.phagyul.ai/p/vlm-batch-inference-4-bit-quantization</link><guid isPermaLink="false">https://blog.phagyul.ai/p/vlm-batch-inference-4-bit-quantization</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Sat, 04 Apr 2026 01:56:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZcuJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p><strong>Date:</strong> 4 April 2026<br><strong>Model:</strong> Qwen3-VL-8B-Instruct<br><strong>Instance:</strong> ml.g4dn.xlarge (NVIDIA T4, 16 GB VRAM)<br><strong>Batch size:</strong> 4,942 images</p></blockquote><div><hr></div><h2>&#128204; TL;DR</h2><ul><li><p>FP16 &#8220;fit&#8221; &#8594; but caused CPU offloading</p></li><li><p>CPU offloading &#8594; 100x slowdown per layer</p></li><li><p>4-bit NF4 &#8594; solved memory + performance</p></li><li><p>bitsandbytes &#8594; made it practical</p></li><li><p>Result &#8594; <strong>13x faster, 12x cheaper, production viable</strong></p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZcuJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2944234,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193130117?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!ZcuJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1eefc626-3dfb-40a0-ac6d-e6c7b79d7cca_1024x1536.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>&#128680; The Problem: When &#8220;Fits in VRAM&#8221; Still Fails</h2><p>At first glance, everything looked fine.</p><ul><li><p>8B parameter model</p></li><li><p>FP16 &#8594; ~16 GB</p></li><li><p>GPU &#8594; 16 GB VRAM</p></li></ul><p><strong>It should fit. It didn&#8217;t work.</strong></p><p>We observed:</p><ul><li><p>~8 minutes per image</p></li><li><p>GPU underutilized</p></li><li><p>CPU spikes</p></li><li><p>Warning:</p></li></ul><pre><code><code>Some parameters are on the meta device because they were offloaded to the cpu.</code></code></pre><p>&#128073; The system was technically &#8220;working&#8221; &#8212; but <strong>practically unusable</strong>.</p><div><hr></div><h2>&#128269; Root Cause: The Hidden Cost of &#8220;Almost Fitting&#8221;</h2><p>The issue wasn&#8217;t model size &#8212; it was <strong>runtime memory dynamics</strong>:</p><h3>What actually happens:</h3><ol><li><p><strong>Weights (FP16)</strong> &#8594; ~16 GB</p></li><li><p><strong>KV cache + activations</strong> &#8594; +2&#8211;4 GB</p></li><li><p><strong>Available VRAM</strong> &#8594; 0 headroom</p></li><li><p><strong>Accelerate kicks in</strong> &#8594; CPU offloading</p></li><li><p><strong>Result</strong> &#8594; GPU waits on CPU &#8594; massive slowdown</p></li></ol><p>&#128161; Key insight:</p><blockquote><p>Even <strong>10&#8211;15% of layers on CPU &#8594; entire pipeline becomes CPU-bound</strong></p></blockquote><p>That&#8217;s how you get:</p><ul><li><p>GPU sitting idle</p></li><li><p>8-minute inference times</p></li></ul><div><hr></div><h2>&#9881;&#65039; The Fix: 4-bit Quantization</h2><p>Instead of scaling hardware, we changed <strong>representation</strong>.</p><p>Quantization reduces precision:</p><p>PrecisionBitsMemoryFP16161x4-bit4~0.25x</p><p>&#128073; Result: <strong>~4x reduction in VRAM</strong></p><div><hr></div><h2>&#129504; What is NF4 Quantization (and why it matters)</h2><p>NF4 (<strong>Normal Float 4-bit</strong>) is not just &#8220;smaller numbers&#8221;.</p><p>It&#8217;s <strong>distribution-aware quantization</strong>.</p><h3>Why this matters for transformers:</h3><p>Neural network weights follow a <strong>normal (Gaussian-like) distribution</strong>:</p><ul><li><p>Most values near 0</p></li><li><p>Few extreme values</p></li></ul><h3>NF4 optimizes for this:</h3><ul><li><p>Non-uniform buckets</p></li><li><p>Higher resolution near 0</p></li><li><p>Lower resolution at extremes</p></li></ul><p>&#128073; Compared to naive FP4 / INT4:</p><ul><li><p>Better information retention</p></li><li><p>Lower accuracy loss</p></li><li><p>Stable inference behavior</p></li></ul><h3>Intuition:</h3><blockquote><p>NF4 spends precision where the model actually &#8220;cares&#8221;.</p></blockquote><div><hr></div><h2>&#128295; bitsandbytes: The Enabler</h2><p>The real hero here is <code>bitsandbytes</code>.</p><h3>What it provides:</h3><ul><li><p>Drop-in quantization for Hugging Face models</p></li><li><p>4-bit (NF4, FP4) + 8-bit support</p></li><li><p>GPU-optimized kernels</p></li><li><p>Seamless integration with <code>transformers</code> + <code>accelerate</code></p></li></ul><h3>Why it&#8217;s widely used:</h3><ul><li><p>No retraining required</p></li><li><p>Works at load time</p></li><li><p>Production-friendly</p></li><li><p>Proven across LLM + VLM workloads</p></li></ul><p>&#128161; In practice:</p><blockquote><p><code>bitsandbytes</code> is what makes <strong>&#8220;run 8B models on small GPUs&#8221;</strong> actually feasible.</p></blockquote><div><hr></div><h2>&#9881;&#65039; Configuration</h2><pre><code><code>from transformers import BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_use_double_quant=True,
)</code></code></pre><h3>Key design decisions:</h3><ul><li><p><strong>NF4 over FP4</strong> &#8594; better accuracy</p></li><li><p><strong>FP16 compute</strong> &#8594; T4 compatibility</p></li><li><p><strong>Double quantization</strong> &#8594; extra memory savings</p></li></ul><div><hr></div><h2>&#128202; Results: Before vs After</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D4bZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D4bZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!D4bZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!D4bZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!D4bZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D4bZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1741577,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193130117?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D4bZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!D4bZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!D4bZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!D4bZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F283de01b-7fe4-47a3-bd54-38d632d710cc_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>&#128200; Quality Impact</h2><p>The natural question: <em>what did we lose?</em></p><h3>Observations:</h3><ul><li><p>Score variance: <strong>~1&#8211;3%</strong></p></li><li><p>Ranking preserved &#9989;</p></li><li><p>Distribution intact &#9989;</p></li><li><p>No collapse in quality bands &#9989;</p></li></ul><p>&#128073; For curation pipelines:</p><blockquote><p><strong>Relative ranking &gt; absolute precision</strong></p></blockquote><p>NF4 preserves what actually matters.</p><div><hr></div><h2>&#129514; Real Output Behavior</h2><p>Post-quantization:</p><ul><li><p>Stable latency (~38s &#177; small variance)</p></li><li><p>Healthy score distribution</p></li><li><p>No long-tail slowdowns</p></li><li><p>Zero CPU fallback</p></li></ul><p>This is what &#8220;production-ready&#8221; looks like.</p><div><hr></div><h2>&#128736;&#65039; Engineering Journey (Condensed)</h2><p>This wasn&#8217;t a one-step fix.</p><p>We hit:</p><ul><li><p>Docker manifest incompatibility</p></li><li><p>IAM permission gaps</p></li><li><p>Decimal serialization bugs</p></li><li><p>Instance quota limits</p></li><li><p>Transformers version breakage</p></li><li><p>Torchvision dependency issues</p></li><li><p>Finally &#8594; FP16 memory wall</p></li></ul><p>&#128073; The key lesson:</p><blockquote><p>Infrastructure failures often mask <strong>core ML system design issues</strong></p></blockquote><div><hr></div><h2>&#128176; Cost Implications</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cOM0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cOM0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 424w, https://substackcdn.com/image/fetch/$s_!cOM0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 848w, https://substackcdn.com/image/fetch/$s_!cOM0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 1272w, https://substackcdn.com/image/fetch/$s_!cOM0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cOM0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png" width="1536" height="795" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:795,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2925091,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/193130117?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5ab7554-6d9a-4fad-8849-621e9714b58e_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cOM0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 424w, https://substackcdn.com/image/fetch/$s_!cOM0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 848w, https://substackcdn.com/image/fetch/$s_!cOM0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 1272w, https://substackcdn.com/image/fetch/$s_!cOM0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa2551efe-05fe-43e6-96e9-6acfa11b39fa_1536x795.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>&#128640; What This Unlocks</h2><p>With 4-bit quantization:</p><ul><li><p>Run <strong>8B VLMs on T4</strong></p></li><li><p>Eliminate CPU bottlenecks</p></li><li><p>Maintain quality</p></li><li><p>Achieve production-scale throughput</p></li></ul><div><hr></div><h2>&#128302; Future Optimizations</h2><ul><li><p>A10G (24 GB) &#8594; FP16 viable</p></li><li><p>Flash Attention &#8594; 2&#8211;3x speedup</p></li><li><p>Batched inference &#8594; better utilization</p></li><li><p>GPTQ / AWQ &#8594; offline quantization</p></li><li><p>Horizontal scaling &#8594; linear throughput</p></li></ul><div><hr></div><h2>&#129504; Final Takeaway</h2><p>This wasn&#8217;t just a performance fix.</p><p>It was a mindset shift:</p><blockquote><p>&#10060; &#8220;Does the model fit in memory?&#8221;<br>&#9989; &#8220;Does the system <em>run efficiently under load</em>?&#8221;</p></blockquote><p>And the answer came from <strong>representation, not hardware</strong>.</p><div class="pullquote"><p><strong>If you&#8217;re running mid-sized models on constrained GPUs &#8212; this is not an optimization.<br>It&#8217;s a requirement.</strong></p></div><h3>&#128218; Further Reading</h3><ul><li><p><em>QLoRA: Efficient Finetuning of Quantized LLMs</em> &#8212; foundation of NF4 https://arxiv.org/abs/2305.14314</p></li><li><p>bitsandbytes documentation &#8212; practical 4-bit implementation https://github.com/bitsandbytes-foundation/bitsandbytes</p></li><li><p>Hugging Face Accelerate &#8212; device mapping and offloading https://huggingface.co/almog2441Org/Transformers</p></li><li><p>FlashAttention &#8212; memory-efficient attention https://github.com/dao-ailab/flash-attention</p></li><li><p>GPTQ / AWQ &#8212; next-gen quantization approaches (Furure versions) https://arxiv.org/abs/2210.17323 https://github.com/mit-han-lab/llm-awq</p></li></ul><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[The Silent Storage Bomb: What S3 Versioning Doesn’t Tell You]]></title><description><![CDATA[How a &#8220;safe default&#8221; quietly becomes infrastructure debt]]></description><link>https://blog.phagyul.ai/p/the-silent-storage-bomb-what-s3-versioning</link><guid isPermaLink="false">https://blog.phagyul.ai/p/the-silent-storage-bomb-what-s3-versioning</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 30 Mar 2026 11:57:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LQzB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3>TL;DR:</h3><p>Enabling S3 versioning without lifecycle rules is like turning on a faucet without a drain.</p><p>We discovered this the hard way. </p><p>A bucket that showed ~2,000 objects actually contained <strong>100,000+ hidden versions</strong>. What should&#8217;ve been a quick cleanup turned into a multi-hour purge.</p><p>This isn&#8217;t just a technical oversight.<br>It&#8217;s a new class of failure:</p><blockquote><p><strong>Infrastructure Debt &#8212; silent, compounding, and invisible until it hurts.</strong></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LQzB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LQzB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LQzB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LQzB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LQzB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LQzB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99992803-617c-4202-87d4-87fd897825ca_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1484462,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/192599908?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LQzB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LQzB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LQzB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LQzB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99992803-617c-4202-87d4-87fd897825ca_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>The Setup</h2><p>We&#8217;re building <em>Parjanya</em> &#8212; a multi-tenant image QA platform for professional photographers.</p><p>Each tenant gets:</p><ul><li><p>Their own S3 bucket</p></li><li><p>Versioning enabled (because losing originals is unacceptable)</p></li><li><p>Multiple derived assets:</p><ul><li><p>Raw uploads</p></li><li><p>Previews (200px, 800px, 2048px)</p></li><li><p>ML metadata (EXIF, embeddings, manifests)</p></li></ul></li></ul><p>Everything looked standard:</p><ul><li><p>Versioning &#9989;</p></li><li><p>Encryption &#9989;</p></li><li><p>Public access blocked &#9989;</p></li></ul><p>Ship it.</p><div><hr></div><h2>The Wake-Up Call</h2><p>Months later, we tried to clean up dev buckets for a V2 rollout.</p><p>Simple script:</p><ul><li><p><code>list-object-versions</code></p></li><li><p>Batch delete (500 at a time)</p></li></ul><p>Expected: a few minutes<br>Reality: <strong>hours</strong></p><p>Why?</p><p>Because the AWS console was lying (or rather, hiding the truth).</p><ul><li><p>Console showed: ~2,000 objects</p></li><li><p>Actual: <strong>100,000+ versions</strong></p></li></ul><p>What we found underneath:</p><ul><li><p>Non-current versions (every overwrite)</p></li><li><p>Delete markers (every delete)</p></li><li><p>Multipart leftovers</p></li></ul><p>All of them:</p><ul><li><p>Billed</p></li><li><p>Counted</p></li><li><p>Required explicit deletion</p></li></ul><div><hr></div><h2>The Hidden Mechanics</h2><p>Every S3 operation creates more than you think:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FBg3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FBg3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 424w, https://substackcdn.com/image/fetch/$s_!FBg3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 848w, https://substackcdn.com/image/fetch/$s_!FBg3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 1272w, https://substackcdn.com/image/fetch/$s_!FBg3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FBg3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png" width="1536" height="957" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:957,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2152483,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/192599908?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8aab63c8-db5b-493f-a66f-63c2f04f62fd_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FBg3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 424w, https://substackcdn.com/image/fetch/$s_!FBg3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 848w, https://substackcdn.com/image/fetch/$s_!FBg3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 1272w, https://substackcdn.com/image/fetch/$s_!FBg3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4350925a-2820-448d-83b8-265fbbf55e20_1536x957.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>None of this is visible in the default console view.</p><p>But all of it:</p><ul><li><p>Costs money</p></li><li><p>Slows operations</p></li><li><p>Complicates cleanup</p></li></ul><div><hr></div><h2>The Cost (This Is Where It Gets Real)</h2><p>Let&#8217;s quantify it.</p><p><strong>Scenario:</strong></p><ul><li><p>100,000 versions</p></li><li><p>Avg size: 5 MB</p></li></ul><p>&#8594; ~500 GB of hidden storage<br>&#8594; ~$12.50/month<br>&#8594; ~$150/year</p><p>For <em>dead data</em></p><p>Now scale it:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tQAM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tQAM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tQAM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tQAM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tQAM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tQAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2610688,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/192599908?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tQAM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!tQAM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!tQAM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!tQAM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F925f2b81-d7d9-4e9d-bf80-a8ba8ee649f5_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#128073; You&#8217;re paying <strong>8&#215; more than you think</strong></p><p>And that&#8217;s per tenant.</p><div><hr></div><h2>This Isn&#8217;t Just a Bug &#8212; It&#8217;s Debt</h2><p>We categorize this into four types:</p><div><hr></div><h3>1. Tech Debt</h3><blockquote><p>&#8220;We&#8217;ll add lifecycle rules later.&#8221;</p></blockquote><p>Later never comes.</p><ul><li><p>Versioning enabled</p></li><li><p>Cleanup missing</p></li><li><p>Cost grows silently</p></li></ul><div><hr></div><h3>2. Infrastructure Debt (The Real Killer)</h3><p>This is where it escalates:</p><ul><li><p>No lifecycle rules &#8594; storage bloat</p></li><li><p>No inventory &#8594; no visibility</p></li><li><p>No alarms &#8594; no signal</p></li><li><p>Terraform defaults &#8594; debt replication</p></li></ul><blockquote><p>Infrastructure debt doesn&#8217;t fail loudly.<br>It accumulates quietly.</p></blockquote><div><hr></div><h3>3. Context Debt</h3><p>When the original engineer leaves:</p><ul><li><p>Why is versioning enabled? &#10067;</p></li><li><p>What&#8217;s the retention policy? &#10067;</p></li><li><p>How do we purge safely? &#10067;</p></li></ul><p>Nobody knows.</p><div><hr></div><h3>4. AI Debt (Underrated)</h3><p>ML pipelines make this worse:</p><ul><li><p>EXIF outputs</p></li><li><p>Embeddings</p></li><li><p>Batch manifests</p></li></ul><p>These are:</p><ul><li><p>Frequently overwritten</p></li><li><p>Rarely reused</p></li><li><p>Fully versioned</p></li></ul><p>You end up paying long-term storage for <strong>temporary compute artifacts</strong></p><div><hr></div><h2>The Pattern (Across the Industry)</h2><p>This isn&#8217;t rare.</p><p>It&#8217;s everywhere:</p><ul><li><p>Buckets growing 5&#215; silently</p></li><li><p>Bills spiking unexpectedly</p></li><li><p>Cleanup scripts failing at scale</p></li></ul><p>The pattern is always:</p><blockquote><p>Enable versioning &#8594; forget lifecycle &#8594; discover too late</p></blockquote><div><hr></div><h2>The Fix: Lifecycle Rules (Non-Negotiable)</h2><p>We now treat lifecycle rules as mandatory.</p><h3>1. Originals &#8594; Intelligent-Tiering</h3><ul><li><p>Auto-optimize cost</p></li><li><p>Keep 2 backup versions</p></li><li><p>Expire others in 7 days</p></li></ul><div><hr></div><h3>2. Previews &#8594; Aggressive Cleanup</h3><ul><li><p>Regenerable</p></li><li><p>Keep 1 version</p></li><li><p>Expire in 1 day</p></li></ul><div><hr></div><h3>3. Metadata &#8594; Disposable</h3><ul><li><p>Expire current in 30 days</p></li><li><p>Versions in 1 day</p></li></ul><div><hr></div><h3>4. Multipart Cleanup (Critical)</h3><ul><li><p>Abort incomplete uploads after 1 day</p></li></ul><div><hr></div><h3>5. Global Safety Net</h3><ul><li><p>Max 3 versions</p></li><li><p>Expire after 30 days</p></li><li><p>Clean delete markers</p></li></ul><div><hr></div><h2>Monitoring: Don&#8217;t Trust the Console</h2><p>We added 3 layers:</p><h3>1. S3 Inventory</h3><ul><li><p>Source of truth</p></li><li><p>Includes versions</p></li></ul><h3>2. Prefix Metrics</h3><ul><li><p>Track <code>raw/</code>, <code>previews/</code>, etc. separately</p></li></ul><h3>3. Alerts</h3><ul><li><p>Bucket size</p></li><li><p>Object count</p></li><li><p>Error rates</p></li></ul><div><hr></div><h2>The Checklist</h2><p>Before you ship versioning:</p><ul><li><p>Lifecycle rules exist (no exceptions)</p></li><li><p>Non-current expiration configured</p></li><li><p>Delete markers cleaned</p></li><li><p>Multipart uploads aborted</p></li><li><p>Inventory enabled</p></li><li><p>Prefix-based policies applied</p></li><li><p>Intelligent-Tiering evaluated</p></li><li><p>Purge tested</p></li><li><p>Alerts configured</p></li><li><p>Documentation written</p></li></ul><div><hr></div><h2>When Things Go Wrong (The Nuke Strategy)</h2><p>You <strong>cannot</strong> just run:</p><p><code>aws s3 rm --recursive</code></p><p>It only deletes current objects.</p><p>You must:</p><ol><li><p>Suspend versioning</p></li><li><p>Delete all versions + delete markers</p></li><li><p>Delete current objects</p></li><li><p>Delete bucket</p></li></ol><p>And yes &#8212; it&#8217;s painful at scale.</p><div><hr></div><h2>The Takeaway</h2><p>S3 versioning is:</p><ul><li><p>A safety feature</p></li><li><p>A cost trap</p></li><li><p>An operational hazard</p></li></ul><p><strong>Without lifecycle rules, it will hurt you.</strong></p><p>So treat this as a rule:</p><blockquote><p><strong>Versioning without lifecycle = production bug</strong></p></blockquote><p>And more importantly:</p><blockquote><p><strong>This is Infrastructure Debt &#8212; not a configuration detail.</strong></p></blockquote><div><hr></div><h2>Final Thought</h2><p>The most dangerous systems aren&#8217;t the ones that fail loudly.</p><p>They&#8217;re the ones that:</p><ul><li><p>Look fine</p></li><li><p>Cost little (at first)</p></li><li><p>And quietly compound</p></li></ul><p>Until one day:</p><ul><li><p>Your bill spikes</p></li><li><p>Your scripts hang</p></li><li><p>Your team scrambles</p></li></ul><p>All because of a checkbox you enabled months ago.</p><div><hr></div><h2>Sources &amp; Further Reading</h2><p>If you want to go deeper, these are worth your time &#8212; they highlight how widespread (and costly) this issue is:</p><ul><li><p><strong>SnapShooter &#8212;</strong> <a href="https://snapshooter.com/blog/the-tale-of-the-versioned-aws-s3-bucket-increasing-s3-bill">The Tale of the Versioned S3 Bucket</a><br>&#8594; Real-world recovery: <strong>5.5 TB &#8594; 16 GB</strong> after fixing lifecycle rules</p></li><li><p><strong>DEV.to &#8212;</strong> <a href="https://dev.to/aaron_rose_0787cc8b4775a0/taming-s3-versioning-before-it-blows-up-your-bill-4gel">Taming S3 Versioning Before It Blows Up Your Bill</a><br>&#8594; Practical breakdown of version bloat patterns</p></li><li><p><strong>DoiT &#8212;</strong> <a href="https://www.doit.com/blog/why-did-my-s3-costs-go-up/">Why Did My S3 Costs Go Up?</a><br>&#8594; Versioning listed as a top cause of unexpected cost spikes</p></li><li><p><strong>Medium &#8212;</strong> <a href="https://medium.com/@yashvikothari/why-your-s3-bill-just-hit-47-000-and-what-the-cheapest-storage-class-wont-tell-you-ee16cb7cc492">Why Your S3 Bill Just Hit $47,000</a><br>&#8594; Extreme case of mismanaged storage + versioning</p></li><li><p><strong>Infracost &#8212;</strong> <a href="https://www.infracost.io/finops-policies/amazon-s3-consider-deleting-or-moving-non-current-object-versions/">S3 Non-Current Version FinOps Policy</a><br>&#8594; Automated detection for missing lifecycle rules</p></li><li><p><strong>Gart Solutions &#8212;</strong> <a href="https://gartsolutions.com/infrastructure-debt/">Infrastructure Debt: Complete Guide</a><br>&#8594; Conceptual grounding for &#8220;infrastructure debt&#8221;</p></li><li><p><strong>AWS Docs &#8212;</strong> <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting-versioning.html">Troubleshooting S3 Versioning</a><br>&#8594; Official guidance (including 503 risks at high version counts)</p></li><li><p><strong>AWS re:Post &#8212;</strong> <a href="https://repost.aws/questions/QUraX9BuAZSBaavCM3Bpd56Q/s3-versioning-impact">S3 Versioning Impact</a><br>&#8594; Real developer discussions and pitfalls</p></li><li><p><strong>Eon &#8212;</strong> <a href="https://www.eon.io/blog/cut-aws-s3-costs">How to Cut Your S3 Costs</a><br>&#8594; Broader cost optimization strategies</p></li><li><p><strong>AWS &#8212;</strong> <a href="https://aws.amazon.com/s3/pricing/">S3 Pricing</a><br>&#8594; Baseline for cost calculations</p></li></ul><div class="pullquote"><p>This post is part of our learnings building Parjanya 2.0 &#8212; a multi-tenant SaaS Image QA platform for professional photographers. We use a two-tier IQA approach: CLIP-IQA for real-time scoring and Qwen3.5-4B VLM for overnight batch enrichment, all running on AWS with Terraform-managed infrastructure.</p></div><p></p>]]></content:encoded></item><item><title><![CDATA[Atlas — Manual + Auto-Research: an open-source system design playground]]></title><description><![CDATA[From internal tool to open source: system design, storyboards, and stock research powered by Claude + Perplexity and an autonomous agent.]]></description><link>https://blog.phagyul.ai/p/atlas-manual-auto-research-an-open</link><guid isPermaLink="false">https://blog.phagyul.ai/p/atlas-manual-auto-research-an-open</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 16 Mar 2026 15:48:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kNvQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kNvQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kNvQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kNvQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kNvQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kNvQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kNvQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:406661,&quot;alt&quot;:&quot;Architecture overview: Manual and Auto-Research modes for an open-source application that combines system design, storyboarding, and stock research. Shows client, app, data and external tiers plus AI orchestration, 1M-token context window, and the autonomous research agent loop.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/191142560?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Architecture overview: Manual and Auto-Research modes for an open-source application that combines system design, storyboarding, and stock research. Shows client, app, data and external tiers plus AI orchestration, 1M-token context window, and the autonomous research agent loop." title="Architecture overview: Manual and Auto-Research modes for an open-source application that combines system design, storyboarding, and stock research. Shows client, app, data and external tiers plus AI orchestration, 1M-token context window, and the autonomous research agent loop." srcset="https://substackcdn.com/image/fetch/$s_!kNvQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kNvQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kNvQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kNvQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16329a53-0f52-4c59-88ca-06144566fb96_1024x1536.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>What it is</strong></h4><p>Atlas is a dual-mode application: Manual Mode (select a component &#8594; prompt &#8594; refine &#8594; save) and Auto-Research Mode (define a research brief &#8594; autonomous agent loops &#8594; human review &#8594; finalize). The app is built for long-horizon research workflows &#8212; think multi-document analysis, codebase reasoning, film storyboarding, and deep stock due diligence.</p><h4><strong>How it works (high level)</strong></h4><ul><li><p>User defines goal &amp; success criteria.</p></li><li><p>Agent builds context from the 1M token window, fetches research (Perplexity), runs analysis (Claude), generates component drafts, and saves versions.</p></li><li><p>The human reviews flagged uncertainties, edits, accepts final components, and exports (MD, PDF, blog).</p></li></ul><h4><strong>Why now?</strong><br>Two recent trends make this exciting: </h4><ol><li><p>Anthropic&#8217;s broader 1M-token context support (so agents can hold massively more context while working) <a href="https://platform.claude.com/docs/en/build-with-claude/context-windows">1M token</a>, and </p></li><li><p>Karpathy&#8217;s autoresearch pattern that demonstrates autonomous, auditable experiment loops. https://github.com/karpathy/autoresearch</p></li></ol><h4><strong>Open source + license</strong></h4><p><br>This repo will be released under <strong>MIT</strong>. Expect: architecture diagrams, the AI orchestration service, context window helpers, RAG &amp; caching patterns, agent loop examples, and export pipelines.</p><h4><strong>How you can help / contribute</strong></h4><ul><li><p>Star/watch the repo when it goes live</p></li><li><p>Try the demo &amp; file issues for use cases you need</p></li><li><p>Contribute connectors (other LLMs, cloud storage, export formats)</p></li></ul><h2><strong>TL;DR</strong></h2><p><br>This tool turns long, messy research into an auditable, iterative loop where humans are always in control of decisions. Early release to contributors in 2&#8211;3 weeks; public repo launch shortly thereafter. </p><p></p>]]></content:encoded></item><item><title><![CDATA[Prof. Damodaran Framework in action - What HDFC Bank and Tata Motors Teach Us About Mergers and Demergers]]></title><description><![CDATA[How two opposite corporate restructuring strategies reveal the hidden complexities of creating shareholder value]]></description><link>https://blog.phagyul.ai/p/damodaran-framework-in-action-what</link><guid isPermaLink="false">https://blog.phagyul.ai/p/damodaran-framework-in-action-what</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Fri, 20 Feb 2026 04:59:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YDHY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="pullquote"><p><strong>DISCLAIMER: This article is part of my personal learning journey and is meant purely for educational and informational purposes. I have drawn insights from Prof. Aswath Damodaran&#8217;s publicly available teachings and financial information available in the public domain.</strong></p><p><strong>While preparing this write-up, I referred to platforms such as Screener and AI-based study tools to better understand the concepts and validate publicly available data such as company filings and information available for investors from the company domain. The interpretations and conclusions shared here are entirely my own, and any errors or misunderstandings are solely my responsibility.</strong></p><p><strong>This is not investment advice or a recommendation to buy, sell, or hold any securities. I encourage readers to do their own research and consult a SEBI-registered investment advisor before making any investment decisions</strong>.</p></div><h3>The Synergy Paradox</h3><blockquote><p>In April 2023, India witnessed it&#8217;s largest banking merger when HDFC Limited and HDFC Bank combined to create a financial behemoth with assets exceeding <strong>INR 17.87 lakh crore</strong>. The market cheered &amp; stock prices surged, analysts projected massive synergies, and management promised transformational value creation.<br><br>Fast forward to January 2026: The combined entity&#8217;s market cap has indeed grown by 48%, but synergies have materialized at only 35-40% of targets. EPS is 28% below projections, and ROE has contracted by 8-9 percentage points.</p></blockquote><blockquote><p>Meanwhile, in October 2025, Tata Motors executed the opposite strategy, splitting into two separate entities (<strong>passenger vehicles + JLR</strong>, and <strong>commercial vehicles</strong>). The market punished this decision with a 33% decline in combined market capitalization within three months, despite operational metrics showing +24.7% growth in passenger vehicles and +28.6% in commercial vehicles.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YDHY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YDHY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YDHY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YDHY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YDHY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YDHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3416085,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188490839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YDHY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YDHY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YDHY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YDHY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F409ff764-8bc7-4049-9d4d-d3c8eb3ea003_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h5>What explains these seemingly contradictory outcomes?</h5><p>The answer lies in applying <strong>Aswath Damodaran&#8217;s acquisition and demerger valuation framework</strong> - a systematic approach that separates wishful thinking from rigorous value analysis. This article applies Damodaran&#8217;s methodology to both cases, revealing why synergy value is so difficult to capture in practice and what investors should watch for in corporate restructurings.</p><div><hr></div><h3>Understanding the Damodaran Framework</h3><h4>The Core Equation</h4><p>Damodaran&#8217;s approach to valuing mergers and demergers rests on a deceptively simple foundation:</p><h4>For Mergers:</h4><blockquote><p><code>V(Combined) = V(A) + V(B) + Synergy Value - Execution Risk</code></p></blockquote><h4>For Demergers:</h4><blockquote><p><code>V(Parent) = V(Spun-off) + V(Remaining) + SOTP Premium - Separation Costs</code></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RHvm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RHvm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RHvm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RHvm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RHvm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RHvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2855681,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188490839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RHvm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!RHvm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!RHvm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!RHvm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b9acc59-5397-44f6-bd12-1c4179f6bfb9_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As Damodaran writes in his seminal paper &#8220;<strong>The Value of Synergy</strong>&#8221;: Synergy, to have an effect on value, has to influence one of the four inputs into the valuation process </p><div class="pullquote"><p>higher cash flows from existing assets, higher expected growth rates, a longer growth period, or a lower cost of capital.</p></div><h4>The Four Critical Components</h4><p>1. <strong>Standalone Entity Valuations</strong>: Calculate DCF-based free cash flow to equity (FCFE) using business-specific assumptions<br>2. <strong>ROIC Analysis</strong>: Determine if the combined entity earns more than its weighted average cost of capital (WACC)<br>3. <strong>Synergy/Control Premium</strong>: Quantify operating, financial, and strategic value sources with specific timelines<br>4. <strong>Execution Risk</strong>: Assess probability of synergy realization based on integration complexity</p><h5>The framework&#8217;s power lies in its brutal honesty: </h5><div class="pullquote"><p>If you can&#8217;t quantify synergy with specific mechanisms and timing, it probably doesn&#8217;t exist.</p></div><h2>Case Study 1 - HDFC Bank Merger (When Convergence Disappoints)</h2><h3>The Deal at a Glance</h3><ul><li><p>Transaction Date: April 2023</p></li><li><p>Deal Structure: HDFC Limited merged into HDFC Bank (reverse merger)</p></li><li><p>Combined Assets: Rs 17.87 lakh crore</p></li><li><p>Strategic Thesis: Cross-selling opportunities (70% non-overlapping customers), lower cost of funds, capital efficiency</p></li><li><p>Market Initial Response: +48% appreciation over 2.75 years</p></li></ul><div><hr></div><h3>Applying the Damodaran Framework: Step-by-Step Valuation</h3><h4>Step 1: Standalone Valuations</h4><p><strong>HDFC Limited (Pre-Merger):</strong></p><ul><li><p><strong>Loan Book</strong>: Rs 6.2 lakh crore (79% individual mortgages)</p></li><li><p><strong>Net Interest Margin</strong>: 2.26%</p></li><li><p><strong>ROE</strong>: 17&#8211;18%</p></li><li><p><strong>ROIC</strong>: 20%</p></li><li><p><strong>DCF Assumptions</strong>: 18% growth, 10.5% cost of equity, 6% terminal growth</p></li><li><p><strong>Standalone Fair Value</strong>: Rs 2.17 lakh crore</p></li></ul><p><strong>HDFC Bank (Pre-Merger):</strong></p><ul><li><p><strong>Loan Book:</strong> Rs 4.50 lakh crore (diversified portfolio)</p></li><li><p><strong>Net Interest Margin:</strong> 3.4%</p></li><li><p><strong>ROE</strong>: 35%+</p></li><li><p><strong>ROIC</strong>: 25%</p></li><li><p><strong>DCF Assumptions</strong>: 18% growth, 9.5% cost of equity, 6% terminal growth</p></li><li><p><strong>Standalone Fair Value:</strong> Rs 22.64 lakh crore</p></li></ul><p><strong>Combined Value (No Synergy): Rs 24.81 lakh crore</strong></p><div><hr></div><h4>Step 2: Synergy Estimation</h4><p>Following Damodaran&#8217;s methodology of identifying specific synergy mechanisms:</p><p><strong>Operating Synergies:</strong></p><ol><li><p><strong>Cross-selling:</strong> Expected Rs 15,000 crore annual value from activating 70% non-overlapping HDFC customers</p></li><li><p><strong>Cost of Funds Reduction:</strong> HDFC&#8217;s 5.83% to 4.8% via CASA deposits = Rs 10,000&#8211;15,000 crore value</p></li><li><p><strong>Economies of Scale:</strong> Minimal (both already lean) = Rs 2,000&#8211;4,000 crore</p></li></ol><p><strong>Financial Dissynergies (The Hidden Killer):</strong></p><ol><li><p><strong>SLR Requirements:</strong> 22% of deposits in government securities = Rs 80,000 crore in low-yield assets</p></li><li><p><strong>CRR Requirements:</strong> 4&#8211;6% in RBI deposits = negative carry</p></li><li><p><strong>Priority Sector Lending</strong>: 40% in prescribed sectors (lower yields) = Rs 10,000&#8211;15,000 crore annual opportunity cost</p></li></ol><p><strong>Net Synergy Value: + Rs 2.19 lakh crore (but regulatory drag reduced realized value to Rs 0.10&#8211;0.15 lakh crore)</strong></p><p><strong>Fair Value (April 2023): Rs 9.63&#8211;9.85 lakh crore (market priced at Rs 9.50 lakh crore &#8212; fairly valued)</strong></p><div><hr></div><h4>Step 3: Real-World Outcome (January 2026)</h4><p><strong>Current Status (2.75 Years Post-Merger):</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Ttw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Ttw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 424w, https://substackcdn.com/image/fetch/$s_!2Ttw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 848w, https://substackcdn.com/image/fetch/$s_!2Ttw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 1272w, https://substackcdn.com/image/fetch/$s_!2Ttw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Ttw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png" width="1443" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:1443,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:450285,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188490839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb81b051-a722-40c5-aefe-c43a573fe903_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2Ttw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 424w, https://substackcdn.com/image/fetch/$s_!2Ttw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 848w, https://substackcdn.com/image/fetch/$s_!2Ttw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 1272w, https://substackcdn.com/image/fetch/$s_!2Ttw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F772c9bc1-e74e-4a32-9456-86ae420c496c_1443x496.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>Why the Gap? The Damodaran Diagnosis</h3><p><strong>Root Cause 1: Regulatory Dissynergies Exceeded Operating Synergies</strong></p><p>As Damodaran emphasizes in his CFA Institute talk:</p><blockquote><p><em><strong>&#8220;The problem with synergy is that it is easier to compute on paper than to create in practice.&#8221;</strong></em>  - <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=841486.">The value of Synergy</a></p></blockquote><p>HDFC Bank discovered that converting HDFC&#8217;s housing finance book into bank assets triggered:</p><ul><li><p>Statutory Liquidity Ratio obligations locking Rs 80,000+ crore in low-yield government securities</p></li><li><p>Cash Reserve Ratio requirements creating negative carry</p></li><li><p>Priority Sector Lending mandates forcing 40% of loans into lower-yielding segments</p></li></ul><p>Annual regulatory drag: Rs 10,000&#8211;15,000 crore &#8212; effectively wiping out cross-selling synergies.</p><div><hr></div><p><strong>Root Cause 2: Cross-Selling Execution Delay</strong></p><blockquote><p>Expected synergy of activating 5&#8211;6 crore HDFC mortgage customers for banking products has taken 2&#8211;3 years instead of the projected 12 months. Behavioral change is hard &#8212; customers do not automatically switch banks just because of a merger.</p></blockquote><div><hr></div><p><strong>Root Cause 3: Conglomerate Discount Emerged</strong></p><blockquote><p>Pre-merger, HDFC traded at 25&#8211;30x P/E (mortgage premium) and HDFC Bank at 20&#8211;22x P/E (banking premium). Post-merger: 18.92x P/E. The market now values it as a diversified bank, not a focused housing finance powerhouse.</p></blockquote><div><hr></div><h3>The Damodaran Framework Score: 7/10</h3><p><strong>What It Got Right:</strong></p><ul><li><p>Identified potential synergy sources (cross-selling, funding cost)</p></li><li><p>Quantified regulatory dissynergies (prescient warning)</p></li><li><p>Valued both entities independently first</p></li></ul><p><strong>What It Missed:</strong></p><ul><li><p>Underestimated timing of synergy realization (3&#8211;5 years versus 12 months)</p></li><li><p>Did not fully anticipate market valuation multiple compression</p></li><li><p>Regulatory environment changes were directionally correct but magnitude was underestimated</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!B6de!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!B6de!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 424w, https://substackcdn.com/image/fetch/$s_!B6de!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 848w, https://substackcdn.com/image/fetch/$s_!B6de!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 1272w, https://substackcdn.com/image/fetch/$s_!B6de!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!B6de!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png" width="1536" height="948" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:948,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3623828,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188490839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8120488-9aa0-4127-ad52-9f0fdad6b59f_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!B6de!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 424w, https://substackcdn.com/image/fetch/$s_!B6de!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 848w, https://substackcdn.com/image/fetch/$s_!B6de!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 1272w, https://substackcdn.com/image/fetch/$s_!B6de!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8d94358e-d1e2-48b2-8e00-f6ba2a579cd5_1536x948.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>Case Study 2 - Tata Motors Demerger (When Separation Creates Opportunity)</h3><h4>The Deal at a Glance</h4><p><strong>Demerger Effective Date: October 2025 (3 months ago as of analysis)</strong></p><p><strong>New Entities:</strong></p><ul><li><p><strong>TMPV (Tata Motors Passenger Vehicles): PV + JLR + EV</strong></p></li><li><p><strong>TMLCV (Tata Motors Commercial Vehicles): CV + Iveco integration</strong></p></li></ul><p><strong>Strategic Thesis:</strong><br>Unlock pure-play multiples, separate high-ROIC from low-ROIC businesses, and enable focused capital allocation.</p><p><strong>Market Response:</strong></p><ul><li><p>33% decline in combined value despite 25% operational growth</p></li></ul><h4>Applying the Damodaran Framework: SOTP Valuation</h4><h4>Step 1: Pre-Demerger ROIC Analysis</h4><p>This is where Damodaran&#8217;s framework shines. As he notes:</p><blockquote><p><strong>When ROIC &lt; WACC in a conglomerate, separation can help if each entity improves ROIC through focus.</strong></p></blockquote><div><hr></div><h3>Pre-Demerger Combined Entity</h3><ul><li><p><strong>TMPV Segment ROIC</strong>: 6.6% (below WACC of 8&#8211;9%) &#8594; Destroying value</p></li><li><p><strong>TMLCV Segment ROIC</strong>: 14.5% (above WACC of 8%) &#8594; Creating value</p></li><li><p><strong>Problem</strong>: Strong CV business subsidizing weak JLR/PV transition</p></li></ul><div><hr></div><h3>Step 2: Standalone Valuations</h3><h4>TMPV (Passenger Vehicles + JLR + EV)</h4><ul><li><p>Revenue: Rs 4.26 lakh crore (FY2025)</p></li><li><p>Current ROIC: 6.6% (JLR drag from cyberattack)</p></li><li><p>Normalized ROIC: 10&#8211;12% (post-JLR recovery by 2027&#8211;28)</p></li><li><p>DCF Assumptions: 10% growth, 10% cost of equity, 5% terminal growth</p></li><li><p>Standalone Fair Value: Rs 5.83 lakh crore</p></li></ul><h4>TMLCV (Commercial Vehicles)</h4><ul><li><p>Revenue: Approximately Rs 2.2 lakh crore</p></li><li><p>Current ROIC: 14.5%</p></li><li><p>Sustainable ROIC: 16&#8211;18% (post-Iveco integration)</p></li><li><p>DCF Assumptions: 14% growth, 9.5% cost of equity, 6% terminal growth</p></li><li><p>Standalone Fair Value: Rs 7.75 lakh crore</p></li></ul><p><strong>Combined Sum-of-Parts: Rs 13.58 lakh crore</strong></p><div><hr></div><h3>Step 3: Separation Premium and Dissynergies</h3><h4>Separation Premium Sources</h4><h5>For TMPV:</h5><ul><li><p>Focused capital allocation for EV: + Rs 0.10&#8211;0.15 lakh crore</p></li><li><p>Luxury/EV multiple re-rating (18&#8211;20x vs 14&#8211;16x blended): + Rs 0.08&#8211;0.12 lakh crore</p></li><li><p>Management focus: + Rs 0.05&#8211;0.08 lakh crore</p></li><li><p>Total TMPV Premium: + Rs 0.35 lakh crore</p></li></ul><h5>For TMLCV:</h5><ul><li><p>Pure-play CV investor base (higher multiples): + Rs 0.05&#8211;0.08 lakh crore</p></li><li><p>Iveco integration value: + Rs 0.08&#8211;0.12 lakh crore</p></li><li><p>Dividend capacity unlocked: + Rs 0.03&#8211;0.05 lakh crore</p></li><li><p>Total TMLCV Premium: + Rs 0.30 lakh crore</p></li></ul><h4>Separation Costs</h4><ul><li><p>One-time costs: - Rs 0.02&#8211;0.03 lakh crore</p></li><li><p>Lost economies of scale: - Rs 0.03&#8211;0.05 lakh crore</p></li><li><p>Duplicate corporate overhead: - Rs 0.02&#8211;0.04 lakh crore</p></li><li><p>Lost cross-funding flexibility: - Rs 0.01&#8211;0.02 lakh crore</p></li><li><p>Total Dissynergies: - Rs 0.12&#8211;0.20 lakh crore</p></li></ul><div><hr></div><h3>Fair Value Post-Demerger</h3><ul><li><p>TMPV: Rs 5.98 lakh crore (Rs 420&#8211;450 per share)</p></li><li><p>TMLCV: Rs 7.85 lakh crore (Rs 440&#8211;480 per share)</p></li><li><p>Combined SOTP: Rs 13.83 lakh crore</p></li></ul><p>Current Market Cap (Jan 2026): Rs 1.67 lakh crore</p><p><strong>Valuation Gap: 88% undervaluation</strong></p><div><hr></div><h3>Step 4: Why the Market Is Wrong (Or Is It?)</h3><h4>Operational Reality (January 2026)</h4><ul><li><p>TMPV Production: +21.71% YoY (Q3 FY26)</p></li><li><p>TMPV Domestic Sales: +24.73% YoY</p></li><li><p>TMLCV CV Volumes: +28.6% YoY (November 2025)</p></li></ul><h5>Yet the market has hammered both stocks. Why?</h5><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qT85!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qT85!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 424w, https://substackcdn.com/image/fetch/$s_!qT85!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 848w, https://substackcdn.com/image/fetch/$s_!qT85!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 1272w, https://substackcdn.com/image/fetch/$s_!qT85!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qT85!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png" width="1536" height="899" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:899,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3450170,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188490839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5432031-9c1c-48d1-a723-08b9117f1df7_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qT85!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 424w, https://substackcdn.com/image/fetch/$s_!qT85!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 848w, https://substackcdn.com/image/fetch/$s_!qT85!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 1272w, https://substackcdn.com/image/fetch/$s_!qT85!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50c1ad89-eec6-424b-825c-66613af17c61_1536x899.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>Market Concern 1: JLR Cyberattack Overhang</h3><blockquote><p><strong>In September 2025, JLR suffered a massive cyberattack that disrupted production. Phased restart only began in Q1 FY26. Market is pricing in a 50% probability that JLR recovery will be delayed or incomplete, which would reduce TMPV fair value by Rs 0.15&#8211;0.20 lakh crore.</strong></p></blockquote><div><hr></div><h3>Market Concern 2: CV Cycle Peak Fears</h3><blockquote><p><strong>November 2025 CV growth of +28.6% looks like a cyclical peak. Commercial vehicle demand is inherently cyclical (4&#8211;5 year cycles). If the cycle turns in FY26&#8211;27, TMLCV fair value drops Rs 0.20&#8211;0.30 lakh crore.</strong></p></blockquote><div><hr></div><h3>Market Concern 3: Iveco Integration Risk</h3><blockquote><p><strong>Tata Motors acquired Iveco&#8217;s bus and truck business for international expansion. Cross-border integrations have a 40&#8211;60% failure rate. Market is applying a 50&#8211;60% haircut to the estimated Rs 0.08&#8211;0.12 lakh crore Iveco synergies.</strong></p></blockquote><div><hr></div><h3>Market Concern 4: Investor Adjustment Period</h3><blockquote><p><strong>Institutional investors need 3&#8211;6 months to rebalance portfolios after demergers. This creates temporary selling pressure and a 10&#8211;15% psychological discount.</strong></p></blockquote><div><hr></div><h3>The Damodaran Framework Score: 9/10</h3><h4>What It Got Right</h4><ul><li><p>Clearly separated value creation (ROIC &gt; WACC) from value destruction (ROIC &lt; WACC)</p></li><li><p>Quantified SOTP accurately using independent DCF models</p></li><li><p>Identified market timing risk</p></li></ul><h4>What It Struggled With</h4><ul><li><p>Difficult to quantify black swan events (JLR cyberattack one month before demerger)</p></li><li><p>Investor sentiment swings in a 3-month window are hard to model</p></li></ul><div><hr></div><h2>The Comparative Analysis</h2><h3>Synergy Quality Greater Than Synergy Quantity</h3><p>As Damodaran emphasizes in his blog &#8220;<strong>Winning at a Loser&#8217;s Game</strong>&#8221;:</p><p><strong>&#8220;The problem with acquisitions is not that synergy does not exist. The problem is that it is much more difficult to create synergy than to talk about it.&#8221;</strong></p><div class="pullquote"><p><strong>HDFC Bank&#8217;s Lesson:</strong><br>Claimed <strong>Rs</strong> <strong>0.40&#8211;0.60 lakh crore</strong> in synergies, realized <strong>Rs 0.10&#8211;0.15 lakh crore (25&#8211;40% realization rate)</strong>. Why? Regulatory dissynergies offset operating synergies &#8212; a classic case where financial engineering assumptions failed to account for regulatory realities.</p></div><div class="pullquote"><p><strong>Tata Motors&#8217; Lesson:</strong><br>Expected <strong>Rs 0.54&#8211;0.86 lakh crore</strong> separation premium. Realization at 0% after 3 months, but operational metrics show the strategy is working (<strong>+25% growth)</strong>. The market is timing-pessimistic but fundamentally wrong about value.</p></div><h3>When Mergers Make Sense (Damodaran&#8217;s Four Tests)</h3><h4>Drawing from Damodaran&#8217;s acquisition framework, mergers create value when:</h4><ol><li><p><strong>Operating Synergy Test: Combined entity achieves lower costs or higher growth than sum of parts</strong></p><ul><li><p><strong>HDFC Bank: Passed on paper, failed in execution (regulatory offset)</strong></p></li></ul></li><li><p><strong>ROIC Improvement Test: Combined ROIC greater than standalone ROIC</strong></p><ul><li><p><strong>HDFC Bank: Failed (20% + 25% resulted in 18&#8211;20% combined)</strong></p></li></ul></li><li><p><strong>Financial Synergy Test: Cheaper capital or better use of cash</strong></p><ul><li><p><strong>HDFC Bank: Partial pass (lower cost of funds, but SLR/CRR drag)</strong></p></li></ul></li><li><p><strong>Control Premium Test: Better management creates value</strong></p><ul><li><p><strong>HDFC Bank: Not applicable (both already optimally managed)</strong></p></li></ul></li></ol><div class="pullquote"><p><strong>Verdict: The HDFC Bank merger made strategic sense, but execution complexity and the regulatory environment undermined value creation.</strong></p></div><h3>When Demergers Make Sense (The ROIC Separation Principle)</h3><h4>Demergers unlock value when:</h4><ol><li><p><strong>ROIC Divergence Test: Businesses have radically different ROIC profiles</strong></p><ul><li><p><strong>Tata Motors: Strong pass (6.6% vs 14.5% = 8 percentage point gap)</strong></p></li></ul></li><li><p><strong>Capital Structure Test: Businesses need different leverage or capital allocation</strong></p><ul><li><p><strong>Tata Motors: Passed (TMPV needs growth capital for EV, TMLCV can return cash via dividends)</strong></p></li></ul></li><li><p><strong>Multiple Re-rating Test: Pure-play entities command higher multiples</strong></p><ul><li><p><strong>Tata Motors: Expected (luxury 18&#8211;20x, CV 14&#8211;15x vs blended 14x), but market has not recognized yet</strong></p></li></ul></li><li><p><strong>Focus and Execution Test: Separate management improves operational performance</strong></p><ul><li><p><strong>Tata Motors: Validated (+25% operational growth post-separation)</strong></p></li></ul></li></ol><div class="pullquote"><p><strong>Verdict: The Tata Motors demerger is fundamentally sound but market timing was unfortunate (JLR cyberattack one month before execution).</strong></p></div><h2>Investment Implications and Recommendations</h2><h3>HDFC Bank: The Fairly Valued (Hold)</h3><p><strong>Current Valuation (February 2026):</strong></p><ul><li><p>Price: Rs 915.80</p></li><li><p>P/E: 18.92x (vs sector 16.35x)</p></li><li><p>P/B: 2.65x</p></li><li><p>Fair Value Range: Rs 1,000&#8211;1,100</p></li><li><p>Upside: +3.7% to +9.2%</p></li></ul><p><strong>Investment Thesis:</strong></p><ul><li><p>Stock has re-rated from merger euphoria (48% gain) to fundamental value</p></li><li><p>Synergies are slowly materializing but the 3&#8211;5 year timeline remains</p></li><li><p>Regulatory environment stable but unlikely to improve materially</p></li><li><p>Growth trajectory reset to 11&#8211;12% (from 18%+ pre-merger)</p></li></ul><p><strong>Recommendation:</strong> HOLD for long-term investors (5+ years)</p><ul><li><p>Catalyst Watch: Q4 FY26 guidance (March 2026) for CASA deposit trends</p></li><li><p>Risk: Growth remains structurally stuck at 11&#8211;12% (not temporary)</p></li><li><p>Positioning: Core holding for dividend income (1.2% yield growing 15&#8211;18%) plus steady 8&#8211;10% capital appreciation</p></li></ul><div><hr></div><h3>Tata Motors: The Mispriced Demerger Opportunity</h3><h4>TMPV (Passenger Vehicles + JLR + EV)</h4><ul><li><p>Current Price: Approximately Rs 375.70</p></li><li><p>Fair Value: Rs 420&#8211;450 (12-month target)</p></li><li><p>Upside: +20&#8211;28%</p></li><li><p>Bull Case (JLR recovery plus EV ramp): Rs 520&#8211;580 (+48&#8211;65%)</p></li></ul><h4>TMLCV (Commercial Vehicles)</h4><ul><li><p>Current Price: Approximately Rs 403</p></li><li><p>Fair Value: Rs 440&#8211;480 (12-month target)</p></li><li><p>Upside: +9&#8211;19%</p></li><li><p>Bull Case (Iveco success plus cycle extension): Rs 520&#8211;580 (+29&#8211;44%)</p></li></ul><p><strong>Investment Thesis:</strong></p><ul><li><p>Market is pricing in excessive pessimism on JLR (50% probability of failure)</p></li><li><p>CV cycle fears appear overdone &#8212; structural demand from infrastructure and logistics remains strong</p></li><li><p>Operational metrics (+25% growth) validate the demerger strategy</p></li><li><p>SOTP discount of -33% appears irrational given fundamentals</p></li></ul><p><strong>Recommendation:</strong></p><ul><li><p>TMPV: BUY on dips below Rs 330 (high-risk, high-reward; binary outcome based on JLR)</p></li><li><p>TMLCV: ACCUMULATE for dividend yield and value (lower risk, steady returns)</p></li><li><p>Portfolio Strategy: 60% TMPV / 40% TMLCV for optimal risk-adjusted returns</p></li></ul><p><strong>Key Catalysts:</strong></p><ul><li><p>TMPV: Q4 FY26 results (May 2026) showing JLR recovery trajectory</p></li><li><p>TMLCV: Q3 FY26 guidance (January 2026) on Iveco integration progress</p></li></ul><p><strong>Timeline to Value Realization:</strong> 12&#8211;24 months (much faster than HDFC Bank&#8217;s 3&#8211;5 years)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Jti!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Jti!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 424w, https://substackcdn.com/image/fetch/$s_!_Jti!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 848w, https://substackcdn.com/image/fetch/$s_!_Jti!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 1272w, https://substackcdn.com/image/fetch/$s_!_Jti!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Jti!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png" width="1456" height="864" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:864,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2767437,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188490839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Jti!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 424w, https://substackcdn.com/image/fetch/$s_!_Jti!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 848w, https://substackcdn.com/image/fetch/$s_!_Jti!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 1272w, https://substackcdn.com/image/fetch/$s_!_Jti!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c8a9244-1f9c-4cc5-8d23-30d27b84bf92_1525x905.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h2>What Damodaran&#8217;s Framework Teaches Us</h2><h3>The Three Meta-Lessons</h3><h3>Lesson 1: Synergy Is a Story, Valuation Is a Number</h3><p>As Damodaran writes:</p><div class="pullquote"><p><strong>&#8220;Synergy is so seldom delivered in acquisitions because it is incorrectly valued, inadequately planned for and much more difficult to create in practice than it is to compute on paper.&#8221;</strong></p></div><p><strong>HDFC Bank claimed Rs 0.40&#8211;0.60 lakh crore in synergies. The framework forced discipline: &#8220;</strong><em><strong>Show me the mechanism. Show me the timing. Show me the probability.</strong></em><strong>&#8221;</strong> </p><p><strong>Result: Only Rs 0.10&#8211;0.15 lakh crore was truly defensible.</strong></p><div><hr></div><h3>Lesson 2: ROIC Is the North Star</h3><p>The single most powerful diagnostic in both cases was ROIC analysis:</p><ul><li><p><strong>HDFC Bank:</strong> Combined ROIC decline (20% and 25% down to 18%) signaled value destruction risk</p></li><li><p><strong>Tata Motors:</strong> ROIC divergence (6.6% vs 14.5%) clearly indicated the businesses should be separated</p></li></ul><p>If ROIC does not improve materially, the restructuring is financial engineering, not value creation.</p><div><hr></div><h3>Lesson 3: Markets Eventually Recognize Value, But Timing Is Everything</h3><ul><li><p><strong>HDFC Bank: Market ignored synergy shortfalls for more than 2 years due to sector tailwinds</strong></p></li><li><p><strong>Tata Motors: Market focused on short-term fears (JLR, CV cycle) despite operational strength</strong></p></li></ul><p>For investors: Damodaran&#8217;s framework identifies intrinsic value, but realizing that value requires patience and catalysts.</p><div><hr></div><h3>When to Use This Framework</h3><h4>Optimal Use Cases</h4><ol><li><p>Mega-mergers where synergies are the deal&#8217;s core value proposition (HDFC Bank)</p></li><li><p>Conglomerate demergers where ROIC profiles diverge strongly (Tata Motors)</p></li><li><p>Control changes where operational improvements are promised</p></li><li><p>Financial engineering deals involving capital structure optimization</p></li></ol><div><hr></div><h3>Limitations</h3><ol><li><p>Difficulty quantifying execution risk (50%? 70%? Hard to know precisely)</p></li><li><p>Regulatory environment changes are difficult to model (for example, SLR and CRR surprises)</p></li><li><p>Market sentiment can override fundamentals for 6&#8211;12 months (Tata Motors post-demerger)</p></li><li><p>Black swan events (such as the JLR cyberattack) are inherently unpredictable</p></li></ol><div><hr></div><h5>Damodaran&#8217;s framework is necessary but not sufficient. Combine it with(My 2 cents):</h5><ul><li><p>Market sentiment analysis (VIX, sector rotation, institutional flows)</p></li><li><p>Industry and cycle analysis (CV cycle position, mortgage market health)</p></li><li><p>Regulatory horizon scanning (anticipating policy changes)</p></li><li><p>Management track record assessment (integration and execution capability)</p></li></ul><div><hr></div><h2>Conclusion: The Paradox of Value Creation</h2><blockquote><p>The HDFC Bank merger and Tata Motors demerger present a fascinating paradox:</p><p>HDFC Bank: Combined entities with strong standalone performance resulted in less value creation than expected, yet the market still rewarded it (+48%).</p><p>Tata Motors: Separated value-destroying from value-creating businesses, operational metrics validated the strategy, yet the market punished it (-33%).</p></blockquote><p>Damodaran&#8217;s framework explains both outcomes:</p><ol><li><p><strong>For HDFC Bank</strong>: Synergy was overestimated because regulatory dissynergies were not fully anticipated. The market&#8217;s +48% gain reflects sector multiple expansion, not merger synergies &#8212; a key distinction the framework helps clarify.</p></li><li><p><strong>For Tata Motors:</strong> The SOTP valuation is clear (Rs 13.83 lakh crore fair value vs Rs 1.67 lakh crore market cap). The -33% gap reflects timing and sentiment, not fundamentals. The framework identifies this as a temporary mispricing.</p></li></ol><div><hr></div><h3>The Final Verdict</h3><p>Damodaran&#8217;s acquisition and demerger framework is the most rigorous tool for separating value creation from value destruction in corporate restructurings.</p><p>But as Damodaran himself cautions:</p><blockquote><p><strong>&#8220;The problem is not with the valuation. The problem is with human nature &#8212; we want to believe in synergy, even when the numbers do not support it.&#8221;</strong></p></blockquote><div><hr></div><h3>For Investors</h3><ul><li><p>Use the framework to value restructurings independently</p></li><li><p>Identify where market price diverges from intrinsic value</p></li><li><p>Have the patience to wait for catalysts (HDFC: 3&#8211;5 years, Tata: 12&#8211;24 months)</p></li><li><p>Recognize when markets are temporarily wrong (Tata Motors today) versus when fundamentals disappoint (HDFC Bank&#8217;s synergy shortfall)</p></li></ul><p>The best corporate restructurings are not the ones with the biggest synergy claims &#8212; they are the ones where ROIC improves materially and management can clearly demonstrate how.</p><div><hr></div><h2>Appendix: Key Metrics at a Glance</h2><h3>HDFC Bank (February 2026)</h3><ul><li><p>Price: Rs 915.80 | Fair Value: Rs 1,000&#8211;1,100 | Upside: +3.7% to +9.2%</p></li><li><p>P/E: 18.92x | P/B: 2.65x | ROE: 23&#8211;24% | Loan Growth: 11.9%</p></li><li><p>What I&#8217;m doing: HOLD | Time Horizon: 3&#8211;5 years</p></li></ul><div><hr></div><h3>TMPV (February 2026)</h3><ul><li><p>Price: Approximately Rs 350 | Fair Value: Rs 420&#8211;450 | Upside: +20&#8211;28%</p></li><li><p>P/E: 1.53x (distorted) | P/B: 1.20x | ROE: 9.95%</p></li><li><p>What I&#8217;m doing: BUY on dips | Time Horizon: 12&#8211;18 months</p></li></ul><div><hr></div><h3>TMLCV (February 2026)</h3><ul><li><p>Price: Approximately Rs 403 | Fair Value: Rs 440&#8211;480 | Upside: +9&#8211;19%</p></li><li><p>EV/EBITDA: 4.47x | ROE: 23.96% | CV Growth: +28.6%</p></li><li><p>What I&#8217;m doing: ACCUMULATE | Time Horizon: 18&#8211;24 months</p></li></ul><div><hr></div><h2>References and Further Reading</h2><p>[1] HDFC Bank Q3 FY26 Results (January 2026). HDFC Bank reports first double-digit loan growth post-merger at 11.9% YoY. Economic Times, January 2026.</p><p>[2] Tata Motors Demerger Impact Report (October 2025). TMLCV CV volumes surge +28.6% in November 2025. Business Standard, October 2025.</p><p>[3] Damodaran, A. (2005). The Value of Synergy. Stern School of Business Working Paper.<br>Available at: <a href="https://pages.stern.nyu.edu/~adamodar/pdfiles/papers/synergy.pdf">https://pages.stern.nyu.edu/~adamodar/pdfiles/papers/synergy.pdf</a></p><p>[4] Damodaran, A. (2024). Acquisition Valuation. NYU Stern Teaching Materials.<br>Available at: <a href="https://pages.stern.nyu.edu/~adamodar/pdfiles/AcqValn.pdf">https://pages.stern.nyu.edu/~adamodar/pdfiles/AcqValn.pdf</a></p><p>[5] Manickaraj, M. and Roy, A. (2023). The Merger of HDFC Limited with HDFC Bank: Synergy or Concentration? NIBM Working Paper. Notes regulatory obligations (SLR 22%, CRR 4&#8211;6%, Priority Sector 40%) create Rs 10,000&#8211;15,000 crore annual drag.</p><p>[6] CFA Institute. (2019). Aswath Damodaran on Acquisitions: Just Say No. CFA Institute Blog, February 27, 2019.<br>Available at: <a href="https://blogs.cfainstitute.org/investor/2019/02/28/aswath-damodaran-on-acquisitions-just-say-no/">https://blogs.cfainstitute.org/investor/2019/02/28/aswath-damodaran-on-acquisitions-just-say-no/</a></p><p>[7] HDFC Bank Annual Report FY2025. CEO Sashidhar Jagdishan notes cross-selling activation slower than expected, targeting completion by FY2027. HDFC Bank Investor Relations, July 2025.</p><p>[8] Damodaran, A. (2002). Investment Valuation: Tools and Techniques for Determining the Value of Any Asset (2nd edition). Wiley Finance. Chapter on demergers and spinoffs emphasizes ROIC improvement as primary value driver.</p><p>[9] Tata Motors Q3 FY26 Production Report. TMPV production volumes increase +21.71% YoY with domestic PV sales +24.73%. Tata Motors Press Release, January 2026.</p><p>[10] Tata Motors JLR Cyberattack Impact Analysis (September 2025). Phased restart announced for Q1 FY26 with full recovery expected post-holiday season February&#8211;March 2026. Reuters, October 2025.</p><p>[11] Damodaran, A. (2015). Winning at a Loser&#8217;s Game? Control, Synergy and the ABInBev-SABMiller Merger. Musings on Markets blog, October 22, 2015.<br>Available at: <a href="https://aswathdamodaran.blogspot.com/2015/10/winning-at-losers-game-control-synergy.html">https://aswathdamodaran.blogspot.com/2015/10/winning-at-losers-game-control-synergy.html</a></p><p>[12] Damodaran, A. (2024). Valuing Synergy. NYU Stern Spring 2024 Session Materials.<br>Available at: <a href="https://pages.stern.nyu.edu/~adamodar/podcasts/valspr24/session25slides.pdf">https://pages.stern.nyu.edu/~adamodar/podcasts/valspr24/session25slides.pdf</a></p><p>[13] HDFC Bank Merger Analysis by Prime Investor (2024). Analysis - Impact of the HDFC merger and our recommendation. Prime Investor Research Report, July 5, 2024.<br>Available at: <a href="https://primeinvestor.in/reports/analysis-impact-of-hdfc-merger-our-recommendation/">https://primeinvestor.in/reports/analysis-impact-of-hdfc-merger-our-recommendation/</a></p><div><hr></div><h3>About This Analysis</h3><p>This analysis was prepared using Aswath Damodaran&#8217;s published valuation frameworks, publicly available financial statements, analyst reports, and market data as of February 17, 2026. All DCF calculations use standard corporate finance assumptions (WACC, terminal growth 5&#8211;6%, industry-standard reinvestment rates) and are based on Damodaran&#8217;s teaching materials from NYU Stern School of Business.</p><p><strong>Disclaimer</strong>: This analysis is for educational and informational purposes only. It does not constitute investment advice. Readers should conduct their own due diligence and consult with financial advisors before making investment decisions. I have a vested interest in doing the analysis as I am long term holder of these stocks and would like to evaluate once in a half year for building conviction on holding or exiting or partial exit. </p><div><hr></div><p><strong>Changelog and Updates:</strong></p><ul><li><p>February 17, 2026: Initial publication with data through January 2026</p></li><li><p>Future updates will track Q4 FY26 results for both HDFC Bank and Tata Motors entities</p></li></ul><div><hr></div><h1><strong>DISCLAIMER</strong></h1><blockquote><p>The content published in this post is intended <strong>solely for educational and informational purposes</strong>. I am <strong>not registered with SEBI</strong> as an investment advisor, research analyst, broker, or financial influencer, and nothing in this post should be construed as investment advice, stock recommendations, or solicitation to buy, sell, or hold any securities.</p><p>This analysis is part of my <strong>personal learning journey in finance and valuation</strong>, heavily influenced by academic frameworks and publicly available material from <strong>Aswath Damodaran</strong>, particularly his work on <strong>Synergies and valuation.</strong><br>The post reflects my own interpretation and application of these concepts as a finance student and practitioner, and any errors or assumptions are entirely my own.</p><p>The valuation models, assumptions, scenarios, and conclusions presented here are <strong>illustrative learning exercises</strong>, not predictions. They do not account for individual financial circumstances, risk tolerance, tax considerations, or investment objectives.</p><p>Readers are strongly encouraged to perform <strong>independent due diligence</strong> and/or consult a <strong>SEBI-registered financial professional</strong> before making any investment decisions. I shall not be responsible for any financial losses or outcomes resulting from reliance on this content.</p></blockquote><div><hr></div><h2><strong>&#128269; Holdings &amp; Transparency Disclosure</strong></h2><blockquote><blockquote><p><strong>Disclosure of Personal Holdings</strong></p></blockquote><blockquote><p>Where applicable, I disclose my personal holdings in the discussed securities, including <strong>approximate portfolio allocation percentages and unrealized profit/loss as of the mentioned date</strong>, purely in the interest of transparency.</p></blockquote><blockquote><p>Such disclosure <strong>does not constitute a recommendation or endorsement</strong>. My positions may change at any time without notice, and I am under no obligation to update previous disclosures or analyses.</p></blockquote></blockquote><h4><strong>My personal holdings of HDFC Bank &amp; Tata Motors(PV &amp;CV) dated on 19th Feb 2026 (against overall Portfolio)</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0dKo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0dKo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0dKo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0dKo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0dKo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0dKo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg" width="1088" height="625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:625,&quot;width&quot;:1088,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188490839?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0dKo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 424w, https://substackcdn.com/image/fetch/$s_!0dKo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 848w, https://substackcdn.com/image/fetch/$s_!0dKo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!0dKo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4fa5e66c-934b-412f-9ce4-f81b799ab6df_1088x625.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[#CommitGoals: Writing Git Messages Worth Double-Tapping]]></title><description><![CDATA[Why Every Developer Should Treat Their Commits Like their Instagram Posts]]></description><link>https://blog.phagyul.ai/p/commitgoals-writing-git-messages</link><guid isPermaLink="false">https://blog.phagyul.ai/p/commitgoals-writing-git-messages</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 16 Feb 2026 02:47:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xxCW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Why Your Git Commit Messages Should Be Like Your Instagram Posts</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xxCW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xxCW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 424w, https://substackcdn.com/image/fetch/$s_!xxCW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 848w, https://substackcdn.com/image/fetch/$s_!xxCW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 1272w, https://substackcdn.com/image/fetch/$s_!xxCW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xxCW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png" width="1093" height="631" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:1093,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:412867,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188048654?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71139785-953e-48a1-95dc-10d39d28ca91_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xxCW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 424w, https://substackcdn.com/image/fetch/$s_!xxCW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 848w, https://substackcdn.com/image/fetch/$s_!xxCW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 1272w, https://substackcdn.com/image/fetch/$s_!xxCW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1dba784-edcb-4636-87c7-f00b124e1517_1093x631.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p><strong>Been there, done that!</strong></p></div><p>Every developer has been there. You&#8217;re scrolling through your project&#8217;s commit history, and you see something </p><pre><code><strong>git commit -m &#8220;stuff&#8221;
git commit -m &#8220;fixed it&#8221;
git commit -m &#8220;update&#8221;</strong></code></pre><p>Now imagine if Instagram captions were written the same way. Your stunning sunset photo accompanied by &#8220;pic&#8221;? </p><p>A 10-day adventure summed up as &#8220;travel&#8221;? </p><p>It would completely miss the magic, the context, and the story that makes your content worth sharing.</p><h4><strong>Your commit messages deserve the same care and attention as your best Instagram posts.</strong></h4><h4>The Instagram Parallel: Why It Actually Makes Sense</h4><p>Think about what makes an Instagram post successful. A great Instagram post tells a story. It captures a moment, explains its significance, and engages your audience. Your commit messages should do exactly the same&#8212;except your audience is other developers (including your future self).</p><p>When you post a photo on Instagram, you don&#8217;t just throw it up without a caption. You craft a message that explains:</p><p>&#9;&#8226;&#9;<em>What you captured</em> (<strong>the subject</strong>)</p><p>&#9;&#8226;&#9;<em>Why it matters</em> (<strong>the context</strong>)</p><p>&#9;&#8226;&#9;<em>What makes it special</em> (<strong>the details</strong> that set it apart)</p><p><strong>Your commits need the same thoughtfulness. A commit is a moment in your codebase&#8217;s history. Future developers&#8212;or you, three months from now&#8212;will read that commit message trying to understand what changed and, more importantly, why.</strong></p><h4>Breaking Down the Instagram Post Formula for Commits</h4><h4>The Hook (Subject Line)</h4><p>Instagram posts start with a strong opening line that makes people stop scrolling. Your commit subject line does the same thing in your repository&#8217;s history.</p><pre><code><strong>Instagram</strong>: &#8220;Just witnessed the most incredible sunset at Uttarakhand(Himalayas) &#127749;&#8221;
<strong>Git (weak)</strong>: &#8220;changed the view&#8221;
<strong>Git (strong)</strong>: &#8220;<strong>feat(ui):</strong> Add dynamic theme switching for wildlife content gallery&#8221;</code></pre><p>The strong version is like a great Instagram caption&#8212;it&#8217;s clear, specific, and immediately tells you what&#8217;s important about this change<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>.</p><blockquote><p><em>Follow the <strong>50-character rule</strong> (yes, it&#8217;s short, but constraints fuel creativity&#8212;Instagram knows this better than anyone). Limit your subject to a single, punchy line that could complete this sentence: &#8220;<strong>If applied, this commit will&#8230;</strong>&#8221; </em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p></blockquote><p><strong>Instagram tip:</strong> Your first line is what appears in feed previews. Your first 50 characters are what appear in git logs</p><h4>The Story (Body/Description)</h4><p>Instagram&#8217;s best posts don&#8217;t stop at the headline. They dive deeper with a well-crafted caption that explains the &#8220;<strong>why</strong>&#8221;&#8212;<em><strong>why this moment matters, what led to it, what you learned.</strong></em></p><p>Your commit body should do exactly this. A commit should explain:<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a></p><p>&#9;&#8226;&#9;What you changed and why it was necessary</p><p>&#9;&#8226;&#9;Why you made this decision (not how&#8212;your code shows that)</p><p>&#9;&#8226;&#9;Context that helps future developers understand the reasoning</p><p><strong>Instagram (weak caption):</strong> &#8220;<em>Love this photo</em>&#8221;</p><p><strong>Instagram (strong caption):</strong> &#8220;<em>Spent three weeks planning this shot during the perfect monsoon season. The Beautiful sunset at Chakumba peak is a pure magic. This represents the intersection of nature and heritage that inspired our WilderhoodTV project.</em>&#8221;</p><p><strong>Git (weak):</strong> &#8220;<em>fixed performance issue</em>&#8221;</p><p><strong> Git (strong):</strong></p><pre><code><strong>fix(image-processing):</strong> <strong>Optimize IQA pipeline memory usage</strong>

<em>The previous implementation loaded entire image batches into memory before processing, causing Lambda timeout errors on large uploads (&gt;100MB). Refactored to use streaming chunks of 5MB, reducing memory footprint by 60%. This change enables the pipeline to handle 4GB+ batches without exceeding Lambda&#8217;s 10GB limit, critical for high-resolution wildlife photo processing in production. 

<strong>Related to: Parjanya feature request #234</strong></em></code></pre><p>Notice how the strong example provides context? Future developers understand not just what changed, but why. <a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><h4>The Hashtags and Tags (Commit Type/References)</h4><p>Instagram uses hashtags to categorize content and increase discoverability. Git has something similar: <strong>commit types.</strong></p><p>Just as Instagram has specific hashtags (#wildlife, #nature, #architecture), Git has commit types:</p><p>&#9;&#8226;&#9;<strong>feat</strong>: Introducing a new feature</p><p>&#9;&#8226;&#9;<strong>fix</strong>: Addressing a bug</p><p>&#9;&#8226;&#9;<strong>docs</strong>: Documentation changes</p><p>&#9;&#8226;&#9;<strong>refactor</strong>: Code restructuring without changing functionality</p><p>&#9;&#8226;&#9;<strong>perf</strong>: Performance improvements</p><p>&#9;&#8226;&#9;<strong>test</strong>: Adding or updating tests</p><p>&#9;&#8226;&#9;<strong>chore</strong>: Maintenance tasks</p><p>Using commit types is like using the right hashtags&#8212;they help people find relevant commits, they work with automation tools, and they tell a quick story about what kind of change this is. <a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p><h4>Instagram:</h4><pre><code>#wildlife #nature #photography #india #Uttarakhand (max 5 allowed)</code></pre><h4>Git:</h4><pre><code><strong>feat(api):</strong> Add support for create coupons</code></pre><p>The type + scope format makes your commit instantly searchable and understandable.</p><h4>Engagement (Frequency and Thoughtfulness)</h4><p>The most successful Instagram accounts post consistently and thoughtfully. They don&#8217;t save up a year&#8217;s worth of photos and post them all at once. They understand the value of regular, meaningful engagement.</p><p>Your commits should follow the same principle. Commit frequently with clear, focused changes. One well-crafted commit that adds a feature is better than five commits saying &#8220;<strong>stuff</strong>,&#8221; &#8220;<strong>more stuff</strong>,&#8221; &#8220;<strong>fixed it</strong>,&#8221; and &#8220;<strong>I think this works now</strong>.&#8221; <a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p><p>Why? Because:</p><p>&#9;1.&#9;Small, focused commits are easier to understand and review</p><p>&#9;2.&#9;Frequent commits create a narrative of your work</p><p>&#9;3.&#9;Meaningful commits make it easy to revert a specific change if needed</p><p><strong>Instagram analogy:</strong> It&#8217;s better to post one stunning, well-captioned photo once a week than to spam five mediocre ones daily.</p><h4>The Imperative Mood: Commands, Not Confessions</h4><p>Here&#8217;s a subtle but critical difference that separates amateur commit messages from professional ones. Use the imperative mood&#8212;write as if giving a command. <a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a></p><h4>Weak (past tense):</h4><p>&#9;&#8226;&#9;&#8220;<em>Fixed the login bug&#8221;</em></p><p><em>&#9;&#8226;&#9;&#8220;Added new user validation&#8221;</em></p><p><em>&#9;&#8226;&#9;&#8220;Updated the styling&#8221;</em></p><h4>Strong (imperative):</h4><p>&#9;&#8226;&#9;&#8220;<em>Fix the login bug&#8221;</em></p><p><em>&#9;&#8226;&#9;&#8220;Add new user validation&#8221;</em></p><p><em>&#9;&#8226;&#9;&#8220;Update the styling&#8221;</em></p><p>Why does this matter? Because imperative mood completes the sentence: &#8220;<strong>If applied, this commit will fix the login bug.</strong>&#8221; It&#8217;s action-oriented, clear, and aligns with how Git itself describes your changes.</p><p>Think of it like Instagram captions. Would you caption a sunset photo &#8220;<strong>I watched the sunset</strong>&#8221; (past tense) or &#8220;<strong>Watch the golden hour unfold</strong>&#8221; (<em>imperative, engaging</em>)? The second draws people in.</p><h4>The Perfect Commit Message Template</h4><p>Here&#8217;s your Instagram-inspired commit template:</p><pre><code><strong>[type](scope): Brief, imperative description (&#8804;50 chars) 

More detailed explanation of what changed and why. Wrap at 72 characters. Explain the problem you solved, the approach you took, and why this matters. 

Reference any relevant issues, PRs, or discussion: 
Fixes #123. 
Related to: Feature request #456</strong></code></pre><h4>Example (strong):</h4><pre><code><strong>feat(content): Add interactive chapter markers for wildlife docs 

Implemented clickable timeline markers that allow viewers to jump to key moments in documentary chapters. Used Server-Sent Events (SSE) for real-time position tracking across devices.

This addresses viewer feedback that long-form content (25+ mins) needed better navigation. Analytics show 40% of viewers skip to the middle&#8212;this feature aims to guide discovery.

Closes #89</strong></code></pre><p>See how that reads? </p><p>It&#8217;s a story. It&#8217;s professional. </p><p>It&#8217;s something you&#8217;d be proud to put your name on&#8212;just like a great Instagram post.</p><div><hr></div><h4>Why This Matters for Your Career</h4><p>Here&#8217;s something that separates junior developers from senior ones: commit history literacy.</p><div class="pullquote"><p><strong>Senior developers don&#8217;t just look at code&#8212;they read commit messages. When debugging a production issue at 2 AM, they&#8217;re looking for context. When reviewing code, they&#8217;re understanding intent. When maintaining a year-old codebase, they&#8217;re grateful for clear documentation.</strong></p></div><p>Your commits are a portfolio piece. They show:</p><p>&#9;&#8226;&#9;<strong>Communication skills</strong>: Can you explain technical decisions clearly?</p><p>&#9;&#8226;&#9;<strong>Professionalism</strong>: Do you take care with details?</p><p>&#9;&#8226;&#9;<strong>Thoughtfulness</strong>: Do you consider future readers?</p><p>&#9;&#8226;&#9;<strong>Debugging ability</strong>: Can you provide context others can use?</p><p>Companies value developers who write good commits. Open-source projects are more likely to merge PRs from people with clear commit histories. Your future self will thank you when you&#8217;re trying to understand why a decision was made six months ago.</p><h4>Common Mistakes (And How Instagram Teaches Us Better)</h4><h5>Mistake 1: Vague messages</h5><p>&#9;&#8226;&#9;<em><strong>Bad</strong>: &#8220;Update&#8221; | Instagram equivalent: &#8220;Photo&#8221;</em></p><p><em>&#9;&#8226;&#9;<strong>Fix:</strong> &#8220;refactor(parser): Simplify JSON extraction logic&#8221;</em></p><p></p><h5>Mistake 2: Too much in one commit</h5><p>&#9;&#8226;&#9;<strong>Bad</strong>: &#8220;feat: Rewrote entire auth system, refactored database, updated UI, added tests&#8221;</p><p>&#9;&#8226;&#9;<strong>Instagram equivalent</strong>: A 30-image carousel when people want one stunning photo</p><p>&#9;&#8226;&#9;<strong>Fix</strong>: Break it into logical, related commits</p><p></p><h5>Mistake 3: Assuming people know the context</h5><p>&#9;&#8226;&#9;<em><strong>Bad</strong>: &#8220;Fix bug in endpoint&#8221;</em></p><p><em>&#9;&#8226;&#9;<strong>Instagram equivalent</strong>: &#8220;Check this out&#8221; with no context</em></p><p><em>&#9;&#8226;&#9;<strong>Fix</strong>: &#8220;<strong>fix(api)</strong>: Prevent null reference in user details endpoint when profile photo is missing&#8221;</em></p><p></p><h5>Mistake 4: Writing messages for yourself</h5><p>&#9;<em>&#8226;&#9;<strong>Bad</strong>: &#8220;Did the thing&#8221;</em></p><p><em>&#9;&#8226;&#9;<strong>Instagram equivalent</strong>: An inside joke only you understand</em></p><p><em>&#9;&#8226;&#9;<strong>Fix</strong>: Remember, you&#8217;re writing for collaborators and future-you</em></p><div><hr></div><h4>Making It a Habit</h4><p>Like any skill, writing great commits gets easier with practice. Here&#8217;s how to build the habit:</p><p><strong>Start small</strong>: On your next project, pick one rule and focus on it. Maybe it&#8217;s just using imperative mood. Then add another rule next week.</p><p><strong>Use tools</strong>: Configure your editor to open a template on commit. Set up hooks that validate your commit format. Use conventional commit tools like &nbsp;<a href="https://commitizen-tools.github.io/commitizen/">commitizen</a>&nbsp; that guide you through the process.</p><p><strong>Study great commits</strong>: Look at open-source projects you admire. Read their commit histories. See what makes them tick. Just like studying great Instagram photographers teaches you about composition, studying great commits teaches you about code communication.</p><p><strong>Review your own history</strong>: Look at commits you made three months ago. Can you understand why you made each change? If not, that&#8217;s your signal to improve.</p><div><hr></div><h4>The Bigger Picture</h4><p>Your commits tell the story of your code. Instagram tells stories with images; your repository tells stories with commits. Both require the same ingredients: clarity, context, care, and consistency.</p><p>When you write a thoughtful commit message, you&#8217;re not just documenting code&#8212;you&#8217;re building a bridge between your intent and someone else&#8217;s understanding. You&#8217;re making future debugging easier. You&#8217;re showing respect for your collaborators&#8217; time.</p><p>And honestly? In a world where code is read far more often than it&#8217;s written, that&#8217;s one of the most valuable skills you can develop.</p><p>So next time you&#8217;re about to commit with a message like &#8220;fix stuff,&#8221; pause. Ask yourself: Would I post this on Instagram? Would it tell a story? Would people understand and appreciate what I&#8217;m sharing?</p><p>If the answer is no, take another minute and craft something better. Your future self will thank you. Your team will appreciate it. And your commit history will be something you&#8217;re actually proud of&#8212;just like your best Instagram posts.</p><div><hr></div><h4>Key Takeaways:</h4><p>&#9;&#8226;&#9;Commit messages are communication, not code. Treat them with the care you&#8217;d give an Instagram post</p><p>&#9;&#8226;&#9;Use structure: <strong>subject line (&#8804;50 chars)</strong>, blank line, body (explain &#8220;what&#8221; and &#8220;why&#8221;), and references</p><p>&#9;&#8226;&#9;Write in imperative mood (&#8220;Fix&#8221; not &#8220;Fixed&#8221;)</p><p>&#9;&#8226;&#9;Commit frequently with focused changes&#8212;it tells a better story</p><p>&#9;&#8226;&#9;Your commits are a portfolio piece that reflects your professionalism and thoughtfulness</p><div class="pullquote"><p><strong>The best commits, like the best Instagram posts, tell a story that resonates long after they&#8217;re posted. </strong></p><p><strong>Make yours count.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LhwC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LhwC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LhwC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LhwC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LhwC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LhwC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2637527,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/188048654?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LhwC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!LhwC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!LhwC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!LhwC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe41074e5-9db7-47c3-8f23-826c82a42deb_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><strong>7 Best Practices of Git Commit Messages </strong><a href="https://codefinity.com/blog/7-Best-Practices-of-Git-Commit-Messages">https://codefinity.com/blog/7-Best-Practices-of-Git-Commit-Messages</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p><strong>How to Write a Git Commit Message</strong> <a href="https://cbea.ms/git-commit/">https://cbea.ms/git-commit/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p><strong>Git Commit Messages</strong> <a href="https://ig-gems.readthedocs.io/en/latest/coding/git-commit-messages.html">https://ig-gems.readthedocs.io/en/latest/coding/git-commit-messages.html</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p><strong>Elements of a good commit message</strong> <a href="https://docs.wpvip.com/development-workflow/write-a-good-commit-message/">https://docs.wpvip.com/development-workflow/write-a-good-commit-message/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p><strong>Write Better Commits, Build Better Projects</strong> <a href="https://github.blog/developer-skills/github/write-better-commits-build-better-projects/">https://github.blog/developer-skills/github/write-better-commits-build-better-projects/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p><strong>Conventional Commits</strong> <a href="https://www.conventionalcommits.org/en/v1.0.0-beta.2/">https://www.conventionalcommits.org/en/v1.0.0-beta.2/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p><strong>Writing a Good Git Commit Message</strong> <a href="https://www.gitkraken.com/learn/git/best-practices/git-commit-message">https://www.gitkraken.com/learn/git/best-practices/git-commit-message</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p><strong>Git commit message conventions and best practices</strong> <a href="https://www.theserverside.com/video/Follow-these-git-commit-message-guidelines">https://www.theserverside.com/video/Follow-these-git-commit-message-guidelines</a></p></div></div>]]></content:encoded></item><item><title><![CDATA[Intelligent Model Orchestration for AI Agent Systems]]></title><description><![CDATA[Ending the &#8220;One Size Fits All&#8221; Era of AI Infrastructure (learnings from Distributed systems)]]></description><link>https://blog.phagyul.ai/p/intelligent-model-orchestration-for</link><guid isPermaLink="false">https://blog.phagyul.ai/p/intelligent-model-orchestration-for</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Thu, 12 Feb 2026 06:05:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!X5Qv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X5Qv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X5Qv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!X5Qv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!X5Qv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!X5Qv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X5Qv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1653245,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/187683979?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X5Qv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!X5Qv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!X5Qv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!X5Qv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcb19fe57-9a3a-4370-bf3d-334da29e3c91_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most teams deploy AI as a single endpoint.</p><p>One model.<br>One cost tier.<br>One reasoning depth.</p><p>That works &#8212; until:</p><ul><li><p>Costs spike</p></li><li><p>Latency increases</p></li><li><p>Complex tasks fail silently</p></li><li><p>Critical workloads get underpowered models</p></li><li><p>Or simple tasks get massively over-engineered</p></li></ul><h4><strong>Parjanya 2.0 introduces a smarter pattern:</strong></h4><blockquote><p><em>Treat AI like cloud infrastructure &#8212; dynamically route requests to the lowest capable model, enforce SLA rules, and escalate only when necessary.</em></p></blockquote><p>For startups, small teams, and independent developers, this changes everything.</p><p>You don&#8217;t need a massive AI budget to build production-grade intelligence.<br>You need governance.</p><div><hr></div><h2>One Size Fits All Is an Anti-Pattern</h2><p>In distributed systems, we learned:</p><ul><li><p>One database doesn&#8217;t fit all workloads</p></li><li><p>One instance size doesn&#8217;t fit all traffic</p></li><li><p>One cache strategy doesn&#8217;t fit all latency needs</p></li></ul><p>Yet in AI systems?</p><p>Teams deploy:</p><blockquote><p>One model. For every request.</p></blockquote><p>This is architecturally wrong.</p><div><hr></div><h4>This has been first-principal at <a href="https://phagyul.ai">Phagyul AI</a>, </h4><h4>Here is the excerpt &#8220;4-Tier Inference Scaling&#8221;</h4><div class="digest-post-embed" data-attrs="{&quot;nodeId&quot;:&quot;03e9ebf6-cc95-4a02-859f-9d095e07bbb6&quot;,&quot;caption&quot;:&quot;After shipping Parjanya v1.0 through v1.3 (with 17+ patch releases), we&#8217;ve evolved from monolithic friction to a deliberate five-repository polyrepo architecture aligned with team structure and technical boundaries. This post documents our research-driven thought process, the specific tech stack (Nx frontend, FastAPI microservices, PyTorch + MIT-license&#8230;&quot;,&quot;cta&quot;:&quot;Read full story&quot;,&quot;showBylines&quot;:true,&quot;size&quot;:&quot;md&quot;,&quot;isEditorNode&quot;:true,&quot;title&quot;:&quot;Parjanya&#8217;s Polyrepo Architecture: Building Scalable AI/LLM Products with Organizational Autonomy (Part 1)&quot;,&quot;publishedBylines&quot;:[],&quot;post_date&quot;:&quot;2025-12-23T12:34:44.703Z&quot;,&quot;cover_image&quot;:&quot;https://substackcdn.com/image/fetch/$s_!DlFL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa48be658-e370-4fcc-861a-5574afd8b22f_782x533.png&quot;,&quot;cover_image_alt&quot;:null,&quot;canonical_url&quot;:&quot;https://jagadeeshrampam.substack.com/p/parjanyas-polyrepo-architecture-building&quot;,&quot;section_name&quot;:null,&quot;video_upload_id&quot;:null,&quot;id&quot;:182407614,&quot;type&quot;:&quot;newsletter&quot;,&quot;reaction_count&quot;:0,&quot;comment_count&quot;:0,&quot;publication_id&quot;:7361555,&quot;publication_name&quot;:&quot;Jagadeesh Rampam&quot;,&quot;publication_logo_url&quot;:&quot;&quot;,&quot;belowTheFold&quot;:true,&quot;youtube_url&quot;:null,&quot;show_links&quot;:null,&quot;feed_url&quot;:null}"></div><div><hr></div><h1>Problem Statement</h1><h4>AI Agent Systems at Scale Face:</h4><ul><li><p>&#128680; Escalating inference costs</p></li><li><p>&#129504; Overuse of frontier models</p></li><li><p>&#128034; Latency variability</p></li><li><p>&#10060; Unreliable reasoning on critical workloads</p></li><li><p>&#128201; No governance layer</p></li></ul><h4>Startups and teams building AI agents are:</h4><ul><li><p>Paying hyperscale prices</p></li><li><p>Without hyperscale orchestration</p></li></ul><div><hr></div><h1>Market Shift</h1><p>AI is moving from:</p><pre><code><strong>Prompt Engineering &#8212;&gt; Multi-Agent Distributed Systems</strong></code></pre><p>Agent coding frameworks now:</p><ul><li><p>Call tools</p></li><li><p>Spawn subtasks</p></li><li><p>Execute workflows</p></li><li><p>Interact across repos</p></li><li><p>Debug and refactor codebases</p></li></ul><p>But routing remains naive.</p><pre><code>&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
&#9474;     AI AGENT HUB     &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
           &#9474;
           &#9660;
&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
&#9474;   ONE LARGE MODEL    &#9474;
&#9474;   (For Everything)   &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;</code></pre><h5>Problems:</h5><ul><li><p>Cost explosion</p></li><li><p>No workload classification</p></li><li><p>No SLA awareness</p></li><li><p>No intelligent escalation</p></li></ul><div><hr></div><h1>Our Strategy</h1><h3>A Complexity-Aware AI Routing Layer</h3><p>Instead of one model:</p><h5>We introduce:</h5><ul><li><p>Workload classification</p></li><li><p>Complexity scoring</p></li><li><p>SLA enforcement</p></li><li><p>Budget-aware routing</p></li><li><p>Confidence-based escalation</p></li></ul><p>AI becomes governed infrastructure.</p><div><hr></div><h1>Architecture Overview</h1><pre><code>                 &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
                 &#9474;        INCOMING AGENT        &#9474;
                 &#9474;       TASK / REQUEST         &#9474;
                 &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                                 &#9660;
                  &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
                  &#9474;     REQUEST ANALYZER         &#9474;
                  &#9474;  &#8226; Complexity Score          &#9474;
                  &#9474;  &#8226; Context Volume            &#9474;
                  &#9474;  &#8226; SLA Tier                  &#9474;
                  &#9474;  &#8226; Budget Level              &#9474;
                  &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                                  &#9660;
                  &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
                  &#9474;        ROUTING ENGINE        &#9474;
                  &#9474;  Cost + SLA + Risk Aware     &#9474;
                  &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                                  &#9474;
        &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
        &#9660;                         &#9660;                         &#9660;
 &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;       &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;       &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
 &#9474;  Low Tier      &#9474;       &#9474;  Mid Tier      &#9474;       &#9474;  High Tier     &#9474;
 &#9474;  Fast / Cheap  &#9474;       &#9474;  Balanced      &#9474;       &#9474;  Research      &#9474;
 &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;       &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;       &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
                                 &#9474;
                                 &#9660;
                &#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9488;
                &#9474;       CONFIDENCE CHECK       &#9474;
                &#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;</code></pre><div><hr></div><h1>How It Works</h1><h3>Step 1: Compute Complexity (1&#8211;10)</h3><p>Weighted dimensions:</p><ul><li><p>Structural depth</p></li><li><p>Cognitive reasoning</p></li><li><p>Context size</p></li><li><p>Ambiguity</p></li><li><p>Risk/SLA</p></li></ul><h3>Step 2: Route to Lowest Capable Tier</h3><h3>Step 3: Evaluate Confidence</h3><p>If &lt; threshold &#8594; escalate once.</p><p>This mirrors:</p><ul><li><p>Auto-scaling</p></li><li><p>Load balancing</p></li><li><p>Risk-aware distributed design</p></li></ul><h1>The Intelligence: Complexity Computing</h1><pre><code>| <strong>Dimension</strong>      | <strong>Weight | Measures</strong>                |
| -------------- | ------ | ----------------------- |
| Structural     | 25%    | Multi-step depth        |
| Cognitive      | 25%    | Reasoning complexity    |
| Context Volume | 20%    | Token &amp; file load       |
| Ambiguity      | 15%    | Novelty / unclear scope |
| Risk / SLA     | 15%    | Business sensitivity    |</code></pre><p><strong>Parjanya 2.0</strong> assigns each request a score from 1 to 10.</p><p><code>Complexity = (0.25 &#215; Structural)</code><br><code>+ (0.25 &#215; Cognitive)</code><br><code>+ (0.20 &#215; Context)</code><br><code>+ (0.15 &#215; Ambiguity)</code><br><code>+ (0.15 &#215; Risk)</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OL81!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OL81!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OL81!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OL81!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OL81!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OL81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1660224,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/187683979?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OL81!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OL81!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OL81!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OL81!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54c5fbf2-1773-44ea-af69-b318eac8f7a3_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h1>Why This Wins for AI Agent Coding</h1><h5>In agent coding systems:</h5><div class="pullquote"><p><em><strong>60% tasks are routine</strong></em></p><p><em><strong>30% require architectural reasoning</strong></em></p><p><em><strong>10% require deep research/debug</strong></em></p></div><p><em>Yet most systems use high-tier models 100% of the time. I strongly recommend, workload-aware routing.</em></p><p></p><div><hr></div><h1>Winnings(projected)</h1><h5>Typical results:</h5><ul><li><p><em><strong>40&#8211;70% cost reduction</strong></em></p></li><li><p><em><strong>25&#8211;40% latency improvement</strong></em></p></li><li><p><em><strong>Reduced failure cascades</strong></em></p></li><li><p><em><strong>Predictable SLA compliance</strong></em></p></li><li><p><em><strong>Lower  risk in critical flows</strong></em></p></li></ul><div><hr></div><h1>Competitive Positioning</h1><pre><code>| <strong>Approach</strong>                | <strong>Problem</strong>                         |
| ----------------------- | ------------------------------- |
| Single-model deployment | Cost inefficient                |
| Manual routing rules    | Brittle                         |
| Static tiering          | Non-adaptive                    |
| Parjanya 2.0            | Adaptive, governed, intelligent |</code></pre><h5>We are:</h5><blockquote><p><strong>The orchestration layer for AI agent systems.</strong></p><p><strong>The routing and governance standard for AI reasoning workloads.</strong></p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ljyq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ljyq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 424w, https://substackcdn.com/image/fetch/$s_!ljyq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 848w, https://substackcdn.com/image/fetch/$s_!ljyq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 1272w, https://substackcdn.com/image/fetch/$s_!ljyq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ljyq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png" width="1536" height="944" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:944,&quot;width&quot;:1536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2542217,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/187683979?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F53dcfd3f-ad68-4668-8a46-c1c526e98c15_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ljyq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 424w, https://substackcdn.com/image/fetch/$s_!ljyq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 848w, https://substackcdn.com/image/fetch/$s_!ljyq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 1272w, https://substackcdn.com/image/fetch/$s_!ljyq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0504309-2b78-4ab1-afb3-b284ef7fd5f5_1536x944.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="pullquote"><p><strong>&#8220;One model for everything&#8221;<br>is the same mistake as<br>&#8220;One server for all traffic.&#8221;</strong></p><p><strong>Distributed systems taught us better. AI systems must evolve.</strong></p></div><h4>Here are couple of Real world examples</h4><h1>&#128218; References &amp; Prior Art</h1><div class="pullquote"><p><strong>Parjanya 2.0 does not emerge in isolation.<br>It&#8217;s architecture is grounded in established distributed systems principles, cloud infrastructure design, and modern AI research.</strong></p></div><h4><strong>Below are the key bodies of work that support the orchestration-first approach.</strong></h4><h2>1&#65039;&#8419; AWS Well-Architected Framework</h2><p><strong>Authority:</strong> Amazon Web Services</p><p>The AWS Well-Architected Framework emphasizes workload-aware design and right-sized infrastructure. Two pillars are especially relevant:</p><ul><li><p><strong>Performance Efficiency</strong></p></li><li><p><strong>Cost Optimization</strong></p></li></ul><p>Core principle:</p><blockquote><p>Select the appropriate resource type and size based on workload characteristics.</p></blockquote><p>This directly parallels model tier selection in AI systems.<br>Using the most powerful compute for every workload is considered poor architecture in cloud systems &#8212; the same logic applies to AI models.</p><p><strong>References:</strong></p><ul><li><p>AWS Well-Architected Overview<br><a href="https://aws.amazon.com/architecture/well-architected/">https://aws.amazon.com/architecture/well-architected/</a></p></li><li><p>Performance Efficiency Pillar<br><a href="https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html">https://docs.aws.amazon.com/wellarchitected/latest/performance-efficiency-pillar/welcome.html</a></p></li><li><p>Cost Optimization Pillar<br><a href="https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html">https://docs.aws.amazon.com/wellarchitected/latest/cost-optimization-pillar/welcome.html</a></p></li></ul><div><hr></div><h2>2&#65039;&#8419; AWS Auto Scaling &amp; Right-Sizing</h2><p><strong>Authority:</strong> AWS Compute Engineering</p><p>AWS strongly promotes dynamic scaling and workload-based resource allocation.</p><p>Core principle:</p><blockquote><p>Do not statically provision the largest instance for all traffic.</p></blockquote><p>This is structurally identical to avoiding a single frontier AI model for every request.</p><p><strong>Reference:</strong></p><ul><li><p>Amazon EC2 Auto Scaling<br><a href="https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html">https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html</a></p></li></ul><div><hr></div><h2>3&#65039;&#8419; AWS Step Functions &#8212; Orchestration Pattern</h2><p><strong>Authority:</strong> AWS Serverless Architecture</p><p>AWS Step Functions formalizes the separation of orchestration logic from execution logic.</p><p>Core principle:</p><blockquote><p>Decouple coordination from execution to improve reliability and scalability.</p></blockquote><p>Parjanya applies this same architectural pattern:</p><ul><li><p>Models perform execution.</p></li><li><p>The routing layer governs orchestration.</p></li></ul><p><strong>Reference:</strong></p><ul><li><p>AWS Step Functions<br><a href="https://aws.amazon.com/step-functions/">https://aws.amazon.com/step-functions/</a></p></li><li><p>Developer Guide<br><a href="https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html">https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html</a></p></li></ul><div><hr></div><h2>4&#65039;&#8419; AWS Builders&#8217; Library &#8212; Load Shedding</h2><p><strong>Authority:</strong> Amazon Engineering</p><p>The AWS Builders&#8217; Library provides deep technical insight into how Amazon designs resilient systems.</p><p>Particularly relevant:</p><blockquote><p>&#8220;Using Load Shedding to Avoid Overload&#8221;</p></blockquote><p>Core insight:<br>Not all requests should be treated equally under stress.</p><p>This aligns with:</p><ul><li><p>SLA-tier routing</p></li><li><p>Critical-path prioritization</p></li><li><p>Confidence-based escalation policies</p></li></ul><p><strong>Reference:</strong></p><ul><li><p>Using Load Shedding to Avoid Overload<br><a href="https://aws.amazon.com/builders-library/using-load-shedding-to-avoid-overload/">https://aws.amazon.com/builders-library/using-load-shedding-to-avoid-overload/</a></p></li></ul><div><hr></div><h2>5&#65039;&#8419; Google SRE &#8212; Service Level Objectives &amp; Error Budgets</h2><p><strong>Authority:</strong> Google Site Reliability Engineering</p><p>Google&#8217;s SRE model introduced error budgets and differentiated reliability tiers.</p><p>Core principle:</p><blockquote><p>Not all traffic deserves equal reliability guarantees.</p></blockquote><p>This supports:</p><ul><li><p>SLA-aware routing</p></li><li><p>Risk-weighted orchestration</p></li><li><p>Guardrails for high-sensitivity workloads</p></li></ul><p><strong>References:</strong></p><ul><li><p>SRE Book (Free Online)<br><a href="https://sre.google/books/">https://sre.google/books/</a></p></li><li><p>Service Level Objectives Chapter<br><a href="https://sre.google/sre-book/service-level-objectives/">https://sre.google/sre-book/service-level-objectives/</a></p></li></ul><div><hr></div><h2>6&#65039;&#8419; Martin Fowler &#8212; Microservices Architecture</h2><p><strong>Authority:</strong> Martin Fowler</p><p>Microservices architecture formalized the idea that different services have distinct scaling and performance characteristics.</p><p>Core principle:</p><blockquote><p>Avoid monolithic systems; separate concerns based on workload.</p></blockquote><p>Applying this to AI:<br>Different reasoning tasks require different levels of compute and reasoning depth.</p><p><strong>Reference:</strong></p><ul><li><p>Microservices Article<br><a href="https://martinfowler.com/articles/microservices.html">https://martinfowler.com/articles/microservices.html</a></p></li></ul><div><hr></div><h2>7&#65039;&#8419; Mixture of Experts (MoE) &#8212; Google Research</h2><p><strong>Authority:</strong> Google Brain</p><p>Seminal paper:</p><blockquote><p>&#8220;Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer&#8221;</p></blockquote><p>This research demonstrates that even inside large neural networks, not all parameters are activated for every input. Instead, tokens are routed dynamically to specialized experts.</p><p>In other words:<br>Frontier AI models themselves reject the &#8220;one size fits all&#8221; paradigm internally.</p><p>Parjanya extends this idea externally &#8212; at the system architecture level.</p><p><strong>Reference:</strong></p><ul><li><p>Mixture of Experts Paper (arXiv)<br><a href="https://arxiv.org/abs/1701.06538">https://arxiv.org/abs/1701.06538</a></p></li></ul><div><hr></div><h2>8&#65039;&#8419; AWS Bedrock &#8212; Multi-Model Strategy</h2><p><strong>Authority:</strong> AWS AI/ML</p><p>AWS Bedrock promotes selecting foundation models based on workload characteristics and cost/performance tradeoffs.</p><p>Core principle:<br>Model selection should be contextual.</p><p><strong>Reference:</strong></p><ul><li><p>Amazon Bedrock<br><a href="https://aws.amazon.com/bedrock/">https://aws.amazon.com/bedrock/</a></p></li></ul><div><hr></div><h2>9&#65039;&#8419; LangChain &#8212; Routing &amp; Agent Orchestration</h2><p><strong>Authority:</strong> LangChain</p><p>LangChain includes explicit routing constructs for selecting chains, tools, or agents based on task classification.</p><p>Core principle:<br>AI systems require orchestration layers, not monolithic execution.</p><p><strong>Reference:</strong></p><ul><li><p>Routing Use Cases<br>https://python.langchain.com/docs/use_cases/routing/</p></li></ul><div><hr></div><h2>&#128287; Microsoft Semantic Kernel &#8212; Planning &amp; Skill Routing</h2><p><strong>Authority:</strong> Microsoft AI</p><p>Semantic Kernel introduces planners and skill orchestration for AI workflows.</p><p>Core principle:<br>Complex AI applications require controlled coordination between components.</p><p><strong>Reference:</strong></p><ul><li><p>Semantic Kernel Documentation<br><a href="https://learn.microsoft.com/en-us/semantic-kernel/">https://learn.microsoft.com/en-us/semantic-kernel/</a></p></li></ul><div><hr></div><p>Distributed systems engineering has long rejected monolithic resource allocation.</p><p>Cloud architecture evolved to embrace:</p><ul><li><p>Workload-aware scaling</p></li><li><p>Cost optimization per task</p></li><li><p>SLA differentiation</p></li><li><p>Orchestration layers</p></li><li><p>Risk-aware decision systems</p></li></ul><p>Modern AI systems are now at a similar inflection point.</p><p>Parjanya 2.0 applies proven distributed systems principles to AI reasoning infrastructure &#8212; transforming model selection from a static choice into a governed, adaptive system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OsO-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OsO-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 424w, https://substackcdn.com/image/fetch/$s_!OsO-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 848w, https://substackcdn.com/image/fetch/$s_!OsO-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 1272w, https://substackcdn.com/image/fetch/$s_!OsO-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OsO-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png" width="1024" height="1462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1462,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1485519,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/187683979?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff5451c4c-917b-4168-ab89-4f869fe0ff9d_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OsO-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 424w, https://substackcdn.com/image/fetch/$s_!OsO-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 848w, https://substackcdn.com/image/fetch/$s_!OsO-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 1272w, https://substackcdn.com/image/fetch/$s_!OsO-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F009f6785-5ed8-405c-9ae3-84b6ae846088_1024x1462.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>How Parjanya Extends Prior Art</h1><p>The works cited above establish a consistent architectural truth: distributed systems must be workload-aware, cost-sensitive, and reliability-governed.</p><p>However, most AI systems today still operate as monoliths &#8212; routing every request to a single model tier without classification, SLA differentiation, or escalation control.</p><h5>Parjanya 2.0 extends prior art by:</h5><ul><li><p>Applying right-sizing principles to AI model selection</p></li><li><p>Externalizing orchestration beyond the model layer</p></li><li><p>Introducing complexity scoring as a governance mechanism</p></li><li><p>Enforcing SLA-aware routing policies</p></li><li><p>Implementing confidence-based escalation guardrails</p></li></ul><h4>In essence:</h4><div class="pullquote"><p><strong>Cloud systems evolved from static provisioning to intelligent orchestration.<br>Parjanya applies that same evolution to AI reasoning infrastructure.</strong></p><p><strong>It transforms AI from a single endpoint into a governed, distributed system.</strong></p></div>]]></content:encoded></item><item><title><![CDATA[Claude API Lock-in: Prevention & Recovery Guide]]></title><description><![CDATA[Operational guidelines for preventing accidental API billing and recovering locked developer environments]]></description><link>https://blog.phagyul.ai/p/claude-api-lock-in-prevention-and</link><guid isPermaLink="false">https://blog.phagyul.ai/p/claude-api-lock-in-prevention-and</guid><dc:creator><![CDATA[Phagyul AI Systems Pvt Ltd]]></dc:creator><pubDate>Mon, 09 Feb 2026 15:21:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0g_Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote><p>The &#8220;<strong>API lock-in</strong>&#8221; problem affects Claude Code users who accidentally switch from subscription billing to API billing and cannot revert<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. This costs teams $600+/developer/year in unexpected charges<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. This guide provides prevention strategies and recovery paths based on January 2026 Anthropic updates.</p></blockquote><div class="pullquote"><p><strong>Key takeaway: </strong>Identity separation prevents lock-in. One subscription account for daily coding, separate API accounts for experiments and production</p></div><h2><strong>The Problem</strong></h2><h3><strong>What Is API Lock-in?</strong></h3><p>Claude Code (VS Code extension/CLI) supports two authentication modes<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>:</p><ul><li><p><strong>Subscription mode: </strong>OAuth with Claude Pro/Max account (<strong>$20-200/month fixed</strong>)</p></li><li><p><strong>API mode: </strong>API key with pay-as-you-go billing (<strong>$3-75 per million tokens</strong>)</p></li></ul><p>Once Claude Code accepts an API key, it may permanently switch to API billing&#8212;even after removing the key, logging out, and restarting<a href="https://jagadeeshrampam.substack.com/publish/post/187377120#footnote-anchor-1">1</a>. Users report being unable to revert to subscription limits despite active <strong>Pro/Max subscriptions</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0g_Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0g_Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!0g_Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!0g_Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!0g_Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0g_Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/baa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2544919,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/187377120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0g_Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!0g_Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!0g_Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!0g_Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaa23502-e4ce-4d42-9266-95111a2959f9_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Why It Happens</strong></h4><p>Anthropic deliberately separated subscription and API usage in January 2026 to prevent pricing arbitrage<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>. Subscription tokens now only work in official clients. The lock-in is aside effect of this enforcement mechanism.</p><h4><strong>Financial Impact</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rcfx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rcfx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 424w, https://substackcdn.com/image/fetch/$s_!Rcfx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 848w, https://substackcdn.com/image/fetch/$s_!Rcfx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 1272w, https://substackcdn.com/image/fetch/$s_!Rcfx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rcfx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png" width="982" height="368" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:368,&quot;width&quot;:982,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72423,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/187377120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Rcfx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 424w, https://substackcdn.com/image/fetch/$s_!Rcfx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 848w, https://substackcdn.com/image/fetch/$s_!Rcfx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 1272w, https://substackcdn.com/image/fetch/$s_!Rcfx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0045b21-a19d-41f7-a1f8-d620cc4e544b_982x368.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Cost comparison</strong>: subscription vs API-locked developer</p><p>For a 5-developer team, accidental lock-in costs <strong>$3,000-6,000/year </strong>in unnecessary charges.</p><div><hr></div><h2><strong>Prevention Strategy: Identity Separation</strong></h2><h3><strong>The Three-Identity System</strong></h3><h4><strong>Identity Architecture</strong></h4><p><strong>Identity A (Dev/Subscription): </strong>Personal Claude Max account for daily coding&#8211;One per developer</p><ul><li><p>Never expose API keys</p></li><li><p>VS Code OAuth only</p></li><li><p>Status: &#8220;<strong>Claude Max 5x</strong>&#8221; (not &#8220;API Usage&#8221;)</p></li></ul><p><strong>Identity B (Experiments): </strong>Team API account for POCs and testing&#8211;Shared across team</p><ul><li><p>Isolated terminal/conda environment</p></li><li><p>Explicit API key export</p></li><li><p>Fine to &#8220;<strong>lock-in</strong>&#8221; (meant for API)</p></li></ul><p><strong>Identity C (Production): </strong>Organization API account for services&#8211;Shared infrastructure account</p><ul><li><p>GitHub Secrets, Lambda environment variables</p></li><li><p>Workspace-level rate limits<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p></li><li><p>Proper cost monitoring</p></li></ul><h4><strong>Solo Developer Setup</strong></h4><p>Even solo developers should use this pattern:</p><div class="pullquote"><p><strong>Identity A: your+dev@company.com (Max5x)</strong></p><p><strong>Identity B: your+api@company.com(experiments)</strong></p><p><strong>Identity C: company-infra@company.com(production)</strong></p></div><p>All three controlled by you, preventing accidental mixing.</p><div><hr></div><h2><strong>Team Setup</strong></h2><p>When hiring, each developer gets their own Identity A, shares B/C:</p><h3><strong>Dev 1</strong></h3><pre><code><strong>Identity A: dev1+dev@company.com (their Max 5x)
Identity B: team-api@company.com (shared)
Identity C: company-infra@company.com (shared)</strong></code></pre><h3><strong>Dev 2</strong></h3><pre><code><strong>Identity A: dev2+dev@company.com (their Max 5x)
Identity B: team-api@company.com (shared)
Identity C: company-infra@company.com (shared)</strong></code></pre><div><hr></div><h3><strong>Implementation Checklist</strong></h3><h4><strong>Day 1: Account Setup (15 minutes)</strong></h4><pre><code>Create Identity A account &#8594; Subscribe to Claude Max 5x ($100/month)
Create Identity B account &#8594; Enable API billing in Console
Create Identity C account &#8594; Set up Organization workspace
Generate API keys for B and C (store in 1Password/Vault, recommended*)</code></pre><h3><strong>Day 1: Machine Con</strong>fi<strong>guration (20 minutes)</strong></h3><ol><li><p><strong>Primary VS Code (Subscription Lock)</strong></p><ol><li><p>Install Claude Code extension</p></li><li><p>Sign in via browser OAuth (Identity A)</p></li><li><p>Verify status shows &#8220;<strong>Max 5x</strong>&#8221; (not &#8220;API Usage&#8221;)</p></li><li><p>Add to .<strong>vscode/settings.json</strong>: &#8220;<strong>claude.apiKey&#8221;: false</strong></p></li><li><p><strong>Confirm: env | grep ANTHROPIC</strong> returns empty</p></li></ol></li><li><p><strong>API Test Environment (Isolated)</strong></p><ol><li><p>Create conda environment: <code>conda create -n claude-api-test python=3.11</code></p></li><li><p>Add Identity B key to .env in separate directory</p></li><li><p>Never open this directory in primary VS Code</p></li><li><p>Run experiments: <code>conda activate claude-api-test &amp;&amp; python poc_runner.py</code></p></li></ol></li><li><p><strong>Production Con</strong>fi<strong>guration</strong></p><ol><li><p>Add Identity C key to GitHub Secrets: <strong>ANTHROPIC_API_KEY_PROD</strong></p></li><li><p>Configure workspace rate limits in Anthropic Console <a href="https://jagadeeshrampam.substack.com/publish/post/187377120#footnote-anchor-5">5</a></p></li><li><p>Set up cost monitoring dashboards</p></li></ol></li></ol><h3><strong>Week 1: Team Onboarding</strong></h3><ul><li><p>Share this document with all developers</p></li><li><p>Print &#8220;Lock-in Prevention Rules&#8221; (see Appendix A)</p></li><li><p>Add Identity B/C credentials to team password manager</p></li><li><p>Schedule 30-minute pairing session with new hires</p></li><li><p>Verify each developer&#8217;s VS Code shows subscription status</p></li></ul><div><hr></div><h2><strong>Recovery Paths (If Already Locked)</strong></h2><h2>Reset Claude Code to Subscription Mode (VS Code)</h2><p>Use this procedure <strong>only when you want Claude Code to use a subscription (Max/Pro) account</strong> and <em>not</em> API billing.</p><h3>Step 0 &#8212; Close All Claude Sessions (important)</h3><ul><li><p>Close <strong>all VS Code windows</strong></p></li><li><p>Make sure no <code>claude</code> CLI process is running</p></li></ul><div><hr></div><h3>Step 1 &#8212; Log out via Claude CLI</h3><p>Open a terminal (outside VS Code if possible) and run:</p><pre><code><code>claude logout</code></code></pre><p>You should see a confirmation that the session was cleared.</p><blockquote><p>This clears cached authentication state used by the Claude CLI.</p></blockquote><div><hr></div><h3>Step 2 &#8212; Remove any API key from the environment</h3><p>In the same terminal, run:</p><pre><code><code>env | grep ANTHROPIC</code></code></pre><ul><li><p>If <strong>nothing is returned</strong>, you&#8217;re good.</p></li><li><p>If you see <code>ANTHROPIC_API_KEY</code>, <strong>unset it</strong>:</p></li></ul><pre><code><code>unset ANTHROPIC_API_KEY</code></code></pre><p>Also check:</p><ul><li><p><code>.env</code> files</p></li><li><p>shell profiles (<code>.zshrc</code>, <code>.bashrc</code>)</p></li><li><p>VS Code workspace settings</p></li></ul><div><hr></div><h3>Step 3 &#8212; Restart VS Code completely</h3><p>This part matters more than it sounds:</p><ul><li><p>Quit VS Code entirely (<code>Cmd + Q</code> / <code>Ctrl + Q</code>)</p></li><li><p>Wait a few seconds</p></li><li><p>Reopen VS Code fresh (don&#8217;t restore previous windows)</p></li></ul><div><hr></div><h3>Step 4 &#8212; Sign in using Browser OAuth</h3><p>When VS Code opens:</p><ol><li><p>Open Command Palette<br><code>Cmd + Shift + P</code> / <code>Ctrl + Shift + P</code></p></li><li><p>Select <strong>&#8220;Claude: Sign in&#8221;</strong></p></li><li><p>Choose <strong>&#8220;Sign in with Claude&#8221;</strong></p></li><li><p>This will open a browser window</p></li><li><p><strong>Select your subscription account</strong> (Pro / Max)</p></li></ol><p>&#128683; <strong>Do not choose &#8220;Use API Key&#8221;</strong> &#8212; even once.</p><div><hr></div><h3>Step 5 &#8212; Verify subscription status (critical)</h3><p>Look at the <strong>VS Code status bar</strong> (bottom of the window).</p><p>You should see:</p><blockquote><p><strong>&#8220;Max 5x&#8221;</strong> (or Pro equivalent)</p></blockquote><p>You should <strong>NOT</strong> see:</p><ul><li><p>&#8220;API Usage&#8221;</p></li><li><p>token counters</p></li><li><p>billing indicators</p></li></ul><div><hr></div><h3>Step 6 &#8212; Lock it down (recommended)</h3><p>To prevent accidental API key usage, add this to your workspace:</p><p><code>.vscode/settings.json</code></p><pre><code><code>{
  "claude.apiKey": false
}</code></code></pre><p>This makes it harder to accidentally switch modes later.</p><div><hr></div><h2>If this does NOT work</h2><p>If the status bar still shows <strong>API Usage</strong>, the account/environment is likely <strong>permanently API-locked</strong>.</p><p>At that point:</p><ul><li><p>Repurpose this account for <strong>API experiments</strong></p></li><li><p>Create a <strong>new Claude account</strong> for subscription use</p></li><li><p>Re-run this SOP with the new account</p></li></ul><p>This sounds drastic, but it&#8217;s the most reliable recovery path.</p><p>If status still shows &#8220;<strong>API Usage</strong>,&#8221; proceed to Option 2 <a href="https://jagadeeshrampam.substack.com/publish/post/187377120#footnote-anchor-1">1</a>.</p><div><hr></div><h3><strong>Option 2: </strong>Clean Cutover</h3><p>If the environment remains in API mode after a full subscription re-auth, treat the account as <strong>permanently API-bound</strong> and proceed with a clean separation.</p><ul><li><p>Reclassify the existing account as <strong>API-only</strong>, designated for experiments and ad-hoc tooling</p></li><li><p>Assign it the role of <strong>Identity B (Experiments)</strong></p></li><li><p>Create a <strong>new Claude account</strong> using a different email address</p></li><li><p>Activate <strong>Claude Max 5x</strong> on the new account</p></li><li><p>Use this new account exclusively for <strong>daily development and interactive coding</strong></p></li><li><p>Retain the original account as a <strong>shared API resource</strong> for the team</p></li></ul><h4><strong>Cost consideration:</strong></h4><p>This approach may incur <strong>one month of overlapping subscription cost (~$100)</strong> during transition, but reliably avoids <strong>$600+ per developer per year</strong> in ongoing API overages.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VbZg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VbZg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!VbZg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!VbZg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!VbZg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VbZg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1597578,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jagadeeshrampam.substack.com/i/187377120?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VbZg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!VbZg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!VbZg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!VbZg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78b393a1-42ba-452f-a586-4a3c441b3e00_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>January 2026 Anthropic Updates</strong></h3><h4><strong>Changes A</strong>ff<strong>ecting Poly-Repo Deployments (internal)</strong></h4><ol><li><p><strong>Opus 3 Deprecation: </strong>Update model strings to Sonnet 4.5 / Opus 4.5<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a></p></li><li><p><strong>Workspace Rate Limits (GA): </strong>Set per-project quotas to prevent cross-contamination <a href="https://jagadeeshrampam.substack.com/publish/post/187377120#footnote-anchor-5">5</a></p></li><li><p><strong>Structured Outputs (GA): </strong>Use JSON schemas for 30% token reduction<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p></li><li><p><strong>Subscription Token Restrictions: </strong>Subscriptions now locked to official clients</p></li></ol><h4><strong>Required Actions</strong></h4><h2><strong>Update deprecated models</strong></h2><p><code>OLD: &#8220;claude-3-opus-20240229&#8221;</code><br><code>NEW: &#8220;claude-3.5-sonnet-20241022&#8221; # Sonnet 4.5</code></p><p><strong>Create workspace quotas</strong></p><p><code>parjanya-iqa: 30k ITPM / 8k OTPM<br>smriti-embeddings: 20k ITPM / 5k OTPM</code></p><div><hr></div><h2><strong>First-Year Roadmap</strong></h2><h4><strong>Month 1: Foundation</strong></h4><ul><li><p>Set up three-identity system</p></li><li><p>Configure primary VS Code (subscription-locked)</p></li><li><p>Create isolated API test environment</p></li><li><p>Implement usage tracking</p></li></ul><h4><strong>Month 2-3: Documentation</strong></h4><ul><li><p>Write root <strong>CLAUDE.md</strong> for each repository</p></li><li><p>Create <em>component-specific</em> <strong>CLAUDE.md</strong> files</p></li><li><p>Document model selection guidelines</p></li><li><p>Build context engineering templates</p></li></ul><h4><strong>Month 4-6: Optimization</strong></h4><ul><li><p>Implement prompt caching patterns</p></li><li><p>Measure cache hit rates</p></li><li><p>Optimize context for token reduction</p></li><li><p>Monitor subscription utilization</p></li></ul><h4><strong>Month 7-12: Scaling</strong></h4><ul><li><p>Onboard additional team members</p></li><li><p>Share best practices across projects</p></li><li><p>Build internal tooling for common patterns</p></li><li><p>Measure ROI and cost savings</p></li></ul><div><hr></div><h2><strong>Success Metrics</strong></h2><h4><strong>Week 1</strong></h4><ul><li><p>All developers show &#8220;<strong>Max 5x</strong>&#8221; status (not &#8220;<strong>API Usage</strong>&#8221;)</p></li><li><p>Zero accidental API key exposure in primary VS Code</p></li><li><p>Isolated API environment functional</p></li><li><p>Usage tracking implemented</p></li></ul><h4><strong>Month 3</strong></h4><ul><li><p><strong>CLAUDE.md</strong> files in all active repositories</p></li><li><p>Context engineering reduces token usage <strong>50-80%</strong></p></li><li><p>Prompt caching implemented for high-frequency tasks</p></li><li><p>No lock-in incidents</p></li></ul><h4><strong>Year 1</strong></h4><ul><li><p>Predictable costs: $100-200/developer/month</p></li><li><p>Cache hit rate: 60-80% for common workflows</p></li><li><p>New hire onboarding: 2 hours (down from 2 weeks)</p></li><li><p>Cost savings: $600+/developer/year vs API-locked scenario</p></li></ul><div><hr></div><h2><strong>Appendix A: Lock-in Prevention Rules</strong></h2><h4><strong>Print and display prominently:</strong></h4><ul><li><p><strong>Primary VS Code: </strong>NEVER paste <strong>ANTHROPIC_API_KEY</strong></p></li><li><p><strong>Status Check: </strong>Daily verify &#8220;<strong>Max 5x</strong>&#8221; (not &#8220;<strong>API Usage</strong>&#8221;)</p></li><li><p><strong>Environment:</strong><code>env | grep ANTHROPIC</code> must be empty</p></li><li><p><strong>API Work: </strong>Always in separate terminal + conda env</p></li><li><p><strong>Emergency: </strong>If &#8220;<strong>API Usage</strong>&#8221; appears &#8594; logout immediately &#8594; ping @team-lead</p></li></ul><div><hr></div><h2><strong>Appendix B: Poly-Repo Context Structure</strong></h2><p><code>parjanya/</code></p><p><code>&#9500;&#9472;&#9472; CLAUDE.md             # Root project context</code></p><p><code>&#9500;&#9472;&#9472; api/</code></p><p><code>&#9474;   &#9500;&#9472;&#9472; CLAUDE.md         # API service context</code></p><p><code>&#9474;   &#9492;&#9472;&#9472; iqa_endpoint/</code></p><p><code>&#9474;       &#9492;&#9472;&#9472; CLAUDE.md     # Component-specific</code></p><p><code>&#9492;&#9472;&#9472; pipeline/</code></p><p><code>    &#9492;&#9472;&#9472; CLAUDE.md         # Pipeline context</code></p><p><code>smriti/</code></p><p><code>&#9500;&#9472;&#9472; CLAUDE.md             # Root context</code></p><p><code>&#9492;&#9472;&#9472; embeddings/</code></p><p><code>    &#9492;&#9472;&#9472; CLAUDE.md         # Component-specific</code></p><h4><strong>Context rules:</strong></h4><ul><li><p>Maximum 3-5 files per prompt</p></li><li><p>Summarize cross-repo references</p></li><li><p>Always include relevant <strong>CLAUDE.md</strong></p></li><li><p>Token budget: <em>3,000 tokens maximum</em></p></li></ul><h2><strong>References</strong></h2><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Reddit user report. (2026, January 17). Claude Code CLI switched me to API billing, can&#8217;tgo back to Pro usage. r/ClaudeAI. <a href="https://www.reddit.com/r/ClaudeAI/comments/1qfou1s/">https://www.reddit.com/r/ClaudeAI/comments/1qfou1s/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Reddit analysis. (2026, January 28). Claude Subscriptions are up to 36x cheaper than APIfor cache reads. r/ClaudeAI. <a href="https://www.reddit.com/r/ClaudeAI/comments/1qpcj8q/">https://www.reddit.com/r/ClaudeAI/comments/1qpcj8q/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Intuition Labs. (2026, January 29). Claude Pricing Explained: Subscription Plans &amp; APICosts. <a href="https://intuitionlabs.ai/articles/claude-pricing-plans-api-costs">https://intuitionlabs.ai/articles/claude-pricing-plans-api-costs</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>AI Checker. (2026, January 10). Anthropic Just Blocked Claude Code Subscriptions OutsideIts Ecosystem. <a href="https://ai-checker.webcoda.com.au/articles/anthropic-blocks-claude-code-subscriptions-third-party-tools-2026">https://ai-checker.webcoda.com.au/articles/anthropic-blocks-claude-code-subscriptions-third-party-tools-2026</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Anthropic. (2026, January 28). Rate limits - Claude API Docs. <a href="https://platform.claude.com/docs/en/release-notes/overview">https://platform.claude.com/docs/en/release-notes/overview</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>The Agency Journal. (2026, January 6). Claude AI Latest Updates January 2026: NewFeatures &amp; Changes. <a href="https://www.theagencyjournal.com/claude-ai-january-2026-updates-whats-new-and-what-you-need-to-know/">https://www.theagencyjournal.com/claude-ai-january-2026-updates-whats-new-and-what-you-need-to-know/</a></p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>Release Bot. (2026, January 29). Anthropic - Claude Developer Platform Release Notes. <a href="https://releasebot.io/updates/anthropic/claude-developer-platform">https://releasebot.io/updates/anthropic/claude-developer-platform</a></p><div><hr></div><p></p></div></div>]]></content:encoded></item></channel></rss>