This prompt is designed for release managers and SRE teams who need to triage a batch of pre-release findings before a go/no-go decision. Each finding might be a bug, a failing test, a performance regression, a security advisory, or a configuration drift alert. The prompt classifies each finding as P0-blocking, P1-conditional, or P2-waivable based on blast radius, user impact, and fix complexity. It produces a structured triage output with justification and a recommended action, giving you a consistent, evidence-backed severity assessment that can be reviewed by a human before the final call.
Prompt
Release Blocker Severity Classification Prompt

When to Use This Prompt
Understand the job-to-be-done, ideal user, required context, and when not to use this prompt.
To use this prompt effectively, you must provide a list of findings with sufficient context for each: a description of the issue, the affected component or service, any known user-facing impact, and an estimate of fix complexity if available. The prompt works best when findings are already collected from multiple sources—CI failures, security scans, performance benchmarks, manual QA—and need a single, calibrated severity lens applied. You should also supply a [RISK_LEVEL] parameter that reflects your organization's release risk tolerance (e.g., 'conservative' for regulated environments, 'standard' for typical SaaS releases) so the classification thresholds adjust accordingly.
Do not use this prompt for real-time incident triage during an active outage. It is designed for pre-release assessment, not for live incident command where time pressure, incomplete data, and escalating blast radius require a different decision framework. Do not use it as a replacement for human judgment on P0 decisions—the output should always be reviewed by a release authority before blocking a release. Do not use it when findings lack sufficient context; garbage descriptions produce garbage classifications. Finally, do not use it for post-release bug triage, where the decision space shifts from 'should this block the release?' to 'how quickly must we fix this in production?'—that requires a separate triage prompt with different severity criteria and SLA considerations.
Use Case Fit
Where the Release Blocker Severity Classification Prompt works and where it does not. Use these cards to decide if this prompt fits your release triage workflow.
Good Fit: Structured Triage Workflows
Use when: release managers need to classify pre-release findings into P0, P1, or P2 severity levels based on blast radius, user impact, and fix complexity. Guardrail: provide a clear severity taxonomy with examples and historical calibration data to anchor the model's judgment.
Bad Fit: Real-Time Incident Response
Avoid when: an active production incident requires immediate rollback or mitigation decisions under seconds-not-minutes latency. Guardrail: route real-time incident triage to deterministic rule-based systems or on-call human judgment; use this prompt for pre-release or post-incident classification only.
Required Inputs: Finding Details and Context
What to watch: the prompt needs structured finding data—description, affected component, reproduction steps, user-facing impact, and fix complexity estimate. Guardrail: validate that each finding record includes all required fields before classification; missing context produces unreliable severity assignments.
Operational Risk: Severity Drift Over Time
What to watch: model severity judgments can drift as release pressure, team fatigue, or shifting norms influence classification consistency. Guardrail: periodically recalibrate against historical blocker decisions and track P0/P1/P2 distribution trends to detect drift early.
Operational Risk: Over-Blocking Releases
What to watch: the model may classify borderline findings as P0-blocking, causing unnecessary release delays. Guardrail: implement a human override for P0 classifications and require explicit blast-radius evidence before blocking; track false-positive blocker rates per release cycle.
Operational Risk: Under-Classification of Compound Risks
What to watch: individual findings may appear low-severity in isolation but become blocking when combined with other findings or deployment conditions. Guardrail: add a compound-risk check step that re-evaluates all P1/P2 findings together before finalizing the release recommendation.
Copy-Ready Prompt Template
A reusable prompt template for classifying release findings by blocker severity with structured justification and recommended action.
This template provides the core classification logic for triaging release findings. It is designed to be pasted directly into your AI system, with square-bracket placeholders replaced by real data at runtime. The prompt enforces a strict severity taxonomy—P0 (blocking), P1 (conditional), and P2 (waivable)—based on blast radius, user impact, and fix complexity. It also requires calibration against historical blocker decisions to reduce inconsistency across releases.
textYou are a release triage classifier. Your job is to assign a blocker severity to each finding in [FINDINGS_LIST] and produce a structured triage output. ## Classification Rules ### P0 – Blocking Assign P0 when ALL of the following are true: - Blast radius affects > [BLAST_RADIUS_THRESHOLD]% of users or a critical revenue path. - User impact includes data loss, security breach, hard crash, or inability to complete a core workflow. - No viable workaround exists that can be deployed within [WORKAROUND_WINDOW_HOURS] hours. - Fix complexity is irrelevant; P0 is about impact, not effort. ### P1 – Conditional Assign P1 when ANY of the following are true: - Blast radius affects [P1_BLAST_MIN]%–[BLAST_RADIUS_THRESHOLD]% of users. - User impact is significant degradation (e.g., slow performance, missing non-critical feature) but core workflows remain functional. - A viable workaround exists but requires manual intervention or customer communication. - Fix complexity is high, and the risk of introducing a worse regression is non-trivial. ### P2 – Waivable Assign P2 when ALL of the following are true: - Blast radius affects < [P1_BLAST_MIN]% of users or is limited to an internal tool. - User impact is cosmetic, informational, or affects a non-GA feature behind a disabled flag. - A documented workaround exists or the issue self-resolves (e.g., cache expiry). - Fix can be safely deferred to the next release without SLA violation. ## Calibration Before finalizing each classification, compare the finding against [HISTORICAL_BLOCKER_EXAMPLES]. If a similar finding was classified differently in the past, explain the discrepancy and justify the current decision. ## Output Schema Return a JSON object with the following structure: { "findings": [ { "finding_id": "string", "severity": "P0 | P1 | P2", "justification": { "blast_radius_assessment": "string", "user_impact_assessment": "string", "workaround_availability": "string", "fix_complexity_note": "string" }, "recommended_action": "BLOCK_RELEASE | CONDITIONAL_APPROVAL | WAIVE_AND_TRACK", "calibration_note": "string or null", "confidence": "HIGH | MEDIUM | LOW" } ], "summary": { "total_findings": number, "p0_count": number, "p1_count": number, "p2_count": number, "overall_recommendation": "BLOCK | CONDITIONAL | PROCEED" } } ## Constraints - Do not reclassify a finding without explicit evidence from the finding description. - If blast radius or user impact data is missing, set confidence to LOW and recommend human review. - Never downgrade a security vulnerability below P1 without a security team override. - For any P0 classification, include a direct link to the evidence in the justification.
To adapt this template, replace the square-bracket placeholders with your release context. [FINDINGS_LIST] should contain the structured or semi-structured findings from your test runs, static analysis, manual QA, or incident reports. [BLAST_RADIUS_THRESHOLD] and [P1_BLAST_MIN] should reflect your service's user base and risk tolerance—for a consumer app with 10M users, 1% might be blocking; for an internal tool, 20% might be acceptable. [HISTORICAL_BLOCKER_EXAMPLES] should include 5–10 real past decisions with their final severity and rationale. This calibration section is the single most important factor for consistency across releases. Before deploying this prompt to production, run it against a golden set of 20–30 previously classified findings and measure exact-match accuracy on severity labels. If accuracy drops below 90%, review whether your thresholds are too ambiguous or your historical examples are contradictory.
Prompt Variables
Required inputs for the Release Blocker Severity Classification Prompt. Each placeholder must be populated before the prompt is assembled and sent. Missing or malformed inputs are the most common cause of misclassification.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[FINDING_LIST] | Array of findings to classify, each with a unique ID, title, description, and source | [{"id":"F-101","title":"Checkout API 5xx spike","description":"Error rate increased from 0.1% to 2.3% in canary","source":"canary_metrics"}] | Must be a valid JSON array with at least one object. Each object requires id, title, and description fields. Empty array should be rejected before prompt assembly. |
[RELEASE_CONTEXT] | Metadata about the release candidate including version, services changed, and deployment scope | {"version":"v2.14.1","services":["checkout","payments"],"deployment_type":"canary","target_environments":["prod-us-east-1"]} | Must include version string and services array. Deployment type must be one of: canary, blue_green, rolling, or all_at_once. Missing fields should trigger a pre-flight validation error. |
[BLAST_RADIUS_DATA] | User-facing impact estimates including affected user count, transaction volume, and revenue exposure | {"affected_user_pct":12,"daily_txn_volume":450000,"revenue_at_risk_hourly":28000,"critical_paths":["payment_capture","order_confirmation"]} | Numeric fields must be non-negative. affected_user_pct must be 0-100. critical_paths must be a non-empty array if blast radius is non-zero. Null allowed only if blast radius is genuinely unknown and marked as such. |
[FIX_COMPLEXITY_ESTIMATES] | Per-finding estimates of fix effort, risk, and rollback complexity | [{"finding_id":"F-101","estimated_fix_hours":4,"requires_schema_change":false,"requires_data_migration":false,"rollback_complexity":"low"}] | Array must have one entry per finding ID in FINDING_LIST. rollback_complexity must be one of: low, medium, high, irreversible. requires_schema_change and requires_data_migration must be boolean. Missing entries should fail validation. |
[HISTORICAL_BLOCKER_DECISIONS] | Past release blocker decisions for calibration, including finding type, severity assigned, and outcome | [{"finding_type":"api_error_spike","severity_assigned":"P0-blocking","was_blocker":true,"outcome":"rollback","similarity_note":"Same service, higher error rate"}] | Array may be empty if no historical data exists. Each entry requires finding_type and severity_assigned. was_blocker must be boolean. Used for calibration, not as a hard rule. Null allowed for outcome if unknown. |
[SLO_STATE] | Current SLO compliance status for affected services including error budget remaining and burn rate | {"service":"checkout","slo_target_pct":99.95,"current_compliance_pct":99.91,"error_budget_remaining_pct":42,"burn_rate_30min":3.2} | error_budget_remaining_pct must be 0-100. burn_rate_30min must be non-negative. A burn rate above 1.0 indicates active budget consumption. Missing SLO data should be flagged but not block classification—prompt should handle unknown SLO state. |
[CLASSIFICATION_RUBRIC] | Severity definitions with explicit criteria for P0, P1, and P2 classifications | {"P0-blocking":{"criteria":["User-facing outage or data loss","Revenue loss exceeding $10k/hr","SLO breach in progress"],"action":"Block release, escalate immediately"},"P1-conditional":{"criteria":["Degraded but functional","Fix required within 24h"],"action":"Conditional proceed with monitoring"},"P2-waivable":{"criteria":["Cosmetic or low-impact","Fix in next release"],"action":"Document and waive"}} | Must define all three severity levels. Each level requires criteria array and action string. Criteria must be specific and testable. Vague criteria like 'important issue' should be rejected during rubric validation. This is the classification anchor—errors here propagate to every output. |
Implementation Harness Notes
How to wire the Release Blocker Severity Classification Prompt into a release management workflow with validation, calibration, and human review gates.
This prompt is designed to sit inside a release gating pipeline, not as a standalone chat interaction. The typical integration point is a CI/CD release stage or a release manager's triage dashboard. When a release candidate is assembled, all open findings—from static analysis, test failures, security scans, dependency advisories, and manual QA—are collected into a structured payload and passed to the prompt. The model classifies each finding as P0-blocking, P1-conditional, or P2-waivable, producing a structured triage output that downstream automation or human reviewers can act on. The prompt expects findings with fields like finding_id, source, description, affected_component, detected_at, and any available evidence or reproduction_steps. If your finding source doesn't provide these fields, add a normalization layer before the prompt call—don't expect the model to invent missing context reliably.
Validation and output enforcement are critical because the classification output drives release gates. After the model responds, validate the JSON structure against a strict schema: every finding must have a severity field constrained to P0-blocking, P1-conditional, or P2-waivable, a non-empty justification, and a recommended_action. If validation fails, retry once with the validation error injected into the prompt context. If the second attempt fails, escalate the finding to a human triage queue rather than silently defaulting to a lower severity. For high-risk domains—safety-critical systems, financial transaction paths, healthcare data pipelines—require human approval on all P0-blocking classifications before the release gate is enforced. Log every classification decision with the model version, prompt version, input finding hash, and output classification for auditability.
Calibration against historical decisions is the most important ongoing maintenance task. Maintain a golden dataset of 50–100 findings that were manually triaged by experienced release managers, covering edge cases like false-positive security scanner results, known flaky tests, and intentional breaking changes with migration paths. Run this dataset through the prompt weekly or on every prompt change, and track precision and recall per severity class. P0 recall is the metric that matters most: a missed blocker is far more expensive than an over-classified P2. If P0 recall drops below 0.95, freeze the prompt in production and investigate. Model choice matters here—use a model with strong reasoning capabilities (GPT-4o, Claude 3.5 Sonnet, or equivalent) rather than a smaller classifier model, because severity decisions require weighing blast radius, user impact, and fix complexity together. For cost-sensitive pipelines, consider routing P2-obvious findings to a cheaper model and reserving the full prompt for ambiguous or high-risk findings.
Tool integration can strengthen the classification by providing the model with runtime context it can't infer from the finding description alone. If your infrastructure supports it, give the model access to a get_service_dependencies tool that returns the dependency graph for an affected component, a get_recent_incidents tool that returns incidents linked to the same component in the last 30 days, and a get_test_coverage tool that returns coverage percentages for modified paths. The prompt template includes a [TOOLS] placeholder for tool definitions. When tools are available, instruct the model to call them before finalizing P0 vs P1 decisions where blast radius is unclear. If tools aren't available, the prompt should still produce useful output, but flag findings where tool access would have increased confidence. Never let the model hallucinate tool results—validate that every tool-cited fact in the justification appears in the actual tool response.
Retry and fallback logic should be explicit in your harness. If the model returns a malformed response, retry with the original prompt plus the validation error and a stronger format instruction. If the model refuses to classify (rare but possible with safety-tuned models on findings that mention vulnerabilities), log the refusal and escalate to human review immediately—do not retry with softened language that might suppress a legitimate safety concern. If the model exceeds a latency threshold (suggest 10 seconds for a batch of findings), fall back to a simpler classification heuristic based on keyword matching and source severity, and flag the release for manual review. The prompt is a decision-support tool, not an autonomous gate—the release manager always retains override authority, and the harness should make overrides easy to record with a reason.
Expected Output Contract
Defines the exact fields, types, and validation rules for the structured JSON output produced by the Release Blocker Severity Classification Prompt. Use this contract to parse the model response and enforce correctness before the output enters any release decision pipeline.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
classification_id | string (UUID v4) | Must be a valid UUID v4 string. Parse check: regex match against standard UUID v4 format. | |
finding_summary | string (max 200 chars) | Must be a non-empty string not exceeding 200 characters. Parse check: length validation. Must not be a generic placeholder like 'N/A'. | |
severity | enum: P0-blocking | P1-conditional | P2-waivable | Must be exactly one of the three allowed enum values. Schema check: strict enum validation. Case-sensitive. | |
blast_radius | object | Must contain 'user_impact' (string), 'service_scope' (array of strings), and 'data_exposure_risk' (enum: none | low | medium | high | critical). Schema check: required sub-fields present and typed correctly. | |
fix_complexity | enum: trivial | moderate | complex | unknown | Must be one of the four allowed values. If insufficient information exists to assess complexity, use 'unknown'. Schema check: strict enum validation. | |
justification | string (max 500 chars) | Must contain a concise rationale linking the severity decision to specific evidence from the finding. Must not be a verbatim copy of finding_summary. Parse check: minimum 50 characters. | |
recommended_action | enum: block_release | require_manual_fix | require_automated_test | waive_with_documentation | escalate_to_on_call | Must be one of the five allowed actions. The action must be logically consistent with the severity field. Cross-field validation: P0-blocking must map to block_release or escalate_to_on_call. | |
calibration_reference | array of objects | null | If provided, each object must contain 'historical_incident_id' (string) and 'similarity_rationale' (string). If no relevant historical precedent exists, value must be null. Null allowed. |
Common Failure Modes
What breaks first when classifying release blockers and how to guard against it.
Severity Inflation Under Pressure
What to watch: The model classifies every finding as P0-blocking when the release is under scrutiny, eroding the credibility of the triage process. This often happens when the prompt lacks clear blast-radius thresholds or when historical context is missing. Guardrail: Provide concrete P0/P1/P2 definitions with user-impact examples and require the model to cite specific evidence from the finding before assigning severity. Calibrate against a golden set of past blocker decisions.
Ignoring Fix Complexity and Rollback Safety
What to watch: The model classifies severity based solely on user impact without weighing fix complexity or rollback safety, recommending blocks for trivial hotfixes or waiving risky changes that lack a safe rollback path. Guardrail: Include fix complexity and rollback feasibility as explicit dimensions in the classification schema. Require a separate rollback safety check for any finding recommended as P2-waivable.
Drift from Historical Blocker Precedent
What to watch: The model applies inconsistent severity standards across releases, blocking findings similar to ones waived in the past or vice versa, which undermines team trust and creates unpredictable release gates. Guardrail: Include a calibration section in the prompt that references past blocker decisions as few-shot examples. Run periodic eval checks comparing current classifications against historical outcomes to detect drift.
Missing Cross-Service Blast Radius
What to watch: The model evaluates findings in isolation, missing that a P2 finding in one service becomes P0 when combined with a concurrent change in a dependent service. This is common in microservice environments with interdependent deployments. Guardrail: Require the prompt to consider the full release context, including all services being deployed together. Add a cross-service dependency check step before final severity assignment.
Over-Reliance on Incomplete Evidence
What to watch: The model classifies severity confidently even when key evidence is missing—such as incomplete test results, missing monitoring data, or unverified reproduction steps—leading to incorrect blocker decisions. Guardrail: Require the model to flag missing evidence explicitly and downgrade confidence when critical signals are absent. Add an evidence-completeness check before the final classification output.
Hallucinated Justifications and Fake Citations
What to watch: The model generates plausible-sounding justifications that reference non-existent test failures, imaginary error logs, or fabricated historical incidents to support its severity classification. Guardrail: Require every justification to cite specific, verifiable evidence from the provided input context. Add a post-classification validation step that checks whether cited evidence actually exists in the source material.
Evaluation Rubric
Use this rubric to test the Release Blocker Severity Classification Prompt before production. Each criterion validates a specific failure mode observed in triage prompts. Run these checks against a golden set of 20-30 historical blocker decisions where ground-truth severity labels are known.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
P0 Recall | ≥95% of historical P0-blockers classified as P0 | P0 finding classified as P1 or P2 | Run prompt on golden set; compare predicted severity to historical label; flag any P0 misclassification as critical failure |
P2 Precision | ≥90% of P2 classifications match historical waivable decisions | P1 or P0 finding incorrectly classified as P2-waivable | Audit all P2 predictions against historical waivers; each false P2 is a release risk; require human review of all P2 outputs in production |
Blast Radius Justification | Every P0 classification includes a specific blast radius estimate with affected component or user count | P0 classification missing blast radius or using vague language like 'many users' | Parse output for [BLAST_RADIUS] field; reject if null, empty, or contains only qualitative adjectives without scope |
Fix Complexity Grounding | Fix complexity estimate references a concrete factor: code surface area, test coverage, or historical fix time | Fix complexity stated as 'easy' or 'hard' without evidence anchor | Check [FIX_COMPLEXITY] field for evidence reference; flag if only subjective difficulty label present |
Confidence Calibration | ≥80% of classifications with confidence ≥0.85 are correct against ground truth | High-confidence predictions (≥0.85) with wrong severity label | Bin predictions by confidence score; measure accuracy per bin; reject prompt if high-confidence bin accuracy <80% |
Action Recommendation Consistency | Recommended action matches severity: P0→block, P1→conditional, P2→waive or defer | P0 finding with 'consider blocking' or P2 finding with 'block release' | Validate [RECOMMENDED_ACTION] against [SEVERITY] using mapping rules; flag any mismatch as schema violation |
Over-Blocking Rate | ≤10% of P1 findings classified as P0 | P1 conditional findings consistently escalated to P0-blocking | Measure P0 classification rate on known P1 golden examples; if >10%, prompt is too conservative and needs recalibration |
Missing Evidence Handling | Prompt returns 'insufficient evidence' severity when [INPUT] lacks blast radius, user impact, or fix complexity data | Prompt assigns severity without required evidence fields present | Send inputs with deliberately missing [BLAST_RADIUS], [USER_IMPACT], or [FIX_COMPLEXITY]; expect abstention or P1-conditional with noted gaps |
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
Start with the base classification prompt and a simple JSON schema. Use a single model call without retries. Hardcode a small set of example findings to validate output shape.
codeClassify this release finding: [FINDING_DESCRIPTION] Return JSON with severity (P0/P1/P2), justification, and recommended action.
Watch for
- Severity drift when findings are ambiguous
- Missing
justificationfield on edge cases - Over-classifying everything as P0 without blast radius evidence

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