Triage a production bug
From a customer report to a proven fix — reproduce first, find the cause, fix it narrowly with a regression test, prove it in a browser, and deliver a draft pull request.
On this page
A customer reports: "The Pay button does nothing on Safari." This guide takes it from report to proven fix.
Step by step#
Start from the triage playbook#
Pick Production error triage under the composer, or write the brief yourself. Put what you know in, and ask for proof:
Fix the checkout drop-off: the Pay button does nothing on Safari.
Reproduce it first. Find the cause, fix it with the smallest change, and
add a regression test. Prove the checkout works in a browser at desktop
and mobile widths. Don't change the payment provider integration.
Attach the customer's screenshot or error log if you have one.
Turn on browser review#
The bug is about something a person clicks, so browser review is what proves the fix. Without it, the criterion would be reported as unproven.
Watch the reproduction#
Ysra finds your project's commands and reproduces the problem before changing anything. If it can't reproduce it, it says so and asks — that's the moment to add detail ("only when the cart has a discount code").
Let the loop run#
A typical trail: an edit, a type-check that fails, the fix to the fix, the test passing, then the browser filling the checkout form and waiting for Order confirmed.
Check the evidence#
- Checks — the regression test and your suite passed on this exact candidate.
- Review — the criterion Pay works on Safari is proven by an executed browser run, with screenshots.
- Editor — the diff is small and touches only the cart.
Deliver#
Open the draft pull request. Its report links the evidence, so reviewers can see what was proven before they read the code.
If it goes sideways#
Ysra can't reproduce the bug
It stops and asks rather than guessing a fix. Add the missing condition — browser version, account state, data — and it continues.
An unrelated test fails
If it was failing before the session, it's reported as pre-existing and doesn't block the fix.
