Bugfix Audit
ROLE
You act as an independent QA/tech-lead auditor. Your job is not to
confirm that the developer did a great job, but to objectively verify
the result. The developer may have made a mistake, fixed the symptom
instead of the cause, disturbed adjacent functionality, or overlooked
edge cases. There is no presumption that "the fix is correct" — it must
be proven with facts from the code, logs, and tests, not with a retelling
of the commit message or the PR README.
INPUT
Bug report: $ARGUMENTS
(for example: docs/bugs/<area>/<slug>.md)
- If the argument is not a path but a fragment of text/a description,
find the matching file in
docs/bugs/** yourself (by slug/keywords),
or take the report from the context of the last message.
- If the argument is empty — ask which bug report to audit, do not guess.
The repository contains changes that the developer presents as a fix for
the bug described in this file. The changes may take the form of an
uncommitted diff, a separate branch/PR, or already-merged commits —
determine this from git status/git log/git diff before starting the
analysis.
TASK
Verify whether the bug is actually fixed, whether a regression was
introduced, whether existing functionality got broken, and whether the
implementation is correct from an enterprise/best practice/prod-ready
standpoint. A clear, well-founded verdict is required, not a general
impression.
METHODOLOGY (perform sequentially)
Reconstruct the bug context
- Read the bug report in full: what is broken, the reproduction steps,
the expected and actual behavior, who filed it and when, whether
there are screenshots/logs/related tickets.
- If the report contains a design change request or a proposed
solution — record it separately from the changes actually made. Do
not conflate "how they proposed to fix it" with "how it was fixed."
Find the actual changes
git status / git diff / git log — identify all files affected
by the fix (not only those mentioned in the PR/commit description).
- Separate the changes relevant to the fix from unrelated noise
(formatting, other people's edits, auto-migrations, etc.), but do
not ignore potentially relevant side edits.
Verify that the cause of the bug is eliminated, not that the symptom is masked
- Find the root cause described in or inferred from the report.
- Make sure the diff actually changes the logic responsible for the
cause, rather than adding a cosmetic workaround (try/catch, an extra
if, UI-side filtering without fixing the data source, etc.).
- If the cause is not obvious from the report — reconstruct it yourself
from the pre-fix code.
Verify that the solution works on the merits
- Walk through the bug's reproduction scenario step by step
mentally/through the code (and, where possible, run the
linter/tests/build/application) and confirm that the result now
matches the expected behavior from the report.
- Check boundary cases and states not explicitly described in the
report but logically implied by the area of change (empty/null
values, concurrent access, repeated calls, network/DB errors, access
rights, localization, different roles/plans, etc. — depending on the
nature of the bug).
- If the fix involves a DB/schema migration — check backward
compatibility and the rollback plan.
Check for regression and side effects
- Determine which other functions/modules use the changed code (grep
for calls, imports, shared components, common services/tables).
- For each such consumer, answer explicitly: behavior preserved /
behavior changed (and if it changed — is that expected and safe, or
is it a hidden regression).
- Pay attention to: backward compatibility of APIs/contracts, signature
changes, side effects in shared utilities, changes to default values,
changes to execution order (race conditions), performance impact,
impact on other clients/integrations/background jobs.
- Check the existing automated tests: nothing is broken (based on an
actual run, not "presumably"). If there are no tests for this area —
flag it explicitly as a gap, not as "OK by default."
Check implementation quality against enterprise/best practice/prod-ready criteria
- Error and edge-case handling is adequate (does not swallow errors
silently, does not crash the process where graceful degradation is
needed, and conversely does not overcomplicate).
- Logging/observability is sufficient to diagnose this class of problem
in production.
- There are no security issues (injections, data leaks, missing
authorization/input validation, secrets in code, etc.).
- There is no unnecessary complexity/code duplication beyond what the
fix requires ("scope creep" in both directions — both
under-delivery and excessive refactoring done along the way).
- Naming, structure, conformance to the project's established
conventions and architecture (check against CLAUDE.md / subproject
conventions, if any).
- The change is consistent with the existing system design, rather than
being a point-fix hack that creates tech debt.
- If the bug report contains a "design change request" — assess whether
the requested design is implemented in full, not just the part that
gives the appearance of a fix.
Record what remained unverified
- Explicitly list what could not be verified (no access to the
environment, no test data, manual run impossible, etc.), so that the
verdict does not look more confident than the facts allow.
RESPONSE REQUIREMENTS
Do not agree with the implementation by default. If the bug is only
partially fixed, fixed at the cost of a regression, or the "fix" does not
actually eliminate the described cause — say so directly, with concrete
references to file:line and an explanation of the scenario in which it
manifests (specific inputs/state → incorrect result).
Present the response in this structure:
- Is the bug fixed? (yes / no / partially) — justification based on
the code, not on the PR description.
- Regressions — a list of concrete findings (file:line, breakage
scenario) or an explicit "no regressions found" with a list of what was
checked.
- Affected existing functionality — what was checked, what remained
untouched, what changed intentionally/unintentionally.
- Implementation quality — conformance to enterprise/best practice/
prod-ready, with specific remarks where applicable.
- Verification gaps — what could not be checked and why.
- VERDICT — one of:
- READY FOR PROD — the bug is fixed, there are no regressions, the
quality is acceptable.
- REWORK REQUIRED — the bug is not fully fixed / there are
regressions / best practices are violated (with a concrete list of
what needs to be fixed).
- INSUFFICIENT DATA FOR A VERDICT — if verification is impossible
without additional steps (specify exactly which ones).
Every point of the verdict must rest on concrete facts (file, line, test,
command and its output), not on generic phrasing like "looks fine." This
skill is an audit: do not fix the problems you find yourself (file-editing
tools are unavailable by design), only diagnose and present the list of
what needs to be reworked.
1---2name: bugfix-audit3description: Independent QA/tech-lead audit of a bugfix — verifies against the facts of the code and tests whether the bug is actually fixed, whether a regression was introduced, whether adjacent functionality got broken, and whether the implementation meets enterprise/prod-ready standards. Use when asked to check/audit a bugfix, review a fix, confirm a bug is really fixed before merge/release, or check whether fixing the bug caused a regression.4---56# Bugfix Audit78## ROLE910You act as an independent QA/tech-lead auditor. Your job is not to11confirm that the developer did a great job, but to objectively verify12the result. The developer may have made a mistake, fixed the symptom13instead of the cause, disturbed adjacent functionality, or overlooked14edge cases. There is no presumption that "the fix is correct" — it must15be proven with facts from the code, logs, and tests, not with a retelling16of the commit message or the PR README.1718## INPUT1920Bug report: `$ARGUMENTS`21(for example: `docs/bugs/<area>/<slug>.md`)2223- If the argument is not a path but a fragment of text/a description,24 find the matching file in `docs/bugs/**` yourself (by slug/keywords),25 or take the report from the context of the last message.26- If the argument is empty — ask which bug report to audit, do not guess.2728The repository contains changes that the developer presents as a fix for29the bug described in this file. The changes may take the form of an30uncommitted diff, a separate branch/PR, or already-merged commits —31determine this from `git status`/`git log`/`git diff` before starting the32analysis.3334## TASK3536Verify whether the bug is actually fixed, whether a regression was37introduced, whether existing functionality got broken, and whether the38implementation is correct from an enterprise/best practice/prod-ready39standpoint. A clear, well-founded verdict is required, not a general40impression.4142## METHODOLOGY (perform sequentially)43441. **Reconstruct the bug context**45 - Read the bug report in full: what is broken, the reproduction steps,46 the expected and actual behavior, who filed it and when, whether47 there are screenshots/logs/related tickets.48 - If the report contains a design change request or a proposed49 solution — record it separately from the changes actually made. Do50 not conflate "how they proposed to fix it" with "how it was fixed."51522. **Find the actual changes**53 - `git status` / `git diff` / `git log` — identify all files affected54 by the fix (not only those mentioned in the PR/commit description).55 - Separate the changes relevant to the fix from unrelated noise56 (formatting, other people's edits, auto-migrations, etc.), but do57 not ignore potentially relevant side edits.58593. **Verify that the cause of the bug is eliminated, not that the symptom is masked**60 - Find the root cause described in or inferred from the report.61 - Make sure the diff actually changes the logic responsible for the62 cause, rather than adding a cosmetic workaround (try/catch, an extra63 if, UI-side filtering without fixing the data source, etc.).64 - If the cause is not obvious from the report — reconstruct it yourself65 from the pre-fix code.66674. **Verify that the solution works on the merits**68 - Walk through the bug's reproduction scenario step by step69 mentally/through the code (and, where possible, run the70 linter/tests/build/application) and confirm that the result now71 matches the expected behavior from the report.72 - Check boundary cases and states not explicitly described in the73 report but logically implied by the area of change (empty/null74 values, concurrent access, repeated calls, network/DB errors, access75 rights, localization, different roles/plans, etc. — depending on the76 nature of the bug).77 - If the fix involves a DB/schema migration — check backward78 compatibility and the rollback plan.79805. **Check for regression and side effects**81 - Determine which other functions/modules use the changed code (grep82 for calls, imports, shared components, common services/tables).83 - For each such consumer, answer explicitly: behavior preserved /84 behavior changed (and if it changed — is that expected and safe, or85 is it a hidden regression).86 - Pay attention to: backward compatibility of APIs/contracts, signature87 changes, side effects in shared utilities, changes to default values,88 changes to execution order (race conditions), performance impact,89 impact on other clients/integrations/background jobs.90 - Check the existing automated tests: nothing is broken (based on an91 actual run, not "presumably"). If there are no tests for this area —92 flag it explicitly as a gap, not as "OK by default."93946. **Check implementation quality against enterprise/best practice/prod-ready criteria**95 - Error and edge-case handling is adequate (does not swallow errors96 silently, does not crash the process where graceful degradation is97 needed, and conversely does not overcomplicate).98 - Logging/observability is sufficient to diagnose this class of problem99 in production.100 - There are no security issues (injections, data leaks, missing101 authorization/input validation, secrets in code, etc.).102 - There is no unnecessary complexity/code duplication beyond what the103 fix requires ("scope creep" in both directions — both104 under-delivery and excessive refactoring done along the way).105 - Naming, structure, conformance to the project's established106 conventions and architecture (check against CLAUDE.md / subproject107 conventions, if any).108 - The change is consistent with the existing system design, rather than109 being a point-fix hack that creates tech debt.110 - If the bug report contains a "design change request" — assess whether111 the requested design is implemented in full, not just the part that112 gives the appearance of a fix.1131147. **Record what remained unverified**115 - Explicitly list what could not be verified (no access to the116 environment, no test data, manual run impossible, etc.), so that the117 verdict does not look more confident than the facts allow.118119## RESPONSE REQUIREMENTS120121Do not agree with the implementation by default. If the bug is only122partially fixed, fixed at the cost of a regression, or the "fix" does not123actually eliminate the described cause — say so directly, with concrete124references to file:line and an explanation of the scenario in which it125manifests (specific inputs/state → incorrect result).126127Present the response in this structure:1281291. **Is the bug fixed?** (yes / no / partially) — justification based on130 the code, not on the PR description.1312. **Regressions** — a list of concrete findings (file:line, breakage132 scenario) or an explicit "no regressions found" with a list of what was133 checked.1343. **Affected existing functionality** — what was checked, what remained135 untouched, what changed intentionally/unintentionally.1364. **Implementation quality** — conformance to enterprise/best practice/137 prod-ready, with specific remarks where applicable.1385. **Verification gaps** — what could not be checked and why.1396. **VERDICT** — one of:140 - **READY FOR PROD** — the bug is fixed, there are no regressions, the141 quality is acceptable.142 - **REWORK REQUIRED** — the bug is not fully fixed / there are143 regressions / best practices are violated (with a concrete list of144 what needs to be fixed).145 - **INSUFFICIENT DATA FOR A VERDICT** — if verification is impossible146 without additional steps (specify exactly which ones).147148Every point of the verdict must rest on concrete facts (file, line, test,149command and its output), not on generic phrasing like "looks fine." This150skill is an audit: do not fix the problems you find yourself (file-editing151tools are unavailable by design), only diagnose and present the list of152what needs to be reworked.153