{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Praveen Lavu · Dispatch",
  "description": "Field notes on autonomous AI factories, agent orchestration, and enterprise systems.",
  "home_page_url": "https://praveenlavu.com/",
  "feed_url": "https://praveenlavu.com/feed.json",
  "language": "en-US",
  "authors": [
    {
      "name": "Praveen Lavu",
      "url": "https://praveenlavu.com/about/"
    }
  ],
  "items": [
    {
      "id": "https://praveenlavu.com/dispatch/when-the-claim-arrives-twice/",
      "url": "https://praveenlavu.com/dispatch/when-the-claim-arrives-twice/",
      "title": "When the Claim Arrives Twice",
      "summary": "The first time it happened in production, I stared at the logs for twenty minutes before I understood what I was looking at.",
      "content_text": "The first time it happened in production, I stared at the logs for twenty minutes before I understood what I was looking at.",
      "date_published": "2026-09-10T14:00:02.047Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-deploy-that-didn-t-need-to-happen/",
      "url": "https://praveenlavu.com/dispatch/the-deploy-that-didn-t-need-to-happen/",
      "title": "The Deploy That Didn't Need to Happen",
      "summary": "There is a particular kind of waste that looks like productivity. A deployment pipeline spins up, pulls the code, runs the checks, packages the artifact, pushes to the target, and reports success. Minutes of wall-clock time, gone. The logs are clean. The status badge is green. And if you look closely at what just happened, the thing that got deployed is identical to what was already running. Not…",
      "content_text": "There is a particular kind of waste that looks like productivity. A deployment pipeline spins up, pulls the code, runs the checks, packages the artifact, pushes to the target, and reports success. Minutes of wall-clock time, gone. The logs are clean. The status badge is green. And if you look closely at what just happened, the thing that got deployed is identical to what was already running. Not…",
      "date_published": "2026-09-09T14:00:03.642Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-agent-atom/",
      "url": "https://praveenlavu.com/dispatch/the-agent-atom/",
      "title": "The Agent Atom",
      "summary": "Three months in, a production agent I had stopped watching started producing outputs that looked right but weren't. A dependency upstream had shifted. No crash. No alert. The agent kept running. By the time anyone noticed, weeks of downstream work had to be unwound.",
      "content_text": "Three months in, a production agent I had stopped watching started producing outputs that looked right but weren't. A dependency upstream had shifted. No crash. No alert. The agent kept running. By the time anyone noticed, weeks of downstream work had to be unwound.",
      "date_published": "2026-09-09T14:00:03.625Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/budgeting-for-the-appexchange-security-review/",
      "url": "https://praveenlavu.com/dispatch/budgeting-for-the-appexchange-security-review/",
      "title": "Budgeting for the AppExchange Security Review",
      "summary": "The email came on a Thursday afternoon. Seventeen findings. One of them was a sharing model violation I had introduced nine weeks earlier, in a sprint that had nothing to do with the feature we were trying to ship. The launch date I had promised our first design partner was already three weeks behind us.",
      "content_text": "The email came on a Thursday afternoon. Seventeen findings. One of them was a sharing model violation I had introduced nine weeks earlier, in a sprint that had nothing to do with the feature we were trying to ship. The launch date I had promised our first design partner was already three weeks behind us.",
      "date_published": "2026-09-09T14:00:03.566Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/treating-blog-posts-like-agent-pipelines/",
      "url": "https://praveenlavu.com/dispatch/treating-blog-posts-like-agent-pipelines/",
      "title": "Treating Blog Posts Like Agent Pipelines",
      "summary": "The night I shipped my sixth article that week, I knew something had changed. Not in the content itself, in the process. Each piece had moved through six distinct transformations before it reached a reader. Different constraints at every stage. Different quality bars. Clean handoffs between each one. Around midnight the frame snapped into place: I hadn't been writing blog posts. I'd been running…",
      "content_text": "The night I shipped my sixth article that week, I knew something had changed. Not in the content itself, in the process. Each piece had moved through six distinct transformations before it reached a reader. Different constraints at every stage. Different quality bars. Clean handoffs between each one. Around midnight the frame snapped into place: I hadn't been writing blog posts. I'd been running…",
      "date_published": "2026-09-06T14:00:04.943Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-number-your-local-llm-won-t-tell-you/",
      "url": "https://praveenlavu.com/dispatch/the-number-your-local-llm-won-t-tell-you/",
      "title": "The Number Your Local LLM Won't Tell You",
      "summary": "There's a particular kind of wrong that feels deeply personal when you're debugging alone late at night. The kind where the model is supposed to be smart enough, the hardware is supposed to be fast enough, and the setup took you a weekend to get right. And then the output is just... wrong. Not wrong in a way you can point at. Wrong in a way that makes you question your own reasoning before you…",
      "content_text": "There's a particular kind of wrong that feels deeply personal when you're debugging alone late at night. The kind where the model is supposed to be smart enough, the hardware is supposed to be fast enough, and the setup took you a weekend to get right. And then the output is just... wrong. Not wrong in a way you can point at. Wrong in a way that makes you question your own reasoning before you…",
      "date_published": "2026-09-03T04:10:59.965Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/why-your-edi-tokenizer-crashes-on-large-files-and/",
      "url": "https://praveenlavu.com/dispatch/why-your-edi-tokenizer-crashes-on-large-files-and/",
      "title": "Why Your EDI Tokenizer Crashes on Large Files (And the indexOf Fix)",
      "summary": "The file looked fine. EDI files always look fine when you're staring at them in a text editor, all those segment terminators and element delimiters lined up in their places like they're following orders. The format is built for machine-to-machine clarity. Every piece has a known structure. Every envelope has a header that tells you exactly how to read the rest of it.",
      "content_text": "The file looked fine. EDI files always look fine when you're staring at them in a text editor, all those segment terminators and element delimiters lined up in their places like they're following orders. The format is built for machine-to-machine clarity. Every piece has a known structure. Every envelope has a header that tells you exactly how to read the rest of it.",
      "date_published": "2026-08-31T00:48:35.004Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/why-your-self-heal-loop-needs-a-canary-gate/",
      "url": "https://praveenlavu.com/dispatch/why-your-self-heal-loop-needs-a-canary-gate/",
      "title": "Why Your Self-Heal Loop Needs a Canary Gate",
      "summary": "The alert came in at 1:47 AM. The kind I had trained a system to handle. The kind that wasn't supposed to need me anymore.",
      "content_text": "The alert came in at 1:47 AM. The kind I had trained a system to handle. The kind that wasn't supposed to need me anymore.",
      "date_published": "2026-08-31T00:47:03.380Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/two-orgs-same-code-one-breaks/",
      "url": "https://praveenlavu.com/dispatch/two-orgs-same-code-one-breaks/",
      "title": "Two Orgs. Same Code. One Breaks.",
      "summary": "I stared at the console error for longer than I want to admit.",
      "content_text": "I stared at the console error for longer than I want to admit.",
      "date_published": "2026-08-31T00:47:03.315Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-floor-you-set/",
      "url": "https://praveenlavu.com/dispatch/the-floor-you-set/",
      "title": "The Floor You Set",
      "summary": "There was a moment, somewhere around the third failed routing attempt in a row, when I realized the problem wasn't the agent. It was me. More specifically, it was a rule I had written with the best of intentions and then quietly forgotten about.",
      "content_text": "There was a moment, somewhere around the third failed routing attempt in a row, when I realized the problem wasn't the agent. It was me. More specifically, it was a rule I had written with the best of intentions and then quietly forgotten about.",
      "date_published": "2026-08-31T00:46:53.368Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-deploy-that-ran-at-noon/",
      "url": "https://praveenlavu.com/dispatch/the-deploy-that-ran-at-noon/",
      "title": "The Deploy That Ran at Noon",
      "summary": "The deploy was scheduled for eleven in the morning. It ran at noon. Nobody touched the config. Nobody changed the schedule. The pipeline did exactly what it was told. That was the problem.",
      "content_text": "The deploy was scheduled for eleven in the morning. It ran at noon. Nobody touched the config. Nobody changed the schedule. The pipeline did exactly what it was told. That was the problem.",
      "date_published": "2026-08-31T00:46:53.337Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/solo-founders-don-t-write-postmortems-they-should/",
      "url": "https://praveenlavu.com/dispatch/solo-founders-don-t-write-postmortems-they-should/",
      "title": "Solo founders don't write postmortems. They should.",
      "summary": "There was a morning my machine just stopped working.",
      "content_text": "There was a morning my machine just stopped working.",
      "date_published": "2026-08-31T00:46:53.273Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-network-security-principle-ai-deployment-gets/",
      "url": "https://praveenlavu.com/dispatch/the-network-security-principle-ai-deployment-gets/",
      "title": "The Network Security Principle AI Deployment Gets Wrong",
      "summary": "I spent a long time thinking about AI agent security the wrong way.",
      "content_text": "I spent a long time thinking about AI agent security the wrong way.",
      "date_published": "2026-08-31T00:42:31.460Z",
      "tags": [
        "principle"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-csp-wall-nobody-warned-you-about/",
      "url": "https://praveenlavu.com/dispatch/the-csp-wall-nobody-warned-you-about/",
      "title": "The CSP Wall Nobody Warned You About",
      "summary": "The component worked. It passed review, it passed testing, it passed QA on every sandbox I had access to. Then it shipped and a portion of the customer base started reporting that a specific interaction just stopped working. The other customers had no issues. Same component. Same package version. Different orgs.",
      "content_text": "The component worked. It passed review, it passed testing, it passed QA on every sandbox I had access to. Then it shipped and a portion of the customer base started reporting that a specific interaction just stopped working. The other customers had no issues. Same component. Same package version. Different orgs.",
      "date_published": "2026-08-29T20:52:01.847Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-composite-key-that-stops-duplicate-healthcare/",
      "url": "https://praveenlavu.com/dispatch/the-composite-key-that-stops-duplicate-healthcare/",
      "title": "The Composite Key That Stops Duplicate Healthcare Claims at the Door",
      "summary": "There is a class of problem in healthcare claims processing that does not crash anything. No alarm fires. No log goes red. The system keeps running, claims keep flowing, and somewhere inside that volume, the same claim gets paid twice.",
      "content_text": "There is a class of problem in healthcare claims processing that does not crash anything. No alarm fires. No log goes red. The system keeps running, claims keep flowing, and somewhere inside that volume, the same claim gets paid twice.",
      "date_published": "2026-08-27T16:10:26.957Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/your-apex-class-has-a-sharing-posture-you-just/",
      "url": "https://praveenlavu.com/dispatch/your-apex-class-has-a-sharing-posture-you-just/",
      "title": "Your Apex class has a sharing posture. You just haven't declared it.",
      "summary": "I was reviewing a service class in a mature org. Clean code, well-tested, passing all the gates. Then someone asked: \"Is this running with or without sharing?\"",
      "content_text": "I was reviewing a service class in a mature org. Clean code, well-tested, passing all the gates. Then someone asked: \"Is this running with or without sharing?\"",
      "date_published": "2026-08-21T07:10:35.672Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/propose-never-apply/",
      "url": "https://praveenlavu.com/dispatch/propose-never-apply/",
      "title": "Propose, Never Apply",
      "summary": "There is a specific kind of 3am temptation in autonomous agent development. You have built an agent that works. It knows its own skills. It can reason about where it excels and where it falls short. And somewhere in that reasoning loop, it surfaces an idea: I should change how I respond to this type of input. I would be better.",
      "content_text": "There is a specific kind of 3am temptation in autonomous agent development. You have built an agent that works. It knows its own skills. It can reason about where it excels and where it falls short. And somewhere in that reasoning loop, it surfaces an idea: I should change how I respond to this type of input. I would be better.",
      "date_published": "2026-08-21T05:33:13.034Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/securing-the-invisible-pipeline-oauth-2-0-client/",
      "url": "https://praveenlavu.com/dispatch/securing-the-invisible-pipeline-oauth-2-0-client/",
      "title": "Securing the Invisible Pipeline: OAuth 2.0 Client Credentials and the EDI Authentication Problem",
      "summary": "Healthcare data moves through a hidden layer most people never think about. Between the system that submits a claim and the payer that adjudicates it sits an intermediary that speaks a language older than the modern web. EDI transactions, the X12-formatted messages for claims, eligibility checks, and remittances, have been the backbone of healthcare administration for decades. And for most of…",
      "content_text": "Healthcare data moves through a hidden layer most people never think about. Between the system that submits a claim and the payer that adjudicates it sits an intermediary that speaks a language older than the modern web. EDI transactions, the X12-formatted messages for claims, eligibility checks, and remittances, have been the backbone of healthcare administration for decades. And for most of…",
      "date_published": "2026-08-21T04:27:44.024Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/why-we-source-deployed-a-production-salesforce/",
      "url": "https://praveenlavu.com/dispatch/why-we-source-deployed-a-production-salesforce/",
      "title": "Why We Source-Deployed a Production Salesforce App Before Packaging It",
      "summary": "There is a question that comes up the moment you are about to ship a Salesforce app to a real customer org. Not a sandbox. Not a scratch org for a demo. A real production environment with real users who are going to depend on this thing every single day. The question sounds responsible. It sounds like the mature, professional path. \"Should we package this before we go live?\"",
      "content_text": "There is a question that comes up the moment you are about to ship a Salesforce app to a real customer org. Not a sandbox. Not a scratch org for a demo. A real production environment with real users who are going to depend on this thing every single day. The question sounds responsible. It sounds like the mature, professional path. \"Should we package this before we go live?\"",
      "date_published": "2026-08-21T04:00:17.239Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/when-everything-is-running-nothing-survives/",
      "url": "https://praveenlavu.com/dispatch/when-everything-is-running-nothing-survives/",
      "title": "When Everything Is Running, Nothing Survives",
      "summary": "I knew something was wrong before the screen froze.",
      "content_text": "I knew something was wrong before the screen froze.",
      "date_published": "2026-08-21T04:00:17.221Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-test-that-has-to-fail/",
      "url": "https://praveenlavu.com/dispatch/the-test-that-has-to-fail/",
      "title": "The Test That Has to Fail",
      "summary": "There is a specific kind of dread that sets in when everything looks too good.",
      "content_text": "There is a specific kind of dread that sets in when everything looks too good.",
      "date_published": "2026-08-21T04:00:17.204Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-dashboard-lied-to-me-and-i-built-it/",
      "url": "https://praveenlavu.com/dispatch/the-dashboard-lied-to-me-and-i-built-it/",
      "title": "The Dashboard Lied to Me (And I Built It)",
      "summary": "The first time I noticed something was off, everything looked fine.",
      "content_text": "The first time I noticed something was off, everything looked fine.",
      "date_published": "2026-08-21T04:00:17.179Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/rules-that-know-where-they-are/",
      "url": "https://praveenlavu.com/dispatch/rules-that-know-where-they-are/",
      "title": "Rules That Know Where They Are",
      "summary": "Every session I opened, the same thing happened. The AI assistant loaded, and with it came the full operating rulebook for everything I might ever do: Salesforce org safety guards, publishing pipeline discipline, agent self-star taxonomy requirements, UI typography standards, concurrency policy, IP firewall rules. All twelve thousand tokens of it. Every time. Whether I was writing a LinkedIn…",
      "content_text": "Every session I opened, the same thing happened. The AI assistant loaded, and with it came the full operating rulebook for everything I might ever do: Salesforce org safety guards, publishing pipeline discipline, agent self-star taxonomy requirements, UI typography standards, concurrency policy, IP firewall rules. All twelve thousand tokens of it. Every time. Whether I was writing a LinkedIn…",
      "date_published": "2026-08-21T04:00:17.131Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/i-shipped-a-broken-plan-then-i-built-the-pattern/",
      "url": "https://praveenlavu.com/dispatch/i-shipped-a-broken-plan-then-i-built-the-pattern/",
      "title": "I shipped a broken plan. Then I built the pattern that would have stopped it.",
      "summary": "Three in the morning. I had just approved my own plan. Not reviewed it, approved it. My tired brain said it was solid. The agents started executing. By morning I had a beautifully built implementation of the wrong thing.",
      "content_text": "Three in the morning. I had just approved my own plan. Not reviewed it, approved it. My tired brain said it was solid. The agents started executing. By morning I had a beautifully built implementation of the wrong thing.",
      "date_published": "2026-08-21T04:00:17.096Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/discover-before-you-refactor/",
      "url": "https://praveenlavu.com/dispatch/discover-before-you-refactor/",
      "title": "Discover Before You Refactor",
      "summary": "There is a specific feeling when you open a codebase intending to clean it up. Almost smug. You remember writing this thing, or you've read it before, and you can already see the problems from the doorway. The function names are too long. The abstractions leaked in the wrong direction. There's that one class that does eleven things and everyone's afraid to touch.",
      "content_text": "There is a specific feeling when you open a codebase intending to clean it up. Almost smug. You remember writing this thing, or you've read it before, and you can already see the problems from the doorway. The function names are too long. The abstractions leaked in the wrong direction. There's that one class that does eleven things and everyone's afraid to touch.",
      "date_published": "2026-08-21T04:00:17.069Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-router-didn-t-know-the-rules/",
      "url": "https://praveenlavu.com/dispatch/the-router-didn-t-know-the-rules/",
      "title": "The Router Didn't Know the Rules",
      "summary": "There is a specific kind of dread that arrives when you realize a system you built has been doing something wrong the whole time. Not crashing. Not throwing errors. Just quietly, confidently, doing the wrong thing. I hit that moment while reviewing routing logs late one evening.",
      "content_text": "There is a specific kind of dread that arrives when you realize a system you built has been doing something wrong the whole time. Not crashing. Not throwing errors. Just quietly, confidently, doing the wrong thing. I hit that moment while reviewing routing logs late one evening.",
      "date_published": "2026-08-20T14:20:35.550Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/stop-maintaining-edi-fixture-files/",
      "url": "https://praveenlavu.com/dispatch/stop-maintaining-edi-fixture-files/",
      "title": "Stop Maintaining EDI Fixture Files",
      "summary": "It is 4:30 on a Friday. Sprint review in thirty minutes. Someone changed a segment in the claim generator last week, a small fix, completely reasonable, and the test suite is failing on seven fixture files that no longer match what the code produces. You open the first one. Eight hundred bytes of pipe-delimited segments, loop structures, interchange control headers. You open the second. Then the…",
      "content_text": "It is 4:30 on a Friday. Sprint review in thirty minutes. Someone changed a segment in the claim generator last week, a small fix, completely reasonable, and the test suite is failing on seven fixture files that no longer match what the code produces. You open the first one. Eight hundred bytes of pipe-delimited segments, loop structures, interchange control headers. You open the second. Then the…",
      "date_published": "2026-08-20T14:20:35.511Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/your-salesforce-rest-endpoint-should-return-202/",
      "url": "https://praveenlavu.com/dispatch/your-salesforce-rest-endpoint-should-return-202/",
      "title": "Your Salesforce REST endpoint should return 202, not 200",
      "summary": "There is a moment every API builder knows. You ship the endpoint, the integration team says it works, and three weeks later something upstream starts misbehaving in ways that do not make sense. The data is there, eventually. But a consuming client timed out waiting for it, or gave up and retried, creating duplicates. The logs show nothing technically wrong.",
      "content_text": "There is a moment every API builder knows. You ship the endpoint, the integration team says it works, and three weeks later something upstream starts misbehaving in ways that do not make sense. The data is there, eventually. But a consuming client timed out waiting for it, or gave up and retried, creating duplicates. The logs show nothing technically wrong.",
      "date_published": "2026-08-19T02:01:31.816Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/the-zone-line-how-i-stopped-trusting-my-ai-agents/",
      "url": "https://praveenlavu.com/dispatch/the-zone-line-how-i-stopped-trusting-my-ai-agents/",
      "title": "The Zone Line: How I Stopped Trusting My AI Agents (And Started Trusting the Boundary)",
      "summary": "There is a specific kind of dread that hits you when you realize an AI agent just sent something to production that you didn't intend to send. Not a crash, not an error. The system ran fine. The agent did exactly what it was designed to do. The output just went somewhere it shouldn't have.",
      "content_text": "There is a specific kind of dread that hits you when you realize an AI agent just sent something to production that you didn't intend to send. Not a crash, not an error. The system ran fine. The agent did exactly what it was designed to do. The output just went somewhere it shouldn't have.",
      "date_published": "2026-08-19T01:56:59.666Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/preflight-gates-local-llm/",
      "url": "https://praveenlavu.com/dispatch/preflight-gates-local-llm/",
      "title": "Pre-flight Gates for Local LLM Operations",
      "summary": "The machine died at 3am.",
      "content_text": "The machine died at 3am.",
      "date_published": "2026-08-18T21:28:13.981Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/what-forgetting-science-taught-me-about-my-agents/",
      "url": "https://praveenlavu.com/dispatch/what-forgetting-science-taught-me-about-my-agents/",
      "title": "What Forgetting Science Taught Me About My Agents",
      "summary": "I was watching one of my agents fail at something it had done perfectly two weeks earlier.",
      "content_text": "I was watching one of my agents fail at something it had done perfectly two weeks earlier.",
      "date_published": "2026-08-18T21:18:01.087Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/appexchange-security-review-preflight/",
      "url": "https://praveenlavu.com/dispatch/appexchange-security-review-preflight/",
      "title": "What an AppExchange security review preflight actually checks",
      "summary": "The email arrives looking innocent enough. \"Congratulations on submitting to the AppExchange Security Review.\" Then you open the linked documentation and feel it, that specific flavor of dread reserved for large PDFs with multiple appendices.",
      "content_text": "The email arrives looking innocent enough. \"Congratulations on submitting to the AppExchange Security Review.\" Then you open the linked documentation and feel it, that specific flavor of dread reserved for large PDFs with multiple appendices.",
      "date_published": "2026-08-17T20:32:32.268Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/platform-events-phi-leak/",
      "url": "https://praveenlavu.com/dispatch/platform-events-phi-leak/",
      "title": "The Shield Gap: PHI in Platform Events",
      "summary": "Shield was on. The fields were encrypted. The security assessment was scheduled for next month. Everyone felt good.",
      "content_text": "Shield was on. The fields were encrypted. The security assessment was scheduled for next month. Everyone felt good.",
      "date_published": "2026-08-08T14:11:20.445Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/per-utterance-authorization-risky-ops/",
      "url": "https://praveenlavu.com/dispatch/per-utterance-authorization-risky-ops/",
      "title": "The Gate That Expires After One Message",
      "summary": "Something goes wrong at 2am. You pull the logs. The agent had authorization, of course it did. You gave it authorization six hours ago when the session started. You'd moved on to other things. The session token was still warm, and the agent executed the risky operation on the wrong target with full confidence that you'd approved.",
      "content_text": "Something goes wrong at 2am. You pull the logs. The agent had authorization, of course it did. You gave it authorization six hours ago when the session started. You'd moved on to other things. The session token was still warm, and the agent executed the risky operation on the wrong target with full confidence that you'd approved.",
      "date_published": "2026-08-08T14:11:20.299Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/generating-agent-fleet-from-spec/",
      "url": "https://praveenlavu.com/dispatch/generating-agent-fleet-from-spec/",
      "title": "From One Spec to Two Hundred Agents",
      "summary": "There is a moment in every serious multi-agent project where someone finally says the quiet part out loud.",
      "content_text": "There is a moment in every serious multi-agent project where someone finally says the quiet part out loud.",
      "date_published": "2026-08-08T14:11:19.253Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/five-obligations-agent-entry-point/",
      "url": "https://praveenlavu.com/dispatch/five-obligations-agent-entry-point/",
      "title": "The Five Obligations of an Agent Entry Point",
      "summary": "There's a version of agent routing that lives in almost every platform codebase I've seen, including my own early drafts. It's a function. Sometimes two hundred lines, sometimes a thousand. It reads the incoming message, hunts for keywords, pattern-matches on intent signals, and hands off to a specialist. \"Summarize\" goes left. \"Write code\" goes right. Both in the same message? Good luck.",
      "content_text": "There's a version of agent routing that lives in almost every platform codebase I've seen, including my own early drafts. It's a function. Sometimes two hundred lines, sometimes a thousand. It reads the incoming message, hunts for keywords, pattern-matches on intent signals, and hands off to a specialist. \"Summarize\" goes left. \"Write code\" goes right. Both in the same message? Good luck.",
      "date_published": "2026-08-02T22:32:34.727Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/tils/macos-timeout-perl-alarm/",
      "url": "https://praveenlavu.com/tils/macos-timeout-perl-alarm/",
      "title": "macOS has no timeout(1): perl alarm is the built-in substitute",
      "summary": "Stock macOS ships no timeout(1); it is a GNU coreutils tool. perl is on every Mac: alarm plus exec bounds any command with a hard deadline in one line, no polling loop and no extra install.",
      "content_text": "Stock macOS ships no timeout(1); it is a GNU coreutils tool. perl is on every Mac: alarm plus exec bounds any command with a hard deadline in one line, no polling loop and no extra install.",
      "date_published": "2026-07-08T12:00:00.000Z",
      "tags": [
        "til",
        "macos",
        "shell",
        "timeout",
        "ops"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/protecting-config-in-packaged-apps/",
      "url": "https://praveenlavu.com/dispatch/protecting-config-in-packaged-apps/",
      "title": "Killing Secrets in Packaged Apps",
      "summary": "There is a specific feeling when a security review comes back with \"hardcoded credentials\" in the findings. Not embarrassment exactly. The slow realization that you already knew, somewhere, that the way you wired that callout was always going to end here. Temporary became permanent. And now it is a blocker.",
      "content_text": "There is a specific feeling when a security review comes back with \"hardcoded credentials\" in the findings. Not embarrassment exactly. The slow realization that you already knew, somewhere, that the way you wired that callout was always going to end here. Temporary became permanent. And now it is a blocker.",
      "date_published": "2026-07-07T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/dynamic-soql-bind-allowlist/",
      "url": "https://praveenlavu.com/dispatch/dynamic-soql-bind-allowlist/",
      "title": "Dynamic SOQL Without Getting Burned",
      "summary": "There is a particular kind of dread that sets in at two in the morning when you realize the query you shipped last week can be turned against you.",
      "content_text": "There is a particular kind of dread that sets in at two in the morning when you realize the query you shipped last week can be turned against you.",
      "date_published": "2026-07-06T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/tils/zsh-does-not-word-split-variables/",
      "url": "https://praveenlavu.com/tils/zsh-does-not-word-split-variables/",
      "title": "zsh does not word-split unquoted variables like bash does",
      "summary": "bash splits an unquoted $flags string into separate arguments. zsh does not: SH_WORD_SPLIT is off by design, so the command gets one argument and rejects it. Use an array, or force the split with the = expansion flag.",
      "content_text": "bash splits an unquoted $flags string into separate arguments. zsh does not: SH_WORD_SPLIT is off by design, so the command gets one argument and rejects it. Use an array, or force the split with the = expansion flag.",
      "date_published": "2026-07-04T12:00:00.000Z",
      "tags": [
        "til",
        "zsh",
        "bash",
        "shell",
        "portability"
      ]
    },
    {
      "id": "https://praveenlavu.com/tils/launchd-caches-codesigning-verdicts/",
      "url": "https://praveenlavu.com/tils/launchd-caches-codesigning-verdicts/",
      "title": "launchd caches a codesigning verdict until you bootout",
      "summary": "launchd holds onto the codesigning verdict it formed when a job was registered. Ship a rebuilt binary to the same path and the job dies on spawn with a stale verdict. The fix is bootout plus bootstrap, not another restart.",
      "content_text": "launchd holds onto the codesigning verdict it formed when a job was registered. Ship a rebuilt binary to the same path and the job dies on spawn with a stale verdict. The fix is bootout plus bootstrap, not another restart.",
      "date_published": "2026-06-30T12:00:00.000Z",
      "tags": [
        "til",
        "macos",
        "launchd",
        "codesigning",
        "ops"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/999-acknowledgment-hipaa-handshake/",
      "url": "https://praveenlavu.com/dispatch/999-acknowledgment-hipaa-handshake/",
      "title": "Every 837 You Send Needs a 999 Back: How the HIPAA Acknowledgment Loop Works",
      "summary": "There is a particular kind of dread that hits you at two in the morning when you realize the system you spent six months building has been quietly lying to you.",
      "content_text": "There is a particular kind of dread that hits you at two in the morning when you realize the system you spent six months building has been quietly lying to you.",
      "date_published": "2026-06-15T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/conception-evidence-matrix-solo-inventors/",
      "url": "https://praveenlavu.com/dispatch/conception-evidence-matrix-solo-inventors/",
      "title": "A conception-evidence matrix for solo inventors",
      "summary": "Most solo inventors misunderstand first-to-file the same way: they think the clock starts when they had the idea. It doesn't. Under the AIA, the clock that matters is when you file.",
      "content_text": "Most solo inventors misunderstand first-to-file the same way: they think the clock starts when they had the idea. It doesn't. Under the AIA, the clock that matters is when you file.",
      "date_published": "2026-06-15T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/healthcare-file-upload-integrity-platform-native/",
      "url": "https://praveenlavu.com/dispatch/healthcare-file-upload-integrity-platform-native/",
      "title": "Healthcare file-upload integrity with platform-native primitives",
      "summary": "The reflex makes sense. PHI lands in your upload queue, compliance is breathing down your neck, and the nearest file-integrity library is one install away. I've been there. Three tabs open, comparing SDKs, before I stopped and asked the real question: what do I actually need?",
      "content_text": "The reflex makes sense. PHI lands in your upload queue, compliance is breathing down your neck, and the nearest file-integrity library is one install away. I've been there. Three tabs open, comparing SDKs, before I stopped and asked the real question: what do I actually need?",
      "date_published": "2026-06-15T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/reversible-installer-for-cli-config/",
      "url": "https://praveenlavu.com/dispatch/reversible-installer-for-cli-config/",
      "title": "A reversible installer for your CLI config",
      "summary": "Every CLI installer I've ever run leaves a question hanging: what exactly did it touch, and can I get back? I've been burned enough times (clobbered configs, mystery overwrites, a setup that \"worked\" until the moment I tried to undo it) that reversibility stopped being a nice-to-have. It became the first constraint I wrote down.",
      "content_text": "Every CLI installer I've ever run leaves a question hanging: what exactly did it touch, and can I get back? I've been burned enough times (clobbered configs, mystery overwrites, a setup that \"worked\" until the moment I tried to undo it) that reversibility stopped being a nice-to-have. It became the first constraint I wrote down.",
      "date_published": "2026-06-15T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/salesforce-deploy-permissions-you-already-granted/",
      "url": "https://praveenlavu.com/dispatch/salesforce-deploy-permissions-you-already-granted/",
      "title": "When a Salesforce deploy fails on permissions you already granted",
      "summary": "The deploy succeeded. The data transfer failed. The error lied to me.",
      "content_text": "The deploy succeeded. The data transfer failed. The error lied to me.",
      "date_published": "2026-06-15T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/scratch-org-first-deploy-discipline/",
      "url": "https://praveenlavu.com/dispatch/scratch-org-first-deploy-discipline/",
      "title": "Scratch-org-first as a deploy discipline",
      "summary": "The first time I pushed a half-shaped metadata manifest straight to a shared sandbox, I cost my team an afternoon. The org was dirty from a previous sprint, the error message made no sense, and rolling back took longer than the deploy itself. Expensive. And completely avoidable.",
      "content_text": "The first time I pushed a half-shaped metadata manifest straight to a shared sandbox, I cost my team an afternoon. The org was dirty from a previous sprint, the error message made no sense, and rolling back took longer than the deploy itself. Expensive. And completely avoidable.",
      "date_published": "2026-06-15T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/iq-eq-aq-shift/",
      "url": "https://praveenlavu.com/dispatch/iq-eq-aq-shift/",
      "title": "Random Work Is the New Deep Work: Notes on the IQ → EQ → AQ Shift",
      "summary": "My work journal writes itself: every session gets captured by a hook, and a nightly job distills the day into one page. Eighty-four entries since April 4. This morning I scrolled back through all of them looking for a through-line, and the honest answer is there isn't one. An EDI acknowledgment loop on a Monday. A drift detector for model routing on a Wednesday. License hygiene on a Friday. A…",
      "content_text": "My work journal writes itself: every session gets captured by a hook, and a nightly job distills the day into one page. Eighty-four entries since April 4. This morning I scrolled back through all of them looking for a through-line, and the honest answer is there isn't one. An EDI acknowledgment loop on a Monday. A drift detector for model routing on a Wednesday. License hygiene on a Friday. A…",
      "date_published": "2026-06-10T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/local-llm-fleet-two-queues/",
      "url": "https://praveenlavu.com/dispatch/local-llm-fleet-two-queues/",
      "title": "Two queues for local-LLM fleets",
      "summary": "Two ollama pulls, plus an LM Studio Llama 70B load, plus two subagents hitting a cloud LLM provider's API, plus seven daemons running scheduled scans. All at once. 2026-05-13, 10:58 UTC. Kernel panic.",
      "content_text": "Two ollama pulls, plus an LM Studio Llama 70B load, plus two subagents hitting a cloud LLM provider's API, plus seven daemons running scheduled scans. All at once. 2026-05-13, 10:58 UTC. Kernel panic.",
      "date_published": "2026-05-27T14:11:06.998Z",
      "tags": [
        "principle"
      ]
    },
    {
      "id": "https://praveenlavu.com/dispatch/soar-chunking-agents/",
      "url": "https://praveenlavu.com/dispatch/soar-chunking-agents/",
      "title": "Agent Routing Caches: A Competence Ratchet from SOAR Chunking",
      "summary": "I was watching my own routing agent send the same task to the same sub-agent for the forty-seventh time. \"Summarize this PDF.\" Same shape, same answer, every single time. And on attempt forty-eight, it stopped, thought hard, burned the tokens, and arrived at the exact route it had already arrived at forty-seven times before.",
      "content_text": "I was watching my own routing agent send the same task to the same sub-agent for the forty-seventh time. \"Summarize this PDF.\" Same shape, same answer, every single time. And on attempt forty-eight, it stopped, thought hard, burned the tokens, and arrived at the exact route it had already arrived at forty-seven times before.",
      "date_published": "2026-05-23T12:00:00.000Z",
      "tags": [
        "essay"
      ]
    }
  ]
}
