PageSourceSearch

https://agentstatus.dev/assets/ReliabilityFramework-ZMgpfDyy.js

js agentstatus.dev collected 2026-09-25 22:35:11 UTC 8,851 bytes, 1 lines download raw bytes

1import{j as e}from"./react-vendor-BpWNMKAs.js";import{S as i}from"./SiteBlogArticleLayout-DmDeeH0a.js";import"./SiteBlogArticleLayoutV2-fohQwcFm.js";import"./router-qViEkJfC.js";import"./HeroFilmGrain-YdVvaUC8.js";import"./icons-P5DuwcRk.js";import"./motion-z_4S-VG1.js";import"./ContentAside-BbSYqH8Q.js";import"./ArticleClosingCta--5IEYr03.js";import"./index-DTSFlFpw.js";import"./query-95q6k4md.js";import"./radix-Clmhrnrt.js";const p=()=>e.jsxs(i,{title:"Agent Reliability Framework",image:"/images/bg-nature-emerald.png",backLink:"/resources",backLabel:"Resources",children:[e.jsx("p",{className:"text-lg font-medium text-slate-700",children:"A structured approach to building and operating reliable AI agents."}),e.jsx("hr",{}),e.jsx("h2",{children:"Overview"}),e.jsx("p",{children:"This framework covers principles, practices, metrics, and processes for agent reliability. Designed to be adopted incrementally - start where you are, improve continuously."}),e.jsx("hr",{}),e.jsx("h2",{children:"Reliability Principles"}),e.jsx("h3",{children:"Principle 1: Semantic Correctness Matters"}),e.jsx("p",{children:`An agent that responds but gives wrong answers is broken. Monitoring must include semantic validation, not just uptime checks. HTTP 200 doesn't mean "working."`}),e.jsx("h3",{children:"Principle 2: Users Are Everywhere"}),e.jsx("p",{children:"Your monitoring should test from where your users are, not where your servers are. Single-location monitoring misses regional failures."}),e.jsx("h3",{children:"Principle 3: Latency Is Correctness"}),e.jsx("p",{children:"A correct response that takes too long is a failed response. Performance is a reliability concern - users abandon slow agents."}),e.jsx("h3",{children:"Principle 4: Failures Are Normal"}),e.jsx("p",{children:"Things will break. Invest in detection and recovery, not just prevention. Optimize for MTTD and MTTR."}),e.jsx("h3",{children:"Principle 5: Measure What Matters"}),e.jsx("p",{children:"If you're not measuring it, you're not managing it. Instrument everything. Track trends. Make decisions based on metrics."}),e.jsx("hr",{}),e.jsx("h2",{children:"Reliability Practices"}),e.jsx("h3",{children:"Practice 1: Continuous Validation"}),e.jsx("p",{children:"Run semantic validation continuously, not just at deployment. Agents can degrade from model changes, dependency failures, and configuration drift."}),e.jsxs("ul",{children:[e.jsx("li",{children:"Configure evaluation prompts that verify core functionality"}),e.jsx("li",{children:"Run checks every 5-15 minutes"}),e.jsx("li",{children:"Track pass rates over time"}),e.jsx("li",{children:"Alert on declining rates"})]}),e.jsx("h3",{children:"Practice 2: Geographic Distribution"}),e.jsx("p",{children:"Test from multiple locations matching your user base. Use residential IPs where possible. Track per-region metrics and alert on regional degradation."}),e.jsx("h3",{children:"Practice 3: Threshold-Based Alerting"}),e.jsx("p",{children:"Use thresholds to determine status, not individual failures. A single failed test doesn't mean your agent is down. Require sustained failure for DOWN verdict."}),e.jsx("h3",{children:"Practice 4: Latency Budgets"}),e.jsx("p",{children:'Allocate specific latency budgets to components. Knowing "context retrieval took 80% of the latency budget" tells you where to optimize.'}),e.jsx("h3",{children:"Practice 5: Incident Learning"}),e.jsx("p",{children:"Treat every incident as a learning opportunity. Conduct blameless post-mortems, document root causes, and track action items."}),e.jsx("hr",{}),e.jsx("h2",{children:"Reliability Metrics"}),e.jsx("h3",{children:"Primary Metrics"}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Metric"}),e.jsx("th",{children:"Definition"}),e.jsx("th",{children:"Target Range"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"Availability"})}),e.jsx("td",{children:"% of checks returning valid response"}),e.jsx("td",{children:"99-99.9%"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"Eval Pass Rate"})}),e.jsx("td",{children:"% of evaluation prompts answered correctly"}),e.jsx("td",{children:"95-99%"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"TTFB P50"})}),e.jsx("td",{children:"Median time to first byte"}),e.jsx("td",{children:"<1-3s"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"TTFB P95"})}),e.jsx("td",{children:"95th percentile TTFB"}),e.jsx("td",{children:"<3-6s"})]})]})]}),e.jsx("h3",{children:"Operational Metrics"}),e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Metric"}),e.jsx("th",{children:"Definition"}),e.jsx("th",{children:"Target"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"MTTD"})}),e.jsx("td",{children:"Mean time to detect incidents"}),e.jsx("td",{children:"<15 min"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"MTTR"})}),e.jsx("td",{children:"Mean time to resolve incidents"}),e.jsx("td",{children:"<2 hours"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"Incident Count"})}),e.jsx("td",{children:"Number of incidents per period"}),e.jsx("td",{children:"Minimize"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"Change Failure Rate"})}),e.jsx("td",{children:"% of deploys causing incidents"}),e.jsx("td",{children:"<5%"})]})]})]}),e.jsx("hr",{}),e.jsx("h2",{children:"Reliability Processes"}),e.jsx("h3",{children:"Process 1: Change Management"}),e.jsxs("ol",{children:[e.jsx("li",{children:"Test changes in staging environment"}),e.jsx("li",{children:"Validate staging with semantic checks"}),e.jsx("li",{children:"Deploy to production"}),e.jsx("li",{children:"Run immediate post-deploy validation"}),e.jsx("li",{children:"Monitor for 24 hours"}),e.jsx("li",{children:"Roll back if quality degrades"})]}),e.jsx("h3",{children:"Process 2: Incident Response"}),e.jsxs("p",{children:[e.jsx("strong",{children:"Detection:"})," Alert fires → verify not false positive → classify severity."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Response:"})," Acknowledge → assemble response team → begin investigation."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Mitigation:"})," Implement workaround or rollback → stabilize → confirm resolution."]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Post-Incident:"}
1)," Conduct post-mortem → document findings → track action items."]}),e.jsx("h3",{children:"Process 3: On-Call"}),e.jsxs("ul",{children:[e.jsx("li",{children:"Rotation schedule with escalation paths"}),e.jsx("li",{children:"Runbooks for common issues"}),e.jsx("li",{children:"Acknowledge alerts within 15 minutes"}),e.jsx("li",{children:"Document actions taken"})]}),e.jsx("hr",{}),e.jsx("h2",{children:"Implementation Roadmap"}),e.jsx("h3",{children:"Phase 1: Foundation (Weeks 1-2)"}),e.jsx("p",{children:"Set up agent monitoring, configure basic evaluation prompts, enable alerting for DOWN status, document baseline."}),e.jsx("h3",{children:"Phase 2: Expansion (Weeks 3-4)"}),e.jsx("p",{children:"Add geographic distribution, implement TTFB tracking, configure DEGRADED alerts, set up SLA dashboards."}),e.jsx("h3",{children:"Phase 3: Operations (Weeks 5-8)"}),e.jsx("p",{children:"Define incident response process, create on-call rotation, develop runbooks, implement post-mortem practice."}),e.jsx("h3",{children:"Phase 4: Optimization (Ongoing)"}),e.jsx("p",{children:"Review metrics weekly, tune alert thresholds, improve MTTD/MTTR, reduce incident frequency."}),e.jsx("hr",{}),e.jsx("h2",{children:"Reliability Culture"}),e.jsx("h3",{children:"Blameless Culture"}),e.jsx("p",{children:'Focus on systems, not individuals. Ask "what failed?" not "who failed?" Encourage reporting of near-misses and share learnings widely.'}),e.jsx("h3",{children:"Ownership"}),e.jsx("p",{children:"Teams own their agents' reliability. Engineering time is allocated to reliability. Reliability is a first-class requirement."}),e.jsx("hr",{}),e.jsx("h2",{children:"Common Anti-Patterns"}),e.jsxs("p",{children:[e.jsx("strong",{children:`"We'll add monitoring later"`})," - Every week without monitoring is a week of invisible failures."]}),e.jsxs("p",{children:[e.jsx("strong",{children:'"Tests are enough"'})," - Tests verify code. Monitoring verifies production."]}),e.jsxs("p",{children:[e.jsx("strong",{children:`"We can't afford downtime"`})," - Fear of change leads to fragile systems. Use safe deployment practices."]}),e.jsxs("p",{children:[e.jsx("strong",{children:'"We need perfect reliability"'})," - 100% is impossible. Set achievable targets, improve incrementally."]})]});
1export{p as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.