191 lines
138 KiB
HTML
191 lines
138 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><script async="" src="https://www.googletagmanager.com/gtag/js?id=G-ECJJ2Q2SJQ"></script><title data-next-head=""></title><link rel="preconnect" href="https://bridge.hackernoon.com" data-next-head=""/><link rel="preconnect" href="https://cdn.hackernoon.com" data-next-head=""/><link rel="preconnect" href="https://hackernoon.imgix.net" data-next-head=""/><link rel="dns-prefetch" href="https://cdn.hackernoon.com" data-next-head=""/><meta name="description" content="Learn how retrieval-augmented generation (RAG) helps AI SRE agents use runbooks, postmortems, and documentation to investigate real production incidents." data-next-head=""/><meta property="og:title" content="Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing | HackerNoon" data-next-head=""/><meta property="og:description" content="Learn how retrieval-augmented generation (RAG) helps AI SRE agents use runbooks, postmortems, and documentation to investigate real production incidents." data-next-head=""/><meta name="image" property="og:image" content="https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png" data-next-head=""/><meta property="twitter:title" content="Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing | HackerNoon" data-next-head=""/><meta property="twitter:description" content="Learn how retrieval-augmented generation (RAG) helps AI SRE agents use runbooks, postmortems, and documentation to investigate real production incidents." data-next-head=""/><meta property="twitter:image" content="https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png" data-next-head=""/><meta name="twitter:card" content="summary_large_image" data-next-head=""/><meta name="twitter:site" content="@hackernoon" data-next-head=""/><link rel="canonical" href="https://hackernoon.com/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="x-default" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="en" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/es/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="es" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/ja/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="ja" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/lv/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="lv" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/ca/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="ca" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/da/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="da" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/zh/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="zh" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/so/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="so" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/sw/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="sw" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/xh/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="xh" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/tr/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="tr" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/tl/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="tl" data-next-head=""/><link rel="alternate" href="https://hackernoon.com/lang/ps/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing" hrefLang="ps" data-next-head=""/><link rel="preload" as="font" href="/fonts/HackerNoonFont/hackernoonv1-regular-webfont.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/121be0391d0b0ef0.css" as="style"/><link rel="preload" href="/_next/static/css/6d530d6069fd563f.css" as="style"/><link rel="preload" as="image" imageSrcSet="https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=640 640w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=750 750w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=828 828w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1080 1080w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1200 1200w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1920 1920w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=2048 2048w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=3840 3840w" imageSizes="(max-width: 768px) 100vw, 900px" data-next-head=""/><script type="application/ld+json" data-next-head="">{"@context":"http://schema.org","@type":"Article","name":"Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing","headline":"Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing","author":{"@type":"Person","name":"Akhilesh Rao Meesala"},"datePublished":"2026-07-26","image":"https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png","articleSection":"site-reliability-engineering","articleBody":"In my previous article, I described building a semi-autonomous SRE agent that investigates incidents and drafts fixes for human approval. This one is about the part of that build I have not told yet: how the agent knows what it knows, and how many tries it took to get there. In my previous article, I described building a semi-autonomous SRE agent that investigates incidents and drafts fixes for human approval. This one is about the part of that build I have not told yet: how the agent knows what it knows, and how many tries it took to get there. my previous article There is a pattern to AI DevOps demos. The agent gets a clean alert, queries a metric, finds an obvious anomaly, and produces a confident diagnosis. Everyone applauds. Then someone points it at a real environment and it confidently recommends restarting a service that has been deprecated for two years. The gap between the demo and production is not intelligence. It is context. An LLM knows what Kubernetes is. It does not know that your payments-api has a flaky liveness probe everyone ignores, that the checkout team owns the retry policy, or that the last three "database incidents" were actually cache misconfigurations. That knowledge lives in your runbooks, your postmortems, your architecture docs, and the heads of your senior engineers. payments-api The agent I described in my previous article already pulled in runbook context when an incident required it. What I did not cover is how it got there. My first build had none of that knowledge, and my second attempt delivered it badly. Here is the path to runbooks plus retrieval-augmented generation, and what I learned about keeping an agent's knowledge honest. The Two Knowledge Planes An SRE agent needs two fundamentally different kinds of knowledge, and they should be architected separately. The live plane is the current state of the world: metrics from Prometheus, container logs, Kubernetes events, deploy history, alert payloads. This data is fresh, factual, and machine-generated. The agent gets it through scoped, read-only tools at investigation time. The live plane The organizational plane is everything your team knows that no dashboard shows: runbooks, SOPs, playbooks, postmortems, architecture docs, service ownership, escalation rules. This data is slow-moving, human-written, and full of judgment calls. It answers questions the live plane cannot: is this symptom normal for this service? Who do I page? What did we do last time? The organizational plane My first build wired up the live plane and stuffed a summary of the organizational plane into the system prompt. That failed in two ways. The prompt grew until it crowded out the actual investigation, and it was perpetually stale because nobody updates a system prompt when they update a runbook. Retrieval Instead of Stuffing The fix was boring and effective: treat organizational knowledge as a retrieval problem. All of it — runbooks, postmortems, architecture notes, ownership maps — lives as markdown in a git repository. A pipeline chunks the documents, embeds them, and loads them into a vector database. On every merge to main, the embeddings for changed files are rebuilt. The knowledge base is never more than one merge behind reality. At incident time, the agent does not receive the whole library. It retrieves what the incident is about. A latency alert on checkout-api pulls the checkout runbook, the postmortems that mention checkout, and the architecture doc describing its dependencies. Nothing about the batch pipeline, nothing about the mobile gateway. checkout-api The investigation loop looks like this: Alert arrives; the agent identifies affected services from routing metadata\nRetrieval: runbooks, postmortems, and docs relevant to those services\nLive investigation: metrics, logs, deploy diffs through read-only tools\nCorrelation: live signals interpreted in light of retrieved knowledge\nIf evidence is thin, retrieve more or escalate to a human Alert arrives; the agent identifies affected services from routing metadata Retrieval: runbooks, postmortems, and docs relevant to those services Live investigation: metrics, logs, deploy diffs through read-only tools Correlation: live signals interpreted in light of retrieved knowledge in light of If evidence is thin, retrieve more or escalate to a human Step 4 is where the value concentrates. Raw telemetry says "cache hit ratio dropped." The retrieved postmortem says "we saw this exact pattern in March; the cause was a TTL misconfiguration; the fix was PR #1203." Those two together are a diagnosis. Either alone is a guess. The Incident That Proved It During testing, I injected a failure the agent had never seen: connection resets on a service that sat behind a third-party API. The live signals were ambiguous — error rates up, latency ragged, no recent deploy on the affected service itself. The retrieval layer surfaced a postmortem from a previous incident that described the third-party provider's monthly maintenance window and its signature: connection resets starting precisely on the hour. The agent checked the timestamp, matched the pattern, and its response changed from "probable network issue, investigating" to "this matches the vendor maintenance pattern documented in the June postmortem; recommended action is the mitigation from that document; no code change needed." That answer did not come from the model being smart. It came from a two-paragraph postmortem someone wrote months earlier, retrieved at the right moment. The agent's job was recognizing that the document and the telemetry described the same event. Keeping the Knowledge Honest RAG introduces a new failure mode: the agent is now only as good as the documents you feed it. Three rules kept mine trustworthy. Runbooks live in git, next to the services they describe. Updating the agent's behavior means merging a PR, which means code review. Tribal knowledge gets the same rigor as code. Stale runbooks get caught in review, not at 3 AM. Runbooks live in git, next to the services they describe. Postmortems are the highest-value documents in the corpus. They encode symptom-to-cause mappings that exist nowhere else. My agent writes a structured postmortem after every resolved incident — published to Confluence for humans, with a markdown copy committed to the git corpus for the agent. Every incident makes the next investigation smarter. The knowledge base compounds. Postmortems are the highest-value documents in the corpus. Retrieved content is context, not command. A runbook that says "restart the service immediately" does not make the agent restart anything. Retrieved documents inform the diagnosis; actions still go through the same scoped tools, validation hooks, and human approval I described in the previous article. This matters for safety — documents can be wrong, outdated, or in a worst case, poisoned. The knowledge layer gets no authority, only influence. Retrieved content is context, not command. What Still Breaks Honesty section. Three problems I have not fully solved: Retrieval misses. If an incident's vocabulary does not match the runbook's vocabulary, the right document does not surface. An alert about "connection pool exhaustion" will not retrieve a runbook titled "database saturation issues" unless the embeddings happen to bridge the gap. I now write runbooks with symptoms in the first paragraph, which helps but does not eliminate it. Retrieval misses. Conflicting documents. Two runbooks, written two years apart, recommending opposite mitigations. The agent has no way to know which one is current unless the corpus tells it. I added a last_validated date to every runbook header and taught the retrieval layer to prefer recency — a crude fix for a real problem. Conflicting documents. last_validated Confidence laundering. A retrieved document can make a weak diagnosis sound strong. "As documented in the runbook" is persuasive even when the runbook is only loosely relevant. The agent now cites which documents shaped its hypothesis, so the human reviewing the diagnosis can check whether the citation actually supports it. Confidence laundering. The Takeaway If your AI DevOps agent works in demos and fails in production, the missing ingredient is probably not a better model. It is the organizational knowledge your team already wrote down, retrieved at the right moment, and kept honest by the same review process you use for code. Live telemetry tells the agent what is happening. Runbooks and postmortems tell it what that means here, in your system, with your history. An agent with both is a useful colleague. An agent with only the first is a demo. here If you have built a knowledge layer for an agent — especially if you have solved retrieval misses better than I have — I would love to hear how."}</script><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;700&family=IBM+Plex+Sans:wght@400;700&family=Inter:wght@400;600;900&family=Source+Code+Pro:wght@400;500;600;700&display=swap" rel="stylesheet" media="print"/><noscript><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;700&family=IBM+Plex+Sans:wght@400;700&family=Inter:wght@400;600;900&family=Source+Code+Pro:wght@400;500;600;700&display=swap" rel="stylesheet"/></noscript> <!-- --><script id="ga4-init">
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag(){dataLayer.push(arguments);}
|
||
|
||
// Consent Mode: default to denied
|
||
gtag('consent', 'default', {
|
||
'ad_storage': 'denied',
|
||
'analytics_storage': 'denied',
|
||
'ad_user_data': 'denied',
|
||
'ad_personalization': 'denied'
|
||
});
|
||
|
||
gtag('js', new Date());
|
||
gtag('config', 'G-ECJJ2Q2SJQ');
|
||
</script><script id="iubenda-init">
|
||
function initIubenda() {
|
||
(async function () {
|
||
try {
|
||
const res = await fetch("https://geolocation-db.com/json/");
|
||
const data = await res.json();
|
||
const country = data && data.country_code;
|
||
|
||
const GDPR_COUNTRIES = [
|
||
"AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU",
|
||
"IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES",
|
||
"SE","IS","LI","NO","UK","GB"
|
||
];
|
||
var isGdpr = GDPR_COUNTRIES.indexOf(country) > -1;
|
||
|
||
window._iub = window._iub || [];
|
||
window._iub.csConfiguration = {
|
||
siteId: 1848357,
|
||
cookiePolicyId: 18778700,
|
||
lang: "en",
|
||
enableTcf: false,
|
||
googleAdditionalConsentMode: true,
|
||
banner: {
|
||
position: "bottom",
|
||
rejectButtonDisplay: true,
|
||
explicitWithdrawal: true,
|
||
customizeButtonDisplay: true,
|
||
acceptButtonDisplay: true,
|
||
showTotalNumberOfProviders: false,
|
||
display: isGdpr
|
||
}
|
||
};
|
||
|
||
var iubScript = document.createElement("script");
|
||
iubScript.src = "https://cdn.iubenda.com/cs/iubenda_cs.js";
|
||
iubScript.async = true;
|
||
document.head.appendChild(iubScript);
|
||
|
||
if (!isGdpr) {
|
||
gtag('consent', 'update', {
|
||
'ad_storage': 'granted',
|
||
'analytics_storage': 'granted',
|
||
'ad_user_data': 'granted',
|
||
'ad_personalization': 'granted'
|
||
});
|
||
}
|
||
} catch (e) {
|
||
console.error("Iubenda geolocation failed", e);
|
||
}
|
||
})();
|
||
}
|
||
|
||
// Defer until browser is idle — never blocks initial render
|
||
if (typeof requestIdleCallback !== 'undefined') {
|
||
requestIdleCallback(initIubenda, { timeout: 3000 });
|
||
} else {
|
||
setTimeout(initIubenda, 1000);
|
||
}
|
||
</script><script id="iubenda-consent-bridge">
|
||
window.addEventListener("iubenda_consent_given", function () {
|
||
gtag('consent', 'update', {
|
||
'ad_storage': 'granted',
|
||
'analytics_storage': 'granted',
|
||
'ad_user_data': 'granted',
|
||
'ad_personalization': 'granted'
|
||
});
|
||
|
||
gtag('event', 'page_view', {
|
||
page_title: document.title,
|
||
page_location: location.href,
|
||
page_path: location.pathname + location.search
|
||
});
|
||
});
|
||
</script><link rel="stylesheet" href="/_next/static/css/121be0391d0b0ef0.css" data-n-g=""/><link rel="stylesheet" href="/_next/static/css/6d530d6069fd563f.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="https://accounts.google.com/gsi/client" defer="" data-nscript="beforeInteractive"></script><script defer="" src="/_next/static/chunks/7618.8cb06698e4978306.js"></script><script defer="" src="/_next/static/chunks/3213.7a85381e883f5859.js"></script><script defer="" src="/_next/static/chunks/7127.9c425c4d3409a6ac.js"></script><script defer="" src="/_next/static/chunks/3304.7c3523eee5ba4042.js"></script><script defer="" src="/_next/static/chunks/1826.1ab3736f712279dc.js"></script><script defer="" src="/_next/static/chunks/b6790ad6-21a72b711b29c9a6.js"></script><script defer="" src="/_next/static/chunks/4829-32ed3fa27f9fba8a.js"></script><script defer="" src="/_next/static/chunks/8145-56bb137bc815feca.js"></script><script defer="" src="/_next/static/chunks/7878-038a9b85114cf28d.js"></script><script defer="" src="/_next/static/chunks/9407-02afcd7299ecf2e9.js"></script><script defer="" src="/_next/static/chunks/1866-36cbb79df614e742.js"></script><script defer="" src="/_next/static/chunks/997.043403d1cfb4d583.js"></script><script defer="" src="/_next/static/chunks/9997.0bcf115a883cf0c1.js"></script><script defer="" src="/_next/static/chunks/9752.5dc7ee3796d8a882.js"></script><script defer="" src="/_next/static/chunks/1486.6875746f7e7b3bd6.js"></script><script defer="" src="/_next/static/chunks/2348.6ff1c8ab2b7f714e.js"></script><script src="/_next/static/chunks/webpack-b0b0e650ef898a91.js" defer=""></script><script src="/_next/static/chunks/framework-594babcea68f40f6.js" defer=""></script><script src="/_next/static/chunks/main-f4c6b80eccf8d9c3.js" defer=""></script><script src="/_next/static/chunks/pages/_app-e9f748c6202c8d20.js" defer=""></script><script src="/_next/static/chunks/4004-46cbf9060446c734.js" defer=""></script><script src="/_next/static/chunks/8230-f743aded49f5ec53.js" defer=""></script><script src="/_next/static/chunks/3363-3997af8403818196.js" defer=""></script><script src="/_next/static/chunks/5857-ec7c040b0c106d7c.js" defer=""></script><script src="/_next/static/chunks/7871-49db796a808d2c70.js" defer=""></script><script src="/_next/static/chunks/3261-28f7d7d5ddf137c8.js" defer=""></script><script src="/_next/static/chunks/1902-922299f711a16f76.js" defer=""></script><script src="/_next/static/chunks/8581-1c63d69fe79360dc.js" defer=""></script><script src="/_next/static/chunks/4581-8f149836b5130c5d.js" defer=""></script><script src="/_next/static/chunks/4680-486b209e44768b17.js" defer=""></script><script src="/_next/static/chunks/2562-5aa3cd1aa6e464a5.js" defer=""></script><script src="/_next/static/chunks/8373-1c61bad6a8e1fdcb.js" defer=""></script><script src="/_next/static/chunks/7225-8cb630c00db3e752.js" defer=""></script><script src="/_next/static/chunks/pages/%5Bslug%5D-e18135e2a995d794.js" defer=""></script><script src="/_next/static/qqTckmfliewRaBLUp_8jP/_buildManifest.js" defer=""></script><script src="/_next/static/qqTckmfliewRaBLUp_8jP/_ssgManifest.js" defer=""></script></head><body><link rel="preload" as="image" imageSrcSet="https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=640 640w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=750 750w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=828 828w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1080 1080w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1200 1200w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1920 1920w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=2048 2048w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=3840 3840w" imageSizes="(max-width: 768px) 100vw, 1200px" fetchPriority="high"/><link rel="preload" as="image" href="https://hackernoon.imgix.net/avatars/robot-b5.png"/><link rel="preload" as="image" href="https://hackernoon.imgix.net/avatars/robot-b6.png"/><div id="__next"><div class="bg-light text-lightText font-[ibm-plex-mono]"><main><header class="font-[ibm-plex-sans] fixed top-0 left-0 w-full z-50 transition-all duration-500 ease-in-out translate-y-0"><div class="flex items-center justify-between bg-primary lg:navbar h-[50px] sm:min-h-[75px] transition-all duration-100 shadow-md w-full"><div class="hidden lg:flex navbar-start h-full items-center ml-1"><button class="flex items-center hover:scale-[1.01] justify-center rounded-lg text-base px-4 font-bold py-2 border-none bg-primary-content text-primaryContentText">Discover Anything<i class="hn hn-search text-lg ml-4 text-primaryContentText "></i></button></div><div class="nav-start lg:navbar-center ml-2 lg:ml-0 min-w-0 flex-shrink"><a class="relative z-10 flex items-center space-x-2 hover:scale-[1.02]" aria-label="HackerNoon Homepage" href="/"><svg class="w-[180px] xs:w-[200px] sm:w-[240px] lg:w-[260px] h-auto" viewBox="0 0 2150 260" fill="none" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" style="transition:fill 150ms ease"><g style="transition:fill 150ms ease"><path d="M269.997 20.0005V0H130V20.0005V40.0011V60.0016H150H169.995V40.0011H189.995H229.996V60.0016H249.997H269.997V40.0011V20.0005Z" fill="transparent"></path><path d="M130.006 80.003V60.0024H110.006V80.003V100.004H130.006V80.003Z" fill="transparent"></path><path d="M110 119.998V100.003H90V119.998V139.998V159.999H110V139.998V119.998Z" fill="transparent"></path><path d="M270 100.004H290V80.003V60.0024H270V80.003V100.004Z" fill="transparent"></path><path d="M310 119.997V100.002H290V119.997V139.998V159.998H310V139.998H330.001V119.997H310Z" fill="transparent"></path><path d="M130 159.998H110V179.998V199.999H130V179.998V159.998Z" fill="transparent"></path><path d="M270 179.998V199.999H290V179.998V159.998H270V179.998Z" fill="transparent"></path><path d="M130 260V240V219.999V199.999H150H169.995V219.999H189.995H209.996H229.996V199.999H249.997H269.997V219.999V240V260H130Z" fill="transparent"></path><path d="M210.415 39.74V59.7405V79.7411V99.7416V119.736V139.737H190.415V119.736V99.7416V79.7411V59.7405V39.74H210.415Z" fill="transparent"></path><path d="M390 200V60H417.801V116.676H501.206V60H530V200H501.206V144.517H417.801V200H390Z" fill="transparent"></path><path d="M672.199 116.676V88.8352H588.794V116.676H672.199ZM560 200V60H700V200H672.199V144.517H588.794V200H560Z" fill="transparent"></path><path d="M730 200V60H870V88.8352H758.794V172.159H870V200H730Z" fill="transparent"></path><path d="M900 200V60H928.794V116.276H984.397V143.724H928.794V200H900ZM1012.2 171.368H984.397V143.724H1012.2V171.368ZM1012.2 171.368H1040V199.013H1012.2V171.368ZM1012.2 88.6319V116.276H984.397V88.6319H1012.2ZM1012.2 88.6319V60H1040V88.6319H1012.2Z" fill="transparent"></path><path d="M1070 200V60H1210V88.8352H1098.79V116.676H1154.4V144.517H1098.79V172.159H1210V200H1070Z" fill="transparent"></path><path d="M1351.24 116.519V88.7589H1267.76V116.519H1351.24ZM1240 200V60H1380V144.479H1351.24V172.24H1380V200H1351.24V172.24H1323.48V144.479H1267.76V200H1240Z" fill="transparent"></path><path d="M1410 200V60H1550V200H1522.24V88.7589H1438.76V200H1410Z" fill="transparent"></path><path d="M1692.24 172.24V88.7589H1608.76V172.24H1692.24ZM1580 200V60H1720V200H1580Z" fill="transparent"></path><path d="M1862.04 172.24V88.7589H1778.97V172.24H1862.04ZM1750 200V60H1890V200H1750Z" fill="transparent"></path><path d="M1920 200V60H2060V200H2032.24V88.7589H1948.76V200H1920Z" fill="transparent"></path></g></svg></a></div><div class="navbar-end h-full flex items-center min-w-[100px] lg:min-w-[200px] space-x-4 mr-2"><div class=" h-[40px] flex items-center justify-center"></div><div class="hidden sm:flex space-x-4 "><button class="px-4 font-bold text-base py-1 sm:py-2 bg-primary-content text-primaryContentText rounded-md transition-all duration-300">Signup</button><a class="px-4 hover:scale-105 font-bold text-base py-2 bg-primary-content text-primaryContentText rounded-md " href="/new">Write</a></div><button class="btn border-none p-0 m-0 lg:hidden bg-transparent hover:bg-transparent text-primary-content hover:scale-110"><i class="hn hn-search text-xl mr-2 "></i></button><button class="relative lg:flex hidden items-center hover:scale-110 text-primary-content" aria-label="Notifications"><i width="20" class="hn hn-bell text-2xl w-4 h-4 sm:w-6 sm:h-6"></i></button><button class="flex items-center hover:scale-110 text-primary-content" aria-label="Menu"><i class="hn hn-bars text-2xl text-primary-content"></i></button></div></div><div class="z-20 hidden lg:block h-[52px] transition-all duration-500 ease-in-out"><nav class="h-[52px] bg-secondary animate-pulse"></nav></div><div class="flex items-center "><div class="bg-accent text-accent-content flex items-center h-[62px] sm:min-h-[80px] font-[ibm-plex-sans] w-full relative z-10 opacity-100"><div class="h-[62px] sm:h-[80px] bg-[transparent] animate-pulse"></div></div></div></header><div class="transition-all duration-200 pt-[112px] sm:pt-[155px] lg:pt-[207px]"><div data-rht-toaster="" style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"></div><div class=""><div class="bg-light text-lightText h-auto xl:mx-2 "><div class="col-span-12"><div class="max-w-[1200px] mx-auto px-2 xs:px-4 xl: xl:px-0 mt-10"><div class=""><div><div class="text-xs"><div class="mb-4 flex gap-2"><span class="bg-lightAlt p-2 rounded-lg inline-flex gap-2 items-center justify-start"><i class="hn hn-star-solid"></i> <!-- -->875<!-- --> <!-- -->reads</span></div><h1 class="font-bold line-clamp-4 leading-snug text-lightTextStrong
|
||
text-xl sm:text-2xl xl:text-3xl tracking-normal
|
||
|
||
">Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing</h1><div class="flex flex-wrap border-y border-lightBorder my-4 sm:my-2 sm:border-t-0 py-2 items-center justify-between text-lightTextLight text-sm sm:text-base xl:text-xl "><div class="flex flex-wrap justify-between w-full xs:w-auto items-center gap-2"><span class="flex items-center flex-wrap gap-2 mr-10 sm:mr-0 ">by<div class="dropdown dropdown-hover "><label tabindex="0"><a aria-label="View profile of Akhilesh Rao Meesala" href="/u/armeesala"><strong class="...">Akhilesh Rao Meesala</strong></a></label><div class="dropdown-content z-[1] pt-2 sm:pt-1 left-[-40px] w-[280px] xs:w-[320px] sm:w-[400px] bg-transparent menu rounded "><div class="w-full "><div class=" p-4 border border-lightBorder bg-light rounded-lg"><a href="/u/armeesala" target="_blank" rel="noopener noreferrer" class="flex items-start text-sm rounded-lg group gap-2"><div class=""><img alt="Akhilesh Rao Meesala" loading="lazy" width="40" height="40" decoding="async" data-nimg="1" class="w-10 h-9 border-solid border border-lightBorder rounded-full object-contain" style="color:transparent" srcSet="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=48 1x, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96 2x" src="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96"/></div><span class="flex flex-col min-w-0 w-full justify-center"><span class="flex items-center gap-1 text-ellipsis overflow-hidden whitespace-nowrap"><span class="font-bold group-hover:underline text-xs truncate"><span class="text-xs font-light mr-1">by</span>Akhilesh Rao Meesala</span><span class="text-xs font-light opacity-50">|</span><span class="text-sm false text-ellipsis overflow-hidden whitespace-nowrap" title="@armeesala">@<!-- -->armeesala</span></span></span></a><p class="text-sm overflow-x-auto mt-2 text-bodyTxtLight">Principal Engineer at Oracle focused on cloud infrastructure, SRE, Kubernetes, and AI-driven platform engineering. </p><div class="mt-4"><div class="w-full flex justify-start"><div class="w-full"><form class="w-full flex flex-col items-start gap-2 "><div class="flex w-full"><input class="p-2 flex-grow border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2}
|
||
}" placeholder="name@company.com" type="email" required="" name="email" value=""/><button type="submit" class="text-base}
|
||
bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText px-2 py-1 rounded-r-md font-bold">Subscribe</button></div></form></div></div></div></div></div></div></div></span><div class="flex gap-2 items-center cursor-pointer"><span class="hidden sm:block w-1 h-1 bg-lightTextLight mx-4 rounded-full"></span><a href="/archives/2026/07/26"><span class="text-xs xs:text-sm lg:text-base">July 26th, 2026</span></a></div></div><div class="hidden xl:block"><div class=" flex items-center gap-4 "><span class="tooltip tooltip-left tooltip-left w-7 h-7 flex items-center justify-center cursor-pointer" data-tip="Terminal Reader"><img alt="Read on Terminal Reader" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" srcSet="https://hackernoon.imgix.net/computer.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/computer.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/computer.png?auto=format%2Ccompress&w=48"/></span><span class="tooltip tooltip-left tooltip-left w-7 h-7 flex items-center justify-center cursor-pointer" data-tip="Print this story"><img alt="Print this story" data-tip="true" data-for="print-page" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format%2Ccompress&w=48"/></span><span class="tooltip tooltip-left tooltip-left w-7 h-7 flex items-center justify-center cursor-pointer" data-tip="Read this story w/o Javascript"><img alt="Read this story w/o Javascript" data-tip="true" data-for="arweave-backup" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format%2Ccompress&w=48"/></span></div></div></div></div><div class="mb-2 "><div class="flex justify-between "><button class="flex m-1 px-2 xl:px-4 h-[40px] items-center font-[hackernoon2] bg-dark text-darkText text-xs sm:text-sm rounded-lg border border-lightBorder">TLDR <i class="hn hn-angle-right text-base ml-1 "></i></button><div class="flex items-center gap-2"><div class="hidden sm:block xl:hidden"><div class=" flex items-center gap-4 "><span class="tooltip tooltip-left undefined w-7 h-7 flex items-center justify-center cursor-pointer" data-tip="Terminal Reader"><img alt="Read on Terminal Reader" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" srcSet="https://hackernoon.imgix.net/computer.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/computer.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/computer.png?auto=format%2Ccompress&w=48"/></span><span class="tooltip tooltip-left undefined w-7 h-7 flex items-center justify-center cursor-pointer" data-tip="Print this story"><img alt="Print this story" data-tip="true" data-for="print-page" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/Print%20Icon%20%4025px.png?auto=format%2Ccompress&w=48"/></span><span class="tooltip tooltip-left undefined w-7 h-7 flex items-center justify-center cursor-pointer" data-tip="Read this story w/o Javascript"><img alt="Read this story w/o Javascript" data-tip="true" data-for="arweave-backup" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format%2Ccompress&w=48"/></span></div></div><div class="dropdown dropdown-bottom dropdown-hover dropdown-end xl:hidden"><label tabindex="0" class="border border-lightBorder p-2 rounded m-1 flex items-center gap-2 cursor-pointer text-xs">Translations <i class="hn hn-translate text-xl"></i></label><div tabindex="0" class="dropdown-content z-20 bg-light border border-lightBorder shadow rounded w-32 max-h-[300px] overflow-y-auto overscroll-contain"><ul class="menu menu-compact p-1"><li class="mx-1 tooltip tooltip-left" data-tip="English"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-lightAccent text-lightAccentText" href="/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="en-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/usa_flag.webp?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/usa_flag.webp?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/usa_flag.webp?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">EN</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Turkish"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/tr/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="tr-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/turkish_qlmfvkk8.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/turkish_qlmfvkk8.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/turkish_qlmfvkk8.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">TR</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Spanish"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/es/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="es-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/spain_flag.webp?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/spain_flag.webp?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/spain_flag.webp?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">ES</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Chinese"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/zh/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="zh-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/chinese_vri67rp8.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/chinese_vri67rp8.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/chinese_vri67rp8.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">ZH</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Japanese"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/ja/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="ja-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/japanese_20jtajj.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/japanese_20jtajj.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/japanese_20jtajj.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">JA</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Latvian"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/lv/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="lv-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/latvian_9414sjv.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/latvian_9414sjv.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/latvian_9414sjv.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">LV</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Catalan"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/ca/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="ca-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/catalan_vidt0k2g.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/catalan_vidt0k2g.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/catalan_vidt0k2g.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">CA</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Danish"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/da/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="da-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/danish_boqahd3.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/danish_boqahd3.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/danish_boqahd3.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">DA</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Somali"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/so/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="so-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/somali_iuc4jnl.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/somali_iuc4jnl.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/somali_iuc4jnl.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">SO</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Swahili"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/sw/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="sw-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/swahili_41ruaqpg.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/swahili_41ruaqpg.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/swahili_41ruaqpg.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">SW</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Xhosa"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/xh/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="xh-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/xhosa_vhnptt1.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/xhosa_vhnptt1.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/xhosa_vhnptt1.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">XH</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Filipino"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/tl/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="tl-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/filipino_crilat5o.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/filipino_crilat5o.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/filipino_crilat5o.png?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">TL</span></a></li><li class="mx-1 tooltip tooltip-left" data-tip="Pashto"><a class="lang border border-transparent hover:text-lightTextStrong
|
||
bg-light" href="/lang/ps/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="ps-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/afghanistan.jpg?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/afghanistan.jpg?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/afghanistan.jpg?auto=format%2Ccompress&w=48"/><span class="ml-1 text-sm">PS</span></a></li></ul></div></div><div class="xl:hidden"></div></div><div class="hidden xl:flex items-center flex-wrap gap-2"><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-lightAlt border-lightText" data-tip="English" href="/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="en-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/usa_flag.webp?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/usa_flag.webp?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/usa_flag.webp?auto=format%2Ccompress&w=48"/><span class="text-sm">EN</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Turkish" href="/lang/tr/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="tr-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/turkish_qlmfvkk8.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/turkish_qlmfvkk8.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/turkish_qlmfvkk8.png?auto=format%2Ccompress&w=48"/><span class="text-sm">TR</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Spanish" href="/lang/es/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="es-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/spain_flag.webp?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/spain_flag.webp?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/spain_flag.webp?auto=format%2Ccompress&w=48"/><span class="text-sm">ES</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Chinese" href="/lang/zh/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="zh-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/chinese_vri67rp8.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/chinese_vri67rp8.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/chinese_vri67rp8.png?auto=format%2Ccompress&w=48"/><span class="text-sm">ZH</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Japanese" href="/lang/ja/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="ja-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/japanese_20jtajj.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/japanese_20jtajj.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/japanese_20jtajj.png?auto=format%2Ccompress&w=48"/><span class="text-sm">JA</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Latvian" href="/lang/lv/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="lv-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/latvian_9414sjv.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/latvian_9414sjv.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/latvian_9414sjv.png?auto=format%2Ccompress&w=48"/><span class="text-sm">LV</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Catalan" href="/lang/ca/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="ca-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/catalan_vidt0k2g.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/catalan_vidt0k2g.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/catalan_vidt0k2g.png?auto=format%2Ccompress&w=48"/><span class="text-sm">CA</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Danish" href="/lang/da/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="da-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/danish_boqahd3.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/danish_boqahd3.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/danish_boqahd3.png?auto=format%2Ccompress&w=48"/><span class="text-sm">DA</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Somali" href="/lang/so/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="so-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/somali_iuc4jnl.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/somali_iuc4jnl.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/somali_iuc4jnl.png?auto=format%2Ccompress&w=48"/><span class="text-sm">SO</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Swahili" href="/lang/sw/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="sw-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/swahili_41ruaqpg.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/swahili_41ruaqpg.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/swahili_41ruaqpg.png?auto=format%2Ccompress&w=48"/><span class="text-sm">SW</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Xhosa" href="/lang/xh/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="xh-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/xhosa_vhnptt1.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/xhosa_vhnptt1.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/xhosa_vhnptt1.png?auto=format%2Ccompress&w=48"/><span class="text-sm">XH</span></a><a class="flex gap-2 tooltip
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Filipino" href="/lang/tl/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="tl-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/flags/filipino_crilat5o.png?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/flags/filipino_crilat5o.png?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/flags/filipino_crilat5o.png?auto=format%2Ccompress&w=48"/><span class="text-sm">TL</span></a><a class="flex gap-2 tooltip tip-r-10
|
||
px-2 py-1 rounded h-[30px] border items-center
|
||
bg-light hover:bg-lightAlt border-lightBorder" data-tip="Pashto" href="/lang/ps/runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"><img alt="ps-flag" loading="lazy" width="20" height="20" decoding="async" data-nimg="1" class="rounded-full" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/afghanistan.jpg?auto=format%2Ccompress&w=32 1x, https://hackernoon.imgix.net/images/afghanistan.jpg?auto=format%2Ccompress&w=48 2x" src="https://hackernoon.imgix.net/images/afghanistan.jpg?auto=format%2Ccompress&w=48"/><span class="text-sm">PS</span></a></div></div></div></div></div></div><div class="max-w-[1200px] mx-auto"><div class="flex items-center justify-center w-full h-full"><div class="relative group cursor-zoom-in transition-transform hover:scale-[1.01] max-w-full mx-auto px-[14px] md:px-0 w-full"><button class="absolute top-2 right-5 z-10 w-6 h-6 rounded flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity"><i class="hn hn-download text-darkText bg-dark p-2 rounded-xl text-base"></i></button><img alt="featured image - Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing" fetchPriority="high" loading="eager" width="1600" height="900" decoding="async" data-nimg="1" class="w-full h-auto object-contain rounded-lg shadow-lg my-0" style="color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 900'%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='none' style='filter: url(%23b);' href='data:image/svg+xml;base64,CiAgICA8c3ZnIHdpZHRoPSIxNjAwIiBoZWlnaHQ9IjkwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJnIj4KICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMjIiIG9mZnNldD0iMjAlIiAvPgogICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzBmMCIgb2Zmc2V0PSI1MCUiIC8+CiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjIyIiBvZmZzZXQ9IjgwJSIgLz4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICA8L2RlZnM+CiAgICAgIDxyZWN0IHdpZHRoPSIxNjAwIiBoZWlnaHQ9IjkwMCIgZmlsbD0iIzIyMiIgLz4KICAgICAgPHJlY3QgaWQ9InIiIHdpZHRoPSIxNjAwIiBoZWlnaHQ9IjkwMCIgZmlsbD0idXJsKCNnKSIgLz4KICAgICAgPGFuaW1hdGUgeGxpbms6aHJlZj0iI3IiIGF0dHJpYnV0ZU5hbWU9IngiIGZyb209Ii0xNjAwIiB0bz0iMTYwMCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiICAvPgogICAgPC9zdmc+'/%3E%3C/svg%3E")" sizes="(max-width: 768px) 100vw, 1200px" srcSet="https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=640 640w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=750 750w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=828 828w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1080 1080w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1200 1200w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=1920 1920w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=2048 2048w, https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=3840 3840w" src="https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png?auto=format%2Ccompress&w=3840"/></div></div></div><div class="px-2 xs:px-4 3xl:px-0 my-4 sm:mt-4 sm:mb-6 max-w-[1200px] 6xl:max-w-[1200px] mx-auto "><div class="w-full flex flex-col justify-center rounded-lg"><audio src="https://storage.googleapis.com/hackernoon/audios/6a46e1aad43309444fe6dfcc-en-US-Wavenet-I-MALE--e037e6f478538.mp3" preload="metadata">Your browser does not support the <code>audio</code> element.</audio><div class="hidden sm:flex justify-between items-center "><span></span></div><div class="flex gap-2 items-center"><div class="flex items-center justify-center mx-auto gap-2 xs:gap-4 lg:gap-6 flex-1"><button aria-label="play/pause" class="text-darkAccent max-w-[40px] max-h-[40px] sm:min-w-[48px] sm:min-h-[48px] border order-1 border-darkBorder bg-dark p-2 rounded-full flex items-center justify-center" title="Play/Pause"><i class="hn hn-play-solid text-base xs:text-lg sm:text-2xl "></i></button><div class="dropdown order-2 dropdown-hover"><label tabindex="0" class="flex items-center hn hn-playlist-solid text-base xs:text-lg sm:text-xl lg:text-2xl rounded-lg " title="Speed & Voice"></label><ul tabindex="0" class="dropdown-content border z-40 menu p-4 shadow bg-light rounded-box w-60"><div class="text-lightText flex bg-light p-2 rounded w-full mb-2 items-center justify-between"><span class="text-xs font-bold">Speed</span><button class="bg-lightAlt ml-2 px-4 py-2 rounded-full text-sm font-bold min-w-[100px]">1x</button></div><div class="text-lightText flex flex-col bg-light p-2 rounded w-full"><span class="text-xs font-bold mb-2">Voice</span><div class="flex flex-col gap-2 max-h-60 overflow-auto pr-1"><button class="bg-lightAlt px-3 py-2 rounded-lg text-sm font-bold text-left flex items-center justify-between ring-2 ring-green-600"><span class="truncate mr-2">Dr. One </span><img src="https://hackernoon.imgix.net/avatars/robot-b5.png" alt="Dr. One (en-US)" class="w-6 h-6 rounded-full"/></button><button class="bg-lightAlt px-3 py-2 rounded-lg text-sm font-bold text-left flex items-center justify-between "><span class="truncate mr-2">Ms. Hacker </span><img src="https://hackernoon.imgix.net/avatars/robot-b6.png" alt="Ms. Hacker (en-US)" class="w-6 h-6 rounded-full"/></button></div></div></ul></div><div class="flex gap-2 order-3 sm:items-center sm:flex-row w-full"><div class="rounded-lg flex-1 bg-lightAccentTextAlt relative"><div class="hidden lg:block"><div class="relative max-w-[1000px] h-full flex items-center cursor-pointer rounded-lg "><canvas class="bg-transparent absolute top-0 left-0 w-full h-full rounded-lg "></canvas><div></div><div class=" top-0 left-0 h-full overflow-hidden bg-lightAccentAlt border rounded-l-lg" style="width:0px"><canvas class="bg-transparent w-full h-full text-green-500"></canvas></div></div></div><div class="hidden sm:block lg:hidden"><div class="relative max-w-[1000px] h-full flex items-center cursor-pointer rounded-lg "><canvas class="bg-transparent absolute top-0 left-0 w-full h-full rounded-lg "></canvas><div></div><div class=" top-0 left-0 h-full overflow-hidden bg-lightAccentAlt border rounded-l-lg" style="width:0px"><canvas class="bg-transparent w-full h-full text-green-500"></canvas></div></div></div><div class="w-full sm:hidden"><div class="relative max-w-[1000px] h-full flex items-center cursor-pointer rounded-lg "><canvas class="bg-transparent absolute top-0 left-0 w-full h-full rounded-lg "></canvas><div></div><div class=" top-0 left-0 h-full overflow-hidden bg-lightAccentAlt border rounded-l-lg" style="width:0px"><canvas class="bg-transparent w-full h-full text-green-500"></canvas></div></div></div></div><div class="hidden lg:ml-2 sm:block"></div><div class=" flex items-center sm:hidden"></div></div></div></div></div></div><div class=" flex xl:hidden bg-light z-10 mx-auto gap-4 items-center border-y sticky top-[62px] sm:top-[80px] py-2 sm:py-0 "><div class="w-full max-w-[1200px] mx-auto px-4 flex justify-between items-center"><div class="6xl:hidden dropdown dropdown-bottom dropdown-hover"><div tabindex="0" role="button" class="flex text-sm rounded-lg py-2"><div class="mr-2 flex -space-x-2 items-center "><div class=""><img alt="Akhilesh Rao Meesala" loading="lazy" width="48" height="48" decoding="async" data-nimg="1" class="w-10 h-10 sm:w-12 sm:h-12 bg-light relative border border-lightBorder rounded-full object-contain" style="color:transparent;z-index:1" srcSet="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=48 1x, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96 2x" src="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96"/></div></div><div class="flex-col hidden sm:flex flex-wrap"><span class="font-bold mx-2 text-xs"><span class="text-xs font-light mr-1">by</span>Akhilesh Rao Meesala</span><span class="text-sm ml-2">@<!-- -->armeesala</span></div></div><ul tabindex="0" class="dropdown-content menu w-[300px] py-1 left-[-20px] bg-light px-1 ml-4 rounded-b-lg 3xl:border-none rounded-boxabsolute z-50"><div class="flex w-full flex-col gap-4"><div><div class="w-full "><div class=" p-4 border border-lightBorder bg-light rounded-lg"><a href="/u/armeesala" target="_blank" rel="noopener noreferrer" class="flex items-start text-sm rounded-lg group gap-2"><div class=""><img alt="Akhilesh Rao Meesala" loading="lazy" width="40" height="40" decoding="async" data-nimg="1" class="w-10 h-9 border-solid border border-lightBorder rounded-full object-contain" style="color:transparent" srcSet="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=48 1x, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96 2x" src="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96"/></div><span class="flex flex-col min-w-0 w-full justify-center"><span class="flex items-center gap-1 text-ellipsis overflow-hidden whitespace-nowrap"><span class="font-bold group-hover:underline text-xs truncate"><span class="text-xs font-light mr-1">by</span>Akhilesh Rao Meesala</span><span class="text-xs font-light opacity-50">|</span><span class="text-sm false text-ellipsis overflow-hidden whitespace-nowrap" title="@armeesala">@<!-- -->armeesala</span></span></span></a><p class="text-sm overflow-x-auto mt-2 text-bodyTxtLight">Principal Engineer at Oracle focused on cloud infrastructure, SRE, Kubernetes, and AI-driven platform engineering. </p><div class="mt-4"><div class="w-full flex justify-start"><div class="w-full"><form class="w-full flex flex-col items-start gap-2 "><div class="flex w-full"><input class="p-2 flex-grow border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2}
|
||
}" placeholder="name@company.com" type="email" required="" name="email" value=""/><button type="submit" class="text-base}
|
||
bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText px-2 py-1 rounded-r-md font-bold">Subscribe</button></div></form></div></div></div></div></div></div><div class="xl:hidden"><div class="group transition-all duration-300"><div class="p-2 border border-lightBorder bg-light rounded-lg transition-all duration-300 pb-0"><span class="font-bold mx-2 text-sm text-lightTextLight">Story's Credibility</span><div class="
|
||
mt-2 flex gap-2 flex-wrap m-2 transition-all duration-300 ease-in-out
|
||
flex-row
|
||
"><div class="flex items-start gap-2 text-sm rounded-lg max-w-[250px]
|
||
transition-all duration-300 ease-in-out p-1
|
||
|
||
|
||
cursor-default"><img alt="Original Reporting" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="w-4 h-4 rounded-full transition-transform duration-300 group-hover:scale-105 cursor-pointer" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/img-oi03r0q.png?auto=format%2Ccompress&w=32 1x" src="https://hackernoon.imgix.net/images/img-oi03r0q.png?auto=format%2Ccompress&w=32"/></div></div></div></div></div></div></ul></div><div class="w-[200px] 6xl:hidden"><div class=" flex flex-row flex-row-reverse items-start gap-4 "><span class="tooltip tooltip-left cursor-pointer" data-tip="Bookmark"><button class="3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[40px] w-[40px] flex items-center justify-center border border-lightBorder"><i class="hn hn-bookmark text-lightText text-2xl"></i></button></span><span class="tooltip tooltip-left cursor-pointer" data-tip="Comment"><button class="3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[40px] w-[40px] flex items-center justify-center border border-lightBorder"><i class="hn hn-comment text-lightText text-2xl"></i></button></span><div class="dropdown dropdown-bottom dropdown-hover group "><label tabindex="0" class="flex items-center cursor-pointer justify-center border border-lightBorder 3xl:group-hover:bg-lightAlt group-hover:bg-light h-[40px] w-[40px] p-2 rounded "><i class="hn hn-share text-2xl"></i></label><ul tabindex="0" class="dropdown-content bg-light z-[1] py-4 px-4 3xl:px-0 3xl:py-2 border 3xl:border-none flex flex-col items-center justify-center gap-2 "><button class="border p-2 rounded hover:bg-lightAlt"><i class=" hn hn-copy text-lightText text-2xl "></i></button><button class="border p-2 rounded hover:bg-lightAlt"><i class="hn hn-facebook-round text-lightText text-2xl"></i></button><button class="border p-2 rounded hover:bg-lightAlt"><i class="hn hn-x text-lightText text-2xl"></i></button><button class="border p-2 rounded hover:bg-lightAlt"><i class="hn hn-linkedin text-lightText text-2xl"></i></button><a href="mailto:?subject=I'd like to share a link with you &body=" class="border p-2 rounded inline-block hover:bg-lightAlt"><i class="hn hn-envelope text-lightText text-2xl"></i></a></ul></div></div></div></div></div><div class="flex w-full min-w-0 max-w-[1100px] 2xl:max-w-[1200px] mx-auto justify-center flex-row gap-4 items-start mt-10 px-4 xl:px-0"><div class="hidden xl:flex xl:flex-col self-stretch"><div class="sticky top-[99px] z-40"><div class="dropdown z-25 dropdown-right dropdown-hover"><div class="mr-2 flex gap-2 flex-col justify-center flex-wrap items-center "><div class="relative h-12 w-12 bg-black rounded-full overflow-hidden flex-shrink-0"><img alt="Akhilesh Rao Meesala" loading="lazy" decoding="async" data-nimg="fill" class="rounded-full object-contain " style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent;z-index:1" sizes="100vw" srcSet="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=640 640w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=750 750w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=828 828w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=1080 1080w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=1200 1200w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=1920 1920w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=2048 2048w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=3840 3840w" src="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=3840"/></div></div><ul tabindex="0" class="dropdown-content w-[280px] xs:w-[320px] sm:w-[400px] rounded-lg z-[100] bg-light flex flex-col items-center justify-center gap-2"><div class="flex w-full flex-col gap-4"><div><div class="w-full "><div class=" p-4 border border-lightBorder bg-light rounded-lg"><a href="/u/armeesala" target="_blank" rel="noopener noreferrer" class="flex items-start text-sm rounded-lg group gap-2"><div class=""><img alt="Akhilesh Rao Meesala" loading="lazy" width="40" height="40" decoding="async" data-nimg="1" class="w-10 h-9 border-solid border border-lightBorder rounded-full object-contain" style="color:transparent" srcSet="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=48 1x, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96 2x" src="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=96"/></div><span class="flex flex-col min-w-0 w-full justify-center"><span class="flex items-center gap-1 text-ellipsis overflow-hidden whitespace-nowrap"><span class="font-bold group-hover:underline text-xs truncate"><span class="text-xs font-light mr-1">by</span>Akhilesh Rao Meesala</span><span class="text-xs font-light opacity-50">|</span><span class="text-sm false text-ellipsis overflow-hidden whitespace-nowrap" title="@armeesala">@<!-- -->armeesala</span></span></span></a><p class="text-sm overflow-x-auto mt-2 text-bodyTxtLight">Principal Engineer at Oracle focused on cloud infrastructure, SRE, Kubernetes, and AI-driven platform engineering. </p><div class="mt-4"><div class="w-full flex justify-start"><div class="w-full"><form class="w-full flex flex-col items-start gap-2 "><div class="flex w-full"><input class="p-2 flex-grow border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2}
|
||
}" placeholder="name@company.com" type="email" required="" name="email" value=""/><button type="submit" class="text-base}
|
||
bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText px-2 py-1 rounded-r-md font-bold">Subscribe</button></div></form></div></div></div></div></div></div><div class="xl:hidden"><div class="group transition-all duration-300"><div class="p-2 border border-lightBorder bg-light rounded-lg transition-all duration-300 pb-0"><span class="font-bold mx-2 text-sm text-lightTextLight">Story's Credibility</span><div class="
|
||
mt-2 flex gap-2 flex-wrap m-2 transition-all duration-300 ease-in-out
|
||
flex-row
|
||
"><div class="flex items-start gap-2 text-sm rounded-lg max-w-[250px]
|
||
transition-all duration-300 ease-in-out p-1
|
||
|
||
|
||
cursor-default"><img alt="Original Reporting" loading="lazy" width="16" height="16" decoding="async" data-nimg="1" class="w-4 h-4 rounded-full transition-transform duration-300 group-hover:scale-105 cursor-pointer" style="color:transparent" srcSet="https://hackernoon.imgix.net/images/img-oi03r0q.png?auto=format%2Ccompress&w=32 1x" src="https://hackernoon.imgix.net/images/img-oi03r0q.png?auto=format%2Ccompress&w=32"/></div></div></div></div></div></div></ul></div></div></div><div class="flex-1 flex flex-col justify-center min-w-0 w-full"><div class=""><div class="story-body font-sans w-full min-w-0"><div class="prose max-w-[1020px] w-full min-w-0 xs:p-0 lg:px-0 prose-a:break-words prose-table:table prose-div:bg-transparent prose-table:!table prose-table:max-w-full prose-table:w-full prose-td_a:whitespace-nowrap prose-td_a:break-keep prose-td_a:overflow-wrap-normal prose-td_a:word-break-normal [&_th]:!hyphens-none [&_td]:!hyphens-none [&_th]:!break-normal [&_td]:!break-normal [&_th]:![overflow-wrap:normal] [&_td]:![overflow-wrap:break-word] [&_th]:whitespace-nowrap xs:prose-table:mx-auto prose-table:overflow-x-auto leading-relaxed prose-p:text-lightTextLight prose-strong:text-lightTextStrong prose-strong:font-bold prose-small:text-lightTextLight prose-small:font-light prose-a:text-lightTextLight prose-p:mx-0 prose-p:my-2 prose [&_.line-space]:my-0 prose-p:my-2 prose-p:text-base sm:prose-p:text-lg prose-blockquote:my-0 prose-blockquote:border-l-[5px] prose-blockquote:border-lightTextAccent prose-blockquote:pl-4 prose-blockquote:leading-relaxed prose-blockquote:text-lightText prose-h2:text-lightTextStrong prose-li:marker:text-lightText prose-h2:text-xl sm:prose-h2:text-3xl prose-h2:font-bold prose-h2:my-6 prose-h3:text-lightTextStrong prose-hr:m-2 prose-h3:text-xl sm:prose-h3:text-2xl prose-h3:font-bold prose-h3:my-5 prose-h4:text-xl prose-h4:font-bold prose-h4:my-4 prose-td:text-lightTextLight prose-td:border prose-td:border-lightBorder prose-td:px-2 prose-td:[&_p]:my-0 prose-th:[&_p]:my-0 prose-th:text-lightTextLight prose-th:border prose-th:border-lightBorder prose-th:px-2 prose-li:text-lg prose-li:text-lightTextLight prose-li:px-0 prose-li:mb-3 prose-li:ml-3 prose-li:leading-relaxed prose-ul:pl-2 prose-ul:sm:pl-8 prose-ol:pl-2 prose-ol:sm:pl-8 hover:prose-a:text-lightTextAccent prose-a:rounded prose-code:text-lightTextLight prose-code:break-all prose-pre:rounded-lg prose-pre:text-sm prose-pre:my-4 prose-pre:p-3 prose-pre:overflow-x-scroll prose-pre:whitespace-pre-wrap prose-pre:break-words "><div class="w-full flex items-center justify-center "><p><em>In <a href="https://hackernoon.com/i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop?ref=hackernoon.com" target="_blank" rel="noopener noreferrer ugc">my previous article</a>, I described building a semi-autonomous SRE agent that investigates incidents and drafts fixes for human approval. This one is about the part of that build I have not told yet: how the agent knows what it knows, and how many tries it took to get there.</em></p>
|
||
<p class="line-space"> <br/> </p><p>There is a pattern to AI DevOps demos. The agent gets a clean alert, queries a metric, finds an obvious anomaly, and produces a confident diagnosis. Everyone applauds. Then someone points it at a real environment and it confidently recommends restarting a service that has been deprecated for two years.</p><p>The gap between the demo and production is not intelligence. It is context.</p>
|
||
<p>An LLM knows what Kubernetes is. It does not know that your <code>payments-api</code> has a flaky liveness probe everyone ignores, that the checkout team owns the retry policy, or that the last three "database incidents" were actually cache misconfigurations. That knowledge lives in your runbooks, your postmortems, your architecture docs, and the heads of your senior engineers.</p>
|
||
<p>The agent I described in my previous article already pulled in runbook context when an incident required it. What I did not cover is how it got there. My first build had none of that knowledge, and my second attempt delivered it badly. Here is the path to runbooks plus retrieval-augmented generation, and what I learned about keeping an agent's knowledge honest.</p>
|
||
<h2 id="h-the-two-knowledge-planes">The Two Knowledge Planes</h2>
|
||
<p>An SRE agent needs two fundamentally different kinds of knowledge, and they should be architected separately.</p>
|
||
<p><strong>The live plane</strong> is the current state of the world: metrics from Prometheus, container logs, Kubernetes events, deploy history, alert payloads. This data is fresh, factual, and machine-generated. The agent gets it through scoped, read-only tools at investigation time.</p>
|
||
<p><strong>The organizational plane</strong> is everything your team knows that no dashboard shows: runbooks, SOPs, playbooks, postmortems, architecture docs, service ownership, escalation rules. This data is slow-moving, human-written, and full of judgment calls. It answers questions the live plane cannot: is this symptom normal for this service? Who do I page? What did we do last time?</p>
|
||
<p>My first build wired up the live plane and stuffed a summary of the organizational plane into the system prompt. That failed in two ways. The prompt grew until it crowded out the actual investigation, and it was perpetually stale because nobody updates a system prompt when they update a runbook.</p>
|
||
<h2 id="h-retrieval-instead-of-stuffing">Retrieval Instead of Stuffing</h2>
|
||
<p>The fix was boring and effective: treat organizational knowledge as a retrieval problem.</p>
|
||
<p>All of it — runbooks, postmortems, architecture notes, ownership maps — lives as markdown in a git repository. A pipeline chunks the documents, embeds them, and loads them into a vector database. On every merge to main, the embeddings for changed files are rebuilt. The knowledge base is never more than one merge behind reality.</p>
|
||
<p>At incident time, the agent does not receive the whole library. It retrieves what the incident is about. A latency alert on <code>checkout-api</code> pulls the checkout runbook, the postmortems that mention checkout, and the architecture doc describing its dependencies. Nothing about the batch pipeline, nothing about the mobile gateway.</p>
|
||
<p>The investigation loop looks like this:</p>
|
||
<ol>
|
||
<li>Alert arrives; the agent identifies affected services from routing metadata</li>
|
||
<li>Retrieval: runbooks, postmortems, and docs relevant to those services</li>
|
||
<li>Live investigation: metrics, logs, deploy diffs through read-only tools</li>
|
||
<li>Correlation: live signals interpreted <em>in light of</em> retrieved knowledge</li>
|
||
<li>If evidence is thin, retrieve more or escalate to a human</li>
|
||
</ol>
|
||
<p>Step 4 is where the value concentrates. Raw telemetry says "cache hit ratio dropped." The retrieved postmortem says "we saw this exact pattern in March; the cause was a TTL misconfiguration; the fix was PR #1203." Those two together are a diagnosis. Either alone is a guess.</p>
|
||
<h2 id="h-the-incident-that-proved-it">The Incident That Proved It</h2>
|
||
<p>During testing, I injected a failure the agent had never seen: connection resets on a service that sat behind a third-party API. The live signals were ambiguous — error rates up, latency ragged, no recent deploy on the affected service itself.</p>
|
||
<p>The retrieval layer surfaced a postmortem from a previous incident that described the third-party provider's monthly maintenance window and its signature: connection resets starting precisely on the hour. The agent checked the timestamp, matched the pattern, and its response changed from "probable network issue, investigating" to "this matches the vendor maintenance pattern documented in the June postmortem; recommended action is the mitigation from that document; no code change needed."</p>
|
||
<p>That answer did not come from the model being smart. It came from a two-paragraph postmortem someone wrote months earlier, retrieved at the right moment. The agent's job was recognizing that the document and the telemetry described the same event.</p>
|
||
<h2 id="h-keeping-the-knowledge-honest">Keeping the Knowledge Honest</h2>
|
||
<p>RAG introduces a new failure mode: the agent is now only as good as the documents you feed it. Three rules kept mine trustworthy.</p>
|
||
<p><strong>Runbooks live in git, next to the services they describe.</strong> Updating the agent's behavior means merging a PR, which means code review. Tribal knowledge gets the same rigor as code. Stale runbooks get caught in review, not at 3 AM.</p>
|
||
<p><strong>Postmortems are the highest-value documents in the corpus.</strong> They encode symptom-to-cause mappings that exist nowhere else. My agent writes a structured postmortem after every resolved incident — published to Confluence for humans, with a markdown copy committed to the git corpus for the agent. Every incident makes the next investigation smarter. The knowledge base compounds.</p>
|
||
<p><strong>Retrieved content is context, not command.</strong> A runbook that says "restart the service immediately" does not make the agent restart anything. Retrieved documents inform the diagnosis; actions still go through the same scoped tools, validation hooks, and human approval I described in the previous article. This matters for safety — documents can be wrong, outdated, or in a worst case, poisoned. The knowledge layer gets no authority, only influence.</p>
|
||
<h2 id="h-what-still-breaks">What Still Breaks</h2>
|
||
<p>Honesty section. Three problems I have not fully solved:</p>
|
||
<p><strong>Retrieval misses.</strong> If an incident's vocabulary does not match the runbook's vocabulary, the right document does not surface. An alert about "connection pool exhaustion" will not retrieve a runbook titled "database saturation issues" unless the embeddings happen to bridge the gap. I now write runbooks with symptoms in the first paragraph, which helps but does not eliminate it.</p>
|
||
<p><strong>Conflicting documents.</strong> Two runbooks, written two years apart, recommending opposite mitigations. The agent has no way to know which one is current unless the corpus tells it. I added a <code>last_validated</code> date to every runbook header and taught the retrieval layer to prefer recency — a crude fix for a real problem.</p>
|
||
<p><strong>Confidence laundering.</strong> A retrieved document can make a weak diagnosis sound strong. "As documented in the runbook" is persuasive even when the runbook is only loosely relevant. The agent now cites which documents shaped its hypothesis, so the human reviewing the diagnosis can check whether the citation actually supports it.</p>
|
||
<h2 id="h-the-takeaway">The Takeaway</h2>
|
||
<p>If your AI DevOps agent works in demos and fails in production, the missing ingredient is probably not a better model. It is the organizational knowledge your team already wrote down, retrieved at the right moment, and kept honest by the same review process you use for code.</p>
|
||
<p>Live telemetry tells the agent what is happening. Runbooks and postmortems tell it what that means <em>here</em>, in your system, with your history. An agent with both is a useful colleague. An agent with only the first is a demo.</p>
|
||
<p>If you have built a knowledge layer for an agent — especially if you have solved retrieval misses better than I have — I would love to hear how.</p></div></div></div></div></div><div class="hidden xl:flex xl:flex-col self-stretch"><div class="sticky top-[99px] px-3"><div class=" flex flex-col flex-row-reverse items-start gap-4 "><span class="tooltip tooltip-left cursor-pointer" data-tip="Bookmark"><button class="3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[40px] w-[40px] flex items-center justify-center border border-lightBorder"><i class="hn hn-bookmark text-lightText text-2xl"></i></button></span><span class="tooltip tooltip-left cursor-pointer" data-tip="Comment"><button class="3xl:hover:bg-lightAlt hover:bg-light p-1 md:p-2 rounded h-[40px] w-[40px] flex items-center justify-center border border-lightBorder"><i class="hn hn-comment text-lightText text-2xl"></i></button></span><div class="dropdown dropdown-bottom dropdown-hover group "><label tabindex="0" class="flex items-center cursor-pointer justify-center border border-lightBorder 3xl:group-hover:bg-lightAlt group-hover:bg-light h-[40px] w-[40px] p-2 rounded "><i class="hn hn-share text-2xl"></i></label><ul tabindex="0" class="dropdown-content bg-light z-[1] py-4 px-4 3xl:px-0 3xl:py-2 border 3xl:border-none flex flex-col items-center justify-center gap-2 "><button class="border p-2 rounded hover:bg-lightAlt"><i class=" hn hn-copy text-lightText text-2xl "></i></button><button class="border p-2 rounded hover:bg-lightAlt"><i class="hn hn-facebook-round text-lightText text-2xl"></i></button><button class="border p-2 rounded hover:bg-lightAlt"><i class="hn hn-x text-lightText text-2xl"></i></button><button class="border p-2 rounded hover:bg-lightAlt"><i class="hn hn-linkedin text-lightText text-2xl"></i></button><a href="mailto:?subject=I'd like to share a link with you &body=" class="border p-2 rounded inline-block hover:bg-lightAlt"><i class="hn hn-envelope text-lightText text-2xl"></i></a></ul></div></div></div></div></div><div class="px-4 lg:px-0 mx-auto w-full lg:max-w-[1000px] flex-col flex items-center justify-center "><div id="commentSection" class=" font-sans max-w-[1000px] mt-4 mb-10 px-4 sm:px-0 items-center rounded-xl w-full flex flex-col"><div class="flex w-full flex-col xs:flex-row items-stretch justify-between gap-5 "><a href="/i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop" rel="external" class="flex xs:w-1/2 flex-col group justify-between no-underline border border-lightBorder rounded-[5px] transition-all duration-300 hover:scale-[1.03]"><div class="flex-grow p-3 text-lightText"><span class="font-bold hover:text-lightTextStrong">← Previous</span><p class="mt-2 font-light hover:underline">I Built an AI SRE Agent That Diagnoses Incidents Before I Open My Laptop</p></div></a><a href="/policy-versus-physics-docker-sandboxing-for-my-ai-sre-agent" rel="external" class="flex w-full xs:w-1/2 flex-col group justify-between no-underline border border-lightBorder rounded-[5px] transition-all duration-300 hover:scale-[1.03]"><div class="flex-grow p-3 "><span class="font-bold hover:text-lightTextStrong">Up Next →</span><p class="mt-2 font-light hover:underline ">Policy Versus Physics: Docker Sandboxing for My AI SRE Agent</p></div></a></div></div></div><div id="aboutCard" class=" max-w-[1000px] mx-auto flex flex-col items-center gap-6 "><div class="w-full lg:border border-lightBorder rounded-2xl"><div class=" w-full px-4 py-3 sm:px-8 sm:py-6 "><h3 class="text-xl xs:text-2xl sm:text-3xl font-bold mb-6">About Author</h3><div class="flex flex-col items-start"><div class="flex gap-4 flex-row items-start w-full"><div class="relative shadow-md rounded-full flex-shrink-0 min-w-[50px] w-[50px] h-[50px] sm:min-w-[75px] sm:h-[75px] ring-4 ring-gray-300"><a href="/u/armeesala"><img alt="Akhilesh Rao Meesala HackerNoon profile picture" loading="lazy" decoding="async" data-nimg="fill" class="rounded-full" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;object-fit:cover;color:transparent" sizes="100vw" srcSet="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=640 640w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=750 750w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=828 828w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=1080 1080w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=1200 1200w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=1920 1920w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=2048 2048w, https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=3840 3840w" src="https://hackernoon.imgix.net/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png?auto=format%2Ccompress&w=3840"/></a></div><div class="flex-1 min-w-0 flex flex-col justify-center"><div class="flex flex-col"><div class="flex flex-wrap items-center gap-1 sm:gap-2 text-base text-bodyTxtLight"><span class="text-xs font-light mr-1">by</span><a class="hover:underline" href="/u/armeesala"><strong class="font-bold text-lightTextStrong">Akhilesh Rao Meesala</strong></a><span class="text-xs font-light opacity-50">|</span><a class="hover:underline text-sm sm:text-base text-bodyTxtLight" href="/u/armeesala">@<!-- -->armeesala</a></div></div></div></div><p class="text-sm text-bodyTxtLight break-words overflow-wrap mt-4 mb-4 w-full">Principal Engineer at Oracle focused on cloud infrastructure, SRE, Kubernetes, and AI-driven platform engineering. </p><div class="w-full mb-4"><div class="w-full flex justify-start"><div class="w-full"><form class="w-full flex flex-col items-start gap-2 "><div class="flex w-full"><input class="p-2 flex-grow border rounded-l-md text-lightText bg-light focus:outline-none focus:ring-0 focus:ring-transparent border-lightBorder w-full text-base px-2}
|
||
}" placeholder="name@company.com" type="email" required="" name="email" value=""/><button type="submit" class="text-base}
|
||
bg-lightAlt border border-l-0 border-lightBorder hover:bg-green-700 text-lightText hover:bg-dark hover:text-darkText px-2 py-1 rounded-r-md font-bold">Subscribe</button></div></form></div></div></div><div class="flex-1 w-full"><div class="flex flex-col flex-wrap gap-2 items-start justify-start mt-2 mb-2"></div><div class="flex flex-col sm:flex-row gap-4 w-full"><a class="text-base flex-1 px-4 py-2 font-bold rounded-lg border-2 border-lightBorder transition text-center w-full sm:w-auto bg-light hover:bg-lightAlt text-lightText hover:bg-bodyAccent hover:text-bodyAccentTxt " href="/u/armeesala">Read my stories</a><a class="text-base break-words flex-1 break-all px-4 py-2 font-bold rounded-lg border-2 border-lightBorder transition text-center w-full sm:w-auto bg-light hover:bg-lightAlt text-lightText hover:bg-bodyAccent hover:text-bodyAccentTxt " href="/about/armeesala">About @armeesala</a></div></div></div></div></div><span id="aboutCard" class="hidden"></span><section class="w-full py-3 px-4 sm:px-0 sm:py-6 "><h4 class="text-xl xs:text-2xl sm:text-3xl font-bold mb-4 sm:mb-6">TOPICS</h4><div class="flex flex-wrap gap-2"><div class=" flex flex-wrap items-center gap-2 border-lightBorder"><a href="/c/ai" target="_blank" rel="noopener noreferrer" class="text-lg border-lightBorder hover:bg-lightAccent hover:text-lightAccentText hover:border-lightAccentText bg-lightAlt text-lightText flex items-center px-2 py-1 border rounded"><span class="mr-2"><i class="hn hn-machine-learning !leading-[inherit]"></i></span><span>ai-and-ml</span></a></div><a href="/tagged/site-reliability-engineering" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->site-reliability-engineering</a><a href="/tagged/devops-knowledge-retrieval" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->devops-knowledge-retrieval</a><a href="/tagged/ai-postmortem-retrieval" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->ai-postmortem-retrieval</a><a href="/tagged/vector-database-runbooks" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->vector-database-runbooks</a><a href="/tagged/sre-agent-architecture" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->sre-agent-architecture</a><a href="/tagged/ai-runbook-retrieval" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->ai-runbook-retrieval</a><a href="/tagged/ai-sre-agent" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->ai-sre-agent</a><a href="/tagged/hackernoon-top-story" target="_blank" rel="noopener noreferrer" class="text-sm xs:text-base sm:text-lg flex items-center px-2 py-1 border hover:bg-lightAlt border-lightBorder rounded">#<!-- -->hackernoon-top-story</a></div></section></div></div></div></div></div><div class="min-h-[200px]"></div></main><div class="flex flex-col gap-4 hidden"><button class="mr-auto"><i class="hn-sun hn text-2xl"></i></button><h2 class="text-sm font-semibold text-darkText">Light-Mode</h2><div class="cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform "><h3 class="text-sm uppercase mb-2 ">Classic</h3><div class="flex space-x-1"><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#0F0"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#F5EC43"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#212428"></span></div></div><div class="cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform "><h3 class="text-sm uppercase mb-2 ">Newspaper</h3><div class="flex space-x-1"><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#FFFFFF"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#F5F5F5"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#454545"></span></div></div><div class="cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform "><h3 class="text-sm uppercase mb-2 ">Proof of Usefulness</h3><div class="flex space-x-1"><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#FFFFFF"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#26AB5C"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#D2FBE2"></span></div></div><h2 class="text-sm font-semibold text-darkText">Dark-Mode</h2><div class="cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform "><h3 class="text-sm uppercase mb-2 ">Neon Noir</h3><div class="flex space-x-1"><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#1E1E1E"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#0F0"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#F5EC43"></span></div></div><div class="cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform "><h3 class="text-sm uppercase mb-2 ">Minty</h3><div class="flex space-x-1"><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#061F19"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#2AAA74"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#63FF86"></span></div></div><div class="cursor-pointer p-3 rounded-lg hover:scale-105 transition-transform "><h3 class="text-sm uppercase mb-2 ">Startups of the Year</h3><div class="flex space-x-1"><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#08085E"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#A2EF44"></span><span class="w-6 h-6 rounded border border-darkBorder" style="background-color:#1B1B95"></span></div></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"data":{"pageLang":"en","datePublished":"2026-07-26","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","articleBody":"In my previous article, I described building a semi-autonomous SRE agent that investigates incidents and drafts fixes for human approval. This one is about the part of that build I have not told yet: how the agent knows what it knows, and how many tries it took to get there. In my previous article, I described building a semi-autonomous SRE agent that investigates incidents and drafts fixes for human approval. This one is about the part of that build I have not told yet: how the agent knows what it knows, and how many tries it took to get there. my previous article There is a pattern to AI DevOps demos. The agent gets a clean alert, queries a metric, finds an obvious anomaly, and produces a confident diagnosis. Everyone applauds. Then someone points it at a real environment and it confidently recommends restarting a service that has been deprecated for two years. The gap between the demo and production is not intelligence. It is context. An LLM knows what Kubernetes is. It does not know that your payments-api has a flaky liveness probe everyone ignores, that the checkout team owns the retry policy, or that the last three \"database incidents\" were actually cache misconfigurations. That knowledge lives in your runbooks, your postmortems, your architecture docs, and the heads of your senior engineers. payments-api The agent I described in my previous article already pulled in runbook context when an incident required it. What I did not cover is how it got there. My first build had none of that knowledge, and my second attempt delivered it badly. Here is the path to runbooks plus retrieval-augmented generation, and what I learned about keeping an agent's knowledge honest. The Two Knowledge Planes An SRE agent needs two fundamentally different kinds of knowledge, and they should be architected separately. The live plane is the current state of the world: metrics from Prometheus, container logs, Kubernetes events, deploy history, alert payloads. This data is fresh, factual, and machine-generated. The agent gets it through scoped, read-only tools at investigation time. The live plane The organizational plane is everything your team knows that no dashboard shows: runbooks, SOPs, playbooks, postmortems, architecture docs, service ownership, escalation rules. This data is slow-moving, human-written, and full of judgment calls. It answers questions the live plane cannot: is this symptom normal for this service? Who do I page? What did we do last time? The organizational plane My first build wired up the live plane and stuffed a summary of the organizational plane into the system prompt. That failed in two ways. The prompt grew until it crowded out the actual investigation, and it was perpetually stale because nobody updates a system prompt when they update a runbook. Retrieval Instead of Stuffing The fix was boring and effective: treat organizational knowledge as a retrieval problem. All of it — runbooks, postmortems, architecture notes, ownership maps — lives as markdown in a git repository. A pipeline chunks the documents, embeds them, and loads them into a vector database. On every merge to main, the embeddings for changed files are rebuilt. The knowledge base is never more than one merge behind reality. At incident time, the agent does not receive the whole library. It retrieves what the incident is about. A latency alert on checkout-api pulls the checkout runbook, the postmortems that mention checkout, and the architecture doc describing its dependencies. Nothing about the batch pipeline, nothing about the mobile gateway. checkout-api The investigation loop looks like this: Alert arrives; the agent identifies affected services from routing metadata\nRetrieval: runbooks, postmortems, and docs relevant to those services\nLive investigation: metrics, logs, deploy diffs through read-only tools\nCorrelation: live signals interpreted in light of retrieved knowledge\nIf evidence is thin, retrieve more or escalate to a human Alert arrives; the agent identifies affected services from routing metadata Retrieval: runbooks, postmortems, and docs relevant to those services Live investigation: metrics, logs, deploy diffs through read-only tools Correlation: live signals interpreted in light of retrieved knowledge in light of If evidence is thin, retrieve more or escalate to a human Step 4 is where the value concentrates. Raw telemetry says \"cache hit ratio dropped.\" The retrieved postmortem says \"we saw this exact pattern in March; the cause was a TTL misconfiguration; the fix was PR #1203.\" Those two together are a diagnosis. Either alone is a guess. The Incident That Proved It During testing, I injected a failure the agent had never seen: connection resets on a service that sat behind a third-party API. The live signals were ambiguous — error rates up, latency ragged, no recent deploy on the affected service itself. The retrieval layer surfaced a postmortem from a previous incident that described the third-party provider's monthly maintenance window and its signature: connection resets starting precisely on the hour. The agent checked the timestamp, matched the pattern, and its response changed from \"probable network issue, investigating\" to \"this matches the vendor maintenance pattern documented in the June postmortem; recommended action is the mitigation from that document; no code change needed.\" That answer did not come from the model being smart. It came from a two-paragraph postmortem someone wrote months earlier, retrieved at the right moment. The agent's job was recognizing that the document and the telemetry described the same event. Keeping the Knowledge Honest RAG introduces a new failure mode: the agent is now only as good as the documents you feed it. Three rules kept mine trustworthy. Runbooks live in git, next to the services they describe. Updating the agent's behavior means merging a PR, which means code review. Tribal knowledge gets the same rigor as code. Stale runbooks get caught in review, not at 3 AM. Runbooks live in git, next to the services they describe. Postmortems are the highest-value documents in the corpus. They encode symptom-to-cause mappings that exist nowhere else. My agent writes a structured postmortem after every resolved incident — published to Confluence for humans, with a markdown copy committed to the git corpus for the agent. Every incident makes the next investigation smarter. The knowledge base compounds. Postmortems are the highest-value documents in the corpus. Retrieved content is context, not command. A runbook that says \"restart the service immediately\" does not make the agent restart anything. Retrieved documents inform the diagnosis; actions still go through the same scoped tools, validation hooks, and human approval I described in the previous article. This matters for safety — documents can be wrong, outdated, or in a worst case, poisoned. The knowledge layer gets no authority, only influence. Retrieved content is context, not command. What Still Breaks Honesty section. Three problems I have not fully solved: Retrieval misses. If an incident's vocabulary does not match the runbook's vocabulary, the right document does not surface. An alert about \"connection pool exhaustion\" will not retrieve a runbook titled \"database saturation issues\" unless the embeddings happen to bridge the gap. I now write runbooks with symptoms in the first paragraph, which helps but does not eliminate it. Retrieval misses. Conflicting documents. Two runbooks, written two years apart, recommending opposite mitigations. The agent has no way to know which one is current unless the corpus tells it. I added a last_validated date to every runbook header and taught the retrieval layer to prefer recency — a crude fix for a real problem. Conflicting documents. last_validated Confidence laundering. A retrieved document can make a weak diagnosis sound strong. \"As documented in the runbook\" is persuasive even when the runbook is only loosely relevant. The agent now cites which documents shaped its hypothesis, so the human reviewing the diagnosis can check whether the citation actually supports it. Confidence laundering. The Takeaway If your AI DevOps agent works in demos and fails in production, the missing ingredient is probably not a better model. It is the organizational knowledge your team already wrote down, retrieved at the right moment, and kept honest by the same review process you use for code. Live telemetry tells the agent what is happening. Runbooks and postmortems tell it what that means here, in your system, with your history. An agent with both is a useful colleague. An agent with only the first is a demo. here If you have built a knowledge layer for an agent — especially if you have solved retrieval misses better than I have — I would love to hear how.","arweave":"m1hkXaftZFEMlNCclD67t9mDCyf-8gpzbzK_j8P0kw0","createdAt":"2026-07-26T06:45:05.762Z","draftId":"6a46e1aad43309444fe6dfcc","emoji":[{"description":"This story contains new, firsthand information uncovered by the writer.","label":"Original Reporting","prompt":"","image":"https://cdn.hackernoon.com/images/img-oi03r0q.png","value":0}],"excerpt":"Learn how retrieval-augmented generation (RAG) helps AI SRE agents use runbooks, postmortems, and documentation to investigate real production incidents.","firstSeenAt":false,"fromSlack":false,"id":"6a46e1aad43309444fe6dfcc","imageSizes":{},"linkAccreditation":{"goals":"","isBlogging":null,"isBusiness":null,"debut":true,"isPersonal":null},"mainImage":"https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png","mainImageHeight":900,"mainImageWidth":1600,"markup":null,"owner":"o0NZDcox2STL8hO5ITlYC7E0vlE2","parsed":"\u003cp\u003e\u003cem\u003eIn\u0026nbsp;\u003ca href=\"https://hackernoon.com/i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop\"\u003emy previous article\u003c/a\u003e, I described building a semi-autonomous SRE agent that investigates incidents and drafts fixes for human approval. This one is about the part of that build I have not told yet: how the agent knows what it knows, and how many tries it took to get there.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\u003cp\u003eThere is a pattern to AI DevOps demos. The agent gets a clean alert, queries a metric, finds an obvious anomaly, and produces a confident diagnosis. Everyone applauds. Then someone points it at a real environment and it confidently recommends restarting a service that has been deprecated for two years.\u003c/p\u003e\u003cp\u003eThe gap between the demo and production is not intelligence. It is context.\u003c/p\u003e\n\u003cp\u003eAn LLM knows what Kubernetes is. It does not know that your\u0026nbsp;\u003ccode\u003epayments-api\u003c/code\u003e\u0026nbsp;has a flaky liveness probe everyone ignores, that the checkout team owns the retry policy, or that the last three \"database incidents\" were actually cache misconfigurations. That knowledge lives in your runbooks, your postmortems, your architecture docs, and the heads of your senior engineers.\u003c/p\u003e\n\u003cp\u003eThe agent I described in my previous article already pulled in runbook context when an incident required it. What I did not cover is how it got there. My first build had none of that knowledge, and my second attempt delivered it badly. Here is the path to runbooks plus retrieval-augmented generation, and what I learned about keeping an agent's knowledge honest.\u003c/p\u003e\n\u003ch2 id=\"h-the-two-knowledge-planes\"\u003eThe Two Knowledge Planes\u003c/h2\u003e\n\u003cp\u003eAn SRE agent needs two fundamentally different kinds of knowledge, and they should be architected separately.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe live plane\u003c/strong\u003e\u0026nbsp;is the current state of the world: metrics from\u0026nbsp;Prometheus, container logs, Kubernetes events, deploy history, alert payloads. This data is fresh, factual, and machine-generated. The agent gets it through scoped, read-only tools at investigation time.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe organizational plane\u003c/strong\u003e\u0026nbsp;is everything your team knows that no dashboard shows: runbooks, SOPs, playbooks, postmortems, architecture docs, service ownership, escalation rules. This data is slow-moving, human-written, and full of judgment calls. It answers questions the live plane cannot: is this symptom normal for this service? Who do I page? What did we do last time?\u003c/p\u003e\n\u003cp\u003eMy first build wired up the live plane and stuffed a summary of the organizational plane into the system prompt. That failed in two ways. The prompt grew until it crowded out the actual investigation, and it was perpetually stale because nobody updates a system prompt when they update a runbook.\u003c/p\u003e\n\u003ch2 id=\"h-retrieval-instead-of-stuffing\"\u003eRetrieval Instead of Stuffing\u003c/h2\u003e\n\u003cp\u003eThe fix was boring and effective: treat organizational knowledge as a retrieval problem.\u003c/p\u003e\n\u003cp\u003eAll of it — runbooks, postmortems, architecture notes, ownership maps — lives as markdown in a git repository. A pipeline chunks the documents, embeds them, and loads them into a vector database. On every merge to main, the embeddings for changed files are rebuilt. The knowledge base is never more than one merge behind reality.\u003c/p\u003e\n\u003cp\u003eAt incident time, the agent does not receive the whole library. It retrieves what the incident is about. A latency alert on\u0026nbsp;\u003ccode\u003echeckout-api\u003c/code\u003e\u0026nbsp;pulls the checkout runbook, the postmortems that mention checkout, and the architecture doc describing its dependencies. Nothing about the batch pipeline, nothing about the mobile gateway.\u003c/p\u003e\n\u003cp\u003eThe investigation loop looks like this:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eAlert arrives; the agent identifies affected services from routing metadata\u003c/li\u003e\n\u003cli\u003eRetrieval: runbooks, postmortems, and docs relevant to those services\u003c/li\u003e\n\u003cli\u003eLive investigation: metrics, logs, deploy diffs through read-only tools\u003c/li\u003e\n\u003cli\u003eCorrelation: live signals interpreted\u0026nbsp;\u003cem\u003ein light of\u003c/em\u003e\u0026nbsp;retrieved knowledge\u003c/li\u003e\n\u003cli\u003eIf evidence is thin, retrieve more or escalate to a human\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eStep 4 is where the value concentrates. Raw telemetry says \"cache hit ratio dropped.\" The retrieved postmortem says \"we saw this exact pattern in March; the cause was a TTL misconfiguration; the fix was PR #1203.\" Those two together are a diagnosis. Either alone is a guess.\u003c/p\u003e\n\u003ch2 id=\"h-the-incident-that-proved-it\"\u003eThe Incident That Proved It\u003c/h2\u003e\n\u003cp\u003eDuring testing, I injected a failure the agent had never seen: connection resets on a service that sat behind a third-party API. The live signals were ambiguous — error rates up, latency ragged, no recent deploy on the affected service itself.\u003c/p\u003e\n\u003cp\u003eThe retrieval layer surfaced a postmortem from a previous incident that described the third-party provider's monthly maintenance window and its signature: connection resets starting precisely on the hour. The agent checked the timestamp, matched the pattern, and its response changed from \"probable network issue, investigating\" to \"this matches the vendor maintenance pattern documented in the June postmortem; recommended action is the mitigation from that document; no code change needed.\"\u003c/p\u003e\n\u003cp\u003eThat answer did not come from the model being smart. It came from a two-paragraph postmortem someone wrote months earlier, retrieved at the right moment. The agent's job was recognizing that the document and the telemetry described the same event.\u003c/p\u003e\n\u003ch2 id=\"h-keeping-the-knowledge-honest\"\u003eKeeping the Knowledge Honest\u003c/h2\u003e\n\u003cp\u003eRAG introduces a new failure mode: the agent is now only as good as the documents you feed it. Three rules kept mine trustworthy.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRunbooks live in git, next to the services they describe.\u003c/strong\u003e\u0026nbsp;Updating the agent's behavior means merging a PR, which means code review. Tribal knowledge gets the same rigor as code. Stale runbooks get caught in review, not at 3 AM.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePostmortems are the highest-value documents in the corpus.\u003c/strong\u003e\u0026nbsp;They encode symptom-to-cause mappings that exist nowhere else. My agent writes a structured postmortem after every resolved incident — published to\u0026nbsp;Confluence\u0026nbsp;for humans, with a markdown copy committed to the git corpus for the agent. Every incident makes the next investigation smarter. The knowledge base compounds.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRetrieved content is context, not command.\u003c/strong\u003e\u0026nbsp;A runbook that says \"restart the service immediately\" does not make the agent restart anything. Retrieved documents inform the diagnosis; actions still go through the same scoped tools, validation hooks, and human approval I described in the previous article. This matters for safety — documents can be wrong, outdated, or in a worst case, poisoned. The knowledge layer gets no authority, only influence.\u003c/p\u003e\n\u003ch2 id=\"h-what-still-breaks\"\u003eWhat Still Breaks\u003c/h2\u003e\n\u003cp\u003eHonesty section. Three problems I have not fully solved:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRetrieval misses.\u003c/strong\u003e\u0026nbsp;If an incident's vocabulary does not match the runbook's vocabulary, the right document does not surface. An alert about \"connection pool exhaustion\" will not retrieve a runbook titled \"database saturation issues\" unless the embeddings happen to bridge the gap. I now write runbooks with symptoms in the first paragraph, which helps but does not eliminate it.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eConflicting documents.\u003c/strong\u003e\u0026nbsp;Two runbooks, written two years apart, recommending opposite mitigations. The agent has no way to know which one is current unless the corpus tells it. I added a\u0026nbsp;\u003ccode\u003elast_validated\u003c/code\u003e\u0026nbsp;date to every runbook header and taught the retrieval layer to prefer recency — a crude fix for a real problem.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eConfidence laundering.\u003c/strong\u003e\u0026nbsp;A retrieved document can make a weak diagnosis sound strong. \"As documented in the runbook\" is persuasive even when the runbook is only loosely relevant. The agent now cites which documents shaped its hypothesis, so the human reviewing the diagnosis can check whether the citation actually supports it.\u003c/p\u003e\n\u003ch2 id=\"h-the-takeaway\"\u003eThe Takeaway\u003c/h2\u003e\n\u003cp\u003eIf your AI DevOps agent works in demos and fails in production, the missing ingredient is probably not a better model. It is the organizational knowledge your team already wrote down, retrieved at the right moment, and kept honest by the same review process you use for code.\u003c/p\u003e\n\u003cp\u003eLive telemetry tells the agent what is happening. Runbooks and postmortems tell it what that means\u0026nbsp;\u003cem\u003ehere\u003c/em\u003e, in your system, with your history. An agent with both is a useful colleague. An agent with only the first is a demo.\u003c/p\u003e\n\u003cp\u003eIf you have built a knowledge layer for an agent — especially if you have solved retrieval misses better than I have — I would love to hear how.\u003c/p\u003e","profile":{"handle":"armeesala","displayName":"Akhilesh Rao Meesala","bio":"Principal Engineer at Oracle focused on cloud infrastructure, SRE, Kubernetes, and AI-driven platform engineering. ","avatar":"https://cdn.hackernoon.com/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png","isBrand":false,"currentJob":{"title":"","company":"","startDate":""},"jobHistory":[{"title":"","company":"","startDate":"","endDate":""}],"callToActions":[{"id":"2f74eec85756","name":"Your CTA","url":"https://www.linkedin.com/in/akhileshrao1/","icon":"","active":true},{"active":true,"icon":"fa fa-book","name":"Read My Stories","url":"https://hackernoon.com/u/armeesala","id":"034acc4223472"}],"about_page_settings":{"blocked":false,"createdAt":"2026-07-12T22:58:10.840Z","updatedAt":"2026-07-12T22:58:10.840Z","style":{"headline_pos":"center","layout":0,"skin":0},"published":true,"owner":"o0NZDcox2STL8hO5ITlYC7E0vlE2"},"isTrusted":false,"allowSubscribers":true},"publishedAt":1785048308.074,"super_category":"ai-and-ml","tags":["site-reliability-engineering","devops-knowledge-retrieval","ai-postmortem-retrieval","vector-database-runbooks","sre-agent-architecture","ai-runbook-retrieval","ai-sre-agent","hackernoon-top-story"],"title":"Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing","tldr":"Large language models understand infrastructure, but they don't understand your infrastructure. This article explains how a retrieval-augmented generation (RAG) layer gives AI SRE agents access to runbooks, postmortems, architecture docs, and service ownership information at investigation time. It covers the two-plane knowledge model, vector retrieval, real-world failure modes, and practical lessons for keeping an AI knowledge base accurate, current, and trustworthy.","youtubeTranscriptData":null,"backlinks":{"fetched":"2026-07-26T06:45:10.435Z","urls":["https://x.com/hackernoon/status/2081269575505608966","https://bsky.app/profile/hackernoon.com/post/3mrjrt7wtif2o","https://mas.to/@hackernoon/116984926064562127"]},"parentCategory":"programming","translation":{"en":{"code":"en","name":"English","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Runbooks + RAG: How I Gave My AI SRE Agent the Context It Was Missing","flag":"https://cdn.hackernoon.com/images/usa_flag.webp","enLangTooltip":"Read this story in the original language, English!"},"es":{"code":"es","name":"Spanish","flag":"https://cdn.hackernoon.com/images/spain_flag.webp","esLangTooltip":"Lee esta historia en Español!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Libros de ejecución + RAG: Cómo le di al agente de SRE de IA el contexto que le faltaba"},"ja":{"code":"ja","name":"Japanese","flag":"https://cdn.hackernoon.com/flags/japanese_20jtajj.png","jaLangTooltip":"この物語を日本語で読んでください!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"ランブック + RAG: どのようにして私のAI SREエージェントに、それが欠けていたコンテキストを与えたか"},"lv":{"code":"lv","name":"Latvian","flag":"https://cdn.hackernoon.com/flags/latvian_9414sjv.png","lvLangTooltip":"Izlasi šo stāstu latviešu valodā!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Darbības grāmatas + RAG: Kā es devu manam AI SRE aģentam kontekstu, kuru tas trūka"},"ca":{"code":"ca","name":"Catalan","flag":"https://cdn.hackernoon.com/flags/catalan_vidt0k2g.png","caLangTooltip":"Llegeix aquesta història a Català!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Llibres d'execució + RAG: Com vaig donar al meu agent SRE d'IA el context que faltava"},"da":{"code":"da","name":"Danish","flag":"https://cdn.hackernoon.com/flags/danish_boqahd3.png","daLangTooltip":"Læs denne historie på dansk!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Runbooks + RAG: Sådan gav jeg min AI SRE-agent den manglende kontekst"},"zh":{"code":"zh","name":"Chinese","flag":"https://cdn.hackernoon.com/flags/chinese_vri67rp8.png","zhLangTooltip":"用繁體中文閱讀這個故事!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"运行手册 + RAG:如何为我的AI SRE代理提供它所缺失的上下文"},"so":{"code":"so","name":"Somali","flag":"https://cdn.hackernoon.com/flags/somali_iuc4jnl.png","soLangTooltip":"Sheekadan Af-Soomaali ku akhri!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Dhibaatooyinka Runbook + RAG: Maxaa waxaan kuu soo xulay Agentiya Ilaahiyada Xafiisaa SRE dhammaan oo waxay kuu jiray"},"sw":{"code":"sw","name":"Swahili","flag":"https://cdn.hackernoon.com/flags/swahili_41ruaqpg.png","swLangTooltip":"Soma hadithi hii kwa kiswahili!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Kitabu cha Mifumo + RAG: Kama nimefuna Mchanga wa AI wangu wa SRE Maelekezo yao yaliyopoteza"},"xh":{"code":"xh","name":"Xhosa","flag":"https://cdn.hackernoon.com/flags/xhosa_vhnptt1.png","xhLangTooltip":"Funda eli bali ngesiXhosa!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Izibalo zokufunda + RAG: Ngani nami wakhe Iminyaka yami yokuqala kwiAI SRE Ukubhala Okungaba Kukho"},"tr":{"code":"tr","name":"Turkish","flag":"https://cdn.hackernoon.com/flags/turkish_qlmfvkk8.png","trLangTooltip":"Bu hikayeyi Türkçe okuyun!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Runbook + RAG: Nasıl Eksik Olan Kontekstini Sağladım AI SRE Aracım İçin"},"tl":{"code":"tl","name":"Filipino","flag":"https://cdn.hackernoon.com/flags/filipino_crilat5o.png","tlLangTooltip":"Basahin ang kwentong ito sa Filipino!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Mga Runbook + RAG: Paano Ko Nakapagbigay Ng Konteksto Na Nawala Sa Aking AI SRE Agent"},"ps":{"code":"ps","name":"Pashto","flag":"https://cdn.hackernoon.com/images/afghanistan.jpg","psLangTooltip":"دا کیسه په پښتو ژبه ولولئ!","slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing","title":"Runbooks + RAG: چې چې مې AI SRE اجنس د چې چې د"}},"annotations":[],"coAuthorProfiles":[],"commentsCount":0,"fromMongo":true,"relatedStories":[{"title":"4 AI-Powered SRE Tools That Are Actually Useful (And Not Just Hype)","mainImage":"https://cdn.hackernoon.com/images/8jgTdjWqtecOhXMYijPuF4dBA8l1-7x83ba5.png","slug":"4-ai-powered-sre-tools-that-are-actually-useful-and-not-just-hype","tags":["ai-sre","devtron-atlas","resolve-ai","robusta-holmesgpt","komodor-klaudia","kubernetes-observability","ai-incident-management","good-company"],"excerpt":"Compare some of the top AI-powered SRE tools of 2026, including Devtron Atlas, Resolve AI, HolmesGPT, and Komodor Klaudia, to find the best fit for your team.","publishedAt":1783948421457,"profile":{"handle":"devtron","avatar":"https://cdn.hackernoon.com/images/8jgTdjWqtecOhXMYijPuF4dBA8l1-1m031w4.jpeg","displayName":"Devtron Inc","isBrand":true},"recommended":true},{"title":"Agentic SRE: What Happens When AI Doesn't Just Suggest Fixes, It Applies Them","mainImage":"https://cdn.hackernoon.com/images/8jgTdjWqtecOhXMYijPuF4dBA8l1-m283b13.png","slug":"agentic-sre-what-happens-when-ai-doesnt-just-suggest-fixes-it-applies-them","tags":["agentic-ai","agentic-sre","autonomous-operations","ai-incident-response","ai-remediation","production-automation","autonomous-remediation","good-company"],"excerpt":"AI is moving from suggesting fixes to executing them. Explore what Agentic SRE means, lessons from AWS and Cloudflare outages and why governed automation matter","publishedAt":1784610983709,"profile":{"handle":"devtron","avatar":"https://cdn.hackernoon.com/images/8jgTdjWqtecOhXMYijPuF4dBA8l1-1m031w4.jpeg","displayName":"Devtron Inc","isBrand":true},"recommended":true},{"title":"I Built an AI SRE Agent That Diagnoses Incidents Before I Open My Laptop","mainImage":"https://cdn.hackernoon.com/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-8d83qck.png","slug":"i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop","tags":["ai-sre-agent","site-reliability-engineering","ai-agents","ai-infrastructure","observability","incident-response","root-cause-analysis","on-call-engineering"],"excerpt":"How an AI SRE agent uses LLM signal correlation and the Model Context Protocol to find root causes in minutes — with humans on the merge button.","publishedAt":1783897063534,"profile":{"handle":"armeesala","avatar":"https://cdn.hackernoon.com/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png","displayName":"Akhilesh Rao Meesala"},"recommended":true},{"title":"From Observability to Predictive Resilience: How AI-Driven SRE Is Redefining Cloud Operations","mainImage":"https://cdn.hackernoon.com/images/RHh9Df9kWtNdr2gOIOgdk9dZy9S2-mn83bcf.png","slug":"from-observability-to-predictive-resilience-how-ai-driven-sre-is-redefining-cloud-operations","tags":["ai","sre","cloud","cloud-infrastructure","data-observability","predictive-ai","top-new-technology-trends","artifical-intelligence"],"excerpt":"AI-powered predictive resilience is transforming cloud operations by combining observability, automation, and intelligent SRE systems to prevent outages.","publishedAt":1778919317276,"profile":{"handle":"karthikturaga","avatar":"https://hackernoon.com/avatars/RHh9Df9kWtNdr2gOIOgdk9dZy9S2.png","displayName":"Karthik Turaga","isBrand":true},"recommended":true},{"title":"Policy Versus Physics: Docker Sandboxing for My AI SRE Agent","mainImage":"https://cdn.hackernoon.com/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-63033h5.png","slug":"policy-versus-physics-docker-sandboxing-for-my-ai-sre-agent","tags":["artificial-intelligence","ai-agent-docker-sandbox","secure-ai-tool-execution","docker-egress-proxy-pattern","prompt-injection-containment","sandboxing-llm-agents","ai-agent-security-architecture","docker-ai-agents"],"excerpt":"Learn how a Docker sandbox, egress proxy, and defense-in-depth architecture limit the blast radius when AI agent guardrails inevitably fail.","publishedAt":1785258684805,"profile":{"handle":"armeesala","avatar":"https://cdn.hackernoon.com/avatars/o0NZDcox2STL8hO5ITlYC7E0vlE2.png","displayName":"Akhilesh Rao Meesala"},"recommended":true},{"title":"Meet the Writer: Hacker Noon's Contributor Prakshal Doshi, Site Reliability Engineer","mainImage":"https://cdn.hackernoon.com/images/sinW25rWovdN38P2ArzdPSCP3hi1-lj837k4.png","slug":"meet-the-writer-hacker-noons-contributor-prakshal-doshi-site-reliability-engineer","tags":["meet-the-writer","ai-reliability","production-ai","mlops","llmops","sre","powering-ai-at-scale","hackernoon-top-story"],"excerpt":"SRE at Apple writing about AI infrastructure, Kubernetes, and cloud reliability.Real production experience. Building tools \u0026 community at AI/DevOps intersection","publishedAt":1784900705732,"profile":{"handle":"writerspotlight","avatar":"https://cdn.hackernoon.com/images/undefined-hn83swe.png","displayName":"HackerNoon Writers Spotlight"},"recommended":true},{"title":"What is Agentic SRE? The Next Evolution of Reliability Engineering","mainImage":"https://cdn.hackernoon.com/images/InxBRjRIs6M1kdhuWcyNHiiUrxm1-rg83b0a.png","slug":"what-is-agentic-sre-the-next-evolution-of-reliability-engineering","tags":["predictive-software-quality","sre-alert-fatigue-reduction","ai-code-regression-detection","agentic-sre","proactive-incident-prevention","systemic-software-reliability","incident-response-automation","good-company"],"excerpt":"Discover how agentic SRE uses AI reasoning, continuous learning, and predictive quality to prevent software failures before they reach customers.","profile":{"handle":"playerzero","avatar":"https://cdn.hackernoon.com/images/nTk093OuS5aOmC7kkc6Lc1M0nqQ2-jl83co7.png","displayName":"PlayerZero","isBrand":true},"recommended":true},{"title":"Building a Read-Only AI Agent for Storage Incident Response","mainImage":"https://cdn.hackernoon.com/images/9HBwdSJzwxRywgl7lTxbgrgaWKW2-id03bil.png","slug":"building-a-read-only-ai-agent-for-storage-incident-response","tags":["ai-observability","cloud-storage","cloud-infrastructure","ai-sre","incident-response","ai-operations","site-reliability-engineering","read-only-agents"],"excerpt":"AI agents can help investigate cloud storage incidents, but the safest first step is read-only access, evidence gathering, and human-approved action.","publishedAt":1781624115013,"profile":{"handle":"snehag","avatar":"https://cdn.hackernoon.com/avatars/9HBwdSJzwxRywgl7lTxbgrgaWKW2.png","displayName":"Sneha Gullapalli "},"recommended":true},{"title":"sos-vault Earns a 50.6 Proof of Usefulness Score by Building a Secure, AI-Assisted Platform for Analyzing sosreport Archives","mainImage":"https://cdn.hackernoon.com/images/yHh5hterE9fmyAbL6jaXhaz3H2W2-uv02hpu.png","slug":"sos-vault-earns-a-506-proof-of-usefulness-score-by-building-a-secure-ai-assisted-platform-for-analyzing-sosreport-archives","tags":["proof-of-usefulness-hackathon","hackernoon-hackathon","linux-ai","ai-powered-sre-automation","sos-vault","troubleshooting-linux","software-engineering","ai-assisted-diagnostics"],"excerpt":"sos-vault Earns a 50.6 Proof of Usefulness Score by Building a Secure, AI-Assisted Platform for Analyzing sosreport Archives.","publishedAt":1786357684369,"profile":{"handle":"jlrueda","avatar":"https://lh3.googleusercontent.com/a/ACg8ocLUzn84q2D6EXwX79wx6l5GAFVaE2FER78EiL1Nk8oO6KmjEHNx=s96-c","displayName":"Jorge"},"recommended":true},{"title":"The Engineering Leader’s Guide to AI Tools for Software Development","mainImage":"https://cdn.hackernoon.com/images/InxBRjRIs6M1kdhuWcyNHiiUrxm1-0483bcb.png","slug":"the-engineering-leaders-guide-to-ai-tools-for-software-development","tags":["ai-sdlc-intelligence","ai-software-development","agentic-debugging-tools","predictive-software-quality","ai-code-review","engineering-workflow","ai-powered-sre-automation","good-company"],"excerpt":"Discover the 7 AI-powered SDLC tools transforming software engineering and why unified system intelligence is replacing fragmented workflows.","publishedAt":1780302627640,"profile":{"handle":"playerzero","avatar":"https://cdn.hackernoon.com/images/nTk093OuS5aOmC7kkc6Lc1M0nqQ2-jl83co7.png","displayName":"PlayerZero","isBrand":true},"recommended":true},{"title":"This Is How AI Figures Out Whether Your Systems Are Crashing","mainImage":"https://cdn.hackernoon.com/images/2jqChkrv03exBUgkLrDzIbfM99q2-0302u7h.jpeg","slug":"this-is-how-ai-figures-out-whether-your-systems-are-crashing","tags":["artificial-intelligence","site-reliability-engineering","root-cause-analysis","ai-in-sre","ai-in-rca","ai-in-incident-management","hidden-markov-models","ai-in-anomaly-detection"],"excerpt":"This article examines how AI is transforming root cause analysis (RCA) in Site Reliability Engineering by automating incident resolution and improving system re","publishedAt":1745393158307,"profile":{"handle":"nikhilkapoor0919","avatar":"https://cdn.hackernoon.com/images/undefined-ay83107.jpeg","displayName":"Nikhil Kapoor"},"recommended":true},{"title":"AI-Driven DevOps: Everything you Need to Know","mainImage":"https://cdn.hackernoon.com/images/ugoTV1vwcgR4mN8MMDUUN4vt6p02-8n0380g.jpeg","slug":"ai-driven-devops-everything-you-need-to-know","tags":["sre","devops","future-of-ai","ai-trends","engineering-management","engineering-leadership","test-automation","ai"],"excerpt":"I'll list a few platforms and tools to keep an eye on in the AI/ML-driven space for DevOps, software development, and SRE.","publishedAt":1634705092373,"profile":{"handle":"thenjdevopsguy","avatar":"https://cdn.hackernoon.com/images%2F4v0auRB27Cac6ejY1UKBznPwJKd2-jd03t4n.jpeg?alt=media\u0026token=94e8b532-0977-463b-9f55-94ea6bfcf455","displayName":"Michael Levan"},"recommended":true},{"title":"2025 AI News Wrapped: How AI Went Mainstream in Engineering","mainImage":"https://cdn.hackernoon.com/images/InxBRjRIs6M1kdhuWcyNHiiUrxm1-pk83cn4.png","slug":"2025-ai-news-wrapped-how-ai-went-mainstream-in-engineering","tags":["operational-engineering-ai","ai-in-software-engineering","ai-code-generation-risk","engineering-ai-governance","autonomous-ai-agents-adoption","sre-observability-limitations","predictive-software-quality","good-company"],"excerpt":"How 2025 transformed AI from a developer tool into engineering infrastructure—and why operating it safely is now the real challenge.","publishedAt":1771326007921,"profile":{"handle":"playerzero","avatar":"https://cdn.hackernoon.com/images/nTk093OuS5aOmC7kkc6Lc1M0nqQ2-jl83co7.png","displayName":"PlayerZero","isBrand":true},"recommended":true}],"previousRead":{"slug":"i-built-an-ai-sre-agent-that-diagnoses-incidents-before-i-open-my-laptop","mainImage":"https://cdn.hackernoon.com/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-8d83qck.png","owner":"o0NZDcox2STL8hO5ITlYC7E0vlE2","title":"I Built an AI SRE Agent That Diagnoses Incidents Before I Open My Laptop"},"nextRead":{"slug":"policy-versus-physics-docker-sandboxing-for-my-ai-sre-agent","title":"Policy Versus Physics: Docker Sandboxing for My AI SRE Agent","owner":"o0NZDcox2STL8hO5ITlYC7E0vlE2","mainImage":"https://cdn.hackernoon.com/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-63033h5.png"},"staticData":{"frLangTooltip":"Lisez cette histoire en Français!","about":"About","enLangTooltip":"Read this story in the original language, English!","loggedOutBookmark":"Create an account to store your bookmarks","learnMore":"Learn More","stats":"Stats","editStory":"Edit Story","audioPresented":"Audio Presented by","by":"by","audioTranslationText":null,"newStory":"New Story","loggedInBookmark":"Bookmark story","esLangTooltip":"Lee esta historia en Español!","relatedStories":"RELATED STORIES","addComment":"Add Comment","ptLangTooltip":"Leia esta história em português!","hiLangTooltip":"इस कहानी को हिंदी में पढ़ें!","comments":"Comments","removeBookmark":"Remove bookmark","commentReply":"Reply","minutes":"min","reads":"reads","trLangTooltip":"Bu hikayeyi Türkçe okuyun!","tags":"TOPICS","jaLangTooltip":"この物語を日本語で読んでください!","bnLangTooltip":"এই গল্পটি বাংলায় পড়ুন!","storyMentions":"MENTIONED IN THIS STORY","ruLangTooltip":"Прочтите эту историю на русском языке!","deLangTooltip":"Lesen Sie diese Geschichte auf Deutsch!","featuredIn":"THIS ARTICLE WAS FEATURED IN","tldrTitle":"Too Long; Didn't Read","koLangTooltip":"이 이야기를 한국어로 읽어보세요!","zhLangTooltip":"用繁體中文閱讀這個故事!","viLangTooltip":"Đọc bài viết này bằng tiếng Việt!"},"searchTopics":["ai sre"],"stats":{"pageviews":875},"socialPreviewImage":"https://hackernoon.imgix.net/images/o0NZDcox2STL8hO5ITlYC7E0vlE2-dv93rio.png","requirePrism":true,"gptZeroMsg":"This story is AI-assisted.","audioData":[{"url":"https://storage.googleapis.com/hackernoon/audios/6a46e1aad43309444fe6dfcc-en-US-Wavenet-I-MALE--e037e6f478538.mp3","nickname":"Dr. One (en-US)","avatar":"https://cdn.hackernoon.com/avatars/robot-b5.png","audioPath":"audios/6a46e1aad43309444fe6dfcc-en-US-Wavenet-I-MALE--e037e6f478538.mp3"},{"url":"https://storage.googleapis.com/hackernoon/audios/6a46e1aad43309444fe6dfcc-en-US-Wavenet-H-FEMALE--211dead201c3d.mp3","nickname":"Ms. Hacker (en-US)","avatar":"https://cdn.hackernoon.com/avatars/robot-b6.png","audioPath":"audios/6a46e1aad43309444fe6dfcc-en-US-Wavenet-H-FEMALE--211dead201c3d.mp3"}]},"slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"},"__N_SSG":true},"page":"/[slug]","query":{"slug":"runbooks-rag-how-i-gave-my-ai-sre-agent-the-context-it-was-missing"},"buildId":"qqTckmfliewRaBLUp_8jP","isFallback":false,"isExperimentalCompile":false,"dynamicIds":[77618,63213,87127,71206,89752,41116,31486,42348],"gsp":true,"scriptLoader":[]}</script><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a392b7c38a84c89e',t:'MTc4OTA4ODI0MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html> |