This prompt is for QA engineers and developers who need to confirm that a code change actually resolves a reported bug without introducing new failures. The job-to-be-done is turning a closed bug ticket and its associated fix into a structured, repeatable verification checklist. The ideal user has access to the original bug report, the fix description or pull request, and the environment where the fix can be tested. They are not guessing whether the fix works; they are systematically proving it against the original reproduction steps, regression risks, and edge conditions that the developer might not have considered.
Prompt
Bug Report Fix Verification Prompt Template

When to Use This Prompt
Define the job, the user, and the boundaries for verifying a bug fix before it ships.
Use this prompt when a bug fix has been implemented and is ready for verification, but before it merges to a production branch or ships to users. It is most effective when the original bug report contains clear reproduction steps, expected versus actual behavior, and environment details. The prompt assumes you can provide the fix description, the affected component, and any relevant test coverage gaps. Do not use this prompt for live incident triage, root cause analysis, or initial bug report structuring—those are separate workflows with their own playbooks. This prompt is also not a substitute for automated regression suites; it generates human-readable verification criteria that complement, not replace, existing test automation.
The output is a verification checklist where every criterion links back to the original bug report. Each item must be testable, specific, and traceable. The harness should validate that no checklist item duplicates another, that edge conditions are distinct from the primary reproduction path, and that regression checks reference specific related functionality. Before putting this into production, run the prompt against a golden set of verified bugs where you already know the correct checklist, and measure whether the generated criteria would have caught known regressions. If the prompt misses a regression that later occurred, that is a failure mode worth fixing before you trust it on live fixes.
Use Case Fit
Where the Bug Report Fix Verification prompt works, where it fails, and what you must provide before wiring it into a QA pipeline.
Good Fit: Structured Bug Reports
Use when: the original bug report contains clear reproduction steps, expected vs. actual results, and environment details. The prompt excels at expanding a well-formed report into a comprehensive verification checklist. Guardrail: validate that required fields (steps, expected, actual) are non-empty before invoking the prompt.
Bad Fit: Vague or Single-Sentence Reports
Avoid when: the bug report is a one-liner like 'the button is broken' with no reproduction context. The prompt will hallucinate plausible but untrustworthy verification steps. Guardrail: route incomplete reports through a Missing Information Request prompt first; block verification generation until minimum fields are present.
Required Inputs
What you need: the full original bug report (title, description, reproduction steps, expected vs. actual results, environment, severity). Guardrail: build an input schema validator that checks for these fields and rejects requests with a structured error message listing what's missing before the prompt runs.
Operational Risk: False Confidence
What to watch: the model produces a plausible-looking checklist that misses a critical regression path or edge condition, giving QA a false sense of completeness. Guardrail: every generated verification criterion must include a traceable link back to a specific line or section in the original bug report; flag criteria without source grounding for human review.
Operational Risk: Scope Creep
What to watch: the prompt generates overly broad regression checks that expand testing scope beyond what the fix touches, wasting QA cycles. Guardrail: constrain the prompt with the specific code diff or component list affected by the fix; include a 'scope boundary' instruction that limits regression checks to adjacent modules only.
Human-in-the-Loop Requirement
What to watch: the prompt is treated as the final verification plan without QA engineer review, especially for high-severity or customer-impacting bugs. Guardrail: for S1/S2 severity bugs, require explicit human approval on the generated checklist before test execution begins; log the reviewer identity and timestamp in the audit trail.
Copy-Ready Prompt Template
A reusable prompt template for generating structured fix verification checklists from bug reports and code changes.
This template converts a bug report and the corresponding fix description into a structured verification checklist. It forces the model to produce three categories of checks: reproduction confirmation (does the original bug no longer occur?), regression safety (did the fix break anything nearby?), and edge-case coverage (what boundary conditions should be tested?). Use this when you need a consistent, auditable verification plan that links every check back to the original report.
textYou are a QA verification engineer. Given a bug report and a fix description, produce a verification checklist in strict JSON format. [BUG_REPORT] [FIX_DESCRIPTION] [OUTPUT_SCHEMA] { "verification_checklist": [ { "id": "string (e.g., V-01)", "category": "reproduction_confirmation | regression_risk | edge_case", "check_description": "string (actionable test step or observation)", "expected_result": "string (what should happen if the fix works)", "linked_bug_symptom": "string (which part of the original report this check addresses)", "risk_if_skipped": "string (what could be missed)" } ], "coverage_gaps": ["string (any untested areas or assumptions)"], "minimum_environment_requirements": "string (OS, browser, version, or config needed to execute checks)" } [CONSTRAINTS] - Every check must reference a specific symptom or detail from [BUG_REPORT]. - Include at least 2 checks per category unless the category is genuinely inapplicable; if so, explain why in coverage_gaps. - Regression checks must name specific modules, functions, or components that the fix touched. - Edge-case checks must include boundary values, null inputs, concurrency scenarios, or permission variations where relevant. - Do not invent symptoms or risks not present in the inputs. - If the fix description is insufficient to generate meaningful checks, output an empty checklist and explain the gaps in coverage_gaps. [EXAMPLES] Bug Report: "Users cannot submit the payment form when the cart total exceeds $999.99. The submit button remains disabled." Fix Description: "Removed an incorrect max-value validator on the cart total field in PaymentForm.js." Output: { "verification_checklist": [ { "id": "V-01", "category": "reproduction_confirmation", "check_description": "Add items to cart totaling $1,200.00 and attempt to submit the payment form.", "expected_result": "Submit button is enabled and payment processes successfully.", "linked_bug_symptom": "Submit button disabled when cart total exceeds $999.99.", "risk_if_skipped": "Original bug may still be present if the validator was not fully removed." }, { "id": "V-02", "category": "regression_risk", "check_description": "Submit payment form with a negative cart total (e.g., -$50.00) if the UI allows it.", "expected_result": "Form validation rejects negative totals with a clear error message.", "linked_bug_symptom": "Validator removal in PaymentForm.js may have removed other guardrails.", "risk_if_skipped": "Removing the max-value validator could also remove min-value protection." }, { "id": "V-03", "category": "edge_case", "check_description": "Submit payment form with cart total exactly $999.99.", "expected_result": "Submit button is enabled and payment processes successfully.", "linked_bug_symptom": "Boundary condition at the previously enforced limit.", "risk_if_skipped": "Off-by-one errors at the old threshold could persist." } ], "coverage_gaps": ["No concurrency test: multiple users submitting the same cart was not in scope."], "minimum_environment_requirements": "Staging environment with payment processor test mode enabled." }
Adapt this template by replacing the example with your own domain-specific scenarios. If your bug reports follow a structured format, include that schema in [BUG_REPORT] so the model knows what fields to expect. For high-severity bugs, add a [RISK_LEVEL] parameter and adjust the minimum check count per category accordingly. The output schema is intentionally flat to simplify parsing in CI/CD pipelines; if you need nested structures for test automation frameworks, extend the schema but keep the category and linked_bug_symptom fields to maintain traceability.
Before wiring this into an automated pipeline, run it against a golden set of 10-20 historical bug-fix pairs where you already know the correct verification steps. Measure whether the generated checklist catches the known regression that would have occurred if the fix were incomplete. If the model skips a critical check, add a more specific constraint or an additional example showing that failure mode. For production use, always require a human QA lead to approve the checklist before it becomes the gate for fix deployment.
Prompt Variables
Inputs the prompt needs to verify a bug fix reliably. Each placeholder must be populated before the prompt is sent. Validation notes describe how to check the input quality before execution.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[BUG_REPORT] | Original bug report containing the symptom, reproduction steps, and expected behavior | BUG-4512: Checkout button unresponsive on iOS Safari after cart update. Steps: 1. Add item to cart 2. Tap checkout 3. Observe no navigation. Expected: Redirect to payment page. | Must contain at least one reproduction step and one expected result. Parse check for non-empty description field. Reject if only a title is present. |
[FIX_DESCRIPTION] | Summary of the code change, PR, or commit that claims to resolve the bug | PR #7821: Fixed tap event listener registration on cart update by rebinding after DOM refresh in CartManager.ts | Must reference a specific change artifact (PR number, commit hash, or patch description). Null allowed if fix is not yet implemented and verification criteria are being drafted pre-fix. |
[FIX_DIFF] | Actual code diff or patch content for the fix | diff --git a/src/ui/CartManager.ts b/src/ui/CartManager.ts
| Optional but strongly recommended. If provided, parse check for valid diff format. If null, verification criteria will rely solely on behavioral description and may miss implementation-specific edge cases. |
[COMPONENT_CATALOG] | Map of component names to owning teams and related modules for regression scoping | Checkout UI -> team:payments-web, deps:[CartManager, PaymentGateway]; Cart -> team:cart-services, deps:[InventoryAPI] | Must be a structured mapping, not free text. Schema check for component name keys and team labels. If null, regression risk assessment will be generic and may miss cross-component impacts. |
[DEPLOYMENT_TIMELINE] | Recent deployment events with timestamps to correlate against regression risk | [{version: v2.14.3, deployed: 2025-03-12T08:30Z, services: [payments-web, cart-services]}] | Optional. If provided, parse check for ISO 8601 timestamps and version strings. If null, regression correlation step is skipped and the prompt will note missing timeline context. |
[ENVIRONMENT_MATRIX] | Target environments and configurations where the fix must be verified | [{os: iOS 17.4, browser: Safari, device: iPhone 15}, {os: Android 14, browser: Chrome, device: Pixel 8}] | Must list at least one environment. Schema check for os, browser, and device fields. Reject if empty array. Missing environments reduce verification coverage and should trigger a completeness warning. |
[SEVERITY_LEVEL] | Severity classification of the original bug to calibrate verification depth | S1 - Critical: Blocks core checkout flow for all mobile users | Must match one of the defined severity enum values (S1-S4). Enum check against [S1, S2, S3, S4]. If null, verification criteria default to standard depth without escalation-specific checks. |
[KNOWN_EDGE_CASES] | Previously identified edge cases or related bugs that the fix might affect | [BUG-4498: Cart quantity update race condition, BUG-4601: Checkout button double-tap duplicate order] | Optional. If provided, each entry must have a bug ID or description. Parse check for non-empty list. If null, edge-case coverage relies only on the prompt's general reasoning and may miss known regressions. |
Implementation Harness Notes
How to wire the Bug Report Fix Verification prompt into a QA or CI/CD workflow with validation, retries, and human review gates.
This prompt is designed to be called after a bug fix has been merged and a developer or QA engineer needs a structured verification plan. The harness should inject the original bug report as [BUG_REPORT] and the fix description or linked pull request summary as [FIX_DESCRIPTION]. The model returns a checklist in a predefined JSON schema, which the harness must validate before surfacing it to a human tester or an automated test runner. Because verification criteria directly impact release quality, the output should be treated as a draft requiring human approval before it becomes the official test plan.
The implementation should follow a validate → retry → escalate pattern. First, parse the model's JSON output and validate it against a strict schema that requires each checklist item to have a unique id, a criterion string, a category enum (e.g., reproduction, regression, edge_case), and a reference_to_original_report field that quotes or cites the relevant section of the bug report. If validation fails, retry once by appending the validation error to the prompt as a [PREVIOUS_ERROR] context block and re-requesting the corrected output. If the second attempt also fails, log the failure and route the task to a human QA lead for manual authoring. This prevents a malformed checklist from silently entering the test management system.
For logging and observability, record the prompt version, model used, input report ID, validation pass/fail status, and the final approved checklist. If your team uses a test case management tool like TestRail or Xray, map the verified JSON output to test case creation API calls. Each checklist item should be traceable back to the original bug report through the reference_to_original_report field, creating an audit trail that proves coverage. In high-risk domains such as financial software or healthcare systems, require a second human reviewer to sign off on the checklist before any automated test case creation occurs. Avoid using this prompt for cosmetic or low-severity bugs where a full verification checklist adds process overhead without proportional risk reduction.
Common Failure Modes
Verification checklists fail when they miss the original repro, ignore regression risk, or produce untestable criteria. These are the most common failure modes and how to guard against them.
Verification Criteria Miss the Original Reproduction
What to watch: The prompt generates a checklist that omits the exact reproduction steps from the original bug report, verifying only the symptom area without confirming the reported failure is fixed. Guardrail: Include the original repro steps as a required input field and instruct the model to map every verification criterion back to a specific step from the original report.
Regression Checks Are Generic Instead of Specific
What to watch: The output includes vague regression checks like 'test related functionality' without identifying which components, APIs, or user flows share the changed code path. Guardrail: Provide the model with a component dependency map or changed-file list and require each regression criterion to name the specific adjacent feature or module being checked.
Edge Condition Coverage Is Superficial
What to watch: The prompt produces edge cases that are obvious (null input, empty string) but misses domain-specific boundaries like concurrency timing, data volume thresholds, or state-machine transitions relevant to the bug. Guardrail: Include a domain context block with known edge categories for the component and instruct the model to generate at least one edge case per category.
Verification Steps Are Not Independently Testable
What to watch: The checklist combines multiple assertions into a single step or uses ambiguous language like 'ensure everything works' that cannot be objectively verified. Guardrail: Require each verification criterion to be a single, atomic assertion with a clear pass/fail condition and expected result stated explicitly.
Fix Verification Drifts from the Bug Report Scope
What to watch: The model expands verification into unrelated quality checks or feature requests that were not part of the original bug, bloating the checklist and delaying the fix confirmation. Guardrail: Constrain the output to criteria directly traceable to the reported failure, its root cause hypothesis, and the specific code change. Add a separate optional section for out-of-scope observations.
Environment and Configuration Context Is Lost
What to watch: The verification checklist assumes a default environment and omits the specific OS, browser, device, or configuration conditions under which the bug originally occurred. Guardrail: Extract and carry forward the environment block from the original bug report as a required input, and generate environment-specific verification steps when the fix is environment-dependent.
Evaluation Rubric
Use this rubric to test the Bug Report Fix Verification Prompt Template before shipping. Each criterion targets a specific failure mode in verification checklist generation. Run these checks against a golden set of 10-15 bug reports with known fixes and expected verification coverage.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Original Repro Coverage | Checklist includes every step from [ORIGINAL_REPRO_STEPS] mapped to a verification action | Missing or reordered steps that skip the exact failure path described in the bug report | Diff [ORIGINAL_REPRO_STEPS] against generated checklist items; require 100% step coverage |
Regression Risk Identification | At least one checklist item targets each [AFFECTED_COMPONENT] for unintended side effects | Checklist only retests the reported symptom without probing adjacent functionality | Cross-reference [AFFECTED_COMPONENT] list against checklist scope; flag if any component has zero coverage |
Edge Condition Enumeration | Checklist includes boundary values, null inputs, and concurrency scenarios relevant to [FAILURE_TYPE] | Only happy-path verification steps with no stress or boundary cases | Classify [FAILURE_TYPE] and check for matching edge-case patterns: null for NullPointer, race for concurrency, empty for collections |
Environment Parity Check | Verification steps specify [ORIGINAL_ENVIRONMENT] details when environment-specific | Checklist omits OS, browser, or version constraints present in the original report | Parse [ORIGINAL_ENVIRONMENT] fields; assert each non-null field appears in at least one verification step |
Expected Result Specificity | Each verification step defines a concrete, observable expected result, not 'works correctly' | Vague pass conditions like 'no errors' or 'behaves as expected' without measurable criteria | Scan each step for measurable predicates: exact values, ranges, status codes, or UI element states |
Fix Isolation Check | Checklist distinguishes between verifying the fix itself and verifying the system still works | All steps retest the entire feature without isolating the specific code change under [FIX_DESCRIPTION] | Compare checklist items against [FIX_DESCRIPTION] scope; require at least one step that tests only the changed behavior |
Automation Readability | Verification steps use imperative mood, single-action verbs, and avoid compound instructions | Steps contain 'and' conjunctions, passive voice, or multiple actions per bullet | Parse each step for action count; flag any step with more than one verb phrase or conditional branching |
Traceability to Bug Report | Every checklist item references the original bug ID or symptom it verifies | Orphan checklist items with no link back to [BUG_ID] or [SYMPTOM_DESCRIPTION] | Check for [BUG_ID] or symptom keyword in each item's rationale; flag untethered items as scope creep |
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 lightweight checklist output. Drop strict JSON schema requirements and let the model return a markdown list of verification items. Focus on coverage of the original repro steps and obvious edge cases.
Watch for
- Missing regression-risk checks when the schema is loose
- Vague criteria like "test it works" instead of specific steps
- No link back to the original bug report ID or repro steps

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