This prompt is for SREs, platform engineers, and architects who need to allocate Service Level Objectives (SLOs) across a chain of dependent services. It takes a dependency graph, a user-facing SLO target, and per-service SLI data, then produces an SLO allocation map with latency budgets, error budgets, and blast radius containment validation. Use it when you are designing SLOs for a new system, renegotiating error budgets after an architecture change, or auditing whether current allocations can actually meet the top-level objective.
Prompt
Service Level Objective Boundary Assignment Prompt

When to Use This Prompt
A design-time analysis tool for allocating SLOs across a dependency chain, not a real-time incident response runbook.
The prompt requires structured inputs: a directed acyclic graph of service dependencies, the top-level SLO target (e.g., 99.95% availability), and measured or estimated SLI data for each service including latency distributions and error rates. It works best when you have real production data or load-test results. The output is a concrete allocation map that assigns each service a latency budget, an error budget, and a criticality tier. It also validates whether the allocation respects the dependency chain's mathematical constraints—if a downstream service depends on three upstream services each with 99.9% availability, the combined availability cannot exceed 99.7% without redundancy. The prompt flags these constraint violations explicitly.
Do not use this prompt for real-time incident response or for systems where you lack measured SLI data. It is a design-time analysis tool, not a runbook replacement. The allocations it produces are only as good as the input data; garbage SLI estimates produce garbage SLO allocations. For high-stakes production systems, always validate the output against actual telemetry and have a human SRE review the allocation map before codifying it in error budget policies. If your dependency graph contains cycles or the system uses dynamic routing that changes the dependency topology at runtime, this prompt's static analysis approach will produce misleading results—you need a simulation-based approach instead.
Use Case Fit
Where this prompt works and where it does not. Use these cards to decide if the SLO Boundary Assignment Prompt fits your current operational context.
Good Fit: Greenfield SLO Design
Use when: you are defining SLOs for a new service or a newly decomposed system and need to allocate latency and error budgets across service boundaries before production traffic hits. Guardrail: validate the dependency chain output against your actual service topology graph to catch missing or phantom dependencies.
Good Fit: Blast Radius Review
Use when: you need to pressure-test whether a critical user journey's SLO can survive a single service degradation. Guardrail: run the prompt against multiple failure scenarios and compare the blast radius containment recommendations against your actual circuit breaker and retry configurations.
Bad Fit: Real-Time Incident Response
Avoid when: you are in an active incident and need an immediate root cause or remediation step. This prompt is a design-time analysis tool, not a runbook. Guardrail: use operational runbook prompts for incident response; reserve this prompt for post-incident SLO revision and boundary adjustment planning.
Required Input: Full Dependency Graph
Risk: without an accurate, up-to-date service dependency graph, the prompt will produce plausible but incorrect SLO allocations based on hallucinated dependencies. Guardrail: provide a structured dependency graph as part of [CONTEXT] and cross-reference it against your service mesh or APM topology data before trusting the output.
Operational Risk: Static Analysis Blindness
Risk: the prompt analyzes SLO boundaries statically and cannot observe actual latency distributions, retry storms, or thundering herd effects that emerge only under load. Guardrail: treat the output as a design hypothesis. Validate latency budget allocations against production tail-latency data and load-test results before committing to SLO thresholds.
Operational Risk: Cross-Team SLO Ownership Gaps
Risk: the prompt may assign SLO components to services without considering whether the owning team has the tooling or authority to meet them. Guardrail: after generating the SLO allocation map, overlay team ownership and on-call responsibility. Flag any service where the assigned error budget exceeds the team's observable or controllable surface area.
Copy-Ready Prompt Template
A copy-ready prompt for assigning SLOs across service boundaries, producing an allocation map with latency budgets, error budgets, and dependency chain analysis.
This prompt template is designed to be pasted directly into your AI workspace. It accepts a service dependency graph, baseline performance data, and business criticality tiers as input. The model will produce a structured SLO allocation map that assigns latency budgets, error budgets, and SLI aggregation rules to each service boundary. The output is intended for SREs and architects who need to translate high-level reliability targets into per-service operational contracts, ensuring that no single service consumes a disproportionate share of the overall error budget.
textYou are an SRE architect assigning Service Level Objectives across a distributed system. Your task is to produce an SLO allocation map that distributes latency budgets, error budgets, and availability targets across service boundaries while respecting dependency chains and blast radius constraints. ## INPUT [INPUT] ## CONTEXT - Overall system SLO target: [SYSTEM_SLO_TARGET] - Business criticality tiers: [CRITICALITY_TIERS] - Dependency graph (services and their call paths): [DEPENDENCY_GRAPH] - Baseline performance data per service (p50/p95/p99 latency, error rate, availability): [BASELINE_DATA] - Budget buffer policy (percentage reserved for unallocated risk): [BUDGET_BUFFER_POLICY] ## CONSTRAINTS [CONSTRAINTS] ## OUTPUT_SCHEMA [OUTPUT_SCHEMA] ## INSTRUCTIONS 1. Parse the dependency graph to identify critical paths and fan-out dependencies. Services on critical paths with no redundancy receive tighter budgets. Services with parallel instances or fallbacks can receive looser budgets. 2. For each service, assign: - Latency budget (p95 target in milliseconds, derived from end-to-end latency SLO minus upstream and downstream budgets) - Error budget (percentage of total error budget allocated, must sum to <= 100% minus buffer) - Availability target (e.g., 99.9%, 99.95%, 99.99%) - SLI measurement point (which metric, at which boundary, measured how) 3. For each dependency chain, calculate the aggregated SLI and verify it meets the overall system SLO. Flag any chain where the sum of budgets exceeds the system target. 4. Identify blast radius containment boundaries: services whose failure should not cascade. Assign isolation budgets and circuit-breaker thresholds. 5. For cross-service SLI aggregation, specify the aggregation rule (e.g., AND for serial dependencies, weighted average for parallel fan-out, min for redundant paths). 6. Flag any service where the assigned budget is tighter than current baseline performance. Mark these as requiring remediation before the SLO can be adopted. 7. If [RISK_LEVEL] is "high" or "critical", include a human review checklist and rollback conditions for each budget assignment. ## OUTPUT FORMAT Return a JSON object matching the output schema exactly. Do not include commentary outside the JSON. ## EXAMPLES [EXAMPLES]
To adapt this prompt, replace each square-bracket placeholder with your system's actual data. The [INPUT] field should contain a structured description of the services, their dependencies, and any existing SLOs. The [OUTPUT_SCHEMA] should define the exact JSON shape you expect—include fields for service name, latency budget, error budget, availability target, SLI definition, aggregation rule, and remediation flags. The [CONSTRAINTS] field is where you specify hard rules such as "no single service may consume more than 30% of the total error budget" or "all latency budgets must be validated against p95 baseline data." The [EXAMPLES] field should contain one or two worked examples showing correct budget allocation for a simple dependency chain, which dramatically improves output quality. After generating the allocation map, validate that all error budget percentages sum correctly and that no dependency chain's aggregated latency exceeds the system SLO. For production use, always run the output through a schema validator and a budget-sum checker before applying it to monitoring systems.
Prompt Variables
Each placeholder the SLO Boundary Assignment prompt requires to produce a reliable allocation map. Validate inputs before calling the model to prevent garbage-in-garbage-out SLO targets.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SERVICE_CATALOG] | List of services with their dependencies, data stores, and runtime characteristics | payment-service (depends on: fraud-check, ledger-db, idempotency-store; p99 latency: 45ms; instances: 6) | Must be a valid JSON array of service objects. Each service requires a unique name, a dependencies array, and at least one latency or throughput metric. Reject if any dependency references a service not in the catalog. |
[USER_JOURNEY_CRITICAL_PATH] | Ordered sequence of service calls for the primary user-facing transaction that the SLO protects | api-gateway -> auth-service -> payment-service -> ledger-db -> notification-service | Must be a non-empty ordered list. Each step must reference a service present in [SERVICE_CATALOG]. Reject if the path contains cycles without explicit retry-loop annotations. |
[TOP_LEVEL_SLO_TARGET] | The end-to-end availability or latency objective for the user journey as a whole | 99.95% availability over 30-day rolling window; p99 latency < 500ms | Must include a numeric target and a measurement window. Availability must be between 90% and 99.999%. Latency must include a percentile and a unit. Reject targets that are stricter than any single component can physically achieve. |
[ERROR_BUDGET_POLICY] | Rules for how the total error budget may be consumed across services | Equal allocation by default; critical-path services may consume up to 60% of total budget; blast radius cap of 30% per service | Must specify an allocation strategy (equal, weighted, critical-path-weighted) and a per-service cap. Reject if per-service caps sum to less than the total budget or if any cap exceeds 100%. |
[DEPENDENCY_FAILURE_MODEL] | Expected failure modes and their blast radius for each service dependency | fraud-check timeout: payment-service rejects with 503, blast radius = payment-service only; ledger-db partition: writes fail, blast radius = all write paths | Must be a map of service name to an array of failure mode objects. Each failure mode requires a description, an error signal, and a blast radius scope. Reject if a blast radius claims to affect services not in the dependency chain. |
[SLI_AGGREGATION_RULES] | How to combine per-service SLIs into the top-level SLO calculation | Availability: multiply (AND gate) for serial dependencies, min() for parallel fan-out; Latency: sum p99 latencies for serial path, max p99 for parallel | Must specify aggregation functions for availability and latency separately. Functions must be one of: multiply, sum, min, max, percentile_merge. Reject if the aggregation method contradicts the dependency topology in [SERVICE_CATALOG]. |
[BLAST_RADIUS_CONTAINMENT_CONSTRAINTS] | Limits on how much failure a single service can propagate before the SLO is violated | No single service failure may consume more than 40% of the total error budget; circuit breakers required on all cross-boundary calls with p99 > 100ms | Must include a per-service error budget consumption cap and a list of required resilience patterns. Reject if any service's cap is lower than its minimum possible error contribution given its position in the critical path. |
[OUTPUT_SCHEMA] | Expected structure of the SLO allocation map the model must produce | JSON object with fields: service_slo_allocations (array), dependency_chain_analysis (object), blast_radius_validation (object), aggregation_audit (object) | Must be a valid JSON Schema or a field-level description with types. Reject if the schema does not include fields for per-service allocations, dependency analysis, and blast radius validation. The model output must be parseable against this schema in post-processing. |
Implementation Harness Notes
How to wire the SLO boundary assignment prompt into a production reliability workflow with validation, retries, and human review gates.
This prompt is not a one-shot generator. It is a structured analysis tool that should be embedded in a pipeline where input data is validated before the prompt runs and output data is validated before it reaches a dashboard or alerting system. The prompt expects a service dependency graph, per-service SLI definitions, and a target aggregate SLO. In practice, wire this into an SRE toolchain that pulls topology from a service registry (e.g., Kubernetes labels, Consul, or an internal CMDB) and SLI definitions from an observability platform (e.g., Prometheus recording rules, Datadog SLOs, or a reliability spreadsheet). The prompt itself should be called with a model that supports structured output, such as GPT-4o or Claude 3.5 Sonnet, using a JSON schema constraint that matches the expected SLO allocation map format.
Validation and retry logic is critical here because an incorrect SLO allocation can cause teams to burn error budget on the wrong service or miss a dependency that silently consumes latency budget. Before calling the prompt, validate that the dependency graph is acyclic (or flag cycles explicitly in [CONTEXT]) and that every service in the graph has at least one SLI defined. After the prompt returns, run a validator that checks: (1) the sum of latency budgets along each critical path does not exceed the aggregate SLO target, (2) every service in the input graph appears in the output allocation map, (3) no service is assigned a budget tighter than its historical performance can support (compare against a 30-day p99 baseline), and (4) blast radius containment rules are satisfied—no single service failure should cascade budget exhaustion to more than [BLAST_RADIUS_LIMIT] downstream services. If validation fails, retry once with the validator's error messages appended to [CONSTRAINTS]. If the second attempt fails, escalate to a human reviewer with the partial output and failure reasons.
Logging and audit should capture the full prompt input, output, validator results, and any human overrides. Store these in an immutable audit log (e.g., a versioned S3 bucket or an internal reliability database) so that SLO allocation decisions are traceable during incident reviews. For high-risk production systems, add a human approval gate: the prompt's output should be rendered as a diff against the current SLO allocation, and an on-call SRE or reliability architect must approve the change before it is applied to monitoring dashboards or alerting thresholds. Never auto-apply SLO changes without human review when the system handles revenue, safety, or regulated data. The prompt is a reasoning accelerator, not a replacement for engineering judgment about where error budget should be spent.
Expected Output Contract
Fields, types, and validation rules for the SLO allocation map produced by the prompt. Use this contract to parse and validate model output before ingestion into downstream SLO tooling or dashboards.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
service_boundaries | Array of objects | Must contain at least 2 entries. Each entry must have a unique service_name string matching the input service list. | |
service_name | String | Must match exactly one service identifier from [SERVICE_LIST]. Case-sensitive match required. No empty strings allowed. | |
allocated_latency_budget_ms | Number (integer) | Must be a positive integer. Sum of all allocated_latency_budget_ms values must not exceed [TOTAL_LATENCY_BUDGET_MS] from input. Each value must be >= 1. | |
allocated_error_budget_percent | Number (float) | Must be between 0.0 and 100.0 inclusive. Sum of all allocated_error_budget_percent values must not exceed [TOTAL_ERROR_BUDGET_PERCENT]. Precision limited to 2 decimal places. | |
dependency_chain | Array of strings | Must contain at least 1 entry. Each entry must reference a valid service_name from this output. Order must reflect call path from entry point to terminal dependency. No self-references allowed. | |
blast_radius_services_affected | Array of strings | Must contain 0 or more entries. Each entry must reference a valid service_name from this output. If empty, field must be an empty array, not null or missing. | |
cross_service_sli_aggregation_rule | String (enum) | Must be one of: 'sum', 'max', 'min', 'weighted_average', 'independent'. Selection must be consistent with dependency_chain topology. 'independent' only allowed when dependency_chain has exactly 1 entry. | |
slo_allocation_map_version | String | Must match regex ^\d+.\d+.\d+$. Must be incremented from previous version if this is an update. Initial version must be '1.0.0'. |
Common Failure Modes
SLO boundary assignment fails silently when latency budgets don't add up, error budgets are double-counted, or dependency chains hide blast radius surprises. These cards cover the most common failure modes and how to catch them before production.
Latency Budget Overrun
What to watch: The sum of assigned latency budgets across a dependency chain exceeds the top-level SLO. Each service gets a generous allocation, but the critical path adds up to more than the user-facing target. Guardrail: Require the prompt to output a dependency-chain latency summation table. Validate that the sum of all serial dependencies on the critical path is less than or equal to the top-level latency SLO before accepting the output.
Error Budget Double-Counting
What to watch: The prompt assigns error budgets independently to each service without accounting for shared failure modes. A single downstream outage gets counted against multiple upstream error budgets, making the system appear to have more headroom than it actually does. Guardrail: Add a constraint requiring the prompt to identify shared fate services and apply a single error budget allocation to the shared failure domain. Validate that no failure event is counted in more than one budget.
Missing Dependency Chain
What to watch: The prompt assigns SLOs based on a partial or outdated dependency graph. Services that are critical to the user journey but not explicitly listed in the input get zero latency or error budget, making the allocation map useless for real operations. Guardrail: Require the prompt to output a completeness check section listing all services it considered and flagging any gaps. Cross-reference the output against a known service registry or dependency graph before accepting.
Blast Radius Underestimation
What to watch: The prompt treats each service as independently failing, missing cascading failure patterns where one service outage takes down multiple upstream consumers. The assigned error budgets look safe in isolation but collapse under real failure modes. Guardrail: Add a blast radius validation step: for each service, ask the prompt to list all upstream consumers and calculate the aggregate impact of its failure. Flag any service where the blast radius exceeds the error budget of affected consumers.
SLI Aggregation Mismatch
What to watch: The prompt mixes incompatible SLI types across boundaries—percentile latency at one service, average latency at another, success rate at a third—making cross-service SLO aggregation mathematically invalid. Guardrail: Require the prompt to declare the SLI type and aggregation method for each boundary. Validate that all services on a shared critical path use compatible SLI types and that the aggregation formula is explicitly stated and correct.
Non-Idempotent Retry Amplification
What to watch: The prompt assigns error budgets without accounting for retry amplification. A downstream service with a 1% error rate can cause a 3% error rate at the caller if retries are not idempotent, silently consuming the caller's error budget. Guardrail: Require the prompt to model retry amplification for each service boundary where retries are configured. Include a retry multiplier in the error budget calculation and flag boundaries where non-idempotent operations create budget risk.
Evaluation Rubric
Criteria for testing the SLO boundary assignment prompt before production use. Each row defines a pass standard, a failure signal, and a concrete test method.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
SLO Allocation Completeness | Every service in the dependency chain receives a latency budget and error budget allocation | Missing services in the output map; null or empty budget fields for any listed service | Parse output JSON and assert that the set of service IDs matches the input dependency graph; assert all budget fields are non-null numbers |
Budget Summation Constraint | Sum of latency budgets across all services does not exceed the top-level SLO latency target | Total allocated latency exceeds the input [SLO_LATENCY_TARGET]; error budget summation violates [SLO_ERROR_BUDGET] | Extract all latency budget values, sum them, and assert sum <= [SLO_LATENCY_TARGET]; repeat for error budget against [SLO_ERROR_BUDGET] |
Dependency Chain Ordering | Downstream services receive tighter latency budgets than their upstream callers; no service has a budget larger than its caller | A downstream service has a latency budget greater than or equal to its immediate caller; budget inversion detected | Traverse the dependency graph from entry point to leaf services; assert each child's latency budget < its parent's latency budget |
Blast Radius Containment | Each service's error budget is isolated such that no single service failure can consume the entire system error budget | A single service is allocated >= 80% of the total system error budget; blast radius containment violation | Calculate each service's error budget as a percentage of [SLO_ERROR_BUDGET]; assert no service exceeds 50% threshold |
Cross-Service SLI Aggregation Rules | Output includes explicit aggregation rules (sum, max, percentile) for each SLI across service boundaries | Missing aggregation rule for any SLI; ambiguous or contradictory rules for the same metric | Parse the aggregation_rules field; assert every SLI in the input [SLI_LIST] has exactly one aggregation rule; assert rule values are from allowed set: sum, max, p95, p99, min |
Critical Path Identification | Output identifies the critical path (longest cumulative latency chain) and flags it | No critical path identified; critical path latency exceeds [SLO_LATENCY_TARGET] without a warning flag | Parse critical_path field; assert it contains an ordered list of service IDs; sum their latency budgets and assert the total is flagged if it exceeds [SLO_LATENCY_TARGET] |
Dependency Cycle Detection | Output includes a cycle_check field; if cycles exist, the prompt refuses to assign budgets and returns cycle details | Cycles present in the dependency graph but output contains budget allocations without cycle warnings | Provide a test input with a known cyclic dependency; assert output contains cycle_detected: true and no budget allocations |
Output Schema Conformance | Output matches the [OUTPUT_SCHEMA] exactly: all required fields present, no extra fields, correct types | Missing required fields; extra unexpected fields; type mismatches (string instead of number, array instead of object) | Validate output against the [OUTPUT_SCHEMA] JSON Schema using a schema validator; assert validation passes with no errors |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with a single service dependency chain and simplified latency budgets. Replace [DEPENDENCY_GRAPH] with a hand-drawn list of 3-5 services. Set [BLAST_RADIUS_CONSTRAINT] to a single critical path. Skip cross-service SLI aggregation rules and focus on one SLO per service.
Watch for
- Overly broad latency budgets that ignore serial dependency accumulation
- Missing error budget allocation for shared dependencies
- No validation that total latency budget sums to less than the end-to-end target

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us