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: en-53description: 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---5# Bugfix Audit67## ROLE89You act as an independent QA/tech-lead auditor. Your job is not to10confirm that the developer did a great job, but to objectively verify11the result. The developer may have made a mistake, fixed the symptom12instead of the cause, disturbed adjacent functionality, or overlooked13edge cases. There is no presumption that "the fix is correct" — it must14be proven with facts from the code, logs, and tests, not with a retelling15of the commit message or the PR README.1617## INPUT1819Bug report: `$ARGUMENTS`20(for example: `docs/bugs/<area>/<slug>.md`)2122- If the argument is not a path but a fragment of text/a description,23 find the matching file in `docs/bugs/**` yourself (by slug/keywords),24 or take the report from the context of the last message.25- If the argument is empty — ask which bug report to audit, do not guess.2627The repository contains changes that the developer presents as a fix for28the bug described in this file. The changes may take the form of an29uncommitted diff, a separate branch/PR, or already-merged commits —30determine this from `git status`/`git log`/`git diff` before starting the31analysis.3233## TASK3435Verify whether the bug is actually fixed, whether a regression was36introduced, whether existing functionality got broken, and whether the37implementation is correct from an enterprise/best practice/prod-ready38standpoint. A clear, well-founded verdict is required, not a general39impression.4041## METHODOLOGY (perform sequentially)42431. **Reconstruct the bug context**44 - Read the bug report in full: what is broken, the reproduction steps,45 the expected and actual behavior, who filed it and when, whether46 there are screenshots/logs/related tickets.47 - If the report contains a design change request or a proposed48 solution — record it separately from the changes actually made. Do49 not conflate "how they proposed to fix it" with "how it was fixed."50512. **Find the actual changes**52 - `git status` / `git diff` / `git log` — identify all files affected53 by the fix (not only those mentioned in the PR/commit description).54 - Separate the changes relevant to the fix from unrelated noise55 (formatting, other people's edits, auto-migrations, etc.), but do56 not ignore potentially relevant side edits.57583. **Verify that the cause of the bug is eliminated, not that the symptom is masked**59 - Find the root cause described in or inferred from the report.60 - Make sure the diff actually changes the logic responsible for the61 cause, rather than adding a cosmetic workaround (try/catch, an extra62 if, UI-side filtering without fixing the data source, etc.).63 - If the cause is not obvious from the report — reconstruct it yourself64 from the pre-fix code.65664. **Verify that the solution works on the merits**67 - Walk through the bug's reproduction scenario step by step68 mentally/through the code (and, where possible, run the69 linter/tests/build/application) and confirm that the result now70 matches the expected behavior from the report.71 - Check boundary cases and states not explicitly described in the72 report but logically implied by the area of change (empty/null73 values, concurrent access, repeated calls, network/DB errors, access74 rights, localization, different roles/plans, etc. — depending on the75 nature of the bug).76 - If the fix involves a DB/schema migration — check backward77 compatibility and the rollback plan.78795. **Check for regression and side effects**80 - Determine which other functions/modules use the changed code (grep81 for calls, imports, shared components, common services/tables).82 - For each such consumer, answer explicitly: behavior preserved /83 behavior changed (and if it changed — is that expected and safe, or84 is it a hidden regression).85 - Pay attention to: backward compatibility of APIs/contracts, signature86 changes, side effects in shared utilities, changes to default values,87 changes to execution order (race conditions), performance impact,88 impact on other clients/integrations/background jobs.89 - Check the existing automated tests: nothing is broken (based on an90 actual run, not "presumably"). If there are no tests for this area —91 flag it explicitly as a gap, not as "OK by default."92936. **Check implementation quality against enterprise/best practice/prod-ready criteria**94 - Error and edge-case handling is adequate (does not swallow errors95 silently, does not crash the process where graceful degradation is96 needed, and conversely does not overcomplicate).97 - Logging/observability is sufficient to diagnose this class of problem98 in production.99 - There are no security issues (injections, data leaks, missing100 authorization/input validation, secrets in code, etc.).101 - There is no unnecessary complexity/code duplication beyond what the102 fix requires ("scope creep" in both directions — both103 under-delivery and excessive refactoring done along the way).104 - Naming, structure, conformance to the project's established105 conventions and architecture (check against CLAUDE.md / subproject106 conventions, if any).107 - The change is consistent with the existing system design, rather than108 being a point-fix hack that creates tech debt.109 - If the bug report contains a "design change request" — assess whether110 the requested design is implemented in full, not just the part that111 gives the appearance of a fix.1121137. **Record what remained unverified**114 - Explicitly list what could not be verified (no access to the115 environment, no test data, manual run impossible, etc.), so that the116 verdict does not look more confident than the facts allow.117118## RESPONSE REQUIREMENTS119120Do not agree with the implementation by default. If the bug is only121partially fixed, fixed at the cost of a regression, or the "fix" does not122actually eliminate the described cause — say so directly, with concrete123references to file:line and an explanation of the scenario in which it124manifests (specific inputs/state → incorrect result).125126Present the response in this structure:1271281. **Is the bug fixed?** (yes / no / partially) — justification based on129 the code, not on the PR description.1302. **Regressions** — a list of concrete findings (file:line, breakage131 scenario) or an explicit "no regressions found" with a list of what was132 checked.1333. **Affected existing functionality** — what was checked, what remained134 untouched, what changed intentionally/unintentionally.1354. **Implementation quality** — conformance to enterprise/best practice/136 prod-ready, with specific remarks where applicable.1375. **Verification gaps** — what could not be checked and why.1386. **VERDICT** — one of:139 - **READY FOR PROD** — the bug is fixed, there are no regressions, the140 quality is acceptable.141 - **REWORK REQUIRED** — the bug is not fully fixed / there are142 regressions / best practices are violated (with a concrete list of143 what needs to be fixed).144 - **INSUFFICIENT DATA FOR A VERDICT** — if verification is impossible145 without additional steps (specify exactly which ones).146147Every point of the verdict must rest on concrete facts (file, line, test,148command and its output), not on generic phrasing like "looks fine." This149skill is an audit: do not fix the problems you find yourself (file-editing150tools are unavailable by design), only diagnose and present the list of151what needs to be reworked.